diff --git a/pom.xml b/pom.xml index 74f7c769..94fc2448 100644 --- a/pom.xml +++ b/pom.xml @@ -2,10 +2,10 @@ 4.0.0 - kcc_adr_advc + fairnet war 1.0.0 - kcc_adr + fairnet http://www.egovframe.go.kr @@ -20,59 +20,11 @@ 3.1.1 4.3.22.RELEASE 3.9.0 - - UTF-8 UTF-8 ${project.basedir}\src\main\webapp\WEB-INF\lib - - - - - - - - maven-public http://nexus.iten.co.kr:9999/repository/maven-public/ @@ -195,30 +147,18 @@ 5.1.31 - - - - cubrid - cubrid-jdbc - 11.0.1.0286 - system - ${basedir}/src/main/webapp/WEB-INF/lib/cubrid-jdbc-11.0.1.0286.jar + + + com.oracle.database.jdbc + ojdbc8 + 23.2.0.0 - - - - ojdbc - ojdbc - 8 - system - ${basedir}/src/main/webapp/WEB-INF/lib/ojdbc8.jar - - - orai18n + + + + com.oracle.database.nls orai18n - 18 - system - ${basedir}/src/main/webapp/WEB-INF/lib/orai18n.jar + 23.2.0.0 @@ -333,30 +273,40 @@ 2.4 - + + + + + + nl.captcha + simplecaptcha + 1.2.1 - + - + - org.jsoup + org.jsoup jsoup 1.11.3 - system - ${basedir}/src/main/webapp/WEB-INF/lib/jsoup-1.11.3.jar @@ -425,13 +375,20 @@ ${egovframework.rte.version} - + + + + org.apache.taglibs + taglibs-standard-spec + 1.2.5 + org.apache.pdfbox @@ -440,27 +397,13 @@ - + - - net.javacrumbs.shedlock - shedlock-spring - 2.5.0 - - - - - net.javacrumbs.shedlock - shedlock-provider-jdbc-template - 2.5.0 - + --> @@ -649,6 +592,6 @@ - kcc_adr + fairnet diff --git a/src/main/webapp/INIpayStdSample/INIStdPayBill.jsp b/src/main/webapp/INIpayStdSample/INIStdPayBill.jsp deleted file mode 100644 index 118dc1d2..00000000 --- a/src/main/webapp/INIpayStdSample/INIStdPayBill.jsp +++ /dev/null @@ -1,267 +0,0 @@ -<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@page import="java.text.SimpleDateFormat"%> -<%@page import="com.inicis.std.util.SignatureUtil"%> -<%@page import="java.util.*"%> -<%@page import="java.text.DateFormat"%> -<% - - /* - //*** 위변조 방지체크를 signature 생성 *** - - oid, price, timestamp 3개의 키와 값을 - - key=value 형식으로 하여 '&'로 연결한 하여 SHA-256 Hash로 생성 된값 - - ex) oid=INIpayTest_1432813606995&price=819000×tamp=2012-02-01 09:19:04.004 - - - * key기준 알파벳 정렬 - - * timestamp는 반드시 signature생성에 사용한 timestamp 값을 timestamp input에 그대로 사용하여야함 - */ - - //############################################ - // 1.전문 필드 값 설정(***가맹점 개발수정***) - //############################################ - - // 여기에 설정된 값은 Form 필드에 동일한 값으로 설정 -// String mid = "INIBillTst"; // 가맹점 ID(가맹점 수정후 고정) - String mid = "crosorkr01"; // 가맹점 ID(가맹점 수정후 고정) - - //인증 -// String signKey = "SU5JTElURV9UUklQTEVERVNfS0VZU1RS"; // 가맹점에 제공된 웹 표준 사인키(가맹점 수정후 고정) - String signKey = "UE9idGFmcGJEdU1HR04zbEdLdUM0QT09"; // 가맹점에 제공된 웹 표준 사인키(가맹점 수정후 고정) - String timestamp = SignatureUtil.getTimestamp(); // util에 의해서 자동생성 - - String oid = mid+"_"+SignatureUtil.getTimestamp(); // 가맹점 주문번호(가맹점에서 직접 설정) - String price = "1000"; // 상품가격(특수기호 제외, 가맹점에서 직접 설정) - - //############################################### - // 2. 가맹점 확인을 위한 signKey를 해시값으로 변경 (SHA-256방식 사용) - //############################################### - String mKey = SignatureUtil.hash(signKey, "SHA-256"); - - //############################################### - // 2.signature 생성 - //############################################### - Map signParam = new HashMap(); - - signParam.put("oid", oid); // 필수 - signParam.put("price", price); // 필수 - signParam.put("timestamp", timestamp); // 필수 - - // signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash) - String signature = SignatureUtil.makeSignature(signParam); - - - /* 기타 */ - //String siteDomain = "http://127.0.0.1:8080/INIpayStdSample"; //가맹점 도메인 입력 - String siteDomain = "http://localhost:8081/INIpayStdSample"; //가맹점 도메인 입력 - - - // 페이지 URL에서 고정된 부분을 적는다. - // Ex) returnURL이 http://127.0.0.1:8080INIpayStdSample/INIStdPayReturn.jsp 라면 - // http://127.0.0.1:8080/INIpayStdSample 까지만 기입한다. - - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); - DateFormat df = new SimpleDateFormat("yyyyMMdd"); - cal.add(Calendar.DATE, 14); - String endDt = df.format(cal.getTime()); - - String gopaymethod = "VBank"; // 결재구분:가상계좌 - //String acceptmethod = "va_receipt"; // 현금영수증O - String acceptmethod = "no_receipt"; // 현금영수증X - acceptmethod += ":" + "vbank("+endDt+")"; // 가상계좌 입금기한 ex) vbank(YYYYMMDD) - - String resMail = "yu3145@naver.com"; // 알림 메일 주소 - String buyertel = "010-8532-6650"; // 알림 전화번호 -%> - - - - - - - - - - - - - - - - -
- 이니시스 표준결제 신용카드 빌링키 발급 샘플 -
- - - - - -
- - - - - - - - - - - - - - -
- 이 페이지는 INIpay Standard 결제요청을 위한 예시입니다.
-
- 결제처리를 위한 action등의 모든 동작은 Import 된 스크립트에 의해 자동처리됩니다.
- -
- Form에 설정된 모든 필드의 name은 대소문자 구분하며,
- 이 Sample은 결제를 위해서 설정된 Form은 테스트 / 이해돕기를 위해서 모두 type="text"로 설정되어 있습니다.
- 운영에 적용시에는 일부 가맹점에서 필요에 의해 사용자가 변경하는 경우를 제외하고
- 모두 type="hidden"으로 변경하여 사용하시기 바랍니다.
- -
- 함께 제공되는 매뉴얼을 참조하여 작성 개발하시기 바랍니다. -

-
- 카드빌링 - 휴대폰빌링 -
- -
- - - - -
-
- -
***** 필 수 ***** -
- -
version : -
- -
mid : -
- -
goodname : -
- -
oid : -
- -
price : -
- -
currency : -
[WON|USD] -
- -
buyername : -
- -
buyertel : -
- -
buyeremail : - -
- - - - - - - - -
returnUrl : - <%--
--%> -
- - - - -
- -

- ***** 기본 옵션 ***** -
- -
- offerPeriod : 제공기간 -
ex)20151001-20151231, [Y2:년단위결제, M2:월단위결제, yyyyMMdd-yyyyMMdd : 시작일-종료일] -
-

- -
acceptmethod : 기타 옵션 정보 및 설명은 연동정의보 참조 구분자 ":" - - -
- 결제일 알림 메세지 : 결제일 알림 메세지 -
-
-
-

- ***** 표시 옵션 ***** -
-
languageView : 초기 표시 언어 -
[ko|en] (default:ko) -
- -
charset : 리턴 인코딩 -
[UTF-8|EUC-KR] (default:UTF-8) -
- -
payViewType : 결제창 표시방법 -
[overlay] (default:overlay) -
- -
closeUrl : payViewType='overlay','popup'시 취소버튼 클릭시 창닥기 처리 URL(가맹점에 맞게 설정) -
close.jsp 샘플사용(생략가능, 미설정시 사용자에 의해 취소 버튼 클릭시 인증결과 페이지로 취소 결과를 보냅니다.) -
- -
popupUrl : payViewType='popup'시 팝업을 띄울수 있도록 처리해주는 URL(가맹점에 맞게 설정) -
popup.jsp 샘플사용(생략가능,payViewType='popup'으로 사용시에는 반드시 설정) -
- -
- - -

- ***** 추가 옵션 ***** -
-
merchantData : 가맹점 관리데이터(2000byte) -
인증결과 리턴시 함께 전달됨 -
-
- -
-
-
- - \ No newline at end of file diff --git a/src/main/webapp/INIpayStdSample/INIStdPayRelay.jsp b/src/main/webapp/INIpayStdSample/INIStdPayRelay.jsp deleted file mode 100644 index 3bd9a376..00000000 --- a/src/main/webapp/INIpayStdSample/INIStdPayRelay.jsp +++ /dev/null @@ -1,39 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="java.util.*"%> - - - - - - - -<% - try{ - - //############################# - // 인증결과 파라미터 일괄 수신 - //############################# - request.setCharacterEncoding("UTF-8"); - Map paramMap = new Hashtable(); - Enumeration elems = request.getParameterNames(); - String temp = ""; - - out.println("
"); - while(elems.hasMoreElements()) - { - temp = (String) elems.nextElement(); - out.println(""); - } - out.println("
"); - - }catch(Exception e){ - - System.out.println(e); - } -%> diff --git a/src/main/webapp/INIpayStdSample/INIStdPayRequest.jsp b/src/main/webapp/INIpayStdSample/INIStdPayRequest.jsp deleted file mode 100644 index 341bc482..00000000 --- a/src/main/webapp/INIpayStdSample/INIStdPayRequest.jsp +++ /dev/null @@ -1,277 +0,0 @@ -<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@page import="java.text.SimpleDateFormat"%> -<%@page import="com.inicis.std.util.SignatureUtil"%> -<%@page import="java.util.*"%> -<% - - /* - //*** 위변조 방지체크를 signature 생성 *** - - oid, price, timestamp 3개의 키와 값을 - - key=value 형식으로 하여 '&'로 연결한 하여 SHA-256 Hash로 생성 된값 - - ex) oid=INIpayTest_1432813606995&price=819000×tamp=2012-02-01 09:19:04.004 - - - * key기준 알파벳 정렬 - - * timestamp는 반드시 signature생성에 사용한 timestamp 값을 timestamp input에 그대로 사용하여야함 - */ - - //############################################ - // 1.전문 필드 값 설정(***가맹점 개발수정***) - //############################################ - - // 여기에 설정된 값은 Form 필드에 동일한 값으로 설정 - String mid = "INIpayTest"; // 가맹점 ID(가맹점 수정후 고정) - - //인증 - String signKey = "SU5JTElURV9UUklQTEVERVNfS0VZU1RS"; // 가맹점에 제공된 웹 표준 사인키(가맹점 수정후 고정) - String timestamp = SignatureUtil.getTimestamp(); // util에 의해서 자동생성 - - String oid = mid+"_"+SignatureUtil.getTimestamp(); // 가맹점 주문번호(가맹점에서 직접 설정) - String price = "1000"; // 상품가격(특수기호 제외, 가맹점에서 직접 설정) - - String cardNoInterestQuota = "11-2:3:,34-5:12,14-6:12:24,12-12:36,06-9:12,01-3:4"; // 카드 무이자 여부 설정(가맹점에서 직접 설정) - String cardQuotaBase = "2:3:4:5:6:11:12:24:36"; // 가맹점에서 사용할 할부 개월수 설정 - - //############################################### - // 2. 가맹점 확인을 위한 signKey를 해시값으로 변경 (SHA-256방식 사용) - //############################################### - String mKey = SignatureUtil.hash(signKey, "SHA-256"); - - //############################################### - // 2.signature 생성 - //############################################### - Map signParam = new HashMap(); - - signParam.put("oid", oid); // 필수 - signParam.put("price", price); // 필수 - signParam.put("timestamp", timestamp); // 필수 - - // signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash) - String signature = SignatureUtil.makeSignature(signParam); - - - /* 기타 */ - String siteDomain = "http://127.0.0.1:8080/INIpayStdSample"; //가맹점 도메인 입력 - // 페이지 URL에서 고정된 부분을 적는다. - // Ex) returnURL이 http://localhost:8080INIpayStdSample/INIStdPayReturn.jsp 라면 - // http://localhost:8080/INIpayStdSample 까지만 기입한다. - -%> - - - - - - - - - - - - - - - - - - - -
- 이니시스 표준결제 결제요청 샘플 -
- - - - - -
- - - - - - - - - - - -
- 이 페이지는 INIpay Standard 결제요청을 위한 예시입니다.
-
- 결제처리를 위한 action등의 모든 동작은 Import 된 스크립트에 의해 자동처리됩니다.
- -
- Form에 설정된 모든 필드의 name은 대소문자 구분하며,
- 이 Sample은 결제를 위해서 설정된 Form은 테스트 / 이해돕기를 위해서 모두 type="text"로 설정되어 있습니다.
- 운영에 적용시에는 일부 가맹점에서 필요에 의해 사용자가 변경하는 경우를 제외하고
- 모두 type="hidden"으로 변경하여 사용하시기 바랍니다.
- -
- 함께 제공되는 매뉴얼을 참조하여 작성 개발하시기 바랍니다. -

-
- - -
- - - - -
-
- -
***** 필 수 ***** -
- -
version : -
- -
mid : -
- -
goodname : -
- -
oid : -
- -
price : -
- -
currency : -
[WON|USD] -
- -
buyername : -
- -
buyertel : -
- -
buyeremail : -
- - - - - - - - -
returnUrl : -
- - - -
- -

- ***** 기본 옵션 ***** -
- gopaymethod : 결제 수단 선택 -
ex) Card (계약 결제 수단이 존재하지 않을 경우 에러로 리턴) -
사용 가능한 입력 값 -
Card,DirectBank,HPP,Vbank,kpay,Swallet,Paypin,EasyPay,PhoneBill,GiftCard,EWallet -
onlypoint,onlyocb,onyocbplus,onlygspt,onlygsptplus,onlyupnt,onlyupntplus -
-

- -
- offerPeriod : 제공기간 -
ex)20151001-20151231, [Y2:년단위결제, M2:월단위결제, yyyyMMdd-yyyyMMdd : 시작일-종료일] -
-

- -
acceptmethod : acceptmethod -
acceptmethod ex) CARDPOINT:SLIMQUOTA(코드-개월:개월):no_receipt:va_receipt:vbank(20150425):va_ckprice: -
KWPY_TYPE(0):KWPY_VAT(10|0) 기타 옵션 정보 및 설명은 연동정의보 참조 구분자 ":" -
-
- -

- ***** 표시 옵션 ***** -
-
languageView : 초기 표시 언어 -
[ko|en] (default:ko) -
- -
charset : 리턴 인코딩 -
[UTF-8|EUC-KR] (default:UTF-8) -
- -
payViewType : 결제창 표시방법 -
[overlay] (default:overlay) -
- -
closeUrl : payViewType='overlay','popup'시 취소버튼 클릭시 창닥기 처리 URL(가맹점에 맞게 설정) -
close.jsp 샘플사용(생략가능, 미설정시 사용자에 의해 취소 버튼 클릭시 인증결과 페이지로 취소 결과를 보냅니다.) -
- -
popupUrl : payViewType='popup'시 팝업을 띄울수 있도록 처리해주는 URL(가맹점에 맞게 설정) -
popup.jsp 샘플사용(생략가능,payViewType='popup'으로 사용시에는 반드시 설정) -
- -
- - ***** 결제 수단별 옵션 ***** -
- -- 카드(간편결제도 사용) -- -
- -
quotabase : 할부 개월 설정 -
ex) 2:3:4 -
- -
ini_onlycardcode : 중복 카드 코드 -
ex) 01:03:04:11 -
- -
ini_cardcode : 카드 코드 -
ex) 14 -
- -
ansim_quota : 할부 선택 -
ex) 3 -
- -
- - -- 가상계좌 -- -
-
INIregno : 주민번호 설정 기능 -
13자리(주민번호),10자리(사업자번호),미입력시(화면에서입력가능) -
-
- -

- ***** 추가 옵션 ***** -
-
merchantData : 가맹점 관리데이터(2000byte) -
인증결과 리턴시 함께 전달됨(한글 지원 안됨, 개인정보 암호화(권장)) -
-
- -
-
-
-
- - \ No newline at end of file diff --git a/src/main/webapp/INIpayStdSample/INIStdPayReturn.jsp b/src/main/webapp/INIpayStdSample/INIStdPayReturn.jsp deleted file mode 100644 index 3c71dabc..00000000 --- a/src/main/webapp/INIpayStdSample/INIStdPayReturn.jsp +++ /dev/null @@ -1,595 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="com.inicis.std.util.ParseUtil"%> -<%@ page import="com.inicis.std.util.SignatureUtil"%> -<%@ page import="com.inicis.std.util.HttpUtil"%> -<%@ page import="java.util.*"%> - - - - - - - - -
- 이니시스 표준결제 인증결과 수신 / 승인요청, 승인결과 표시 샘플 -
-<% - - try{ - - //############################# - // 인증결과 파라미터 일괄 수신 - //############################# - request.setCharacterEncoding("UTF-8"); - - Map paramMap = new Hashtable(); - - Enumeration elems = request.getParameterNames(); - - String temp = ""; - - while(elems.hasMoreElements()) - { - temp = (String) elems.nextElement(); - paramMap.put(temp, request.getParameter(temp)); - } - - System.out.println("paramMap : "+ paramMap.toString()); - - //##################### - // 인증이 성공일 경우만 - //##################### - if("0000".equals(paramMap.get("resultCode"))){ - - out.println("####인증성공/승인요청####"); - out.println("
"); - System.out.println("####인증성공/승인요청####"); - - //############################################ - // 1.전문 필드 값 설정(***가맹점 개발수정***) - //############################################ - - String mid = paramMap.get("mid"); // 가맹점 ID 수신 받은 데이터로 설정 - String signKey = "SU5JTElURV9UUklQTEVERVNfS0VZU1RS"; // 가맹점에 제공된 키(이니라이트키) (가맹점 수정후 고정) !!!절대!! 전문 데이터로 설정금지 - String timestamp= SignatureUtil.getTimestamp(); // util에 의해서 자동생성 - String charset = "UTF-8"; // 리턴형식[UTF-8,EUC-KR](가맹점 수정후 고정) - String format = "JSON"; // 리턴형식[XML,JSON,NVP](가맹점 수정후 고정) - String authToken= paramMap.get("authToken"); // 취소 요청 tid에 따라서 유동적(가맹점 수정후 고정) - String authUrl = paramMap.get("authUrl"); // 승인요청 API url(수신 받은 값으로 설정, 임의 세팅 금지) - String netCancel= paramMap.get("netCancelUrl"); // 망취소 API url(수신 받은 값으로 설정, 임의 세팅 금지) - String ackUrl = paramMap.get("checkAckUrl"); // 가맹점 내부 로직 처리후 최종 확인 API URL(수신 받은 값으로 설정, 임의 세팅 금지) - String merchantData = paramMap.get("merchantData"); // 가맹점 관리데이터 수신 - - //##################### - // 2.signature 생성 - //##################### - Map signParam = new HashMap(); - - signParam.put("authToken", authToken); // 필수 - signParam.put("timestamp", timestamp); // 필수 - - // signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash) - String signature = SignatureUtil.makeSignature(signParam); - - String price = ""; // 가맹점에서 최종 결제 가격 표기 (필수입력아님) - - // 1. 가맹점에서 승인시 주문번호가 변경될 경우 (선택입력) 하위 연결. - // String oid = ""; - - //##################### - // 3.API 요청 전문 생성 - //##################### - Map authMap = new Hashtable(); - - authMap.put("mid" ,mid); // 필수 - authMap.put("authToken" ,authToken); // 필수 - authMap.put("signature" ,signature); // 필수 - authMap.put("timestamp" ,timestamp); // 필수 - authMap.put("charset" ,charset); // default=UTF-8 - authMap.put("format" ,format); // default=XML - //authMap.put("price" ,price); // 가격위변조체크기능 (선택사용) - - System.out.println("##승인요청 API 요청##"); - - HttpUtil httpUtil = new HttpUtil(); - - try{ - //##################### - // 4.API 통신 시작 - //##################### - - String authResultString = ""; - - authResultString = httpUtil.processHTTP(authMap, authUrl); - - //############################################################ - //5.API 통신결과 처리(***가맹점 개발수정***) - //############################################################ - out.println("## 승인 API 결과 ##"); - - String test = authResultString.replace(",", "&").replace(":", "=").replace("\"", "").replace(" ","").replace("\n", "").replace("}", "").replace("{", ""); - - //out.println("
"+authResultString.replaceAll("<", "<").replaceAll(">", ">")+"
"); - - Map resultMap = new HashMap(); - - resultMap = ParseUtil.parseStringToMap(test); //문자열을 MAP형식으로 파싱 - - System.out.println("resultMap == " + resultMap); - out.println("
");
-				out.println("");
-				
-				/*************************  결제보안 강화 2016-05-18 START ****************************/ 
-				Map secureMap = new HashMap();
-				secureMap.put("mid"			, mid);								//mid
-				secureMap.put("tstamp"		, timestamp);						//timestemp
-				secureMap.put("MOID"		, resultMap.get("MOID"));			//MOID
-				secureMap.put("TotPrice"	, resultMap.get("TotPrice"));		//TotPrice
-				
-				// signature 데이터 생성 
-				String secureSignature = SignatureUtil.makeSignatureAuth(secureMap);
-				/*************************  결제보안 강화 2016-05-18 END ****************************/
-
-				if("0000".equals(resultMap.get("resultCode")) && secureSignature.equals(resultMap.get("authSignature")) ){	//결제보안 강화 2016-05-18
-				   /*****************************************************************************
-			       * 여기에 가맹점 내부 DB에 결제 결과를 반영하는 관련 프로그램 코드를 구현한다.  
-				   
-					 [중요!] 승인내용에 이상이 없음을 확인한 뒤 가맹점 DB에 해당건이 정상처리 되었음을 반영함
-							  처리중 에러 발생시 망취소를 한다.
-			       ******************************************************************************/	
-					
-					out.println("");
-					out.println("");
-					
-					//결과정보
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-						  
-				} else {
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-					//결제보안키가 다른 경우
-					if (!secureSignature.equals(resultMap.get("authSignature")) && "0000".equals(resultMap.get("resultCode"))) {
-						//결과정보
-						out.println("");
-						out.println("");
-						out.println("");	
-						
-						//망취소
-						if ("0000".equals(resultMap.get("resultCode"))) {
-							throw new Exception("데이터 위변조 체크 실패");
-						}
-					}
-				}
-					
-				//공통 부분만
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				out.println("");
-				
-				if("VBank".equals(resultMap.get("payMethod"))){ //가상계좌
-					
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-					out.println("");	
-					
-				}else if("DirectBank".equals(resultMap.get("payMethod"))){ //실시간계좌이체
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					 
-				}else if("iDirectBank".equals(resultMap.get("payMethod"))){ //실시간계좌이체
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					 
-				}else if("HPP".equals(resultMap.get("payMethod"))){ //휴대폰
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-				}else if("DGCL".equals(resultMap.get("payMethod"))){//게임문화상품권
-					String sum="0",sum2="0",sum3="0",sum4="0",sum5="0",sum6="0";
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-					if(!"".equals(resultMap.get("GAMG_Num2"))){
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					if(!"".equals(resultMap.get("GAMG_Num3"))){
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					if(!"".equals(resultMap.get("GAMG_Num4"))){
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					if(!"".equals(resultMap.get("GAMG_Num5"))){
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					if(!"".equals(resultMap.get("GAMG_Num6"))){
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					out.println("");
-					
-				}else if("OCBPoint".equals(resultMap.get("payMethod"))){ //오케이 캐쉬백
-				
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-// 					out.println("");
-// 					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");					
-					out.println("");
-					out.println("");
-					out.println("");
-					
-				}else if("GSPT".equals(resultMap.get("payMethod"))){ //GSPoint
-				
-					out.println("");
-					out.println("");
-					out.println("");					
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");					
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-				}else if("UPNT".equals(resultMap.get("payMethod"))){ //U-포인트
-					
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");			
-					out.println("");
-					out.println("");
-					out.println("");
-					
-				}
-				else if("KWPY".equals(resultMap.get("payMethod"))){ //뱅크월렛 카카오
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-				}else if("Culture".equals(resultMap.get("payMethod"))){//문화 상품권
-				  out.println("");
-					out.println("");
-					out.println("");
-					
-				}else if("TEEN".equals(resultMap.get("payMethod"))){//틴캐시
-					out.println("");
-					out.println("");
-					out.println("");									
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");	
-										
-				}else if("Bookcash".equals(resultMap.get("payMethod"))){//도서문화상품권
-					
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-				}else if("PhoneBill".equals(resultMap.get("payMethod"))){//폰빌전화결제
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-
-				}else if("Bill".equals(resultMap.get("payMethod"))){//빌링결제
-					out.println("");
-					out.println("");
-					out.println("");
-				}else if("Auth".equals(resultMap.get("payMethod"))){//빌링결제
-					out.println("");
-					out.println("");
-					if ("BILL_CARD".equalsIgnoreCase(resultMap.get("payMethodDetail"))) {
-						out.println("");
-					} else  if ("BILL_HPP".equalsIgnoreCase(resultMap.get("payMethodDetail"))) {
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");			//상품명
-						out.println("");
-
-					} else {
-						//
-					}		
-				}else if("HPMN".equals(resultMap.get("payMethod"))){//해피머니
-					
-				}else{//카드
-					int  quota=Integer.parseInt(resultMap.get("CARD_Quota"));
-					if(resultMap.get("EventCode")!=null){				
-						out.println("");
-						out.println("");					
-						out.println("");
-					}
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					if("1".equals(resultMap.get("CARD_Interest")) || "1".equals(resultMap.get("EventCode"))){					
-						out.println("");
-						out.println("");	
-					}else if(quota > 0 && !"1".equals(resultMap.get("CARD_Interest"))){
-						out.println("");
-						out.println("");
-					}
-						
-					if("1".equals(resultMap.get("point"))){
-						out.println("");
-						out.println("");
-						out.println("");
-					}else{
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					out.println("");
-					
-					if(resultMap.get("OCB_Num")!=null && resultMap.get("OCB_Num") != ""){
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					if(resultMap.get("GSPT_Num")!=null && resultMap.get("GSPT_Num") != ""){
-						out.println("");
-						out.println("");
-						out.println("");
-						
-						out.println("");
-						out.println("");
-						out.println("");
-						
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-					
-					if(resultMap.get("UNPT_CardNum")!=null && resultMap.get("UNPT_CardNum") != ""){
-						out.println("");
-						out.println("");
-						out.println("");
-						
-						out.println("");
-						out.println("");
-						out.println("");
-						
-						out.println("");
-						out.println("");
-						out.println("");
-					}
-			    }
-				out.println("

거래 성공 여부

성공

결과 코드

" +resultMap.get("resultCode")+"

결과 내용

" +resultMap.get("resultMsg")+"

거래 성공 여부

실패

결과 코드

" +resultMap.get("resultCode")+"

결과 내용

" +resultMap.get("resultMsg")+"

결과 내용

* 데이터 위변조 체크 실패

거래 번호

" +resultMap.get("tid")+"

결제방법(지불수단)

" +resultMap.get("payMethod")+"

결제완료금액

" +resultMap.get("TotPrice")+"원

주문 번호

" +resultMap.get("MOID")+"

승인날짜

" +resultMap.get("applDate")+"

승인시간

" +resultMap.get("applTime")+"

입금 계좌번호

" +resultMap.get("VACT_Num")+"

입금 은행코드

" +resultMap.get("VACT_BankCode")+"

입금 은행명

" +resultMap.get("vactBankName")+"

예금주 명

" +resultMap.get("VACT_Name")+"

송금자 명

" +resultMap.get("VACT_InputName")+"

송금 일자

" +resultMap.get("VACT_Date")+"

송금 시간

" +resultMap.get("VACT_Time")+"

은행코드

" +resultMap.get("ACCT_BankCode")+"

현금영수증 발급결과코드

" +resultMap.get("CSHR_ResultCode")+"

현금영수증 발급구분코드

(0 - 소득공제용, 1 - 지출증빙용)

" +resultMap.get("CSHR_Type")+"

은행코드

" +resultMap.get("ACCT_BankCode")+"

현금영수증 발급결과코드

" +resultMap.get("CSHRResultCode")+"

현금영수증 발급구분코드

(0 - 소득공제용, 1 - 지출증빙용)

" +resultMap.get("CSHR_Type")+"

통신사

" +resultMap.get("HPP_Corp")+"

결제장치

" +resultMap.get("payDevice")+"

휴대폰번호

" +resultMap.get("HPP_Num")+"

게임문화상품권승인금액

" +resultMap.get("GAMG_ApplPrice")+"원

사용한 카드수

" +resultMap.get("GAMG_Cnt")+"

사용한 카드번호

" +resultMap.get("GAMG_Num1")+"

카드잔액

" +resultMap.get("GAMG_Price1")+"원

사용한 카드번호

" +resultMap.get("GAMG_Num2")+"

카드잔액

" +resultMap.get("GAMG_Price2")+"원

사용한 카드번호

" +resultMap.get("GAMG_Num3")+"

카드잔액

" +resultMap.get("GAMG_Price3")+"원

사용한 카드번호

" +resultMap.get("GAMG_Num4")+"

카드잔액

" +resultMap.get("GAMG_Price4")+"원

사용한 카드번호

" +resultMap.get("GAMG_Num5")+"

카드잔액

" +resultMap.get("GAMG_Price5")+"원

사용한 카드번호

" +resultMap.get("GAMG_Num6")+"

카드잔액

" +resultMap.get("GAMG_Price6")+"원

지불구분

" +resultMap.get("PayOption")+"

결제완료금액

" +resultMap.get("applPrice")+"원

OCB 카드번호

" +resultMap.get("OCB_Num")+"

적립 승인번호

" +resultMap.get("OCB_SaveApplNum")+"

사용 승인번호

" +resultMap.get("OCB_PayApplNum")+"

OCB 지불 금액

" +resultMap.get("OCB_PayPrice")+"

지불구분

" +resultMap.get("PayOption")+"

GS 포인트 승인금액

" +resultMap.get("GSPT_ApplPrice")+"원

GS 포인트 적립금액

" +resultMap.get("GSPT_SavePrice")+"원

GS 포인트 지불금액

" +resultMap.get("GSPT_PayPrice")+"원

U포인트 카드번호

" +resultMap.get("UPoint_Num")+"

가용포인트

" +resultMap.get("UPoint_usablePoint")+"

포인트지불금액

" +resultMap.get("UPoint_ApplPrice")+"

결제방법

" +resultMap.get("payMethod")+"

결과 코드

" +resultMap.get("resultCode")+"

결과 내용

" +resultMap.get("resultMsg")+"

거래 번호

" +resultMap.get("tid")+"

주문 번호

" +resultMap.get("MOID")+"

결제완료금액

" +resultMap.get("price")+"원

사용일자

" +resultMap.get("applDate")+"

사용시간

" +resultMap.get("applTime")+"

컬처랜드 아이디

" +resultMap.get("CULT_UserID")+"

틴캐시 승인번호

" +resultMap.get("TEEN_ApplNum")+"

틴캐시아이디

" +resultMap.get("TEEN_UserID")+"

틴캐시승인금액

" +resultMap.get("TEEN_ApplPrice")+"원

도서상품권 승인번호

" +resultMap.get("BCSH_ApplNum")+"

도서상품권 사용자ID

" +resultMap.get("BCSH_UserID")+"

도서상품권 승인금액

" +resultMap.get("BCSH_ApplPrice")+"원

승인전화번호

" +resultMap.get("PHNB_Num")+"

빌링키

" +resultMap.get("CARD_BillKey")+"

빌링키

" +resultMap.get("CARD_BillKey")+"

" +resultMap.get("HPP_BillKey")+"

통신사

" +resultMap.get("HPP_Corp")+"

결제장치

" +resultMap.get("payDevice")+"

휴대폰번호

" +resultMap.get("HPP_Num")+"

상품명

" +resultMap.get("goodName")+"

이벤트 코드

" +resultMap.get("EventCode")+"

카드번호

" +resultMap.get("CARD_Num")+"

승인번호

" +resultMap.get("applNum")+"

할부기간

" +resultMap.get("CARD_Quota")+"

할부 유형

무이자

할부 유형

유이자 *유이자로 표시되더라도 EventCode 및 EDI에 따라 무이자 처리가 될 수 있습니다.

포인트 사용 여부

사용

포인트 사용 여부

미사용

카드 종류

" +resultMap.get("CARD_Code")+ "

카드 발급사

" +resultMap.get("CARD_BankCode")+ "

OK CASHBAG 카드번호

" +resultMap.get("OCB_Num")+ "

OK CASHBAG 적립 승인번호

" +resultMap.get("OCB_SaveApplNum")+ "

OK CASHBAG 포인트지불금액

" +resultMap.get("OCB_PayPrice")+ "

GS&Point 카드번호

" +resultMap.get("GSPT_Num")+ "

GS&Point 잔여한도

" +resultMap.get("GSPT_Remains")+ "

GS&Point 승인금액

" +resultMap.get("GSPT_ApplPrice")+ "

U-Point 카드번호

" +resultMap.get("UNPT_CardNum")+ "

U-Point 가용포인트

" +resultMap.get("UPNT_UsablePoint")+ "

U-Point 포인트지불금액

" +resultMap.get("UPNT_PayPrice")+ "

"); - out.println(""); - out.println(""); - out.println("
"); - out.println(""); - out.println("
"); - - out.println("
"); - - // 수신결과를 파싱후 resultCode가 "0000"이면 승인성공 이외 실패 - // 가맹점에서 스스로 파싱후 내부 DB 처리 후 화면에 결과 표시 - - // payViewType을 popup으로 해서 결제를 하셨을 경우 - // 내부처리후 스크립트를 이용해 opener의 화면 전환처리를 하세요 - - //throw new Exception("강제 Exception"); - } catch (Exception ex) { - - //#################################### - // 실패시 처리(***가맹점 개발수정***) - //#################################### - - //---- db 저장 실패시 등 예외처리----// - System.out.println(ex); - - //##################### - // 망취소 API - //##################### - String netcancelResultString = httpUtil.processHTTP(authMap, netCancel); // 망취소 요청 API url(고정, 임의 세팅 금지) - - out.println("## 망취소 API 결과 ##"); - - // 취소 결과 확인 - out.println("

"+netcancelResultString.replaceAll("<", "<").replaceAll(">", ">")+"

"); - } - - }else{ - - //############# - // 인증 실패시 - //############# - out.println("
"); - out.println("####인증실패####"); - - out.println("

"+paramMap.toString()+"

"); - - } - - }catch(Exception e){ - - System.out.println(e); - } -%> diff --git a/src/main/webapp/INIpayStdSample/close.jsp b/src/main/webapp/INIpayStdSample/close.jsp deleted file mode 100644 index 9bcb31c0..00000000 --- a/src/main/webapp/INIpayStdSample/close.jsp +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/main/webapp/INIpayStdSample/popup.jsp b/src/main/webapp/INIpayStdSample/popup.jsp deleted file mode 100644 index b99c4696..00000000 --- a/src/main/webapp/INIpayStdSample/popup.jsp +++ /dev/null @@ -1,7 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> -<%@ page import="java.util.*"%> - - - - - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/Child.html b/src/main/webapp/MagicLine4Web/ML4Web/Child.html deleted file mode 100644 index 598086c6..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/Child.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - Cross Domain Test Page - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- -
-
- - - -
-
-
-
-
-
-
msg
-
-

-
-
-
-
-
-
-
- - - - - - - - - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cert_Sign.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cert_Sign.html deleted file mode 100644 index 94f584c3..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cert_Sign.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - -전자서명 - - - - - - - - - - -
-
- -
-
- - - -
선택한 인증서
-
-
-
-
- -
-
-
- - -
원문
-
-
- -
-
- -
인증서 비밀번호 입력
-
-
-
- - - -
- - -

- -

-
- -
-
- -
-
- -
-
- - - - - - - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cert_View.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cert_View.html deleted file mode 100644 index 868b3c65..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cert_View.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - - - - - - -
-
- -
-
- - - -
-
    -
  • -
  • -
-
-
-
일반 인증서 정보
-
- - -
-
- - -
- - - -

-
-
-
- - -
- -
-
-
자세히 인증서 정보
-
- - - - - - - - - - - - - - -
인증서 정보 자세히 보기
-
-
- -
-
- -
-
- -
-
- -
-
- - - -

-
-
-
-
- -
-
- -
-
- - - - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Install.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Install.html deleted file mode 100644 index ecea20d1..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Install.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Install_cryptoC.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Install_cryptoC.html deleted file mode 100644 index 8e747f7f..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Install_cryptoC.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- 아이콘 - MagicLine 설치 페이지로 이동합니다. -
-
-
-
- -

- -

-
-
-
-
- - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Linux_Install.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Linux_Install.html deleted file mode 100644 index efee739c..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Linux_Install.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Update.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Update.html deleted file mode 100644 index a40f6c4a..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Update.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Update_cryptoC.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Update_cryptoC.html deleted file mode 100644 index a3d23ea8..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Cs_Update_cryptoC.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- 아이콘 - 최신 버전의 MagicLine이 아닙니다.
최신 버전으로 설치합니다.
취소시 디스크,보안매체를 이용할 수
없습니다.
-
-
-
-
- -

- -

-
-
-
-
- - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Main.jsp b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Main.jsp deleted file mode 100644 index f2d27597..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Main.jsp +++ /dev/null @@ -1,207 +0,0 @@ - -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - - 인증서 선택 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Mgmt.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Mgmt.html deleted file mode 100644 index 95a02663..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_Mgmt.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - - -인증서 관리 - - - - - -전자서명 - - - - -
-
- -
-
- -
매직라인4
-
인증서 저장 위치 선택
-
-
- -
- -
-
-
- - - -
- -
사용할 인증서 선택
-
-
-
- -
인증서 관리 메뉴
- - -
- -

- -
-
- - -
-
- -
-
- - - - - - - - -
- -
-
- -
-
- - -

- -

-
- -
-
- -
- - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_SaveCertMain.jsp b/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_SaveCertMain.jsp deleted file mode 100644 index 1d3b949e..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/ML4Web_SaveCertMain.jsp +++ /dev/null @@ -1,212 +0,0 @@ - -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - - 인증서 선택 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/call.html b/src/main/webapp/MagicLine4Web/ML4Web/UI/call.html deleted file mode 100644 index 11db9b20..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/call.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - -제품 설치 확인중입니다. - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_Draw.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_Draw.css deleted file mode 100644 index 8d919a57..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_Draw.css +++ /dev/null @@ -1,423 +0,0 @@ -/******************* storage Select *******************/ -.ML_cp_AD {padding:10px 9px 0; margin:0; } -.ML_cp_AD img {vertical-align:top; margin:0; padding:0} -/* .ML_storage_box_sub {width:375px; margin-left:11px;} -.customNavigation{display:none;} */ -.ML_storage_box {position:relative; margin:0 9px; height:75px; border:1px solid #a8a8a8;} -.ML_storage_box_sub {position:relative; width:375px; /* margin-left:11px; */ overflow:hidden;} -.MLstrSlide {width:375px; margin:0;height:75px;overflow:hidden;z-index:10;} -/* .MLstrSlide_admin {width:375px; margin:0;height:75px;overflow:hidden;z-index:10;} */ -#wrap_stg_01 {left:0px;} -#wrap_stg_02 {left:375px;} -.customNavigation{position:absolute;top:0;right:0; width:22px; height:75px;background:#fff;} -/* .ML_storage_area {margin:0; width:375px; height:75px; display:block;} -.ML_storage_area ul {height:74px; text-align:center;} */ - - -.ML_storage_area {position:absolute; float:left; width:375px; margin:0;height:75px; display:block;} -.ML_storage_area ul {height:75px; text-align:center;overflow:hidden;} -.ML_storage_area li {float:left;background:;} -.ML_storage_area li a{display:block; width:75px; height:75px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/storage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_storage_area li span{display:inline-block; padding-top:55px} - - -/* positioning */ - - - -.ML_storage_area li.ML_storage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_storage_area li.ML_storage_smartcert a:hover {background-position: -75px -150px;} -.ML_storage_area li.ML_storage_smartcert a:focus {background-position: -75px -150px;} -.ML_storage_area li.ML_storage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_storage_area li.ML_storage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_smartcert.ins a{background-position: -375px -150px; color:#bebebe;} - -.ML_storage_area li.ML_storage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_storage_area li.ML_storage_token a:hover {background-position: -75px -225px;} -.ML_storage_area li.ML_storage_token a:focus {background-position: -75px -225px;} -.ML_storage_area li.ML_storage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_storage_area li.ML_storage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_token.ins a{background-position: -375px -225px; color:#bebebe;} - -.ML_storage_area li.ML_storage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_storage_area li.ML_storage_browser a:hover {background-position: -75px -75px;} -.ML_storage_area li.ML_storage_browser a:focus {background-position: -75px -75px;} -.ML_storage_area li.ML_storage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_storage_area li.ML_storage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_browser.ins a{background-position: -375px -75px; color:#bebebe;} - -.ML_storage_area li.ML_storage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_storage_area li.ML_storage_phone a:hover {background-position: -75px -300px;} -.ML_storage_area li.ML_storage_phone a:focus {background-position: -75px -300px;} -.ML_storage_area li.ML_storage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_storage_area li.ML_storage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_phone.ins a{background-position: -375px -300px; color:#bebebe;} - -.ML_storage_area li.ML_storage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_storage_area li.ML_storage_hdd a:hover {background-position: -75px 0;} -.ML_storage_area li.ML_storage_hdd a:focus {background-position: -75px 0;} -.ML_storage_area li.ML_storage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_storage_area li.ML_storage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_hdd.ins a{background-position: -375px 0; color:#bebebe;} - -.ML_storage_area li.ML_storage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_storage_area li.ML_storage_sch a:hover {background-position: -75px -375px;} -.ML_storage_area li.ML_storage_sch a:focus {background-position: -75px -375px;} -.ML_storage_area li.ML_storage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_storage_area li.ML_storage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_sch.ins a{background-position: -375px -375px; color:#bebebe;} - -.ML_storage_area li.ML_storage_shdd a {width:75px; height:75px; background-position: 0 -450px;} -.ML_storage_area li.ML_storage_shdd a:hover {background-position: -75px -450px;} -.ML_storage_area li.ML_storage_shdd a:focus {background-position: -75px -450px;} -.ML_storage_area li.ML_storage_shdd.on a{background-position: -225px -450px; color:#fff;} -.ML_storage_area li.ML_storage_shdd.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_shdd.ins a{background-position: -375px -450px; color:#bebebe;} - -.ML_storage_area li.ML_storage_cloud a {width:75px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_cloud a:hover {background-position: -75px -525px;} -.ML_storage_area li.ML_storage_cloud a:focus {background-position: -75px -525px;} -.ML_storage_area li.ML_storage_cloud.on a{background-position: -225px -525px; color:#fff;} -.ML_storage_area li.ML_storage_cloud.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_cloud.ins a{background-position: -375px -525px; color:#bebebe;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - - -/******************* import/export storage Select *******************/ -.ML_iestorage_box {position:relative; margin:0 0 10px;; height:170px; border:1px solid #a8a8a8; overflow-y:scroll; overflow-x:hidden;} -.ML_iestorage_area {margin:0; width:375px; height:75px; display:block;} -.ML_iestorage_area ul {height:74px; text-align:center; padding:0 8px;} -.ML_iestorage_area li {float:left;background:;padding:5px 5px;} -.ML_iestorage_area li a{display:block; width:75px; height:75px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/iestorage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_iestorage_area li span{display:inline-block; padding-top:55px} - -/* import/export storage positioning */ -.ML_iestorage_area li.ML_iestorage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_iestorage_area li.ML_iestorage_smartcert a:hover {background-position: -75px -150px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_smartcert a:focus {background-position: -150px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_smartcert.ins a{background-position: -375px -150px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_iestorage_area li.ML_iestorage_token a:hover {background-position: -75px -225px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_token a:focus {background-position: -150px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_token.ins a{background-position: -375px -225px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_iestorage_area li.ML_iestorage_browser a:hover {background-position: -75px -75px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_browser a:focus {background-position: -150px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_browser.ins a{background-position: -375px -75px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_iestorage_area li.ML_iestorage_phone a:hover {background-position: -75px -300px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_phone a:focus {background-position: -150px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_phone.ins a{background-position: -375px -300px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_iestorage_area li.ML_iestorage_hdd a:hover {background-position: -75px 0; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_hdd a:focus {background-position: -150px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_hdd.ins a{background-position: -375px 0; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_iestorage_area li.ML_iestorage_sch a:hover {background-position: -75px -375px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sch a:focus {background-position: -150px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sch.ins a{background-position: -375px -375px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_usb a {width:75px; height:75px; background-position: 0 -450px;} -.ML_iestorage_area li.ML_iestorage_usb a:hover {background-position: -75px -450px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_usb a:focus {background-position: -150px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.on a{background-position: -225px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_usb.ins a{background-position: -375px -450px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_pc a {width:75px; height:75px; background-position: 0 -525px;} -.ML_iestorage_area li.ML_iestorage_pc a:hover {background-position: -75px -525px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_pc a:focus {background-position: -150px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.on a{background-position: -225px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_pc.ins a{background-position: -375px -525px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sd a {width:75px; height:75px; background-position: 0 -600px;} -.ML_iestorage_area li.ML_iestorage_sd a:hover {background-position: -75px -600px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sd a:focus {background-position: -150px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.on a{background-position: -225px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.off a{background-position: -300px -600px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sd.ins a{background-position: -375px -600px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_shdd a {width:75px; height:75px; background-position: 0 -675px;} -.ML_iestorage_area li.ML_iestorage_shdd a:hover {background-position: -75px -675px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_shdd a:focus {background-position: -150px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.on a{background-position: -225px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.off a{background-position: -300px -675px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_shdd.ins a{background-position: -375px -675px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_cloud a {width:75px; height:75px; background-position: 0 -750px;} -.ML_iestorage_area li.ML_iestorage_cloud a:hover {background-position: -75px -750px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_cloud a:focus {background-position: -150px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.on a{background-position: -225px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.off a{background-position: -300px -750px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_cloud.ins a{background-position: -375px -750px; color:#cdcdcd;} - -.ML_iestorage_area {*zoom:1;} -.ML_iestorage_area li:after{display:block; content:'';clear:both;} - -.drive_position {position:absolute; margin:0; cursor:pointer; z-index:1000000;} -.drive_position ul {position:; right:0; top:0; padding:0 0 !important; background:#fff; background:#fefefe; -/*border: 1px solid #a8a8a8;*/ -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); /* IE6-9 */ -} -.drive_position ul li {display:inline-block;position:relative;} -/* style all links */ -.drive_position li a { height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:10px !important;} -.drive_position li a {color:#000 !important; font-size:12px !important; display:block !important;} -.drive_position li a:hover, .drive_position a:focus, .drive_position a:active {background:#e0e0e0 !important;} - -/* style sub menu width */ -.wdh_150 {width:150px !important;} -.wdh_210 {width:210px !important;} - -/* style sub level links */ -.drive_position li:last-child a {border-bottom:none !important;} -.drive_position.pos_01 {top:36px; left:75px;} -.drive_position.pos_02 {top:36px; left:150px;} -.drive_position.pos_03 {top:36px; left:225px;} -.drive_position.pos_04 {top:36px; left:100px;} -.drive_position.pos_05 {top:36px; left:150px;} -.drive_position.iepos_01 {top:36px; left:75px;} -.drive_position.iepos_02 {top:36px; left:150px;} -.drive_position.iepos_03 {top:36px; left:50px;} -.drive_position.iepos_04 {top:36px; left:125px;} -.drive_position.iepos_05 {top:111px; left:75px;} -.drive_position.iepos_06 {top:111px; left:150px;} -.drive_position.iepos_07 {top:111px; left:50px;} -.drive_position.iepos_08 {top:111px; left:125px;} -.drive_position.iepos_09 {bottom:36px; left:75px;} -.drive_position.iepos_10 {bottom:36px; left:150px;} -.drive_position.iepos_11 {bottom:36px; left:50px;} -.drive_position.iepos_12 {bottom:36px; left:125px;} - -#str_df {display:inline;} -#str_ex {display:inline;} - -.ML_storage_box .str_add_li {margin:0; position:absolute; right:0; top:0; display:inline-block; width:22px; height:75px; text-align:right; border-left:1px solid #a8a8a8; cursor:pointer; } -.ML_storage_box .str_add_li.ne{background:url(../images/icon_next.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.pr {background:url(../images/icon_prev.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.dis {background:url(../images/icon_next_dis.png) no-repeat 4px 30px;} -.btn_str_add{display:block; width:22px; height:75px; margin:0;} - -.str_add {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} - -/******************* admin_menu Select *******************/ -.ML_admin_box {margin:0 9px; padding:0 1px; height:57px; border:1px solid #a8a8a8;} -.ML_admin_menu_dft {float:left;} -.ML_admin_menu_dft {*zoom:1;} -.ML_admin_menu_dft:after{display:block; content:'';clear:both;} -.ML_admin_menu_area {height:57px; vertical-align:top;} -.ML_admin_menu_area ul {width:398px; height:57px; text-align:center; overflow:hidden} -.ML_admin_menu_area li {float:left;} -.ML_admin_menu_area li.cer_sch {width:25px; text-align:right; padding-top:5px;} -.ML_admin_menu_area li a{display:block; width:66px; height:57px; vertical-align:text-bottom; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; overflow:hidden; background:url(../images/admin_icon.png) no-repeat; cursor:pointer} -.ML_admin_menu_area li span{display:inline-block; padding-top:39px} - -/* admin_positioning */ -.ML_admin_menu_area li.ad_cert_copy a {width:66px; height:57px; background-position: 0 0;} -.ML_admin_menu_area li.ad_cert_copy a:hover {background-position: -66px 0; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_copy a:focus {background-position: -132px 0; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_copy.on a{background-position: -198px 0;} -.ML_admin_menu_area li.ad_cert_copy.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_copy.ins a{background-position: -330px 0; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_view a {width:66px; height:57px; background-position: 0 -57px;} -.ML_admin_menu_area li.ad_cert_view a:hover {background-position: -66px -57px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_view a:focus {background-position: -132px -57px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_view.on a{background-position: -180px -57px;} -.ML_admin_menu_area li.ad_cert_view.off a{background-position: -264px -57px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_view.ins a{background-position: -330px -57px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_del a {width:66px; height:57px; background-position: 0 -114px;} -.ML_admin_menu_area li.ad_cert_del a:hover {background-position: -66px -114px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_del a:focus {background-position: -132px -114px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_del.on a{background-position: -198px -114px;} -.ML_admin_menu_area li.ad_cert_del.off a{background-position: -264px -114px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_del.ins a{background-position: -330px -114px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_pass_change a {width:66px; height:57px; background-position: 0 -171px;} -.ML_admin_menu_area li.ad_cert_pass_change a:hover {background-position: -66px -171px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_pass_change a:focus {background-position: -132px -171px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_pass_change.on a{background-position: -198px -171px;} -.ML_admin_menu_area li.ad_cert_pass_change.off a{background-position: -264px -171px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_pass_change.ins a{background-position: -330px -171px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_import a {width:66px; height:57px; background-position: 0 -228px;} -.ML_admin_menu_area li.ad_cert_import a:hover {background-position: -66px -228px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_import a:focus {background-position: -132px -228px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_import.on a{background-position: -198px -228px;} -.ML_admin_menu_area li.ad_cert_import.off a{background-position: -264px -228px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_import.ins a{background-position: -330px -228px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_send a {width:66px; height:57px; background-position: 0 -285px;} -.ML_admin_menu_area li.ad_cert_send a:hover {background-position: -66px -285px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_send a:focus {background-position: -132px -285px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_send.on a{background-position: -198px -285px;} -.ML_admin_menu_area li.ad_cert_send.off a{background-position: -264px -285px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_send.ins a{background-position: -330px -285px; color:#cdcdcd;} - - -.dv_sl {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} -.dv_sl ul {position:absolute; right:0; top:25px; padding:0 0 !important; width:150px; height:70px; background:#fff; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.dv_sl ul li {display:inline-block;position:relative;} -/* style all links */ -.dv_sl li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:0 !important;} -.dv_sl li a {color:#000 !important; font-size:12px !important; display:block !important;} -.dv_sl li a:hover, .dv_sl a:focus, .dv_sl a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.dv_sl li:last-child a {border-bottom:none !important;} - -.ML_cert_list_area {margin:0 9px; height:150px;} -.ML_cert_list_pwc_area {margin:0 9px; height:125px;} -.ML_cert_list_pwchg_area {margin:11px 10px 0; height:98px; overflow: auto;} -.ML_cert_list_del_area {margin:11px 10px 0; height:203px; overflow: auto;} -.ML_cert_list_pfx_area {margin:11px 10px 0; height:213px; overflow: auto;} -.ML_cert_list_sign_area {margin:11px 10px 0;} -.ML_cert_list {margin:0 0 8px; padding:5px 0; height:56px; color:#616161; font-size:12px; line-height:16px; background:#f4f4f4;} -.ML_cert_list:hover {} -.ML_cert_list.list_on {background:#efe8cf url(../images/btn_check.png) no-repeat right bottom ;} -.ML_cert_nor {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_normalcy.png) no-repeat;} -.ML_cert_exp {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_expire.png) no-repeat;} -.ML_cert_no {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_no.png) no-repeat;} -.ML_cert_txt {float:left; padding:5px 0 0 10px;} -.ML_cert_btn {position:absolute; right:0; margin-top:5px; width:20px; height:20px; background:url(../images/certlist_menu_icon.png) no-repeat; cursor:pointer} - -.ML_cert_orgtext_area {margin:0 10px; height:270px; background:#fdfdfd; border:1px solid #a8a8a8; overflow: auto;} -#orgtext{padding:10px 10px; line-height:18px;} -#orgtext .orgtit{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#orgtext .orgtxt{display:block; padding:0 8px; text-align:justify;} - -#ML_cert_orgtext_area1 {margin:-1px 10px 0; padding:10px 0; height:340px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area01 {margin:0 8px; height:298px; border:1px solid #e0e0e0; background:#fafafa; overflow:auto;} -.ML_cert_detail_btn {height:30px; text-align:center; margin:0 10px; padding:10px 10px;} -#detail_text01{padding:10px 10px; line-height:18px;} -#detail_text01 .dtltit01{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text01 .dtltxt01{display:block; padding:0 8px; text-align:justify;} - -#ML_cert_orgtext_area2 {margin:-1px 10px 0; padding:10px 0; height:340px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area02 {margin:0 8px; height:265px; background:#fafafa;} -#detail_text02{line-height:18px;} -#detail_text02 .dtltit02{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text02 .dtltxt02{display:block; padding:0 8px; text-align:justify;} - - -#ML_cert_detail_area03 {margin:8px 8px 0; height:67px; border:1px solid #e0e0e0; background:#fafafa; overflow: auto;} -#detail_text03{padding:10px 0; line-height:18px;} -#detail_text03 .dtltit03{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text03 .dtltxt03{display:block; padding:0 8px; text-align:justify;} - - -.ML_cert_btn ul {position:absolute; right:0; top:25px; width:150px; height:70px; background:#415161; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.ML_cert_btn ul li {display:inline-block;position:relative;} -/* sub navigation */ -.ML_cert_btn li ul {background:#415161;position:absolute;left:0;top:35px;width:200px;} -.ML_cert_btn li li {position:relative; margin:0;display:block;} -.ML_cert_btn li li ul {position:absolute;top:0;left:200px;margin:0;} -/* style all links */ -.ML_cert_btn a {width:150px; line-height:35px;padding:0 12px; font-size:12px;} -.ML_cert_btn a {color:#fff; font-size:12px; display:block;} -.ML_cert_btn a:hover, .ML_cert_btn a:focus, .ML_cert_btn a:active {background:#566777;} -/* style sub level links */ -.ML_cert_btn li li a { border-bottom:solid 1px #222;margin:0 10px;padding:0;} -.ML_cert_btn li li:last-child a {border-bottom:none;} -/* show arrows for dropdowns -.ML_cert_btn li.dropdown > a {background-image:url('../img/arrow-down.png');background-position:right 20px;background-repeat:no-repeat;} -.ML_cert_btn li li.dropdown > a { background-image:url('../img/arrow-right.png');background-position:right 16px;background-repeat:no-repeat;} */ - -.certi_name {display:block; color:#34373b; font-size:12px; font-weight:bold;} -.certi_issuOrg {display:block; font-size:11px;} -.certi_expDate {display:block; font-size:11px;} -.certi_CIDI {display:inline-block;} -.certi_nocert {display:block; color:#222; line-height:48px; font-size:14px; font-weight:bold;} - -.ML_cert_list {*zoom:1;} -.ML_cert_list:after{display:block; content:'';clear:both;} - -.ML_cert_list_blank {height:1px;} -#ML_cert_info {position:absolute; top:12px; background:#414243 url(../images/option_icon.png) no-repeat 10px 9px; width:336px; height:35px; padding:0 10px 0 34px; margin:0 0 0 10px; line-height:35px; color:#fff; text-align:left; overflow:hidden; border-radius:5px 5px 0 0; z-index:9; -box-shadow:0 -2px 4px #d0d0d0; --moz-box-shadow:0 -2px 4px #d0d0d0; /* FF3.6+ */ --webkitbox-shadow:0 -2px 4px #d0d0d0; /* Chrome,Safari4+ */ --o-box-shadow:0 -2px 4px #d0d0d0; /* Opera 11.10+ */ --ms-box-shadow:0 -2px 4px #d0d0d0; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#a2a2a2", direction=40,strength=6 ); IE6-9 */ -} - -.ML_status_area {} -.ML_pw_area {height:65px; background:#fafafa; text-align:center; margin:0 9px; z-index:10;} -.ML_pw_chg_status_area {position:relative; bottom:0; height:169px;} -.ML_pw_chg_area {position:absolute; bottom:0; width:360px; height:135px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_del_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_del_area {position:absolute; bottom:0; width:360px; height:30px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_pfx_status_area {position:relative; bottom:0; height:100px;} -.ML_pw_pfx_area {position:absolute; top:0; width:360px; height:80px; text-align:center; margin:8px 10px 4px; padding:5px 10px; z-index:10;} -.ML_pw_detail_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_detail_area {position:absolute; bottom:0; width:100%; height:30px; text-align:center; margin:8px 0 4px; padding:10px 0; z-index:10;} -.ML_pw_dialog_status_area {} -.ML_pw_dialog_area {min-height:65px; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_dialog_txt {min-height:22px; margin-bottom:20px; font-size:14px; line-height:22px; color:#222;} - -/* .ML_cert_pw_area {margin:0 0 10px; height:30px; text-align:left;} */ -.ML_cert_pw_area {margin:0 0 10px; height:30px; text-align:left;position:relative;} -.ML_status_area_chg {margin-top:10px;} -.ML_cert_pw_tit {display:inline-block; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px;} -.ML_cert_pw_tit_chg {display:inline-block; width:115px; line-height:25px; font-size:12px; color:#2a2a2a; padding-right:5px; text-align:right; font-size:12px;} -.ML_cert_pw_field_chg {display:inline-block;} -.ML_cert_pw_tit_pfx {display:inline-block; width:90px; line-height:25px; font-size:12px; color:#2a2a2a; padding-right:5px; text-align:left; font-size:12px;} -.ML_cert_pw_field {display:inline-block; vertical-align:top; width:100%;} -.ML_cert_pw_key_box {position:absolute;top:0;right:0;} -.ML_cert_pw_keypad {display:block; width:30px; height:30px; background:url(../images/btn_key.png)no-repeat 2px 2px;} -.ML_cert_popup_tit {display:inline-block; width:105px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px; text-align:right;} -.f_wh_210 {width:210px;} -.f_wh_224 {width:224px;} -.f_wh_227 {width:227px;} -.f_wh_240 {width:240px;} -.f_wh_255 {width:255px;} -.f_wh_259 {width:259px;} -.f_wh_274 {width:274px;} -.f_wh_370 {width:360px;} -.f_wh_400 {width:400px;} -.ML_cert_secure_key {display:inline; width:25px; height:25px;} -.ML_cert_secure_key img { vertical-align:top; margin:0; padding:0} - -.ML_cert_file_area {margin:0 0 10px; height:30px; position:relative; text-align:left; overflow:hidden;} -.ML_cert_file_area2 {margin:14px 0 10px; height:143px; position:relative; text-align:left; overflow:hidden;} -.ML_cert_file_btn {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn:hover {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder_ovr.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn:focus {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder_ovr.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn_fcs {display:inline-block; width:28px; height:28px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer; } -.ML_cert_file_add {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder.png) no-repeat; cursor:pointer;} -.ML_cert_file_add:hover {width:25px; height:25px; background:url(../images/btn_folder_ovr.png) no-repeat; cursor:pointer;} -.ML_cert_file_add:focus {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder_ovr.png) no-repeat; cursor:pointer;} - -.input_wrap{display:inline-block; height:28px; padding:1px; vertical-align:top;background:#ddd;} - -.ML_cert_status {margin:0 0 10px; height:25px; border:1px solid #ddd; text-align:left;} -.ML_cert_status .status_txt {padding-left:10px; line-height:25px;} - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common.css deleted file mode 100644 index b261aa26..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common.css +++ /dev/null @@ -1,754 +0,0 @@ -@charset "utf-8"; - - -/******************* common *******************/ -html,body{height:100%} -*{margin:0;padding:0;font-family:"맑은고딕",Malgun Gothic,"돋움",Dotum,"굴림",Gulim,Helvetica,"애플고딕",AppleGothic,Sans-serif;-webkit-text-size-adjust:none} -body{background:#fff;color:#5e5e5e;word-wrap:break-word;word-break:break-all} -body,input,select,textarea{font-size:12px} -textarea{border:1px solid #bcbcbc} -li{list-style:none} -table{border-collapse:collapse} -img,fieldset{border:none} -a{text-decoration:none;cursor:pointer} -label{cursor:pointer} -strong{font-weight:normal} -em,address{font-style:normal} -input{outline-style:none;} -input:-ms-input-placeholder { color: gray; } -input::-webkit-input-placeholder { color: gray; } -input::-moz-placeholder { color: gray; } -input::-moz-placeholder { color: gray; } - - -input[type='checkbox']{vertical-align:middle;border:0;border-radius:0} -input[type='checkbox']:focus{border: 1px solid #0e4eb2;outline: 1px solid #0e4eb2;} - -/* -input[type='checkbox']{background:url(../images/checkbox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='checkbox']:checked{background:#fff; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='checkbox']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} -*/ -input[type='radio']{vertical-align:middle;} -/* -input[type='radio']{background:url(../images/radiobox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='radio']:checked{background:#fff; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='radio']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} -*/ - -.text_redB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_red_10 {PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 10px; PADDING-TOP: 2px} -.text_black{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 18px} -.text_grey24{PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #666666; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 24px} -.text_blackB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_orangeB{COLOR: #ee6a02; FONT-SIZE: 14px; FONT-WEIGHT: bold} -.text_orange{COLOR: #ee6a02; FONT-SIZE: 12px} -.text_grayB{FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray2B{COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray{FONT-SIZE: 12px} -.text_gray_c9c9c9{COLOR: #c9c9c9; FONT-SIZE: 12px} -.ali_left{TEXT-ALIGN: left; PADDING-LEFT: 13px} -.ali_right{TEXT-ALIGN:right;PADDING-RIGHT:50px} - -.w_space4{padding-left:4px} -.w_space5{padding-left:5px} -.w_space8{padding-left:8px} -.w_space10{padding-left:10px} -.w_space12{padding-left:12px} -.w_space15{padding-left:15px} -.w_space18{padding-left:18px} -.w_space20{padding-left:20px} -.w_space25{padding-left:25px} -.w_space30{padding-left:30px} -.w_space35{padding-left:35px} -.w_space40{padding-left:40px} -.w_space50{padding-left:50px} -.w_space80{padding-left:80px} - - -/******************* layout *******************/ - -#ML_container{background:#fdfdfd; width:418px; height:558px; font-size:12px;border:none; -} -#ML_container_popup{background:#fdfdfd; width:398px; font-size:12px;border:none; -} -.ML_pw_popup_area {text-align:center; margin:8px 10px 4px; padding:11px 0; z-index:10;} -.ML_alert_popup_area {text-align:center; margin:0 10px 4px; padding:11px 0; z-index:10;} -.ML_container_pfx{background:#fdfdfd;height:290px; width:400px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_dialog{background:#fdfdfd;min-height:130px; width:350px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_popup{background:#fdfdfd;height:180px; width:400px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_certview{background:#fdfdfd;height:400px; width:380px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_header{height:35px;position:relative;z-index:1; background:#e4e4e4;} -.ML_header_sdw{height:30px;position:relative;z-index:1; background:#28353f; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_content{} -.ML_content .ML_content-area{} -.ML_footer{height:15px;} - -/* header */ -.hd_area{ text-align:right;} -.hd_area .head_tit{position:absolute; display:inline-block; left:0; padding-left:10px; color:#34373b; font-size:16px; font-weight:bold; line-height:30px;} -.hd_area .head_close{position:relative; display:inline-block; width:27px; height:27px; padding:8px 8px 0 0; right:0; background:#b2b2b2;} -.hd_area .head_close:hover{background:#a0a0a0;} -.hd_area .head_close img{} - -/* Title */ -.ML_sub_tit {margin:10px 8px 9px;color:#34373b; font-size:12px; font-weight:bold;} -.ML_sub_tit_link {display:inline-block; color:#34373b; font-size:12px; font-weight:bold; float:right; text-align:right;} -.ML_sub_tit_link a {color:#727272;} -.ML_sub_tit_link a:hover {color:#3d6fb7;} -.ML_sub_tit_link a:focus {color:#3d6fb7;} - -.ML_sub_tit_bt {margin:6px 8px 9px;color:#34373b; font-size:12px; font-weight:bold;line-height:20px;} -.hp_btn{text-align:center;line-height:16px;} -.hp_btn button{width:140px;height:20px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.hp_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#1672e4} -.hp_btn img{vertical-align:middle; padding-right:3px; margin-top:-2px;} -.hp_btn button:hover{background:#dbdbdb;} -.hp_btn button:focus{background:#dbdbdb;} - -/* Install */ -#ML_container_install{background:#fdfdfd; width:398px; font-size:12px;border:none; -} -.install_wrap{padding:10px 0 0 20px; vertical-align:top;} -.install_wrap img{display:inline-block; padding:0 20px 0 0; vertical-align:middle;} -.install_txt{display:inline-block; width:220px; color:#193b65; font-weight:bold; font-size:12px; line-height:20px;vertical-align:middle;} -.loadbar{width:152px; height:21px; margin-left:60px; display:block; } -.loadbar_txt{display:block; color:#193b65; margin:10px 0 0 64px; font-weight:bold; } -.loadbar_txt2{display:block; color:#193b65; font-weight:bold; } - -/******************* storage Select *******************/ -.ML_cp_AD {padding:10px 9px 0; margin:0; } -.ML_cp_AD img {vertical-align:top; margin:0; padding:0} -/* .ML_storage_box_sub {width:375px; margin-left:11px;} -.customNavigation{display:none;} */ -.ML_storage_box {position:relative; margin:0 9px; height:75px; border:1px solid #a8a8a8;} -.ML_storage_box_sub {position:relative; width:375px; /* margin-left:11px; */ overflow:hidden;} -.MLstrSlide {width:375px; margin:0;height:75px;overflow:hidden;z-index:10;} -/* .MLstrSlide_admin {width:375px; margin:0;height:75px;overflow:hidden;z-index:10;} */ -#wrap_stg_01 {left:0px;} -#wrap_stg_02 {left:375px;} -.customNavigation{position:absolute;top:0;right:0; width:22px; height:75px;background:#fff;} -/* .ML_storage_area {margin:0; width:375px; height:75px; display:block;} -.ML_storage_area ul {height:74px; text-align:center;} */ -.ML_storage_area {position:absolute; float:left; width:375px; margin:0;height:75px; display:block;} -.ML_storage_area ul {height:75px; text-align:center;overflow:hidden;} -.ML_storage_area li {float:left;background:;} -.ML_storage_area li a{display:block; width:75px; height:75px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/storage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_storage_area li span{display:inline-block; padding-top:55px} - -/* positioning */ -.ML_storage_area li.ML_storage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_storage_area li.ML_storage_smartcert a:hover {background-position: -75px -150px;} -.ML_storage_area li.ML_storage_smartcert a:focus {background-position: -75px -150px;} -.ML_storage_area li.ML_storage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_storage_area li.ML_storage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_smartcert.ins a{background-position: -375px -150px; color:#cdcdcd;} -.ML_storage_area li.ML_storage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_storage_area li.ML_storage_token a:hover {background-position: -75px -225px;} -.ML_storage_area li.ML_storage_token a:focus {background-position: -75px -225px;} -.ML_storage_area li.ML_storage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_storage_area li.ML_storage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_token.ins a{background-position: -375px -225px; color:#cdcdcd;} -.ML_storage_area li.ML_storage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_storage_area li.ML_storage_browser a:hover {background-position: -75px -75px;} -.ML_storage_area li.ML_storage_browser a:focus {background-position: -75px -75px;} -.ML_storage_area li.ML_storage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_storage_area li.ML_storage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_browser.ins a{background-position: -375px -75px; color:#cdcdcd;} -.ML_storage_area li.ML_storage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_storage_area li.ML_storage_phone a:hover {background-position: -75px -300px;} -.ML_storage_area li.ML_storage_phone a:focus {background-position: -75px -300px;} -.ML_storage_area li.ML_storage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_storage_area li.ML_storage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_phone.ins a{background-position: -375px -300px; color:#cdcdcd;} -.ML_storage_area li.ML_storage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_storage_area li.ML_storage_hdd a:hover {background-position: -75px 0;} -.ML_storage_area li.ML_storage_hdd a:focus {background-position: -75px 0;} -.ML_storage_area li.ML_storage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_storage_area li.ML_storage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_hdd.ins a{background-position: -375px 0; color:#cdcdcd;} -.ML_storage_area li.ML_storage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_storage_area li.ML_storage_sch a:hover {background-position: -75px -375px;} -.ML_storage_area li.ML_storage_sch a:focus {background-position: -75px -375px;} -.ML_storage_area li.ML_storage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_storage_area li.ML_storage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_sch.ins a{background-position: -375px -375px; color:#cdcdcd;} -.ML_storage_area li.ML_storage_shdd a {width:75px; height:75px; background-position: 0 -450px;} -.ML_storage_area li.ML_storage_shdd a:hover {background-position: -75px -450px;} -.ML_storage_area li.ML_storage_shdd a:focus {background-position: -75px -450px;} -.ML_storage_area li.ML_storage_shdd.on a{background-position: -225px -450px; color:#fff;} -.ML_storage_area li.ML_storage_shdd.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_shdd.ins a{background-position: -375px -450px;} -.ML_storage_area li.ML_storage_cloud a {width:75px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_cloud a:hover {background-position: -75px -525px;} -.ML_storage_area li.ML_storage_cloud a:focus {background-position: -75px -525px;} -.ML_storage_area li.ML_storage_cloud.on a{background-position: -225px -525px; color:#fff;} -.ML_storage_area li.ML_storage_cloud.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_cloud.ins a{background-position: -375px -525px; color:#cdcdcd;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -/*#MSG_TS703{padding-top:49px; display: inline-block;}*/ - -/******************* import/export storage Select *******************/ -.ML_iestorage_box {position:relative; margin:0 0 10px;; height:170px; border:1px solid #a8a8a8; overflow-y:scroll; overflow-x:hidden;} -.ML_iestorage_area {margin:0; width:375px; height:75px; display:block;} -.ML_iestorage_area ul {height:74px; text-align:center; padding:0 8px;} -.ML_iestorage_area li {float:left;background:;padding:5px 5px;} -.ML_iestorage_area li a{display:block; width:75px; height:75px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/iestorage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_iestorage_area li span{display:inline-block; padding-top:55px} - -/* import/export storage positioning */ -.ML_iestorage_area li.ML_iestorage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_iestorage_area li.ML_iestorage_smartcert a:hover {background-position: -75px -150px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_smartcert a:focus {background-position: -150px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_smartcert.ins a{background-position: -375px -150px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_iestorage_area li.ML_iestorage_token a:hover {background-position: -75px -225px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_token a:focus {background-position: -150px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_token.ins a{background-position: -375px -225px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_iestorage_area li.ML_iestorage_browser a:hover {background-position: -75px -75px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_browser a:focus {background-position: -150px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_browser.ins a{background-position: -375px -75px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_iestorage_area li.ML_iestorage_phone a:hover {background-position: -75px -300px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_phone a:focus {background-position: -150px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_phone.ins a{background-position: -375px -300px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_iestorage_area li.ML_iestorage_hdd a:hover {background-position: -75px 0; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_hdd a:focus {background-position: -150px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_hdd.ins a{background-position: -375px 0; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_iestorage_area li.ML_iestorage_sch a:hover {background-position: -75px -375px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sch a:focus {background-position: -150px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sch.ins a{background-position: -375px -375px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_usb a {width:75px; height:75px; background-position: 0 -450px;} -.ML_iestorage_area li.ML_iestorage_usb a:hover {background-position: -75px -450px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_usb a:focus {background-position: -150px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.on a{background-position: -225px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_usb.ins a{background-position: -375px -450px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_pc a {width:75px; height:75px; background-position: 0 -525px;} -.ML_iestorage_area li.ML_iestorage_pc a:hover {background-position: -75px -525px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_pc a:focus {background-position: -150px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.on a{background-position: -225px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_pc.ins a{background-position: -375px -525px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sd a {width:75px; height:75px; background-position: 0 -600px;} -.ML_iestorage_area li.ML_iestorage_sd a:hover {background-position: -75px -600px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sd a:focus {background-position: -150px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.on a{background-position: -225px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.off a{background-position: -300px -600px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sd.ins a{background-position: -375px -600px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_shdd a {width:75px; height:75px; background-position: 0 -675px;} -.ML_iestorage_area li.ML_iestorage_shdd a:hover {background-position: -75px -675px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_shdd a:focus {background-position: -150px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.on a{background-position: -225px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.off a{background-position: -300px -675px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_shdd.ins a{background-position: -375px -675px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_cloud a {width:75px; height:75px; background-position: 0 -750px;} -.ML_iestorage_area li.ML_iestorage_cloud a:hover {background-position: -75px -750px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_cloud a:focus {background-position: -150px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.on a{background-position: -225px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.off a{background-position: -300px -750px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_cloud.ins a{background-position: -375px -750px; color:#cdcdcd;} - -.ML_iestorage_area {*zoom:1;} -.ML_iestorage_area li:after{display:block; content:'';clear:both;} - -.drive_position {position:absolute; margin:0; cursor:pointer; z-index:1000000;} -.drive_position ul {position:; right:0; top:0; padding:0 0 !important; background:#fff; background:#fefefe; -/*border: 1px solid #a8a8a8;*/ -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); /* IE6-9 */ -overflow-y:auto; -overflow-x:hidden; -max-height:200px; -} -.drive_position ul li {display:inline-block;position:relative;} -/* style all links */ -.drive_position li a { height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:10px !important;} -.drive_position li a {color:#000 !important; font-size:12px !important; display:block !important;} -.drive_position li a:hover, .drive_position a:focus, .drive_position a:active {background:#e0e0e0 !important;} - -/* style sub menu width */ -.wdh_150 {width:150px !important;} -.wdh_210 {width:210px !important;} -.wdh_220 {width:220px !important;} - -/* style sub level links */ -.drive_position li:last-child a {border-bottom:none !important;} -.drive_position.pos_01 {top:36px; left:75px;} -.drive_position.pos_02 {top:36px; left:150px;} -.drive_position.pos_03 {top:36px; left:225px;} -.drive_position.pos_04 {top:36px; left:100px;} -.drive_position.pos_05 {top:36px; left:150px;} -.drive_position.iepos_01 {top:36px; left:75px;} -.drive_position.iepos_02 {top:36px; left:150px;} -.drive_position.iepos_03 {top:36px; left:50px;} -.drive_position.iepos_04 {top:36px; left:125px;} -.drive_position.iepos_05 {top:111px; left:75px;} -.drive_position.iepos_06 {top:111px; left:150px;} -.drive_position.iepos_07 {top:111px; left:50px;} -.drive_position.iepos_08 {top:111px; left:125px;} -.drive_position.iepos_09 {bottom:36px; left:75px;} -.drive_position.iepos_10 {bottom:36px; left:150px;} -.drive_position.iepos_11 {bottom:36px; left:50px;} -.drive_position.iepos_12 {bottom:36px; left:125px;} - -#str_df {display:inline;} -#str_ex {display:inline;} - -.ML_storage_box .str_add_li {margin:0; position:absolute; right:0; top:0; display:inline-block; width:22px; height:75px; text-align:right; border-left:1px solid #a8a8a8; cursor:pointer; } -.ML_storage_box .str_add_li.ne{background:url(../images/icon_next.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.pr {background:url(../images/icon_prev.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.dis {background:url(../images/icon_next_dis.png) no-repeat 4px 30px;} -.btn_str_add{display:block; width:22px; height:75px; margin:0;} - -.str_add {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} - - -/******************* admin_menu Select *******************/ -.ML_admin_box {margin:0 9px; padding:0 1px; height:57px; border:1px solid #a8a8a8;} -.ML_admin_menu_dft {float:left;} -.ML_admin_menu_dft {*zoom:1;} -.ML_admin_menu_dft:after{display:block; content:'';clear:both;} -.ML_admin_menu_area {height:57px; vertical-align:top;} -.ML_admin_menu_area ul {width:398px; height:57px; text-align:center; overflow:hidden} -.ML_admin_menu_area li {float:left;} -.ML_admin_menu_area li.cer_sch {width:25px; text-align:right; padding-top:5px;} -.ML_admin_menu_area li a{display:block; width:66px; height:57px; vertical-align:text-bottom; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; overflow:hidden; background:url(../images/admin_icon.png) no-repeat; cursor:pointer} -.ML_admin_menu_area li span{display:inline-block; padding-top:39px} - -/* admin_positioning */ -.ML_admin_menu_area li.ad_cert_copy a {width:66px; height:57px; background-position: 0 0;} -.ML_admin_menu_area li.ad_cert_copy a:hover {background-position: -66px 0; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_copy a:focus {background-position: -132px 0; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_copy.on a{background-position: -198px 0;} -.ML_admin_menu_area li.ad_cert_copy.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_copy.ins a{background-position: -330px 0; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_view a {width:66px; height:57px; background-position: 0 -57px;} -.ML_admin_menu_area li.ad_cert_view a:hover {background-position: -66px -57px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_view a:focus {background-position: -132px -57px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_view.on a{background-position: -180px -57px;} -.ML_admin_menu_area li.ad_cert_view.off a{background-position: -264px -57px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_view.ins a{background-position: -330px -57px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_del a {width:66px; height:57px; background-position: 0 -114px;} -.ML_admin_menu_area li.ad_cert_del a:hover {background-position: -66px -114px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_del a:focus {background-position: -132px -114px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_del.on a{background-position: -198px -114px;} -.ML_admin_menu_area li.ad_cert_del.off a{background-position: -264px -114px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_del.ins a{background-position: -330px -114px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_pass_change a {width:66px; height:57px; background-position: 0 -171px;} -.ML_admin_menu_area li.ad_cert_pass_change a:hover {background-position: -66px -171px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_pass_change a:focus {background-position: -132px -171px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_pass_change.on a{background-position: -198px -171px;} -.ML_admin_menu_area li.ad_cert_pass_change.off a{background-position: -264px -171px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_pass_change.ins a{background-position: -330px -171px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_import a {width:66px; height:57px; background-position: 0 -228px;} -.ML_admin_menu_area li.ad_cert_import a:hover {background-position: -66px -228px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_import a:focus {background-position: -132px -228px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_import.on a{background-position: -198px -228px;} -.ML_admin_menu_area li.ad_cert_import.off a{background-position: -264px -228px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_import.ins a{background-position: -330px -228px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_send a {width:66px; height:57px; background-position: 0 -285px;} -.ML_admin_menu_area li.ad_cert_send a:hover {background-position: -66px -285px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_send a:focus {background-position: -132px -285px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_send.on a{background-position: -198px -285px;} -.ML_admin_menu_area li.ad_cert_send.off a{background-position: -264px -285px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_send.ins a{background-position: -330px -285px; color:#cdcdcd;} - - -.dv_sl {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} -.dv_sl ul {position:absolute; right:0; top:25px; padding:0 0 !important; width:150px; height:70px; background:#fff; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.dv_sl ul li {display:inline-block;position:relative;} -/* style all links */ -.dv_sl li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:0 !important;} -.dv_sl li a {color:#000 !important; font-size:12px !important; display:block !important;} -.dv_sl li a:hover, .dv_sl a:focus, .dv_sl a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.dv_sl li:last-child a {border-bottom:none !important;} - -.ML_cert_list_area {margin:0 9px; height:150px;} -.ML_cert_list_pwc_area {margin:0 9px; height:125px;} -.ML_cert_list_pwchg_area {margin:11px 10px 0; height:98px; overflow: auto;} -.ML_cert_list_del_area {margin:11px 10px 0; height:203px; overflow: auto;} -.ML_cert_list_pfx_area {margin:11px 10px 0; height:213px; overflow: auto;} -.ML_cert_list_sign_area {margin:11px 10px 0;} -.ML_cert_list {margin:0 0 8px; padding:5px 0; height:56px; color:#616161; font-size:12px; line-height:16px; background:#f4f4f4;} -.ML_cert_list:hover {} -.ML_cert_list.list_on {background:#efe8cf url(../images/btn_check.png) no-repeat right bottom ;} -.ML_cert_nor {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_normalcy.png) no-repeat;} -.ML_cert_exp {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_expire.png) no-repeat;} -.ML_cert_no {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_no.png) no-repeat;} -.ML_cert_txt {float:left; padding:5px 0 0 10px;} -.ML_cert_btn {position:absolute; right:0; margin-top:5px; width:20px; height:20px; background:url(../images/certlist_menu_icon.png) no-repeat; cursor:pointer} - -.ML_cert_orgtext_area {margin:0 10px; height:270px; background:#fdfdfd; border:1px solid #a8a8a8; overflow: auto;} -#orgtext{padding:10px 10px; line-height:18px;} -#orgtext .orgtit{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#orgtext .orgtxt{display:block; padding:0 8px; text-align:justify;} - -#ML_cert_orgtext_area1 {margin:-1px 10px 0; padding:10px 0; height:340px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area01 {margin:0 8px; height:298px; border:1px solid #e0e0e0; background:#fafafa; overflow:auto;} -.ML_cert_detail_btn {height:30px; text-align:center; margin:0 10px; padding:10px 10px;} -#detail_text01{padding:10px 10px; line-height:18px;} -#detail_text01 .dtltit01{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text01 .dtltxt01{display:block; padding:0 8px; text-align:justify;} - -#ML_cert_orgtext_area2 {margin:-1px 10px 0; padding:10px 0; height:340px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area02 {margin:0 8px; height:265px; background:#fafafa;} -#detail_text02{line-height:18px;} -#detail_text02 .dtltit02{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text02 .dtltxt02{display:block; padding:0 8px; text-align:justify;} - - -#ML_cert_detail_area03 {margin:8px 8px 0; height:67px; border:1px solid #e0e0e0; background:#fafafa; overflow: auto;} -#detail_text03{padding:10px 0; line-height:18px;} -#detail_text03 .dtltit03{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text03 .dtltxt03{display:block; padding:0 8px; text-align:justify;} - - -.ML_cert_btn ul {position:absolute; right:0; top:25px; width:150px; height:70px; background:#415161; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.ML_cert_btn ul li {display:inline-block;position:relative;} -/* sub navigation */ -.ML_cert_btn li ul {background:#415161;position:absolute;left:0;top:35px;width:200px;} -.ML_cert_btn li li {position:relative; margin:0;display:block;} -.ML_cert_btn li li ul {position:absolute;top:0;left:200px;margin:0;} -/* style all links */ -.ML_cert_btn a {width:150px; line-height:35px;padding:0 12px; font-size:12px;} -.ML_cert_btn a {color:#fff; font-size:12px; display:block;} -.ML_cert_btn a:hover, .ML_cert_btn a:focus, .ML_cert_btn a:active {background:#566777;} -/* style sub level links */ -.ML_cert_btn li li a { border-bottom:solid 1px #222;margin:0 10px;padding:0;} -.ML_cert_btn li li:last-child a {border-bottom:none;} -/* show arrows for dropdowns -.ML_cert_btn li.dropdown > a {background-image:url('../img/arrow-down.png');background-position:right 20px;background-repeat:no-repeat;} -.ML_cert_btn li li.dropdown > a { background-image:url('../img/arrow-right.png');background-position:right 16px;background-repeat:no-repeat;} */ - -.certi_name {display:block; color:#34373b; font-size:12px; font-weight:bold;} -.certi_issuOrg {display:block; font-size:11px;} -.certi_expDate {display:block; font-size:11px;} -.certi_CIDI {display:inline-block;} -.certi_nocert {display:block; color:#222; line-height:48px; font-size:14px; font-weight:bold;} - -.ML_cert_list {*zoom:1;} -.ML_cert_list:after{display:block; content:'';clear:both;} - -.ML_cert_list_blank {height:1px;} -#ML_cert_info {position:absolute; top:12px; background:#414243 url(../images/option_icon.png) no-repeat 10px 9px; width:336px; height:35px; padding:0 10px 0 34px; margin:0 0 0 10px; line-height:35px; color:#fff; text-align:left; overflow:hidden; border-radius:5px 5px 0 0; z-index:9; -box-shadow:0 -2px 4px #d0d0d0; --moz-box-shadow:0 -2px 4px #d0d0d0; /* FF3.6+ */ --webkitbox-shadow:0 -2px 4px #d0d0d0; /* Chrome,Safari4+ */ --o-box-shadow:0 -2px 4px #d0d0d0; /* Opera 11.10+ */ --ms-box-shadow:0 -2px 4px #d0d0d0; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#a2a2a2", direction=40,strength=6 ); IE6-9 */ -} - -.ML_status_area {} -.ML_pw_area {height:65px; background:#fafafa; text-align:center; margin:0 9px; z-index:10;} -.ML_pw_chg_status_area {position:relative; bottom:0; height:169px;} -.ML_pw_chg_area {position:absolute; bottom:0; width:360px; height:135px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_del_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_del_area {position:absolute; bottom:0; width:360px; height:30px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_pfx_status_area {position:relative; bottom:0; height:100px;} -.ML_pw_pfx_area {position:absolute; top:0; width:360px; height:80px; text-align:center; margin:8px 10px 4px; padding:5px 10px; z-index:10;} -.ML_pw_detail_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_detail_area {position:absolute; bottom:0; width:100%; height:30px; text-align:center; margin:8px 0 4px; padding:10px 0; z-index:10;} -.ML_pw_dialog_status_area {} -.ML_pw_dialog_area {min-height:65px; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_dialog_txt {min-height:22px; margin-bottom:20px; font-size:14px; line-height:22px; color:#222;} - -/* .ML_cert_pw_area {margin:0 0 10px; height:30px; text-align:left;} */ -.ML_cert_pw_area {margin:0 0 7px; height:30px; text-align:left;position:relative;} -.ML_status_area_chg {margin-top:10px;} -.ML_cert_pw_tit {display:inline-block; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px;} -.ML_cert_pw_tit_chg {display:inline-block; width:115px; line-height:25px; font-size:12px; color:#2a2a2a; padding-right:5px; text-align:right; font-size:12px;} -.ML_cert_pw_field_chg {display:inline-block;} -.ML_cert_pw_tit_pfx {display:inline-block; width:90px; line-height:25px; font-size:12px; color:#2a2a2a; padding-right:5px; text-align:left; font-size:12px;} -.ML_cert_pw_field {display:inline-block; vertical-align:top; width:100%;} -.ML_cert_pw_key_box {position:absolute;top:0;right:0;} -.ML_cert_pw_keypad {display:block; width:30px; height:30px; background:url(../images/btn_key.png) 2px 2px; background-repeat:no-repeat;} -.ML_cert_popup_tit {display:inline-block; width:105px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px; text-align:right;} -.ML_cert_popup_tit_copy {display:inline-block; width:75px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px; text-align:center;} -.f_wh_210 {width:210px;} -.f_wh_224 {width:224px;} -.f_wh_227 {width:227px;} -.f_wh_240 {width:240px;} -.f_wh_255 {width:255px;} -.f_wh_259 {width:259px;} -.f_wh_274 {width:274px;} -.f_wh_370 {width:360px;} -.f_wh_400 {width:400px;} -.ML_cert_secure_key {display:inline; width:25px; height:25px;} -.ML_cert_secure_key img { vertical-align:top; margin:0; padding:0} - -.ML_cert_file_area {margin:0 0 5px; height:30px; position:relative; text-align:left; overflow:hidden;} -.ML_cert_file_area2 {margin:14px 0 10px; height:143px; position:relative; text-align:left; overflow:hidden;} -.ML_cert_file_btn {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn:hover {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder_ovr.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn:focus {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder_ovr.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn_fcs {display:inline-block; width:28px; height:28px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer; } -.ML_cert_file_add {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder.png) no-repeat; cursor:pointer;} -.ML_cert_file_add:hover {width:25px; height:25px; background:url(../images/btn_folder_ovr.png) no-repeat; cursor:pointer;} -.ML_cert_file_add:focus {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder_ovr.png) no-repeat; cursor:pointer;} - -.input_wrap{display:inline-block; height:28px; padding:1px; vertical-align:top;background:#ddd;} - -.ML_cert_status {margin:0 0 10px; height:25px; border:1px solid #ddd; text-align:left;} -.ML_cert_status .status_txt {padding-left:10px; line-height:25px;} - -/* Input-box */ -.passwd_input{width:100%; height:28px; text-indent:10px; background:#ffffff; border:1px solid #a8a8a8; line-height:28px; } -.passwd_input:hover{border:1px solid #87c9ff;} -.passwd_input:focus{background:#fffbe6; border:1px solid #1672e4;} - -.capslock_box{position:relative; bottom:-20px; background: #ffffff; border:1px solid #000000; padding:10px; display:none;} -.capslock_box:after, .capslock_box:before{bottom: 100%; left: 10%; border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none;} -.capslock_box:after{border-color: rgba(255, 255, 255, 0); border-bottom-color: #ffffff; border-width: 9px; margin-left: -9px;} -.capslock_box:before{border-color: rgba(0, 0, 0, 0); border-bottom-color: #000000; border-width: 10px; margin-left: -10px;} - -.add_capslock_box{position:relative; bottom:-20px; left:30px; background: #ffffff; border:1px solid #000000; padding:10px; display:none;} -.add_capslock_box:after, .add_capslock_box:before{bottom: 100%; left: 50%; border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none;} -.add_capslock_box:after{border-color: rgba(255, 255, 255, 0); border-bottom-color: #ffffff; border-width: 9px; margin-left: -9px;} -.add_capslock_box:before{border-color: rgba(0, 0, 0, 0); border-bottom-color: #000000; border-width: 10px; margin-left: -10px;} - -/* buttom */ -.ML_btn_area {background:#fafafa; text-align:center; margin:10px 9px 0; z-index:10;} -.btn_row {width:100%; display:block;} -.btn_row p{display:inline;} -.btn_row_c {width:100%; display:block; margin-top:20px;} -.btn_row_c p{display:inline;} -.btn_row_s {margin:7px 9px;display:block; text-align:right;} -.btn_row_s p{display:inline;} -.btn_cell_left {display:inline; vertical-align:top; text-align:left; float:left;} -.btn_cell_left:after {content:""; display:table; clear:both;} -.btn_cell_center {width:100%; display:inline;vertical-align:top;} -.btn_cell_right {width:100%; display:inline;vertical-align:top; text-align:right;} -.MSG_cls{display:inline !important;} - -.whtgrey_btn{text-align:center;} -.whtgrey_btn button{width:128px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_btn img{vertical-align:middle; padding-right:3px;} -.whtgrey_btn button:hover{background:#dbdbdb;} -.whtgrey_btn button:focus{background:#dbdbdb;} - -.whtgrey_ws_btn{text-align:center;} -.whtgrey_ws_btn button{width:73px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_ws_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_ws_btn img{vertical-align:middle; padding-right:3px;} -.whtgrey_ws_btn button:hover{background:#dbdbdb;} -.whtgrey_ws_btn button:focus{background:#dbdbdb;} - -.whtgrey_ws_btn2{text-align:center;} -.whtgrey_ws_btn2 button{width:150px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_ws_btn2 button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_ws_btn2 img{vertical-align:middle; padding-right:3px;} -.whtgrey_ws_btn2 button:hover{background:#dbdbdb;} -.whtgrey_ws_btn2 button:focus{background:#dbdbdb;} - -.b_blue_btn{text-align:center} -.b_blue_btn button{width:116px;height:30px;border-radius:2px;border:1px solid #0456bb;cursor:pointer; background:#1672e4;} -.b_blue_btn button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#fff;} -.b_blue_btn button:hover{background:#1466cd;} -.b_blue_btn button:focus{background:#1466cd;} - -.b_blue_btn2{text-align:center} -.b_blue_btn2 button{width:97px;height:30px;border-radius:2px;border:1px solid #0456bb;cursor:pointer; background:#1672e4;} -.b_blue_btn2 button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#fff;} -.b_blue_btn2 button:hover{background:#1466cd;} -.b_blue_btn2 button:focus{background:#1466cd;} - -.b_grey_btn{text-align:center} -.b_grey_btn button{width:116px;height:30px;border-radius:2px;border:1px solid #a8a8a8;cursor:pointer; background:#dedede;} -.b_grey_btn button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#424242;} -.b_grey_btn button:hover{background:#c7c7c7;} -.b_grey_btn button:focus{background:#c7c7c7;} - -.b_grey_btn2{text-align:center} -.b_grey_btn2 button{width:97px;height:30px;border-radius:2px;border:1px solid #a8a8a8;cursor:pointer; background:#dedede;} -.b_grey_btn2 button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#424242;} -.b_grey_btn2 button:hover{background:#c7c7c7;} -.b_grey_btn2 button:focus{background:#c7c7c7;} - -.w_dkblue_btn{text-align:center} -.w_dkblue_btn button{width:200px;height:30px;border-radius:2px;border:1px solid #1e3046;cursor:pointer; background:#284870;} -.w_dkblue_btn button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:11px;font-weight:bold;color:#fff;} -.w_dkblue_btn button:hover{background:#1f3959;} -.w_dkblue_btn button:focus{background:#1f3959;} - -.copyCert_box{height:20px; z-index:99999; position:absolute; background: #ffffff; border:1px solid #000000; padding:2px 2px 0px 4px;} -.copyCert_box:after{content: ""; position: absolute; border-bottom: 7px solid #ffffff; border-right: 5px solid transparent; border-left: 5px solid transparent; top: -6px; left: 5px;} -.copyCert_box:before{content: ""; position: absolute; border-bottom: 7px solid #000000; border-right: 5px solid transparent; border-left: 5px solid transparent; top: -8px; left: 5px;} - -/* tabs */ -#ML_tabs {margin-top:10px;} -.tabs{margin:0 10px; z-index:1;} -.tabs li {display:inline-block; font-size:12px; } -.tabs a {width:80px; padding:9px 10px;display:inline-block; text-align:center; background:#f4f4f4;color:#34373b;text-decoration:none; border:1px solid #a8a8a8;} -.tabs a.active {background:#fdfdfd;color:#34373b; font-weight:bold; border-bottom:1px solid #fdfdfd;} - - -/* table */ -.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead, .detail_tb tbody{display:block; float:left; } -.detail_tb thead {background-color:#c8c8c8;} -.detail_tb thead tr th {height:20px; line-height:20px;} -.detail_tb tbody {min-height:10px; max-height:230px; overflow-y:auto; overflow-x:hidden;} -.detail_tb tbody {border-top:1px solid #b6b6b6;} -.detail_tb tbody tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody td, .detail_tb thead th{border-right:1px solid #b6b6b6;} -.detail_tb thead th:first-child{width:100px; padding:5px 5px;} -.detail_tb thead th{width:230px; padding:5px 5px;} -.detail_tb tbody td {padding:5px 5px; background:#fff; } -.detail_tb tbody td:first-child{width:110px; padding:5px 5px; background:#f6f6f6;} -.detail_tb tbody td:last-child{ border-right:none;padding:5px 5px;background:#fff;} -.detail_tb tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.detail_tb tbody tr:last-child{border-bottom:none;} -.detail_tb thead th:last-child{border-right:none;padding:5px 5px;} - -/*.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead tr{ background-color:#c8c8c8; } -.detail_tb thead tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody tr td{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.td_title{width:30%;}*/ - -/* footer */ -.ft_area{font:Verdana, Geneva, sans-serif; font-size:9px; letter-spacing:-1; line-height:15px; text-align:right} -.ft_area .ft_ver{position:absolute; left:0; padding-left:10px;} -.ft_area .ft_copy{position:relative; right:0; padding-right:10px;} - -/* PFX */ -.pfx_info{padding:10px 10px 5px 10px; background:#f5f5f5; font-size:11px; font-weight:bold;} -.pfx_br_chk{text-align:right; padding:0 0 12px;} -.pfx_btn_row_c {width:100%; display:block; margin-top:10px;} - -/* Loader */ -.ML_loader {width:150px; text-align:center; padding:7px 0; - border: 1px solid transparent; - background:#fff; - border-radius:5px; - box-shadow:0 4px 4px #777; - -moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ - -webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ - -o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ - -ms-box-shadow:0 4px 4px #777; /* IE10+ */ - /* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_loader img {} -.ML_loader span {display:inline-block; padding-top:4px; font-size:11px; color:#333; font-weight:bold;} - -/* 수정 및 추가된 css*/ -.save_to_br_chk{text-align:right; padding:0 0 12px;} -.ML_br_cert_pw_area {margin:0 0 10px; height:30px; text-align:left;} -.inner_head{background-color:#c8c8c8;} - -/* innerTable */ -#ML_cert_inner_area02 {margin:14px 0 10px; height:265px; background:#fafafa;} -.inner_tb{margin:0 0 18px; width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -/* .inner_tb thead, .inner_tb tbody{display:block; float:left; } -.inner_tb thead {background-color:#c8c8c8;} -.inner_tb thead tr th {} */ -.inner_tb tbody {overflow-y:auto; overflow-x:hidden;} -.inner_tb tbody {border-top:1px solid #b6b6b6;} -.inner_tb tbody tr th{padding:5px 5px; text-align:center; border:1px solid #b6b6b6;} -.inner_tb tbody td, .inner_tb thead th{border-right:1px solid #b6b6b6;} -.inner_tb thead th:first-child{width:320px; padding:5px 5px;} -.inner_tb thead th:last-child{width:210px; padding:5px 5px;} -.inner_tb thead th{width:237px; padding:5px 5px;} -.inner_tb tbody td {padding:5px 5px; background:#fff; width:237px;} -.inner_tb tbody td:first-child{width:700px; padding:5px 5px; background:#f6f6f6;} -.inner_tb tbody td:last-child{width:210px; border-right:none; padding:5px 5px; background:#fff;} -.inner_tb tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.inner_tb tbody tr:last-child{border-bottom:none;} -.inner_tb thead th:last-child{border-right:none;padding:5px 5px;} - -/* innerTable PFX*/ -.inner_tb_pfx{margin:0 0 18px; width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.inner_tb_pfx tbody {overflow-y:auto; overflow-x:hidden;} -.inner_tb_pfx tbody {border-top:1px solid #b6b6b6;} -.inner_tb_pfx tbody tr th{padding:5px 5px; text-align:center; border:1px solid #b6b6b6;} -.inner_tb_pfx tbody td {border-right:1px solid #b6b6b6;} -.inner_tb_pfx tbody td {padding:5px 5px; background:#fff; width:237px;} -.inner_tb_pfx tbody td:first-child{width:100px; padding:5px 5px; background:#f6f6f6;} -.inner_tb_pfx tbody td:last-child{width:400px; border-right:none; padding:5px 5px; background:#fff;} -.inner_tb_pfx tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.inner_tb_pfx tbody tr:last-child{border-bottom:none;} -.inner_tb_pfx thead th:last-child{border-right:none;padding:5px 5px;} - -.blind { - font-size: 1; - position: absolute; - top: -999999px; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_mobile.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_mobile.css deleted file mode 100644 index 901dd9a3..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_mobile.css +++ /dev/null @@ -1,670 +0,0 @@ -@charset "utf-8"; - - -/******************* common *******************/ -html,body{height:100%} -*{margin:0;padding:0;font-family:"맑은고딕",Malgun Gothic,"돋움",Dotum,"굴림",Gulim,Helvetica,Sans-serif;-webkit-text-size-adjust:none} -body{background:#fff;color:#5e5e5e;word-wrap:break-word;word-break:break-all} -body,input,select,textarea{} -textarea{border:1px solid #bcbcbc} -li{list-style:none} -table{border-collapse:collapse} -img,fieldset{border:none} -a{text-decoration:none;cursor:pointer} -label{cursor:pointer} -strong{font-weight:normal} -em,address{font-style:normal} -input{outline-style:none;} - - -/* -input[type='checkbox']{vertical-align:middle;border:0;border-radius:0} -input[type='checkbox']{background:url(../images/checkbox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='checkbox']:checked{background:#fff; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='checkbox']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} -input[type='radio']{vertical-align:middle;} -input[type='radio']{background:url(../images/radiobox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='radio']:checked{background:#fff; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='radio']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} - -input[type='radio']{vertical-align:middle;} -input[type='radio']{background:#fff; border:solid 1px #bebebe; border-radius:15px 15px; height:20px; width:20px; -webkit-appearance:none;} -input[type='radio']:checked{background:#fff; border:solid 1px #bebebe; border-radius:15px 15px;} -input[type='radio']:checked:after {content:' '; display:block; width:14px; height:14px; background:url(../images/check_radio.png); position:relative; top:2px; left:2px; border-radius:12px 12px;} -*/ - -.text_redB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_red_10 {PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 10px; PADDING-TOP: 2px} -.text_black{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 18px} -.text_grey24{PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #666666; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 24px} -.text_blackB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_orangeB{COLOR: #ee6a02; FONT-SIZE: 14px; FONT-WEIGHT: bold} -.text_orange{COLOR: #ee6a02; FONT-SIZE: 12px} -.text_grayB{FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray2B{COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray{FONT-SIZE: 12px} -.text_gray_c9c9c9{COLOR: #c9c9c9; FONT-SIZE: 12px} -.ali_left{TEXT-ALIGN: left; PADDING-LEFT: 13px} -.ali_right{TEXT-ALIGN:right;PADDING-RIGHT:50px} - -.w_space4{padding-left:4px} -.w_space5{padding-left:5px} -.w_space8{padding-left:8px} -.w_space10{padding-left:10px} -.w_space12{padding-left:12px} -.w_space15{padding-left:15px} -.w_space18{padding-left:18px} -.w_space20{padding-left:20px} -.w_space25{padding-left:25px} -.w_space30{padding-left:30px} -.w_space35{padding-left:35px} -/*.w_space40{padding-left:40px}*/ -.w_space40{padding-left:4%} -.w_space50{padding-left:50px} -.w_space80{padding-left:80px} - -/******************* Display *******************/ -#ML_dp_01 {display:none;} -#ML_dp_02 {display:none;} -#ML_dp_03 {display:none;} -#ML_dp_04 {display:none;} -#ML_dp_05 {} - -#ML_status_area { position:fixed; bottom:50px; width:100%; background:#fff; height:50px;} - -/******************* layout *******************/ -#ML_window{height: 100% !important; width: 100% !important; min-height:100% !important; min-width:100% !important; max-height:100% !important; max-width:100% !important;} -#ML_window_admin{height: 100% !important; width: 100% !important; min-height:100% !important; min-width:100% !important; max-height:100% !important; max-width:100% !important;} -#ML_cert_sign_window{height: 100% !important; width: 100% !important; min-height:100% !important; min-width:100% !important; max-height:100% !important; max-width:100% !important;} -.MLjqui-window{border:0 !important;box-shadow:none !important; border-radius:0 !important;} -.MLjqui-rc-t{ --moz-border-radius-topleft:0 !important; --webkit-border-top-left-radius:0 !important; -border-top-left-radius:0 !important; --moz-border-radius-topright:0 !important; --webkit-border-top-right-radius:0 !important; -border-top-right-radius0 !important; -} - -/******************* MLjqui-custom *******************/ -.MLjqui-widget-header{ -width:100% !important; -height:60px !important; -line-height:60px !important; -font-size: !important; -padding-left:!important; -} -.MLjqui-window-header{position:fixed !important; top:0; left:0; z-index:9999999;} -.MLjqui-widget-header-DSdatatable {display:none !important;} -.MLjqui-window-close-button-background{ display:none;} -#contentdataTable {width:100% !important;} -#contenttabledataTable {} -.MLjqui-grid-table-DSdatatable {width:100% !important;} -.MLjqui-grid-table-DSdatatable td{border-bottom:1px solid #a8a8a8 !important;} -/*.MLjqui-grid-table-DSdatatable tr:last-child td{border-bottom:0 !important;}*/ - -#ML_container{background:#fdfdfd; width:100% !important; height:100% !important; margin-bottom:-80px !important; font-size:12px;border:none; -} -#ML_container_popup{background:#fdfdfd; width:100%; font-size:12px;border:none; -} -.ML_pw_popup_area {text-align:center; margin:8px 10px 4px; padding:11px 0; z-index:10;} -.ML_container_pfx{background:#fdfdfd;height:260px; width:100%;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_dialog{background:#fdfdfd;min-height:220px; width:100%;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_popup{background:#fdfdfd;height:180px; width:400px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_certview{background:#fdfdfd;height:400px; width:380px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_header{height:35px;position:relative;z-index:1; background:#e4e4e4;} -.ML_header_sdw{height:30px;position:relative;z-index:1; background:#28353f; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_content{ - position: absolute; - top: 0; - left: -1px; - width: 100%; - min-height: 100%; -} -.ML_content .ML_content-area{padding-top:46px; padding-bottom:75px} -.ML_footer{height:15px;} - -/* header */ -.hd_area{ text-align:right;} -.hd_area .head_tit{position:absolute; display:inline-block; left:0; padding-left:10px; color:#34373b; font-size:1.6em; font-weight:bold; line-height:35px;} -.hd_area .head_close{position:relative; display:inline-block; width:27px; height:27px; padding:8px 8px 0 0; right:0; background:#b2b2b2;} -.hd_area .head_close:hover{background:#a0a0a0;} -.hd_area .head_close img{} - -/* Title */ -.ML_sub_tit {margin:0 8px;color:#34373b; font-size:1.3em; font-weight:bold; } - -/* Install */ -#ML_container_install{background:#fdfdfd; width:398px; font-size:12px;border:none; -} -.install_wrap{padding:0 0 0 20px; height:116px; vertical-align:top;} -.install_wrap img{display:inline-block; padding:0 20px; vertical-align:middle;} -.install_txt{display:inline-block; color:#193b65; font-weight:bold; font-size:14px; line-height:24px;} -.loadbar{width:152px; height:21px; margin-left:60px; display:block; } -.loadbar_txt{display:block; color:#193b65; margin:10px 0 0 64px; font-weight:bold; } -.loadbar_txt2{display:block; color:#193b65; font-weight:bold; } - -/******************* DATA Table *******************/ -.MLjqui-widget-content-DSdatatable{ -width:100% !important; -border:0 !important; - -} - -/******************* storage Select *******************/ -.ML_cp_AD {padding:10px 9px 0; margin:0; display:none;} -.ML_cp_AD img {vertical-align:top; margin:0; padding:0} -.ML_storage_box {position:fixed; top:46px; width:100%; margin:0; height:75px; border-top:1px solid #a8a8a8; border-bottom:1px solid #a8a8a8; background:#f7f7f7; z-index:9999999;} -.ML_storage_area {margin:0; width:396px; height:75px; display:block;} -.ML_storage_area ul {height:75px; text-align:center;} -.ML_storage_area li {float:left;background:;} -.ML_storage_area li a{display:block; width:75px; height:75px; overflow:hidden; color:#34373b; font-size:0.80em; font-weight:bold; letter-spacing:-1px; background:url(../images/storage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_storage_area li span{display:inline-block; padding-top:55px} - - -/* positioning */ -.ML_storage_area li.ML_storage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_storage_area li.ML_storage_smartcert a:hover {background-position: -75px -150px;} -.ML_storage_area li.ML_storage_smartcert a:focus {background-position: -148px -150px;} -.ML_storage_area li.ML_storage_smartcert.on a{background-position: -148px -150px; color:#fff;} -.ML_storage_area li.ML_storage_smartcert.off a{background-position: -264px -150px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_smartcert.ins a{background-position: -330px -150px; color:#bebebe;} -.ML_storage_area li.ML_storage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_storage_area li.ML_storage_token a:hover {background-position: -66px -225px;} -.ML_storage_area li.ML_storage_token a:focus {background-position: -132px -225px;} -.ML_storage_area li.ML_storage_token.on a{background-position: -198px -225px; color:#fff;} -.ML_storage_area li.ML_storage_token.off a{background-position: -264px -225px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_token.ins a{background-position: -330px -225px; color:#bebebe;} -.ML_storage_area li.ML_storage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_storage_area li.ML_storage_browser a:hover {background-position: -75px -75px;} -.ML_storage_area li.ML_storage_browser a:focus {background-position: -148px -75px;} -.ML_storage_area li.ML_storage_browser.on a{background-position: -148px -75px; color:#fff;} -.ML_storage_area li.ML_storage_browser.off a{background-position: -264px -75px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_browser.ins a{background-position: -330px -75px; color:#bebebe;} -.ML_storage_area li.ML_storage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_storage_area li.ML_storage_phone a:hover {background-position: -66px -300px;} -.ML_storage_area li.ML_storage_phone a:focus {background-position: -132px -300px;} -.ML_storage_area li.ML_storage_phone.on a{background-position: -198px -300px; color:#fff;} -.ML_storage_area li.ML_storage_phone.off a{background-position: -264px -300px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_phone.ins a{background-position: -330px -300px; color:#bebebe;} -.ML_storage_area li.ML_storage_hdd a {width:66px; height:75px; background-position: 0 0;} -.ML_storage_area li.ML_storage_hdd a:hover {background-position: -66px 0;} -.ML_storage_area li.ML_storage_hdd a:focus {background-position: -132px 0;} -.ML_storage_area li.ML_storage_hdd.on a{background-position: -198px 0; color:#fff;} -.ML_storage_area li.ML_storage_hdd.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_hdd.ins a{background-position: -330px 0; color:#bebebe;} -.ML_storage_area li.ML_storage_sch a {width:66px; height:75px; background-position: 0 -375px;} -.ML_storage_area li.ML_storage_sch a:hover {background-position: -66px -375px;} -.ML_storage_area li.ML_storage_sch a:focus {background-position: -132px -375px;} -.ML_storage_area li.ML_storage_sch.on a{background-position: -198px -375px; color:#fff;} -.ML_storage_area li.ML_storage_sch.off a{background-position: -264px -375px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_sch.ins a{background-position: -330px -375px; color:#bebebe;} -.ML_storage_area li.ML_storage_shdd a {width:66px; height:75px; background-position: 0 -450px;} -.ML_storage_area li.ML_storage_shdd a:hover {background-position: -66px -450px;} -.ML_storage_area li.ML_storage_shdd a:focus {background-position: -132px -450px;} -.ML_storage_area li.ML_storage_shdd.on a{background-position: -198px -450px; color:#fff;} -.ML_storage_area li.ML_storage_shdd.off a{background-position: -264px -450px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_shdd.ins a{background-position: -330px -450px; color:#bebebe;} -.ML_storage_area li.ML_storage_cloud a {width:66px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_cloud a:hover {background-position: -66px -525px;} -.ML_storage_area li.ML_storage_cloud a:focus {background-position: -132px -525px;} -.ML_storage_area li.ML_storage_cloud.on a{background-position: -198px -525px; color:#fff;} -.ML_storage_area li.ML_storage_cloud.off a{background-position: -264px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_cloud.ins a{background-position: -330px -525px; color:#bebebe;} -.ML_storage_area li.ML_storage_unisign a {width:66px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_unisign a:hover {background-position: -66px -525px;} -.ML_storage_area li.ML_storage_unisign a:focus {background-position: -132px -525px;} -.ML_storage_area li.ML_storage_unisign.on a{background-position: -198px -525px; color:#fff;} -.ML_storage_area li.ML_storage_unisign.off a{background-position: -264px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_unisign.ins a{background-position: -330px -525px; color:#bebebe;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - - -/******************* import/export storage Select *******************/ -.ML_iestorage_box {position:relative; margin:0 0 10px;; height:290px; border:1px solid #a8a8a8; overflow-y:scroll; overflow-x:hidden; width:100%} -.ML_iestorage_area {margin:0 auto; width:100%; height:75px; display:block;} -.ML_iestorage_area ul {height:74px; text-align:center; padding:0 8px; width:100%;} -.ML_iestorage_area li {float:left; padding:2%; width:20%; height:75px;} -.ML_iestorage_area li a{display:block; width:20%; height:75px; overflow:hidden; color:#34373b; font-size:1em; font-weight:bold; letter-spacing:-1px; background:url(../images/iestorage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_iestorage_area li span{display:inline-block; padding-top:55px} - -/* import/export storage positioning */ -.ML_iestorage_area li.ML_iestorage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_iestorage_area li.ML_iestorage_smartcert a:hover {background-position: -75px -150px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_smartcert a:focus {background-position: -150px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_smartcert.ins a{background-position: -375px -150px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_iestorage_area li.ML_iestorage_token a:hover {background-position: -75px -225px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_token a:focus {background-position: -150px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_token.ins a{background-position: -375px -225px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_iestorage_area li.ML_iestorage_browser a:hover {background-position: -75px -75px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_browser a:focus {background-position: -150px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_browser.ins a{background-position: -375px -75px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_iestorage_area li.ML_iestorage_phone a:hover {background-position: -75px -300px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_phone a:focus {background-position: -150px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_phone.ins a{background-position: -375px -300px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_iestorage_area li.ML_iestorage_hdd a:hover {background-position: -75px 0; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_hdd a:focus {background-position: -150px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_hdd.ins a{background-position: -375px 0; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_iestorage_area li.ML_iestorage_sch a:hover {background-position: -75px -375px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sch a:focus {background-position: -150px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sch.ins a{background-position: -375px -375px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_usb a {width:75px; height:75px; background-position: 0 -450px;} -.ML_iestorage_area li.ML_iestorage_usb a:hover {background-position: -75px -450px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_usb a:focus {background-position: -150px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.on a{background-position: -225px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_usb.ins a{background-position: -375px -450px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_pc a {width:75px; height:75px; background-position: 0 -525px;} -.ML_iestorage_area li.ML_iestorage_pc a:hover {background-position: -75px -525px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_pc a:focus {background-position: -150px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.on a{background-position: -225px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_pc.ins a{background-position: -375px -525px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sd a {width:75px; height:75px; background-position: 0 -600px;} -.ML_iestorage_area li.ML_iestorage_sd a:hover {background-position: -75px -600px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sd a:focus {background-position: -150px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.on a{background-position: -225px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.off a{background-position: -300px -600px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sd.ins a{background-position: -375px -600px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_shdd a {width:75px; height:75px; background-position: 0 -675px;} -.ML_iestorage_area li.ML_iestorage_shdd a:hover {background-position: -75px -675px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_shdd a:focus {background-position: -150px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.on a{background-position: -225px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.off a{background-position: -300px -675px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_shdd.ins a{background-position: -375px -675px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_cloud a {width:75px; height:75px; background-position: 0 -750px;} -.ML_iestorage_area li.ML_iestorage_cloud a:hover {background-position: -75px -750px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_cloud a:focus {background-position: -150px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.on a{background-position: -225px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.off a{background-position: -300px -750px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_cloud.ins a{background-position: -375px -750px; color:#cdcdcd;} - - -.ML_iestorage_area {*zoom:1;} -.ML_iestorage_area li:after{display:block; content:'';clear:both;} - -.drive_position {position:absolute; margin:0; cursor:pointer; z-index:1000000;} -.drive_position ul {position:; right:0; top:0; padding:0 0 !important; width:150px; background:#fff; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.drive_position ul li {display:inline-block;position:relative;} -/* style all links */ -.drive_position li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:10px !important;} -.drive_position li a {color:#000 !important; font-size:12px !important; display:block !important;} -.drive_position li a:hover, .drive_position a:focus, .drive_position a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.drive_position li:last-child a {border-bottom:none !important;} -.drive_position.pos_01 {top:36px; left:75px;} -.drive_position.pos_02 {top:36px; left:150px;} -.drive_position.pos_03 {top:36px; left:225px;} -.drive_position.pos_04 {top:36px; left:75px;} -.drive_position.pos_05 {top:36px; left:150px;} -.drive_position.iepos_01 {top:36px; left:75px;} -.drive_position.iepos_02 {top:36px; left:150px;} -.drive_position.iepos_03 {top:36px; left:50px;} -.drive_position.iepos_04 {top:36px; left:125px;} -.drive_position.iepos_05 {top:111px; left:75px;} -.drive_position.iepos_06 {top:111px; left:150px;} -.drive_position.iepos_07 {top:111px; left:50px;} -.drive_position.iepos_08 {top:111px; left:125px;} -.drive_position.iepos_09 {bottom:36px; left:75px;} -.drive_position.iepos_10 {bottom:36px; left:150px;} -.drive_position.iepos_11 {bottom:36px; left:50px;} -.drive_position.iepos_12 {bottom:36px; left:125px;} - -#str_df {display:inline;} -#str_ex {display:inline;} - -.ML_storage_box .str_add_li {margin:0; position:absolute; right:0; top:0; display:none; width:22px; height:75px; text-align:right; border-left:1px solid #a8a8a8; cursor:pointer; } -.ML_storage_box .str_add_li.ne{background:url(../images/icon_next.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.pr {background:url(../images/icon_prev.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.dis {background:url(../images/icon_next_dis.png) no-repeat 4px 30px;} -.btn_str_add{display:block; width:22px; height:75px; margin:0;} - -.str_add {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} - - -/******************* admin_menu Select *******************/ -.ML_admin_box {margin:0 9px; padding:0 1px; height:57px; border:1px solid #a8a8a8;} -.ML_admin_menu_dft {float:left;} -.ML_admin_menu_dft {*zoom:1;} -.ML_admin_menu_dft:after{display:block; content:'';clear:both;} -.ML_admin_menu_area {height:57px; vertical-align:top;} -.ML_admin_menu_area ul {width:398px; height:57px; text-align:center; overflow:hidden} -.ML_admin_menu_area li {float:left;} -.ML_admin_menu_area li.cer_sch {width:25px; text-align:right; padding-top:5px;} -.ML_admin_menu_area li a{display:block; width:66px; height:57px; vertical-align:text-bottom; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; overflow:hidden; background:url(../images/admin_icon.png) no-repeat; cursor:pointer} -.ML_admin_menu_area li span{display:inline-block; padding-top:39px} - -/* admin_positioning */ -.ML_admin_menu_area li.ad_cert_copy a {width:66px; height:57px; background-position: 0 0;} -.ML_admin_menu_area li.ad_cert_copy a:hover {background-position: -66px 0; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_copy a:focus {background-position: -132px 0; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_copy.on a{background-position: -198px 0;} -.ML_admin_menu_area li.ad_cert_copy.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_copy.ins a{background-position: -330px 0; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_view a {width:66px; height:57px; background-position: 0 -57px;} -.ML_admin_menu_area li.ad_cert_view a:hover {background-position: -66px -57px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_view a:focus {background-position: -132px -57px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_view.on a{background-position: -180px -57px;} -.ML_admin_menu_area li.ad_cert_view.off a{background-position: -264px -57px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_view.ins a{background-position: -330px -57px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_del a {width:66px; height:57px; background-position: 0 -114px;} -.ML_admin_menu_area li.ad_cert_del a:hover {background-position: -66px -114px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_del a:focus {background-position: -132px -114px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_del.on a{background-position: -198px -114px;} -.ML_admin_menu_area li.ad_cert_del.off a{background-position: -264px -114px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_del.ins a{background-position: -330px -114px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_pass_change a {width:66px; height:57px; background-position: 0 -171px;} -.ML_admin_menu_area li.ad_cert_pass_change a:hover {background-position: -66px -171px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_pass_change a:focus {background-position: -132px -171px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_pass_change.on a{background-position: -198px -171px;} -.ML_admin_menu_area li.ad_cert_pass_change.off a{background-position: -264px -171px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_pass_change.ins a{background-position: -330px -171px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_import a {width:66px; height:57px; background-position: 0 -228px;} -.ML_admin_menu_area li.ad_cert_import a:hover {background-position: -66px -228px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_import a:focus {background-position: -132px -228px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_import.on a{background-position: -198px -228px;} -.ML_admin_menu_area li.ad_cert_import.off a{background-position: -264px -228px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_import.ins a{background-position: -330px -228px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_send a {width:66px; height:57px; background-position: 0 -285px;} -.ML_admin_menu_area li.ad_cert_send a:hover {background-position: -66px -285px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_send a:focus {background-position: -132px -285px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_send.on a{background-position: -198px -285px;} -.ML_admin_menu_area li.ad_cert_send.off a{background-position: -264px -285px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_send.ins a{background-position: -330px -285px; color:#cdcdcd;} - - -.dv_sl {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} -.dv_sl ul {position:absolute; right:0; top:25px; padding:0 0 !important; width:150px; height:70px; background:#fff; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.dv_sl ul li {display:inline-block;position:relative;} -/* style all links */ -.dv_sl li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:0 !important;} -.dv_sl li a {color:#000 !important; font-size:12px !important; display:block !important;} -.dv_sl li a:hover, .dv_sl a:focus, .dv_sl a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.dv_sl li:last-child a {border-bottom:none !important;} - -.ML_cert_list_area {margin:125px 0 0 0; overflow: hidden;} -.ML_cert_list_pwchg_area {margin:11px 10px 0; height:98px; overflow: auto;} -.ML_cert_list_del_area {margin:11px 10px 0; height:203px; overflow: auto;} -.ML_cert_list_pfx_area {margin:11px 10px 0; height:213px; overflow: auto;} -.ML_cert_list_sign_area {margin:11px 10px 0;} -.ML_cert_list {margin:0 0 8px; padding:5px 0; height:56px; color:#616161; font-size:12px; line-height:16px; background:#f4f4f4;} -.ML_cert_list:hover {} -.ML_cert_list.list_on {background:#efe8cf url(../images/btn_check.png) no-repeat right bottom ;} -.ML_cert_nor {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_normalcy_mobile.png) no-repeat; background-size:46px 56px;} -.ML_cert_exp {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_expire_mobile.png) no-repeat; background-size:46px 56px;} -.ML_cert_no {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_no_mobile.png) no-repeat; background-size:46px 56px;} -.ML_cert_txt {float:left; padding:5px 0 0 10px;} -.ML_cert_btn {position:absolute; right:0; margin-top:5px; width:20px; height:20px; background:url(../images/certlist_menu_icon.png) no-repeat; cursor:pointer} - -.ML_cert_orgtext_area {margin:10px 10px; height:420px; background:#fdfdfd; border:1px solid #a8a8a8; overflow: auto;} -#orgtext{padding:10px 10px; line-height:18px;} -#orgtext .orgtit{display:block; font-weight:bold; color:#222; padding-bottom:8px;} -#orgtext .orgtxt{display:block; padding:0 8px; text-align:justify; font-size:1.2em; line-height:1.8em;} - -#ML_cert_orgtext_area1 {margin:-1px 10px 0; padding:10px 0; height:380px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area01 {margin:0 8px; height:330px; border:1px solid #e0e0e0; background:#fafafa; overflow:auto;} -.ML_cert_detail_btn {height:30px; text-align:center; margin:0 10px; padding:10px 10px;} -#detail_text01{padding:10px 10px; line-height:18px;} -#detail_text01 .dtltit01{display:block; font-size:1.2em; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text01 .dtltxt01{display:block; padding:0 8px; text-align:justify; font-size:1.2em; line-height:1.6em} - -#ML_cert_orgtext_area2 {margin:-1px 10px 0; padding:10px 0; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area02 {margin:0 8px; background:#fafafa;} -#detail_text02{line-height:18px;} -#detail_text02 .dtltit02{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text02 .dtltxt02{display:block; padding:0 8px; text-align:justify;} - - -#ML_cert_detail_area03 {margin:8px 8px 0; height:67px; border:1px solid #e0e0e0; background:#fafafa; overflow: auto;} -#detail_text03{padding:10px 0; line-height:18px;} -#detail_text03 .dtltit03{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text03 .dtltxt03{display:block; padding:0 8px; text-align:justify;} - - -.ML_cert_btn ul {position:absolute; right:0; top:25px; width:150px; height:70px; background:#415161; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.ML_cert_btn ul li {display:inline-block;position:relative;} -/* sub navigation */ -.ML_cert_btn li ul {background:#415161;position:absolute;left:0;top:35px;width:200px;} -.ML_cert_btn li li {position:relative; margin:0;display:block;} -.ML_cert_btn li li ul {position:absolute;top:0;left:200px;margin:0;} -/* style all links */ -.ML_cert_btn a {width:150px; line-height:35px;padding:0 12px; font-size:12px;} -.ML_cert_btn a {color:#fff; font-size:12px; display:block;} -.ML_cert_btn a:hover, .ML_cert_btn a:focus, .ML_cert_btn a:active {background:#566777;} -/* style sub level links */ -.ML_cert_btn li li a { border-bottom:solid 1px #222;margin:0 10px;padding:0;} -.ML_cert_btn li li:last-child a {border-bottom:none;} -/* show arrows for dropdowns -.ML_cert_btn li.dropdown > a {background-image:url('../img/arrow-down.png');background-position:right 20px;background-repeat:no-repeat;} -.ML_cert_btn li li.dropdown > a { background-image:url('../img/arrow-right.png');background-position:right 16px;background-repeat:no-repeat;} */ - -.certi_name {display:block; color:#34373b; font-size:1.2em; font-weight:bold;} -.certi_issuOrg {display:block; font-size:1.1em;} -.certi_expDate {display:block; font-size:1.1em;} -.certi_CIDI {display:inline-block;} -.certi_nocert {display:block; color:#222; line-height:48px; font-size:14px; font-weight:bold;} - -.ML_cert_list {*zoom:1;} -.ML_cert_list:after{display:block; content:'';clear:both;} - -.ML_cert_list_blank {height:1px;} -#ML_cert_info {position:absolute; top:12px; background:#414243 url(../images/option_icon.png) no-repeat 10px 9px; width:336px; height:35px; padding:0 10px 0 34px; margin:0 0 0 10px; line-height:35px; color:#fff; text-align:left; overflow:hidden; border-radius:5px 5px 0 0; z-index:9; -box-shadow:0 -2px 4px #d0d0d0; --moz-box-shadow:0 -2px 4px #d0d0d0; /* FF3.6+ */ --webkitbox-shadow:0 -2px 4px #d0d0d0; /* Chrome,Safari4+ */ --o-box-shadow:0 -2px 4px #d0d0d0; /* Opera 11.10+ */ --ms-box-shadow:0 -2px 4px #d0d0d0; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#a2a2a2", direction=40,strength=6 ); IE6-9 */ -} - -.ML_status_area {padding-top:10px;} -.ML_pw_area {height:50px; z-index:10; padding:0 5px; } -.ML_pw_chg_status_area {position:relative; bottom:0; height:169px;} -.ML_pw_chg_area {position:absolute; bottom:0; width:360px; height:135px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_del_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_del_area {position:absolute; bottom:0; width:360px; height:30px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_pfx_status_area {position:relative; bottom:0; height:190px;} -.ML_pw_pfx_area {height:80px; z-index:10; padding:10px;} -.ML_pw_detail_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_detail_area {position:absolute; bottom:0; width:100%; height:30px; text-align:center;padding:10px 0; z-index:10;} -.ML_pw_dialog_status_area {} -.ML_pw_dialog_area {min-height:65px; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_dialog_txt {min-height:22px; margin-bottom:20px; font-size:1.4em; line-height:22px; color:#222;} - -.ML_cert_pw_area {margin:0 0 10px; height:40px; text-align:left; padding:0 6px 0 6px;position:relative; overflow:hidden;} -.ML_status_area_chg {margin-top:10px;} -.ML_cert_pw_tit {display:inline-block; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:1.2em; width:35%; text-align:right;} -.ML_cert_pw_tit_chg {display:inline-block; width:115px; line-height:25px; font-size:1.2em; color:#2a2a2a; padding-right:5px; text-align:right; } -.ML_cert_pw_field_chg {display:inline-block;} -.ML_cert_pw_tit_pfx {display:inline-block; width:35%; line-height:25px; font-size:1.2em; color:#2a2a2a; padding-right:5px; text-align:right;} -.ML_cert_pw_field {display:inline-block; vertical-align:top; width:100%;} -.ML_cert_pw_keypad {display:inline-block; width:30px; height:30px; background:url(../images/btn_key.png)no-repeat 2px 2px;} -.ML_cert_popup_tit {display:inline-block; width:105px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:1.2em; text-align:right;} -.f_wh_210 {width:210px;} -.f_wh_227 {width:227px;} -.f_wh_240 {width:240px;} -.f_wh_255 {width:255px;} -.f_wh_274 {width:274px;} -.f_wh_370 {width:360px;} -.f_wh_400 {width:400px;} - -.f_wh_per_50 {width:50%;} -.f_wh_per_55 {width:55%;} -.f_wh_per_60 {width:60%;} -.f_wh_per_65 {width:65%;} - -.ML_cert_secure_key {display:inline; width:25px; height:25px;} -.ML_cert_secure_key img { vertical-align:top; margin:0; padding:0} - -.ML_cert_file_area {margin:10px; height:30px; position:relative; text-align:left; overflow:hidden; padding:10px;} -.ML_cert_file_btn {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:12px; right:0;} -.ML_cert_file_add {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder.png) no-repeat;} - -.input_wrap{display:inline-block; height:28px; padding:1px; vertical-align:top;background:#ddd;} - -.ML_cert_status {margin:0 0 10px; height:25px; border:1px solid #ddd; text-align:left;} -.ML_cert_status .status_txt {padding-left:10px; line-height:25px;} - -/* Input-box */ -.passwd_input{width:100%; height:36px; text-indent:10px; background:#ffffff; border:1px solid #a8a8a8; line-height:36px;} -.passwd_input:hover{border:1px solid #87c9ff; } -.passwd_input:focus{background:#fffbe6; border:1px solid #1672e4;} - -/* buttom */ -.ML_btn_area {background:#fafafa; text-align:center; margin:10px 9px 0; z-index:10;} -.btn_row {display:block; padding:0 5px; background:#fff;} -#btn_row_top { padding-top:20px} -.btn_row p{display:inline;} -.btn_row p.b_blue_btn button{ float:none;} -.btn_row_c {width:100%; display:block; margin-top:20px;} -.btn_row_c p{display:inline;} -.btn_row_s {margin:7px 9px;display:block; text-align:right;} -.btn_row_s p{display:inline;} -.btn_cell_left {width:100%; display:inline;vertical-align:top; text-align:left;} -.btn_cell_center {width:100%; display:inline;vertical-align:top;} -.btn_cell_right {width:100%; display:inline;vertical-align:top; text-align:right;} -.MSG_cls{display:inline !important;} - -.whtgrey_btn{text-align:center;} -.whtgrey_btn button{width:45%; height:36px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_btn button span{display:block;height:36px;border-radius:2px; font-size:1em;font-weight:bold;color:#34373b; line-height:34px;} -.whtgrey_btn img{vertical-align: text-top; padding-right:3px;} -.whtgrey_btn button:hover{background:#dbdbdb;} - -.whtgrey_ws_btn{text-align:center;} -.whtgrey_ws_btn button{width:100px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_ws_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_ws_btn img{vertical-align:middle; padding-right:3px;} -.whtgrey_ws_btn button:hover{background:#dbdbdb;} - -.b_blue_btn{text-align:center; } -.b_blue_btn button{ float:left; width:30%;height:40px;border-radius:2px;border:1px solid #0456bb;cursor:pointer; background:#1672e4;} -.b_blue_btn button span{display:block;height:40px;border-radius:2px; line-height:40px; font-size:1.2em;font-weight:bold;color:#fff;} -.b_blue_btn button:hover{background:#1466cd;} - -.b_grey_btn{text-align:center;} -.b_grey_btn button{ width:30%;height:40px;border-radius:2px;border:1px solid #a8a8a8;cursor:pointer; background:#dedede;} -.b_grey_btn button span{display:block;height:40px;border-radius:2px; line-height:40px; font-size:1.2em;font-weight:bold;color:#424242;} -.b_grey_btn button:hover{background:#c7c7c7;} - -/* tabs */ -#ML_tabs {margin-top:10px;} -.tabs{margin:0 10px; z-index:1;} -.tabs li {display:inline-block; font-size:1.4em; } -.tabs a {width:80px; padding:9px 10px;display:inline-block; text-align:center; background:#f4f4f4;color:#34373b;text-decoration:none; border:1px solid #a8a8a8;} -.tabs a.active {background:#fdfdfd;color:#34373b; font-weight:bold; border-bottom:1px solid #fdfdfd;} - - -/* table */ -.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead, .detail_tb tbody{} -.detail_tb thead {background-color:#c8c8c8;} -.detail_tb thead tr {} -.detail_tb thead tr th {height:20px; line-height:20px; font-size:1.1em} -.detail_tb tbody {} -.detail_tb tbody {border-top:1px solid #b6b6b6;} -.detail_tb tbody tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6; font-size:1.1em} -.detail_tb tbody td, .detail_tb thead th{border-right:1px solid #b6b6b6;} -.detail_tb thead th:first-child{ padding:5px 5px; width:30%;} -.detail_tb thead th:last-child{padding:5px 5px; border-right:none;padding:5px 5px;} -.detail_tb tbody td:first-child{padding:5px 5px; width:30;} -.detail_tb tbody td:last-child{border-right:none; padding:5px 5px;background:#fff; width:70%;} -.detail_tb tbody tr {border-bottom:1px solid #b6b6b6; height:20px;font-size:1.1em } -.detail_tb tbody tr:last-child{border-bottom:none;} -.td_title{ font-size:1.1em} - -/*.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead tr{ background-color:#c8c8c8; } -.detail_tb thead tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody tr td{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.td_title{width:30%;}*/ - -/* footer */ -.ft_area{font:Verdana, Geneva, sans-serif; font-size:9px; letter-spacing:-1; line-height:15px; text-align:right} -.ft_area .ft_ver{position:absolute; left:0; padding-left:10px;} -.ft_area .ft_copy{position:relative; right:0; padding-right:10px;} - -.blind { - font-size: 1; - position: absolute; - top: -999999px; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_nts.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_nts.css deleted file mode 100644 index 0aeddc60..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_nts.css +++ /dev/null @@ -1,742 +0,0 @@ -@charset "utf-8"; - - -/******************* common *******************/ -html,body{height:100%} -*{margin:0;padding:0;font-family:"맑은고딕",Malgun Gothic,"돋움",Dotum,"굴림",Gulim,Helvetica,"애플고딕",AppleGothic,Sans-serif;-webkit-text-size-adjust:none} -body{background:#fff;color:#5e5e5e;word-wrap:break-word;word-break:break-all} -body,input,select,textarea{font-size:12px} -textarea{border:1px solid #bcbcbc} -li{list-style:none} -table{border-collapse:collapse} -img,fieldset{border:none} -a{text-decoration:none;cursor:pointer} -label{cursor:pointer} -strong{font-weight:normal} -em,address{font-style:normal} -input{outline-style:none;} -input:-ms-input-placeholder { color: gray; } -input::-webkit-input-placeholder { color: gray; } -input::-moz-placeholder { color: gray; } -input::-moz-placeholder { color: gray; } - - -input[type='checkbox']{vertical-align:middle;border:0;border-radius:0} -input[type='checkbox']:focus{border: 1px solid #0e4eb2;outline: 1px solid #0e4eb2;} - -/* -input[type='checkbox']{background:url(../images/checkbox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='checkbox']:checked{background:#fff; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='checkbox']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} -*/ -input[type='radio']{vertical-align:middle;} -/* -input[type='radio']{background:url(../images/radiobox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='radio']:checked{background:#fff; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='radio']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} -*/ - -.text_redB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_red_10 {PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 10px; PADDING-TOP: 2px} -.text_black{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 18px} -.text_grey24{PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #666666; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 24px} -.text_blackB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_orangeB{COLOR: #ee6a02; FONT-SIZE: 14px; FONT-WEIGHT: bold} -.text_orange{COLOR: #ee6a02; FONT-SIZE: 12px} -.text_grayB{FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray2B{COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray{FONT-SIZE: 12px} -.text_gray_c9c9c9{COLOR: #c9c9c9; FONT-SIZE: 12px} -.ali_left{TEXT-ALIGN: left; PADDING-LEFT: 13px} -.ali_right{TEXT-ALIGN:right;PADDING-RIGHT:50px} - -.w_space4{padding-left:4px} -.w_space5{padding-left:5px} -.w_space8{padding-left:8px} -.w_space10{padding-left:10px} -.w_space12{padding-left:12px} -.w_space15{padding-left:15px} -.w_space18{padding-left:18px} -.w_space20{padding-left:20px} -.w_space25{padding-left:25px} -.w_space30{padding-left:30px} -.w_space35{padding-left:35px} -.w_space40{padding-left:40px} -.w_space50{padding-left:50px} -.w_space80{padding-left:80px} - - -/******************* layout *******************/ - -#ML_container{background:#fdfdfd; width:418px; height:558px; font-size:12px;border:none; -} -#ML_container_popup{background:#fdfdfd; width:398px; font-size:12px;border:none; -} -.ML_pw_popup_area {text-align:center; margin:8px 10px 4px; padding:11px 0; z-index:10;} -.ML_alert_popup_area {text-align:center; margin:0 10px 4px; padding:11px 0; z-index:10;} -.ML_container_pfx{background:#fdfdfd;height:290px; width:400px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_dialog{background:#fdfdfd;min-height:130px; width:350px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_popup{background:#fdfdfd;height:180px; width:400px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_certview{background:#fdfdfd;height:400px; width:380px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_header{height:35px;position:relative;z-index:1; background:#e4e4e4;} -.ML_header_sdw{height:30px;position:relative;z-index:1; background:#28353f; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_content{} -.ML_content .ML_content-area{} -.ML_footer{height:15px;} - -/* header */ -.hd_area{ text-align:right;} -.hd_area .head_tit{position:absolute; display:inline-block; left:0; padding-left:10px; color:#34373b; font-size:16px; font-weight:bold; line-height:30px;} -.hd_area .head_close{position:relative; display:inline-block; width:27px; height:27px; padding:8px 8px 0 0; right:0; background:#b2b2b2;} -.hd_area .head_close:hover{background:#a0a0a0;} -.hd_area .head_close img{} - -/* Title */ -.ML_sub_tit {margin:10px 8px 9px;color:#34373b; font-size:12px; font-weight:bold;} -.ML_sub_tit_link {display:inline-block; color:#34373b; font-size:12px; font-weight:bold; float:right; text-align:right;} -.ML_sub_tit_link a {color:#727272;} -.ML_sub_tit_link a:hover {color:#3d6fb7;} -.ML_sub_tit_link a:focus {color:#3d6fb7;} - -.ML_sub_tit_bt {margin:6px 8px 9px;color:#34373b; font-size:12px; font-weight:bold;line-height:20px;} -.hp_btn{text-align:center;line-height:16px;} -.hp_btn button{width:140px;height:20px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.hp_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#1672e4} -.hp_btn img{vertical-align:middle; padding-right:3px; margin-top:-2px;} -.hp_btn button:hover{background:#dbdbdb;} -.hp_btn button:focus{background:#dbdbdb;} - -/* Install */ -#ML_container_install{background:#fdfdfd; width:398px; font-size:12px;border:none; -} -.install_wrap{padding:10px 0 0 20px; vertical-align:top;} -.install_wrap img{display:inline-block; padding:0 20px 0 0; vertical-align:middle;} -.install_txt{display:inline-block; width:220px; color:#193b65; font-weight:bold; font-size:12px; line-height:20px;vertical-align:middle;} -.loadbar{width:152px; height:21px; margin-left:60px; display:block; } -.loadbar_txt{display:block; color:#193b65; margin:10px 0 0 64px; font-weight:bold; } -.loadbar_txt2{display:block; color:#193b65; font-weight:bold; } - -/******************* storage Select *******************/ -.ML_cp_AD {padding:10px 9px 0; margin:0; } -.ML_cp_AD img {vertical-align:top; margin:0; padding:0} -.ML_storage_box_sub {width:396px; margin-left:1px;} -.customNavigation{display:none;} -.ML_storage_box {position:relative; margin:0 9px; height:75px; border:1px solid #a8a8a8;} -.ML_storage_area {margin:0; width:396px; height:75px; display:block;} -.ML_storage_area ul {height:74px; text-align:center;} -.ML_storage_area li {float:left;background:;} -.ML_storage_area li a{display:block; width:66px; height:75px; overflow:hidden; color:#34373b; font-size:0.80em; font-weight:bold; letter-spacing:-1px; background:url(../images/storage_icon_6by.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_storage_area li span{display:inline-block; padding-top:55px} - -/* positioning */ -.ML_storage_area li.ML_storage_smartcert a {width:66px; height:75px; background-position: 0 -150px;} -.ML_storage_area li.ML_storage_smartcert a:hover {background-position: -66px -150px;} -.ML_storage_area li.ML_storage_smartcert a:focus {background-position: -132px -150px;} -.ML_storage_area li.ML_storage_smartcert.on a{background-position: -198px -150px; color:#fff;} -.ML_storage_area li.ML_storage_smartcert.off a{background-position: -264px -150px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_smartcert.ins a{background-position: -330px -150px; color:#bebebe;} -.ML_storage_area li.ML_storage_token a {width:66px; height:75px; background-position: 0 -225px;} -.ML_storage_area li.ML_storage_token a:hover {background-position: -66px -225px;} -.ML_storage_area li.ML_storage_token a:focus {background-position: -132px -225px;} -.ML_storage_area li.ML_storage_token.on a{background-position: -198px -225px; color:#fff;} -.ML_storage_area li.ML_storage_token.off a{background-position: -264px -225px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_token.ins a{background-position: -330px -225px; color:#bebebe;} -.ML_storage_area li.ML_storage_browser a {width:66px; height:75px; background-position: 0 -75px;} -.ML_storage_area li.ML_storage_browser a:hover {background-position: -66px -75px;} -.ML_storage_area li.ML_storage_browser a:focus {background-position: -132px -75px;} -.ML_storage_area li.ML_storage_browser.on a{background-position: -198px -75px; color:#fff;} -.ML_storage_area li.ML_storage_browser.off a{background-position: -264px -75px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_browser.ins a{background-position: -330px -75px; color:#bebebe;} -.ML_storage_area li.ML_storage_phone a {width:66px; height:75px; background-position: 0 -300px;} -.ML_storage_area li.ML_storage_phone a:hover {background-position: -66px -300px;} -.ML_storage_area li.ML_storage_phone a:focus {background-position: -132px -300px;} -.ML_storage_area li.ML_storage_phone.on a{background-position: -198px -300px; color:#fff;} -.ML_storage_area li.ML_storage_phone.off a{background-position: -264px -300px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_phone.ins a{background-position: -330px -300px; color:#bebebe;} -.ML_storage_area li.ML_storage_hdd a {width:66px; height:75px; background-position: 0 0;} -.ML_storage_area li.ML_storage_hdd a:hover {background-position: -66px 0;} -.ML_storage_area li.ML_storage_hdd a:focus {background-position: -132px 0;} -.ML_storage_area li.ML_storage_hdd.on a{background-position: -198px 0; color:#fff;} -.ML_storage_area li.ML_storage_hdd.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_hdd.ins a{background-position: -330px 0; color:#bebebe;} -.ML_storage_area li.ML_storage_sch a {width:66px; height:75px; background-position: 0 -375px;} -.ML_storage_area li.ML_storage_sch a:hover {background-position: -66px -375px;} -.ML_storage_area li.ML_storage_sch a:focus {background-position: -132px -375px;} -.ML_storage_area li.ML_storage_sch.on a{background-position: -198px -375px; color:#fff;} -.ML_storage_area li.ML_storage_sch.off a{background-position: -264px -375px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_sch.ins a{background-position: -330px -375px; color:#bebebe;} -.ML_storage_area li.ML_storage_shdd a {width:66px; height:75px; background-position: 0 -450px;} -.ML_storage_area li.ML_storage_shdd a:hover {background-position: -66px -450px;} -.ML_storage_area li.ML_storage_shdd a:focus {background-position: -132px -450px;} -.ML_storage_area li.ML_storage_shdd.on a{background-position: -198px -450px; color:#fff;} -.ML_storage_area li.ML_storage_shdd.off a{background-position: -264px -450px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_shdd.ins a{background-position: -330px -450px; color:#bebebe;} -.ML_storage_area li.ML_storage_cloud a {width:66px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_cloud a:hover {background-position: -66px -525px;} -.ML_storage_area li.ML_storage_cloud a:focus {background-position: -132px -525px;} -.ML_storage_area li.ML_storage_cloud.on a{background-position: -198px -525px; color:#fff;} -.ML_storage_area li.ML_storage_cloud.off a{background-position: -264px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_cloud.ins a{background-position: -330px -525px; color:#bebebe;} -.ML_storage_area li.ML_storage_unisign a {width:66px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_unisign a:hover {background-position: -66px -525px;} -.ML_storage_area li.ML_storage_unisign a:focus {background-position: -132px -525px;} -.ML_storage_area li.ML_storage_unisign.on a{background-position: -198px -525px; color:#fff;} -.ML_storage_area li.ML_storage_unisign.off a{background-position: -264px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_unisign.ins a{background-position: -330px -525px; color:#bebebe;} - - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -/*#MSG_TS703{padding-top:49px; display: inline-block;}*/ - -/******************* import/export storage Select *******************/ -.ML_iestorage_box {position:relative; margin:0 0 10px;; height:170px; border:1px solid #a8a8a8; overflow-y:scroll; overflow-x:hidden;} -.ML_iestorage_area {margin:0; width:375px; height:75px; display:block;} -.ML_iestorage_area ul {height:74px; text-align:center; padding:0 8px;} -.ML_iestorage_area li {float:left;background:;padding:5px 5px;} -.ML_iestorage_area li a{display:block; width:75px; height:75px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/iestorage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_iestorage_area li span{display:inline-block; padding-top:55px} - -/* import/export storage positioning */ -.ML_iestorage_area li.ML_iestorage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_iestorage_area li.ML_iestorage_smartcert a:hover {background-position: -75px -150px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_smartcert a:focus {background-position: -150px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_smartcert.ins a{background-position: -375px -150px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_iestorage_area li.ML_iestorage_token a:hover {background-position: -75px -225px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_token a:focus {background-position: -150px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_token.ins a{background-position: -375px -225px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_iestorage_area li.ML_iestorage_browser a:hover {background-position: -75px -75px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_browser a:focus {background-position: -150px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_browser.ins a{background-position: -375px -75px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_iestorage_area li.ML_iestorage_phone a:hover {background-position: -75px -300px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_phone a:focus {background-position: -150px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_phone.ins a{background-position: -375px -300px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_iestorage_area li.ML_iestorage_hdd a:hover {background-position: -75px 0; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_hdd a:focus {background-position: -150px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_hdd.ins a{background-position: -375px 0; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_iestorage_area li.ML_iestorage_sch a:hover {background-position: -75px -375px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sch a:focus {background-position: -150px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sch.ins a{background-position: -375px -375px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_usb a {width:75px; height:75px; background-position: 0 -450px;} -.ML_iestorage_area li.ML_iestorage_usb a:hover {background-position: -75px -450px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_usb a:focus {background-position: -150px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.on a{background-position: -225px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_usb.ins a{background-position: -375px -450px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_pc a {width:75px; height:75px; background-position: 0 -525px;} -.ML_iestorage_area li.ML_iestorage_pc a:hover {background-position: -75px -525px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_pc a:focus {background-position: -150px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.on a{background-position: -225px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_pc.ins a{background-position: -375px -525px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sd a {width:75px; height:75px; background-position: 0 -600px;} -.ML_iestorage_area li.ML_iestorage_sd a:hover {background-position: -75px -600px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sd a:focus {background-position: -150px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.on a{background-position: -225px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.off a{background-position: -300px -600px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sd.ins a{background-position: -375px -600px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_shdd a {width:75px; height:75px; background-position: 0 -675px;} -.ML_iestorage_area li.ML_iestorage_shdd a:hover {background-position: -75px -675px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_shdd a:focus {background-position: -150px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.on a{background-position: -225px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.off a{background-position: -300px -675px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_shdd.ins a{background-position: -375px -675px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_cloud a {width:75px; height:75px; background-position: 0 -750px;} -.ML_iestorage_area li.ML_iestorage_cloud a:hover {background-position: -75px -750px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_cloud a:focus {background-position: -150px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.on a{background-position: -225px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.off a{background-position: -300px -750px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_cloud.ins a{background-position: -375px -750px; color:#cdcdcd;} - -.ML_iestorage_area {*zoom:1;} -.ML_iestorage_area li:after{display:block; content:'';clear:both;} - -.drive_position {position:absolute; margin:0; cursor:pointer; z-index:1000000;} -.drive_position ul {position:; right:0; top:0; padding:0 0 !important; background:#fff; background:#fefefe; -/*border: 1px solid #a8a8a8;*/ -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); /* IE6-9 */ -overflow-y:auto; -overflow-x:hidden; -max-height:200px; -} -.drive_position ul li {display:inline-block;position:relative;} -/* style all links */ -.drive_position li a { height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:10px !important;} -.drive_position li a {color:#000 !important; font-size:12px !important; display:block !important;} -.drive_position li a:hover, .drive_position a:focus, .drive_position a:active {background:#e0e0e0 !important;} - -/* style sub menu width */ -.wdh_150 {width:150px !important;} -.wdh_210 {width:210px !important;} - -/* style sub level links */ -.drive_position li:last-child a {border-bottom:none !important;} -.drive_position.pos_01 {top:36px; left:75px;} -.drive_position.pos_02 {top:36px; left:120px;} -.drive_position.pos_03 {top:36px; left:185px;} -.drive_position.pos_04 {top:36px; left:50px;} -.drive_position.pos_05 {top:36px; left:150px;} -.drive_position.iepos_01 {top:36px; left:75px;} -.drive_position.iepos_02 {top:36px; left:150px;} -.drive_position.iepos_03 {top:36px; left:50px;} -.drive_position.iepos_04 {top:36px; left:125px;} -.drive_position.iepos_05 {top:111px; left:75px;} -.drive_position.iepos_06 {top:111px; left:150px;} -.drive_position.iepos_07 {top:111px; left:50px;} -.drive_position.iepos_08 {top:111px; left:125px;} -.drive_position.iepos_09 {bottom:36px; left:75px;} -.drive_position.iepos_10 {bottom:36px; left:150px;} -.drive_position.iepos_11 {bottom:36px; left:50px;} -.drive_position.iepos_12 {bottom:36px; left:125px;} - -#str_df {display:inline;} -#str_ex {display:inline;} - -.ML_storage_box .str_add_li {margin:0; position:absolute; right:0; top:0; display:inline-block; width:22px; height:75px; text-align:right; border-left:1px solid #a8a8a8; cursor:pointer; } -.ML_storage_box .str_add_li.ne{background:url(../images/icon_next.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.pr {background:url(../images/icon_prev.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.dis {background:url(../images/icon_next_dis.png) no-repeat 4px 30px;} -.btn_str_add{display:block; width:22px; height:75px; margin:0;} - -.str_add {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} - - -/******************* admin_menu Select *******************/ -.ML_admin_box {margin:0 9px; padding:0 1px; height:57px; border:1px solid #a8a8a8;} -.ML_admin_menu_dft {float:left;} -.ML_admin_menu_dft {*zoom:1;} -.ML_admin_menu_dft:after{display:block; content:'';clear:both;} -.ML_admin_menu_area {height:57px; vertical-align:top;} -.ML_admin_menu_area ul {width:398px; height:57px; text-align:center; overflow:hidden} -.ML_admin_menu_area li {float:left;} -.ML_admin_menu_area li.cer_sch {width:25px; text-align:right; padding-top:5px;} -.ML_admin_menu_area li a{display:block; width:66px; height:57px; vertical-align:text-bottom; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; overflow:hidden; background:url(../images/admin_icon.png) no-repeat; cursor:pointer} -.ML_admin_menu_area li span{display:inline-block; padding-top:39px} - -/* admin_positioning */ -.ML_admin_menu_area li.ad_cert_copy a {width:66px; height:57px; background-position: 0 0;} -.ML_admin_menu_area li.ad_cert_copy a:hover {background-position: -66px 0; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_copy a:focus {background-position: -132px 0; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_copy.on a{background-position: -198px 0;} -.ML_admin_menu_area li.ad_cert_copy.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_copy.ins a{background-position: -330px 0; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_view a {width:66px; height:57px; background-position: 0 -57px;} -.ML_admin_menu_area li.ad_cert_view a:hover {background-position: -66px -57px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_view a:focus {background-position: -132px -57px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_view.on a{background-position: -180px -57px;} -.ML_admin_menu_area li.ad_cert_view.off a{background-position: -264px -57px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_view.ins a{background-position: -330px -57px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_del a {width:66px; height:57px; background-position: 0 -114px;} -.ML_admin_menu_area li.ad_cert_del a:hover {background-position: -66px -114px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_del a:focus {background-position: -132px -114px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_del.on a{background-position: -198px -114px;} -.ML_admin_menu_area li.ad_cert_del.off a{background-position: -264px -114px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_del.ins a{background-position: -330px -114px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_pass_change a {width:66px; height:57px; background-position: 0 -171px;} -.ML_admin_menu_area li.ad_cert_pass_change a:hover {background-position: -66px -171px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_pass_change a:focus {background-position: -132px -171px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_pass_change.on a{background-position: -198px -171px;} -.ML_admin_menu_area li.ad_cert_pass_change.off a{background-position: -264px -171px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_pass_change.ins a{background-position: -330px -171px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_import a {width:66px; height:57px; background-position: 0 -228px;} -.ML_admin_menu_area li.ad_cert_import a:hover {background-position: -66px -228px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_import a:focus {background-position: -132px -228px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_import.on a{background-position: -198px -228px;} -.ML_admin_menu_area li.ad_cert_import.off a{background-position: -264px -228px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_import.ins a{background-position: -330px -228px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_send a {width:66px; height:57px; background-position: 0 -285px;} -.ML_admin_menu_area li.ad_cert_send a:hover {background-position: -66px -285px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_send a:focus {background-position: -132px -285px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_send.on a{background-position: -198px -285px;} -.ML_admin_menu_area li.ad_cert_send.off a{background-position: -264px -285px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_send.ins a{background-position: -330px -285px; color:#cdcdcd;} - - -.dv_sl {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} -.dv_sl ul {position:absolute; right:0; top:25px; padding:0 0 !important; width:150px; height:70px; background:#fff; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.dv_sl ul li {display:inline-block;position:relative;} -/* style all links */ -.dv_sl li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:0 !important;} -.dv_sl li a {color:#000 !important; font-size:12px !important; display:block !important;} -.dv_sl li a:hover, .dv_sl a:focus, .dv_sl a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.dv_sl li:last-child a {border-bottom:none !important;} - -.ML_cert_list_area {margin:0 9px; height:150px;} -.ML_cert_list_pwc_area {margin:0 9px; height:125px;} -.ML_cert_list_pwchg_area {margin:11px 10px 0; height:98px; overflow: auto;} -.ML_cert_list_del_area {margin:11px 10px 0; height:203px; overflow: auto;} -.ML_cert_list_pfx_area {margin:11px 10px 0; height:213px; overflow: auto;} -.ML_cert_list_sign_area {margin:11px 10px 0;} -.ML_cert_list {margin:0 0 8px; padding:5px 0; height:56px; color:#616161; font-size:12px; line-height:16px; background:#f4f4f4;} -.ML_cert_list:hover {} -.ML_cert_list.list_on {background:#efe8cf url(../images/btn_check.png) no-repeat right bottom ;} -.ML_cert_nor {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_normalcy.png) no-repeat;} -.ML_cert_exp {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_expire.png) no-repeat;} -.ML_cert_no {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_no.png) no-repeat;} -.ML_cert_txt {float:left; padding:5px 0 0 10px;} -.ML_cert_btn {position:absolute; right:0; margin-top:5px; width:20px; height:20px; background:url(../images/certlist_menu_icon.png) no-repeat; cursor:pointer} - -.ML_cert_orgtext_area {margin:0 10px; height:270px; background:#fdfdfd; border:1px solid #a8a8a8; overflow: auto;} -#orgtext{padding:10px 10px; line-height:18px;} -#orgtext .orgtit{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#orgtext .orgtxt{display:block; padding:0 8px; text-align:justify;} - -#ML_cert_orgtext_area1 {margin:-1px 10px 0; padding:10px 0; height:340px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area01 {margin:0 8px; height:298px; border:1px solid #e0e0e0; background:#fafafa; overflow:auto;} -.ML_cert_detail_btn {height:30px; text-align:center; margin:0 10px; padding:10px 10px;} -#detail_text01{padding:10px 10px; line-height:18px;} -#detail_text01 .dtltit01{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text01 .dtltxt01{display:block; padding:0 8px; text-align:justify;} - -#ML_cert_orgtext_area2 {margin:-1px 10px 0; padding:10px 0; height:340px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area02 {margin:0 8px; height:265px; background:#fafafa;} -#detail_text02{line-height:18px;} -#detail_text02 .dtltit02{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text02 .dtltxt02{display:block; padding:0 8px; text-align:justify;} - - -#ML_cert_detail_area03 {margin:8px 8px 0; height:67px; border:1px solid #e0e0e0; background:#fafafa; overflow: auto;} -#detail_text03{padding:10px 0; line-height:18px;} -#detail_text03 .dtltit03{display:block; font-size:14px; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text03 .dtltxt03{display:block; padding:0 8px; text-align:justify;} - - -.ML_cert_btn ul {position:absolute; right:0; top:25px; width:150px; height:70px; background:#415161; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.ML_cert_btn ul li {display:inline-block;position:relative;} -/* sub navigation */ -.ML_cert_btn li ul {background:#415161;position:absolute;left:0;top:35px;width:200px;} -.ML_cert_btn li li {position:relative; margin:0;display:block;} -.ML_cert_btn li li ul {position:absolute;top:0;left:200px;margin:0;} -/* style all links */ -.ML_cert_btn a {width:150px; line-height:35px;padding:0 12px; font-size:12px;} -.ML_cert_btn a {color:#fff; font-size:12px; display:block;} -.ML_cert_btn a:hover, .ML_cert_btn a:focus, .ML_cert_btn a:active {background:#566777;} -/* style sub level links */ -.ML_cert_btn li li a { border-bottom:solid 1px #222;margin:0 10px;padding:0;} -.ML_cert_btn li li:last-child a {border-bottom:none;} -/* show arrows for dropdowns -.ML_cert_btn li.dropdown > a {background-image:url('../img/arrow-down.png');background-position:right 20px;background-repeat:no-repeat;} -.ML_cert_btn li li.dropdown > a { background-image:url('../img/arrow-right.png');background-position:right 16px;background-repeat:no-repeat;} */ - -.certi_name {display:block; color:#34373b; font-size:12px; font-weight:bold;} -.certi_issuOrg {display:block; font-size:11px;} -.certi_expDate {display:block; font-size:11px;} -.certi_CIDI {display:inline-block;} -.certi_nocert {display:block; color:#222; line-height:48px; font-size:14px; font-weight:bold;} - -.ML_cert_list {*zoom:1;} -.ML_cert_list:after{display:block; content:'';clear:both;} - -.ML_cert_list_blank {height:1px;} -#ML_cert_info {position:absolute; top:12px; background:#414243 url(../images/option_icon.png) no-repeat 10px 9px; width:336px; height:35px; padding:0 10px 0 34px; margin:0 0 0 10px; line-height:35px; color:#fff; text-align:left; overflow:hidden; border-radius:5px 5px 0 0; z-index:9; -box-shadow:0 -2px 4px #d0d0d0; --moz-box-shadow:0 -2px 4px #d0d0d0; /* FF3.6+ */ --webkitbox-shadow:0 -2px 4px #d0d0d0; /* Chrome,Safari4+ */ --o-box-shadow:0 -2px 4px #d0d0d0; /* Opera 11.10+ */ --ms-box-shadow:0 -2px 4px #d0d0d0; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#a2a2a2", direction=40,strength=6 ); IE6-9 */ -} - -.ML_status_area {} -.ML_pw_area {height:65px; background:#fafafa; text-align:center; margin:0 9px; z-index:10;} -.ML_pw_chg_status_area {position:relative; bottom:0; height:169px;} -.ML_pw_chg_area {position:absolute; bottom:0; width:360px; height:135px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_del_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_del_area {position:absolute; bottom:0; width:360px; height:30px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_pfx_status_area {position:relative; bottom:0; height:100px;} -.ML_pw_pfx_area {position:absolute; top:0; width:360px; height:80px; text-align:center; margin:8px 10px 4px; padding:5px 10px; z-index:10;} -.ML_pw_detail_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_detail_area {position:absolute; bottom:0; width:100%; height:30px; text-align:center; margin:8px 0 4px; padding:10px 0; z-index:10;} -.ML_pw_dialog_status_area {} -.ML_pw_dialog_area {min-height:65px; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_dialog_txt {min-height:22px; margin-bottom:20px; font-size:14px; line-height:22px; color:#222;} - -/* .ML_cert_pw_area {margin:0 0 10px; height:30px; text-align:left;} */ -.ML_cert_pw_area {margin:0 0 7px; height:30px; text-align:left;position:relative;} -.ML_status_area_chg {margin-top:10px;} -.ML_cert_pw_tit {display:inline-block; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px;} -.ML_cert_pw_tit_chg {display:inline-block; width:115px; line-height:25px; font-size:12px; color:#2a2a2a; padding-right:5px; text-align:right; font-size:12px;} -.ML_cert_pw_field_chg {display:inline-block;} -.ML_cert_pw_tit_pfx {display:inline-block; width:90px; line-height:25px; font-size:12px; color:#2a2a2a; padding-right:5px; text-align:left; font-size:12px;} -.ML_cert_pw_field {display:inline-block; vertical-align:top; width:100%;} -.ML_cert_pw_key_box {position:absolute;top:0;right:0;} -.ML_cert_pw_keypad {display:block; width:30px; height:30px; background:url(../images/btn_key.png)no-repeat 2px 2px;} -.ML_cert_popup_tit {display:inline-block; width:105px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px; text-align:right;} -.ML_cert_popup_tit_copy {display:inline-block; width:75px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:12px; text-align:center;} -.f_wh_210 {width:210px;} -.f_wh_224 {width:224px;} -.f_wh_227 {width:227px;} -.f_wh_240 {width:240px;} -.f_wh_255 {width:255px;} -.f_wh_259 {width:259px;} -.f_wh_274 {width:274px;} -.f_wh_370 {width:360px;} -.f_wh_400 {width:400px;} -.ML_cert_secure_key {display:inline; width:25px; height:25px;} -.ML_cert_secure_key img { vertical-align:top; margin:0; padding:0} - -.ML_cert_file_area {margin:0 0 5px; height:30px; position:relative; text-align:left; overflow:hidden;} -.ML_cert_file_area2 {margin:14px 0 10px; height:143px; position:relative; text-align:left; overflow:hidden;} -.ML_cert_file_btn {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn:hover {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder_ovr.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn:focus {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder_ovr.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer;} -.ML_cert_file_btn_fcs {display:inline-block; width:28px; height:28px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:0; right:0; cursor:pointer; } -.ML_cert_file_add {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder.png) no-repeat; cursor:pointer;} -.ML_cert_file_add:hover {width:25px; height:25px; background:url(../images/btn_folder_ovr.png) no-repeat; cursor:pointer;} -.ML_cert_file_add:focus {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder_ovr.png) no-repeat; cursor:pointer;} - -.input_wrap{display:inline-block; height:28px; padding:1px; vertical-align:top;background:#ddd;} - -.ML_cert_status {margin:0 0 10px; height:25px; border:1px solid #ddd; text-align:left;} -.ML_cert_status .status_txt {padding-left:10px; line-height:25px;} - -/* Input-box */ -.passwd_input{width:100%; height:28px; text-indent:10px; background:#ffffff; border:1px solid #a8a8a8; line-height:28px; } -.passwd_input:hover{border:1px solid #87c9ff;} -.passwd_input:focus{background:#fffbe6; border:1px solid #1672e4;} - -/* buttom */ -.ML_btn_area {background:#fafafa; text-align:center; margin:10px 9px 0; z-index:10;} -.btn_row {width:100%; display:block;} -.btn_row p{display:inline;} -.btn_row_c {width:100%; display:block; margin-top:20px;} -.btn_row_c p{display:inline;} -.btn_row_s {margin:7px 9px;display:block; text-align:right;} -.btn_row_s p{display:inline;} -.btn_cell_left {display:inline; vertical-align:top; text-align:left; float:left;} -.btn_cell_left:after {content:""; display:table; clear:both;} -.btn_cell_center {width:100%; display:inline;vertical-align:top;} -.btn_cell_right {width:100%; display:inline;vertical-align:top; text-align:right;} -.MSG_cls{display:inline !important;} - -.whtgrey_btn{text-align:center;} -.whtgrey_btn button{width:128px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_btn img{vertical-align:middle; padding-right:3px;} -.whtgrey_btn button:hover{background:#dbdbdb;} -.whtgrey_btn button:focus{background:#dbdbdb;} - -.whtgrey_ws_btn{text-align:center;} -.whtgrey_ws_btn button{width:100px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_ws_btn button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_ws_btn img{vertical-align:middle; padding-right:3px;} -.whtgrey_ws_btn button:hover{background:#dbdbdb;} -.whtgrey_ws_btn button:focus{background:#dbdbdb;} - -.whtgrey_ws_btn2{text-align:center;} -.whtgrey_ws_btn2 button{width:150px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_ws_btn2 button span{display:block;height:22px;border-radius:2px; font-size:11px;font-weight:bold;color:#34373b} -.whtgrey_ws_btn2 img{vertical-align:middle; padding-right:3px;} -.whtgrey_ws_btn2 button:hover{background:#dbdbdb;} -.whtgrey_ws_btn2 button:focus{background:#dbdbdb;} - -.b_blue_btn{text-align:center} -.b_blue_btn button{width:116px;height:30px;border-radius:2px;border:1px solid #0456bb;cursor:pointer; background:#1672e4;} -.b_blue_btn button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#fff;} -.b_blue_btn button:hover{background:#1466cd;} -.b_blue_btn button:focus{background:#1466cd;} - -.b_blue_btn2{text-align:center} -.b_blue_btn2 button{width:97px;height:30px;border-radius:2px;border:1px solid #0456bb;cursor:pointer; background:#1672e4;} -.b_blue_btn2 button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#fff;} -.b_blue_btn2 button:hover{background:#1466cd;} -.b_blue_btn2 button:focus{background:#1466cd;} - -.b_grey_btn{text-align:center} -.b_grey_btn button{width:116px;height:30px;border-radius:2px;border:1px solid #a8a8a8;cursor:pointer; background:#dedede;} -.b_grey_btn button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#424242;} -.b_grey_btn button:hover{background:#c7c7c7;} -.b_grey_btn button:focus{background:#c7c7c7;} - -.b_grey_btn2{text-align:center} -.b_grey_btn2 button{width:97px;height:30px;border-radius:2px;border:1px solid #a8a8a8;cursor:pointer; background:#dedede;} -.b_grey_btn2 button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:12px;font-weight:bold;color:#424242;} -.b_grey_btn2 button:hover{background:#c7c7c7;} -.b_grey_btn2 button:focus{background:#c7c7c7;} - -.w_dkblue_btn{text-align:center} -.w_dkblue_btn button{width:200px;height:30px;border-radius:2px;border:1px solid #1e3046;cursor:pointer; background:#284870;} -.w_dkblue_btn button span{display:block;height:30px;border-radius:2px; line-height:26px; font-size:11px;font-weight:bold;color:#fff;} -.w_dkblue_btn button:hover{background:#1f3959;} -.w_dkblue_btn button:focus{background:#1f3959;} - -.copyCert_box{height:20px; z-index:99999; position:absolute; background: #ffffff; border:1px solid #000000; padding:2px 2px 0px 4px;} -.copyCert_box:after{content: ""; position: absolute; border-bottom: 7px solid #ffffff; border-right: 5px solid transparent; border-left: 5px solid transparent; top: -6px; left: 5px;} -.copyCert_box:before{content: ""; position: absolute; border-bottom: 7px solid #000000; border-right: 5px solid transparent; border-left: 5px solid transparent; top: -8px; left: 5px;} - -/* tabs */ -#ML_tabs {margin-top:10px;} -.tabs{margin:0 10px; z-index:1;} -.tabs li {display:inline-block; font-size:12px; } -.tabs a {width:80px; padding:9px 10px;display:inline-block; text-align:center; background:#f4f4f4;color:#34373b;text-decoration:none; border:1px solid #a8a8a8;} -.tabs a.active {background:#fdfdfd;color:#34373b; font-weight:bold; border-bottom:1px solid #fdfdfd;} - - -/* table */ -.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead, .detail_tb tbody{display:block; float:left; } -.detail_tb thead {background-color:#c8c8c8;} -.detail_tb thead tr th {height:20px; line-height:20px;} -.detail_tb tbody {min-height:10px; max-height:230px; overflow-y:auto; overflow-x:hidden;} -.detail_tb tbody {border-top:1px solid #b6b6b6;} -.detail_tb tbody tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody td, .detail_tb thead th{border-right:1px solid #b6b6b6;} -.detail_tb thead th:first-child{width:100px; padding:5px 5px;} -.detail_tb thead th{width:230px; padding:5px 5px;} -.detail_tb tbody td {padding:5px 5px; background:#fff; } -.detail_tb tbody td:first-child{width:110px; padding:5px 5px; background:#f6f6f6;} -.detail_tb tbody td:last-child{ border-right:none;padding:5px 5px;background:#fff;} -.detail_tb tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.detail_tb tbody tr:last-child{border-bottom:none;} -.detail_tb thead th:last-child{border-right:none;padding:5px 5px;} - -/*.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead tr{ background-color:#c8c8c8; } -.detail_tb thead tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody tr td{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.td_title{width:30%;}*/ - -/* footer */ -.ft_area{font:Verdana, Geneva, sans-serif; font-size:9px; letter-spacing:-1; line-height:15px; text-align:right} -.ft_area .ft_ver{position:absolute; left:0; padding-left:10px;} -.ft_area .ft_copy{position:relative; right:0; padding-right:10px;} - -/* PFX */ -.pfx_info{padding:10px 10px 5px 10px; background:#f5f5f5; font-size:11px; font-weight:bold;} -.pfx_br_chk{text-align:right; padding:0 0 12px;} -.pfx_btn_row_c {width:100%; display:block; margin-top:10px;} - -/* Loader */ -.ML_loader {width:150px; text-align:center; padding:7px 0; - border: 1px solid transparent; - background:#fff; - border-radius:5px; - box-shadow:0 4px 4px #777; - -moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ - -webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ - -o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ - -ms-box-shadow:0 4px 4px #777; /* IE10+ */ - /* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_loader img {} -.ML_loader span {display:inline-block; padding-top:4px; font-size:11px; color:#333; font-weight:bold;} - -/* 수정 및 추가된 css*/ -.save_to_br_chk{text-align:right; padding:0 0 12px;} -.ML_br_cert_pw_area {margin:0 0 10px; height:30px; text-align:left;} -.inner_head{background-color:#c8c8c8;} - -/* innerTable */ -#ML_cert_inner_area02 {margin:14px 0 10px; height:265px; background:#fafafa;} -.inner_tb{margin:0 0 18px; width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -/* .inner_tb thead, .inner_tb tbody{display:block; float:left; } -.inner_tb thead {background-color:#c8c8c8;} -.inner_tb thead tr th {} */ -.inner_tb tbody {overflow-y:auto; overflow-x:hidden;} -.inner_tb tbody {border-top:1px solid #b6b6b6;} -.inner_tb tbody tr th{padding:5px 5px; text-align:center; border:1px solid #b6b6b6;} -.inner_tb tbody td, .inner_tb thead th{border-right:1px solid #b6b6b6;} -.inner_tb thead th:first-child{width:320px; padding:5px 5px;} -.inner_tb thead th:last-child{width:210px; padding:5px 5px;} -.inner_tb thead th{width:237px; padding:5px 5px;} -.inner_tb tbody td {padding:5px 5px; background:#fff; width:237px;} -.inner_tb tbody td:first-child{width:700px; padding:5px 5px; background:#f6f6f6;} -.inner_tb tbody td:last-child{width:210px; border-right:none; padding:5px 5px; background:#fff;} -.inner_tb tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.inner_tb tbody tr:last-child{border-bottom:none;} -.inner_tb thead th:last-child{border-right:none;padding:5px 5px;} - -/* innerTable PFX*/ -.inner_tb_pfx{margin:0 0 18px; width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.inner_tb_pfx tbody {overflow-y:auto; overflow-x:hidden;} -.inner_tb_pfx tbody {border-top:1px solid #b6b6b6;} -.inner_tb_pfx tbody tr th{padding:5px 5px; text-align:center; border:1px solid #b6b6b6;} -.inner_tb_pfx tbody td {border-right:1px solid #b6b6b6;} -.inner_tb_pfx tbody td {padding:5px 5px; background:#fff; width:237px;} -.inner_tb_pfx tbody td:first-child{width:100px; padding:5px 5px; background:#f6f6f6;} -.inner_tb_pfx tbody td:last-child{width:400px; border-right:none; padding:5px 5px; background:#fff;} -.inner_tb_pfx tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.inner_tb_pfx tbody tr:last-child{border-bottom:none;} -.inner_tb_pfx thead th:last-child{border-right:none;padding:5px 5px;} - -.blind { - font-size: 1; - position: absolute; - top: -999999px; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_tablet.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_tablet.css deleted file mode 100644 index 7f7ba073..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_common_tablet.css +++ /dev/null @@ -1,670 +0,0 @@ -@charset "utf-8"; - - -/******************* common *******************/ -html,body{height:100%} -*{margin:0;padding:0;font-family:"맑은고딕",Malgun Gothic,"돋움",Dotum,"굴림",Gulim,Helvetica,Sans-serif;-webkit-text-size-adjust:none} -body{background:#fff;color:#5e5e5e;word-wrap:break-word;word-break:break-all} -body,input,select,textarea{} -textarea{border:1px solid #bcbcbc} -li{list-style:none} -table{border-collapse:collapse} -img,fieldset{border:none} -a{text-decoration:none;cursor:pointer} -label{cursor:pointer} -strong{font-weight:normal} -em,address{font-style:normal} -input{outline-style:none;} - - -/* -input[type='checkbox']{vertical-align:middle;border:0;border-radius:0} -input[type='checkbox']{background:url(../images/checkbox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='checkbox']:checked{background:#fff; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='checkbox']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/checkbox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} -input[type='radio']{vertical-align:middle;} -input[type='radio']{background:url(../images/radiobox_nor.png)no-repeat; height:22px; width:22px; background-size:22px 22px;-webkit-background-size:22px 22px; -webkit-appearance:none} -input[type='radio']:checked{background:#fff; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative} -input[type='radio']:checked:after {content:' '; display:block; width:22px; height:22px; background:url(../images/radiobox_chk.png)no-repeat; background-size:22px 22px;-webkit-background-size:22px 22px; position:relative;} - -input[type='radio']{vertical-align:middle;} -input[type='radio']{background:#fff; border:solid 1px #bebebe; border-radius:15px 15px; height:20px; width:20px; -webkit-appearance:none;} -input[type='radio']:checked{background:#fff; border:solid 1px #bebebe; border-radius:15px 15px;} -input[type='radio']:checked:after {content:' '; display:block; width:14px; height:14px; background:url(../images/check_radio.png); position:relative; top:2px; left:2px; border-radius:12px 12px;} -*/ - -.text_redB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_red_10 {PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #f52828; FONT-SIZE: 10px; PADDING-TOP: 2px} -.text_black{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 18px} -.text_grey24{PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #666666; FONT-SIZE: 11px; PADDING-TOP: 2px; line-height: 24px} -.text_blackB{PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: verdana; COLOR: #000000; FONT-SIZE: 11px; FONT-WEIGHT: bold; PADDING-TOP: 2px} -.text_orangeB{COLOR: #ee6a02; FONT-SIZE: 14px; FONT-WEIGHT: bold} -.text_orange{COLOR: #ee6a02; FONT-SIZE: 12px} -.text_grayB{FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray2B{COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold} -.text_gray{FONT-SIZE: 12px} -.text_gray_c9c9c9{COLOR: #c9c9c9; FONT-SIZE: 12px} -.ali_left{TEXT-ALIGN: left; PADDING-LEFT: 13px} -.ali_right{TEXT-ALIGN:right;PADDING-RIGHT:50px} - -.w_space4{padding-left:4px} -.w_space5{padding-left:5px} -.w_space8{padding-left:8px} -.w_space10{padding-left:10px} -.w_space12{padding-left:12px} -.w_space15{padding-left:15px} -.w_space18{padding-left:18px} -.w_space20{padding-left:20px} -.w_space25{padding-left:25px} -.w_space30{padding-left:30px} -.w_space35{padding-left:35px} -.w_space40{padding-left:4px} -.w_space50{padding-left:50px} -.w_space80{padding-left:80px} - -/******************* Display *******************/ -#ML_dp_01 {display:none;} -#ML_dp_02 {display:none;} -#ML_dp_03 {display:none;} -#ML_dp_04 {display:none;} -#ML_dp_05 {} - -#ML_status_area {width:100%; background:#fff; height:50px;} - -/******************* layout *******************/ -#ML_window{} -.MLjqui-window{} -.MLjqui-rc-t{ --moz-border-radius-topleft:0 !important; --webkit-border-top-left-radius:0 !important; -border-top-left-radius:0 !important; --moz-border-radius-topright:0 !important; --webkit-border-top-right-radius:0 !important; -border-top-right-radius0 !important; -} - -/******************* MLjqui-custom *******************/ -.MLjqui-widget-header{ -width:100% !important; -height:60px !important; -line-height:60px !important; -font-size: !important; -padding-left:!important; -} -/* .MLjqui-window-header{z-index:9999999;} */ -.MLjqui-window-header{position:absolute !important; left:0; z-index:9999999;} -.MLjqui-widget-header-DSdatatable {display:none !important;} -.MLjqui-window-close-button-background{ display:none;} -#contentdataTable {width:100% !important;} -#contenttabledataTable {} -.MLjqui-grid-table-DSdatatable {width:100% !important;} -.MLjqui-grid-table-DSdatatable td{border-bottom:1px solid #a8a8a8 !important;} -/*.MLjqui-grid-table-DSdatatable tr:last-child td{border-bottom:0 !important;}*/ - -#ML_container{background:#fdfdfd; width:100% !important; height:100% !important; margin-bottom:-80px !important; border:none; -} -#ML_container_popup{background:#fdfdfd; width:100%; font-size:12px;border:none; -} -.ML_pw_popup_area {text-align:center; margin:8px 10px 4px; padding:11px 0; z-index:10;} -.ML_container_pfx{background:#fdfdfd;height:215px; width:380px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_dialog{background:#fdfdfd;min-height:160px; width:320px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_popup{background:#fdfdfd;height:180px; width:400px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_container_certview{background:#fdfdfd;height:400px; width:380px;border:1px solid #a8a8a8; border-radius:5px; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_header{height:35px;position:relative;z-index:1; background:#e4e4e4;} -.ML_header_sdw{height:30px;position:relative;z-index:1; background:#28353f; -box-shadow:0 4px 4px #777; --moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ --webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ --o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ --ms-box-shadow:0 4px 4px #777; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -.ML_content{ - position: absolute; - top: 0; - left: -1px; - width: 100%; - min-height: 100%; -} -.ML_content .ML_content-area{padding-top:46px; } -.ML_footer{height:15px;} - -/* header */ -.hd_area{ text-align:right;} -.hd_area .head_tit{position:absolute; display:inline-block; left:0; padding-left:10px; color:#34373b; font-size:1.0em; font-weight:bold; line-height:35px;} -.hd_area .head_close{position:relative; display:inline-block; width:27px; height:27px; padding:8px 8px 0 0; right:0; background:#b2b2b2;} -.hd_area .head_close:hover{background:#a0a0a0;} -.hd_area .head_close img{} - -/* Title */ -.ML_sub_tit {margin:0 8px;color:#34373b; font-size:1.3em; font-weight:bold; display:none;} - -/* Install */ -#ML_container_install{background:#fdfdfd; width:398px; font-size:12px;border:none; -} -.install_wrap{padding:0 0 0 20px; height:116px; vertical-align:top;} -.install_wrap img{display:inline-block; padding:0 20px; vertical-align:middle;} -.install_txt{display:inline-block; color:#193b65; font-weight:bold; font-size:14px; line-height:24px;} -.loadbar{width:152px; height:21px; margin-left:60px; display:block; } -.loadbar_txt{display:block; color:#193b65; margin:10px 0 0 64px; font-weight:bold; } -.loadbar_txt2{display:block; color:#193b65; font-weight:bold; } - -/******************* DATA Table *******************/ -.MLjqui-widget-content-DSdatatable{ -width:100% !important; -border:0 !important; - -} - -/******************* storage Select *******************/ -.ML_cp_AD {padding:10px 9px 0; margin:0; } -.ML_cp_AD img {vertical-align:top; margin:0; padding:0} -.ML_storage_box_sub {width:396px; margin-left:1px;} -.customNavigation{display:none;} -.ML_storage_box {position:relative; margin:0 0px; margin-top:40px; height:75px; border:1px solid #a8a8a8;} -.ML_storage_area {margin:0; width:396px; height:75px; display:block;} -.ML_storage_area ul {height:74px; text-align:center;} -.ML_storage_area li {float:left;background:;} -.ML_storage_area li a{display:block; width:66px; height:75px; overflow:hidden; color:#34373b; font-size:0.80em; font-weight:bold; letter-spacing:-1px; background:url(../images/storage_icon_6by.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_storage_area li span{display:inline-block; padding-top:55px} - -/* positioning */ -.ML_storage_area li.ML_storage_smartcert a {width:66px; height:75px; background-position: 0 -150px;} -.ML_storage_area li.ML_storage_smartcert a:hover {background-position: -66px -150px;} -.ML_storage_area li.ML_storage_smartcert a:focus {background-position: -132px -150px;} -.ML_storage_area li.ML_storage_smartcert.on a{background-position: -198px -150px; color:#fff;} -.ML_storage_area li.ML_storage_smartcert.off a{background-position: -264px -150px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_smartcert.ins a{background-position: -330px -150px; color:#bebebe;} -.ML_storage_area li.ML_storage_token a {width:66px; height:75px; background-position: 0 -225px;} -.ML_storage_area li.ML_storage_token a:hover {background-position: -66px -225px;} -.ML_storage_area li.ML_storage_token a:focus {background-position: -132px -225px;} -.ML_storage_area li.ML_storage_token.on a{background-position: -198px -225px; color:#fff;} -.ML_storage_area li.ML_storage_token.off a{background-position: -264px -225px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_token.ins a{background-position: -330px -225px; color:#bebebe;} -.ML_storage_area li.ML_storage_browser a {width:66px; height:75px; background-position: 0 -75px;} -.ML_storage_area li.ML_storage_browser a:hover {background-position: -66px -75px;} -.ML_storage_area li.ML_storage_browser a:focus {background-position: -132px -75px;} -.ML_storage_area li.ML_storage_browser.on a{background-position: -198px -75px; color:#fff;} -.ML_storage_area li.ML_storage_browser.off a{background-position: -264px -75px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_browser.ins a{background-position: -330px -75px; color:#bebebe;} -.ML_storage_area li.ML_storage_phone a {width:66px; height:75px; background-position: 0 -300px;} -.ML_storage_area li.ML_storage_phone a:hover {background-position: -66px -300px;} -.ML_storage_area li.ML_storage_phone a:focus {background-position: -132px -300px;} -.ML_storage_area li.ML_storage_phone.on a{background-position: -198px -300px; color:#fff;} -.ML_storage_area li.ML_storage_phone.off a{background-position: -264px -300px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_phone.ins a{background-position: -330px -300px; color:#bebebe;} -.ML_storage_area li.ML_storage_hdd a {width:66px; height:75px; background-position: 0 0;} -.ML_storage_area li.ML_storage_hdd a:hover {background-position: -66px 0;} -.ML_storage_area li.ML_storage_hdd a:focus {background-position: -132px 0;} -.ML_storage_area li.ML_storage_hdd.on a{background-position: -198px 0; color:#fff;} -.ML_storage_area li.ML_storage_hdd.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_hdd.ins a{background-position: -330px 0; color:#bebebe;} -.ML_storage_area li.ML_storage_sch a {width:66px; height:75px; background-position: 0 -375px;} -.ML_storage_area li.ML_storage_sch a:hover {background-position: -66px -375px;} -.ML_storage_area li.ML_storage_sch a:focus {background-position: -132px -375px;} -.ML_storage_area li.ML_storage_sch.on a{background-position: -198px -375px; color:#fff;} -.ML_storage_area li.ML_storage_sch.off a{background-position: -264px -375px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_sch.ins a{background-position: -330px -375px; color:#bebebe;} -.ML_storage_area li.ML_storage_shdd a {width:66px; height:75px; background-position: 0 -450px;} -.ML_storage_area li.ML_storage_shdd a:hover {background-position: -66px -450px;} -.ML_storage_area li.ML_storage_shdd a:focus {background-position: -132px -450px;} -.ML_storage_area li.ML_storage_shdd.on a{background-position: -198px -450px; color:#fff;} -.ML_storage_area li.ML_storage_shdd.off a{background-position: -264px -450px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_shdd.ins a{background-position: -330px -450px; color:#bebebe;} -.ML_storage_area li.ML_storage_cloud a {width:66px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_cloud a:hover {background-position: -66px -525px;} -.ML_storage_area li.ML_storage_cloud a:focus {background-position: -132px -525px;} -.ML_storage_area li.ML_storage_cloud.on a{background-position: -198px -525px; color:#fff;} -.ML_storage_area li.ML_storage_cloud.off a{background-position: -264px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_cloud.ins a{background-position: -330px -525px; color:#bebebe;} -.ML_storage_area li.ML_storage_unisign a {width:66px; height:75px; background-position: 0 -525px;} -.ML_storage_area li.ML_storage_unisign a:hover {background-position: -66px -525px;} -.ML_storage_area li.ML_storage_unisign a:focus {background-position: -132px -525px;} -.ML_storage_area li.ML_storage_unisign.on a{background-position: -198px -525px; color:#fff;} -.ML_storage_area li.ML_storage_unisign.off a{background-position: -264px -525px; color:#cdcdcd; cursor:default;} -.ML_storage_area li.ML_storage_unisign.ins a{background-position: -330px -525px; color:#bebebe;} - - - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - -.ML_storage_area {*zoom:1;} -.ML_storage_area li:after{display:block; content:'';clear:both;} - - -/******************* import/export storage Select *******************/ -.ML_iestorage_box {position:relative; margin:0 0 10px;; height:290px; border:1px solid #a8a8a8; overflow-y:scroll; overflow-x:hidden; width:100%} -.ML_iestorage_area {margin:0 auto; width:100%; height:75px; display:block;} -.ML_iestorage_area ul {height:74px; text-align:center; padding:0 8px; width:100%;} -.ML_iestorage_area li {float:left; padding:2%; width:20%; height:75px;} -.ML_iestorage_area li a{display:block; width:20%; height:75px; overflow:hidden; color:#34373b; font-size:1em; font-weight:bold; letter-spacing:-1px; background:url(../images/storage_icon.png) no-repeat; cursor:pointer; vertical-align:text-bottom; /*text-indent:-5000px;*/} -.ML_iestorage_area li span{display:inline-block; padding-top:55px} - -/* import/export storage positioning */ -.ML_iestorage_area li.ML_iestorage_smartcert a {width:75px; height:75px; background-position: 0 -150px;} -.ML_iestorage_area li.ML_iestorage_smartcert a:hover {background-position: -75px -150px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_smartcert a:focus {background-position: -150px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.on a{background-position: -225px -150px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_smartcert.off a{background-position: -300px -150px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_smartcert.ins a{background-position: -375px -150px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_token a {width:75px; height:75px; background-position: 0 -225px;} -.ML_iestorage_area li.ML_iestorage_token a:hover {background-position: -75px -225px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_token a:focus {background-position: -150px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.on a{background-position: -225px -225px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_token.off a{background-position: -300px -225px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_token.ins a{background-position: -375px -225px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_browser a {width:75px; height:75px; background-position: 0 -75px;} -.ML_iestorage_area li.ML_iestorage_browser a:hover {background-position: -75px -75px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_browser a:focus {background-position: -150px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.on a{background-position: -225px -75px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_browser.off a{background-position: -300px -75px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_browser.ins a{background-position: -375px -75px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_phone a {width:75px; height:75px; background-position: 0 -300px;} -.ML_iestorage_area li.ML_iestorage_phone a:hover {background-position: -75px -300px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_phone a:focus {background-position: -150px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.on a{background-position: -225px -300px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_phone.off a{background-position: -300px -300px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_phone.ins a{background-position: -375px -300px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_hdd a {width:75px; height:75px; background-position: 0 0;} -.ML_iestorage_area li.ML_iestorage_hdd a:hover {background-position: -75px 0; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_hdd a:focus {background-position: -150px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.on a{background-position: -225px 0; color:#fff;} -.ML_iestorage_area li.ML_iestorage_hdd.off a{background-position: -300px 0; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_hdd.ins a{background-position: -375px 0; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sch a {width:75px; height:75px; background-position: 0 -375px;} -.ML_iestorage_area li.ML_iestorage_sch a:hover {background-position: -75px -375px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sch a:focus {background-position: -150px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.on a{background-position: -225px -375px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sch.off a{background-position: -300px -375px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sch.ins a{background-position: -375px -375px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_usb a {width:75px; height:75px; background-position: 0 -450px;} -.ML_iestorage_area li.ML_iestorage_usb a:hover {background-position: -75px -450px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_usb a:focus {background-position: -150px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.on a{background-position: -225px -450px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_usb.off a{background-position: -300px -450px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_usb.ins a{background-position: -375px -450px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_pc a {width:75px; height:75px; background-position: 0 -525px;} -.ML_iestorage_area li.ML_iestorage_pc a:hover {background-position: -75px -525px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_pc a:focus {background-position: -150px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.on a{background-position: -225px -525px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_pc.off a{background-position: -300px -525px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_pc.ins a{background-position: -375px -525px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_sd a {width:75px; height:75px; background-position: 0 -600px;} -.ML_iestorage_area li.ML_iestorage_sd a:hover {background-position: -75px -600px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_sd a:focus {background-position: -150px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.on a{background-position: -225px -600px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_sd.off a{background-position: -300px -600px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_sd.ins a{background-position: -375px -600px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_shdd a {width:75px; height:75px; background-position: 0 -675px;} -.ML_iestorage_area li.ML_iestorage_shdd a:hover {background-position: -75px -675px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_shdd a:focus {background-position: -150px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.on a{background-position: -225px -675px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_shdd.off a{background-position: -300px -675px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_shdd.ins a{background-position: -375px -675px; color:#cdcdcd;} -.ML_iestorage_area li.ML_iestorage_cloud a {width:75px; height:75px; background-position: 0 -750px;} -.ML_iestorage_area li.ML_iestorage_cloud a:hover {background-position: -75px -750px; color:#1672e4;} -.ML_iestorage_area li.ML_iestorage_cloud a:focus {background-position: -150px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.on a{background-position: -225px -750px; color:#fff;} -.ML_iestorage_area li.ML_iestorage_cloud.off a{background-position: -300px -750px; color:#cdcdcd; cursor:default;} -.ML_iestorage_area li.ML_iestorage_cloud.ins a{background-position: -375px -750px; color:#cdcdcd;} - - -.ML_iestorage_area {*zoom:1;} -.ML_iestorage_area li:after{display:block; content:'';clear:both;} - -.drive_position {position:absolute; margin:0; cursor:pointer; z-index:1000000;} -.drive_position ul {position:; right:0; top:0; padding:0 0 !important; width:150px; background:#fff; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.drive_position ul li {display:inline-block;position:relative;} -/* style all links */ -.drive_position li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:10px !important;} -.drive_position li a {color:#000 !important; font-size:12px !important; display:block !important;} -.drive_position li a:hover, .drive_position a:focus, .drive_position a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.drive_position li:last-child a {border-bottom:none !important;} -.drive_position.pos_01 {top:36px; left:75px;} -.drive_position.pos_02 {top:36px; left:150px;} -.drive_position.pos_03 {top:36px; left:225px;} -.drive_position.pos_04 {top:36px; left:75px;} -.drive_position.pos_05 {top:36px; left:150px;} -.drive_position.iepos_01 {top:36px; left:75px;} -.drive_position.iepos_02 {top:36px; left:150px;} -.drive_position.iepos_03 {top:36px; left:50px;} -.drive_position.iepos_04 {top:36px; left:125px;} -.drive_position.iepos_05 {top:111px; left:75px;} -.drive_position.iepos_06 {top:111px; left:150px;} -.drive_position.iepos_07 {top:111px; left:50px;} -.drive_position.iepos_08 {top:111px; left:125px;} -.drive_position.iepos_09 {bottom:36px; left:75px;} -.drive_position.iepos_10 {bottom:36px; left:150px;} -.drive_position.iepos_11 {bottom:36px; left:50px;} -.drive_position.iepos_12 {bottom:36px; left:125px;} - -#str_df {display:inline;} -#str_ex {display:inline;} - -.ML_storage_box .str_add_li {margin:0; position:absolute; right:0; top:0; display:none; width:22px; height:75px; text-align:right; border-left:1px solid #a8a8a8; cursor:pointer; } -.ML_storage_box .str_add_li.ne{background:url(../images/icon_next.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.pr {background:url(../images/icon_prev.png) no-repeat 4px 30px;} -.ML_storage_box .str_add_li.dis {background:url(../images/icon_next_dis.png) no-repeat 4px 30px;} -.btn_str_add{display:block; width:22px; height:75px; margin:0;} - -.str_add {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} - - -/******************* admin_menu Select *******************/ -.ML_admin_box {margin:0 9px; padding:0 1px; height:57px; border:1px solid #a8a8a8;} -.ML_admin_menu_dft {float:left;} -.ML_admin_menu_dft {*zoom:1;} -.ML_admin_menu_dft:after{display:block; content:'';clear:both;} -.ML_admin_menu_area {height:57px; vertical-align:top;} -.ML_admin_menu_area ul {width:398px; height:57px; text-align:center; overflow:hidden} -.ML_admin_menu_area li {float:left;} -.ML_admin_menu_area li.cer_sch {width:25px; text-align:right; padding-top:5px;} -.ML_admin_menu_area li a{display:block; width:66px; height:57px; vertical-align:text-bottom; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; overflow:hidden; background:url(../images/admin_icon.png) no-repeat; cursor:pointer} -.ML_admin_menu_area li span{display:inline-block; padding-top:39px} - -/* admin_positioning */ -.ML_admin_menu_area li.ad_cert_copy a {width:66px; height:57px; background-position: 0 0;} -.ML_admin_menu_area li.ad_cert_copy a:hover {background-position: -66px 0; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_copy a:focus {background-position: -132px 0; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_copy.on a{background-position: -198px 0;} -.ML_admin_menu_area li.ad_cert_copy.off a{background-position: -264px 0; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_copy.ins a{background-position: -330px 0; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_view a {width:66px; height:57px; background-position: 0 -57px;} -.ML_admin_menu_area li.ad_cert_view a:hover {background-position: -66px -57px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_view a:focus {background-position: -132px -57px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_view.on a{background-position: -180px -57px;} -.ML_admin_menu_area li.ad_cert_view.off a{background-position: -264px -57px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_view.ins a{background-position: -330px -57px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_del a {width:66px; height:57px; background-position: 0 -114px;} -.ML_admin_menu_area li.ad_cert_del a:hover {background-position: -66px -114px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_del a:focus {background-position: -132px -114px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_del.on a{background-position: -198px -114px;} -.ML_admin_menu_area li.ad_cert_del.off a{background-position: -264px -114px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_del.ins a{background-position: -330px -114px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_pass_change a {width:66px; height:57px; background-position: 0 -171px;} -.ML_admin_menu_area li.ad_cert_pass_change a:hover {background-position: -66px -171px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_pass_change a:focus {background-position: -132px -171px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_pass_change.on a{background-position: -198px -171px;} -.ML_admin_menu_area li.ad_cert_pass_change.off a{background-position: -264px -171px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_pass_change.ins a{background-position: -330px -171px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_import a {width:66px; height:57px; background-position: 0 -228px;} -.ML_admin_menu_area li.ad_cert_import a:hover {background-position: -66px -228px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_import a:focus {background-position: -132px -228px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_import.on a{background-position: -198px -228px;} -.ML_admin_menu_area li.ad_cert_import.off a{background-position: -264px -228px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_import.ins a{background-position: -330px -228px; color:#cdcdcd;} -.ML_admin_menu_area li.ad_cert_send a {width:66px; height:57px; background-position: 0 -285px;} -.ML_admin_menu_area li.ad_cert_send a:hover {background-position: -66px -285px; color:#1672e4;} -.ML_admin_menu_area li.ad_cert_send a:focus {background-position: -132px -285px; color:#0e51a5;} -.ML_admin_menu_area li.ad_cert_send.on a{background-position: -198px -285px;} -.ML_admin_menu_area li.ad_cert_send.off a{background-position: -264px -285px; color:#cdcdcd; cursor:default;} -.ML_admin_menu_area li.ad_cert_send.ins a{background-position: -330px -285px; color:#cdcdcd;} - - -.dv_sl {position:relative; margin-top:30px; margin-left:4px; width:16px; height:16px; background:url(../images/icon_next.png) no-repeat; cursor:pointer;} -.dv_sl ul {position:absolute; right:0; top:25px; padding:0 0 !important; width:150px; height:70px; background:#fff; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.dv_sl ul li {display:inline-block;position:relative;} -/* style all links */ -.dv_sl li a {width:150px !important; height:35px !important; line-height:35px !important; background:none !important; color:#fff !important; text-indent:0 !important;} -.dv_sl li a {color:#000 !important; font-size:12px !important; display:block !important;} -.dv_sl li a:hover, .dv_sl a:focus, .dv_sl a:active {background:#e0e0e0 !important;} -/* style sub level links */ -.dv_sl li:last-child a {border-bottom:none !important;} - -.ML_cert_list_area {margin:0; overflow: auto;} -.ML_cert_list_pwchg_area {margin:11px 10px 0; height:98px; overflow: auto;} -.ML_cert_list_del_area {margin:11px 10px 0; height:203px; overflow: auto;} -.ML_cert_list_pfx_area {margin:11px 10px 0; height:213px; overflow: auto;} -.ML_cert_list_sign_area {margin:11px 10px 0;} -.ML_cert_list {margin:0 0 8px; padding:5px 0; height:56px; color:#616161; font-size:12px; line-height:16px; background:#f4f4f4;} -.ML_cert_list:hover {} -.ML_cert_list.list_on {background:#efe8cf url(../images/btn_check.png) no-repeat right bottom ;} -.ML_cert_nor {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_normalcy_mobile.png) no-repeat; background-size:46px 56px;} -.ML_cert_exp {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_expire_mobile.png) no-repeat; background-size:46px 56px;} -.ML_cert_no {float:left; margin-left:16px; width:46px; height:56px; background:url(../images/ML_cert_no_mobile.png) no-repeat; background-size:46px 56px;} -.ML_cert_txt {float:left; padding:5px 0 0 10px;} -.ML_cert_btn {position:absolute; right:0; margin-top:5px; width:20px; height:20px; background:url(../images/certlist_menu_icon.png) no-repeat; cursor:pointer} - -.ML_cert_orgtext_area {margin:10px 10px; height:300px; background:#fdfdfd; border:1px solid #a8a8a8; overflow: auto;} -#orgtext{padding:10px 10px; line-height:18px;} -#orgtext .orgtit{display:block; font-weight:bold; color:#222; padding-bottom:8px;} -#orgtext .orgtxt{display:block; padding:0 8px; text-align:justify; font-size:0.8em; line-height:1.8em;} - -#ML_cert_orgtext_area1 {margin:-1px 10px 0; padding:10px 0; height:320px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area01 {margin:0 8px; height:270px; border:1px solid #e0e0e0; background:#fafafa; overflow:auto;} -.ML_cert_detail_btn {height:30px; text-align:center; margin:0 10px; padding:10px 10px;} -#detail_text01{padding:10px 10px; line-height:18px;} -#detail_text01 .dtltit01{display:block; font-size:0.9em; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text01 .dtltxt01{display:block; padding:0 8px; text-align:justify; font-size:0.8em; line-height:1.6em} - -#ML_cert_orgtext_area2 {margin:-1px 10px 0; padding:10px 0; height:320px; background:#fdfdfd; border:1px solid #a8a8a8; z-index:2;} -#ML_cert_detail_area02 {margin:0 8px; height:244px; background:#fafafa; overflow:auto;} -#detail_text02{line-height:18px;} -#detail_text02 .dtltit02{display:block; font-size:0.9em; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text02 .dtltxt02{display:block; padding:0 8px; text-align:justify; font-size:0.8em;} - - -#ML_cert_detail_area03 {margin:8px 8px 0; height:67px; border:1px solid #e0e0e0; background:#fafafa; overflow: auto;} -#detail_text03{padding:10px 0; line-height:18px;} -#detail_text03 .dtltit03{display:block; font-size:0.9em; font-weight:bold; color:#222; padding-bottom:8px;} -#detail_text03 .dtltxt03{display:block; padding:0 8px; text-align:justify; font-size:0.8em;} - - -.ML_cert_btn ul {position:absolute; right:0; top:25px; width:150px; height:70px; background:#415161; z-index:1; -box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); --moz-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* FF3.6+ */ --webkitbox-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Chrome,Safari4+ */ --o-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* Opera 11.10+ */ --ms-box-shadow:0 2px 8px rgba(0, 0, 0, 0.45); /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#000000", direction=40,strength=4 ); IE6-9 */ -} -.ML_cert_btn ul li {display:inline-block;position:relative;} -/* sub navigation */ -.ML_cert_btn li ul {background:#415161;position:absolute;left:0;top:35px;width:200px;} -.ML_cert_btn li li {position:relative; margin:0;display:block;} -.ML_cert_btn li li ul {position:absolute;top:0;left:200px;margin:0;} -/* style all links */ -.ML_cert_btn a {width:150px; line-height:35px;padding:0 12px; font-size:12px;} -.ML_cert_btn a {color:#fff; font-size:12px; display:block;} -.ML_cert_btn a:hover, .ML_cert_btn a:focus, .ML_cert_btn a:active {background:#566777;} -/* style sub level links */ -.ML_cert_btn li li a { border-bottom:solid 1px #222;margin:0 10px;padding:0;} -.ML_cert_btn li li:last-child a {border-bottom:none;} -/* show arrows for dropdowns -.ML_cert_btn li.dropdown > a {background-image:url('../img/arrow-down.png');background-position:right 20px;background-repeat:no-repeat;} -.ML_cert_btn li li.dropdown > a { background-image:url('../img/arrow-right.png');background-position:right 16px;background-repeat:no-repeat;} */ - -.certi_name {display:block; color:#34373b; font-size:1.2em; font-weight:bold;} -.certi_issuOrg {display:block; font-size:1.1em;} -.certi_expDate {display:block; font-size:1.1em;} -.certi_CIDI {display:inline-block;} -.certi_nocert {display:block; color:#222; line-height:48px; font-size:14px; font-weight:bold;} - -.ML_cert_list {*zoom:1;} -.ML_cert_list:after{display:block; content:'';clear:both;} - -.ML_cert_list_blank {height:1px;} -#ML_cert_info {position:absolute; top:12px; background:#414243 url(../images/option_icon.png) no-repeat 10px 9px; width:336px; height:35px; padding:0 10px 0 34px; margin:0 0 0 10px; line-height:35px; color:#fff; text-align:left; overflow:hidden; border-radius:5px 5px 0 0; z-index:9; -box-shadow:0 -2px 4px #d0d0d0; --moz-box-shadow:0 -2px 4px #d0d0d0; /* FF3.6+ */ --webkitbox-shadow:0 -2px 4px #d0d0d0; /* Chrome,Safari4+ */ --o-box-shadow:0 -2px 4px #d0d0d0; /* Opera 11.10+ */ --ms-box-shadow:0 -2px 4px #d0d0d0; /* IE10+ */ -/* filter: progid:DXImageTransform.Microsoft.Shadow( color="#a2a2a2", direction=40,strength=6 ); IE6-9 */ -} - -.ML_status_area {padding-top:10px;} -.ML_pw_area {height:50px; z-index:10; padding:0 5px; } -.ML_pw_chg_status_area {position:relative; bottom:0; height:169px;} -.ML_pw_chg_area {position:absolute; bottom:0; width:360px; height:135px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_del_status_area {position:relative; bottom:0; height:64px;} -.ML_pw_del_area {position:absolute; bottom:0; width:360px; height:30px; background:#fafafa; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_pfx_status_area {position:relative; bottom:0; height:190px;} -.ML_pw_pfx_area {height:80px; z-index:10; padding:10px;} -.ML_pw_detail_status_area {position:relative; bottom:0; height:54px;} -.ML_pw_detail_area {position:absolute; bottom:0; width:100%; height:30px; text-align:center;padding:10px 0; z-index:10;} -.ML_pw_dialog_status_area {width:320px} -.ML_pw_dialog_area {min-height:65px; text-align:center; margin:8px 10px 4px; padding:11px 10px; z-index:10;} -.ML_pw_dialog_txt {min-height:22px; margin-bottom:20px; font-size:0.9em; line-height:22px; color:#222;} - -.ML_cert_pw_area {margin:0 0 10px; height:40px; text-align:left; padding:0 6px 0 6px;position:relative; overflow:hidden;} -.ML_status_area_chg {margin-top:10px;} -.ML_cert_pw_tit {display:inline-block; line-height:36px; color:#2a2a2a; padding-right:5px; font-size:0.9em; width:110px; text-align:right;} -.ML_cert_pw_tit_chg {display:inline-block; width:115px; line-height:25px; font-size:1.2em; color:#2a2a2a; padding-right:5px; text-align:right; } -.ML_cert_pw_field_chg {display:inline-block;} -.ML_cert_pw_tit_pfx {display:inline-block; width:112px; line-height:36px; font-size:0.9em; color:#2a2a2a; padding-right:5px; text-align:right;} -.ML_cert_pw_field {display:inline-block; vertical-align:top; width:100%;} -.ML_cert_pw_keypad {display:inline-block; width:30px; height:30px; background:url(../images/btn_key.png)no-repeat 2px 2px;} -.ML_cert_popup_tit {display:inline-block; width:105px; line-height:25px; color:#2a2a2a; padding-right:5px; font-size:1.2em; text-align:right;} -.f_wh_210 {width:210px;} -.f_wh_227 {width:227px;} -.f_wh_240 {width:240px;} -.f_wh_255 {width:255px;} -.f_wh_265 {width:265px;} -.f_wh_274 {width:274px;} -.f_wh_297 {width:297px;} -.f_wh_310 {width:310px;} -.f_wh_370 {width:360px;} -.f_wh_400 {width:400px;} - -.f_wh_per_50 {width:50%;} -.f_wh_per_55 {width:55%;} -.f_wh_per_60 {width:60%;} -.f_wh_per_65 {width:65%;} - -.ML_cert_secure_key {display:inline; width:25px; height:25px;} -.ML_cert_secure_key img { vertical-align:top; margin:0; padding:0} - -.ML_cert_file_area {margin:0; height:40px; position:relative; text-align:left; overflow:hidden; padding:10px 6px;} -.ML_cert_file_btn {display:inline-block; width:30px; height:30px; background:url(../images/btn_folder.png) no-repeat 2px 2px; position:absolute; top:14px; right:0;} -.ML_cert_file_add {width:25px; height:25px; opacity:0; filter:alpha(opacity:0); background:url(../images/btn_folder.png) no-repeat;} - -.input_wrap{display:inline-block; height:28px; padding:1px; vertical-align:top;background:#ddd;} - -.ML_cert_status {margin:0 0 10px; height:25px; border:1px solid #ddd; text-align:left;} -.ML_cert_status .status_txt {padding-left:10px; line-height:25px;} - -/* Input-box */ -.passwd_input{width:100%; height:36px; text-indent:10px; background:#ffffff; border:1px solid #a8a8a8; line-height:36px; font-size:0.9em;} -.passwd_input:hover{border:1px solid #87c9ff; placeholder:none;} -.passwd_input:focus{background:#fffbe6; border:1px solid #1672e4;} -.file_input{width:100%; height:36px; text-indent:10px; background:#f5f5f5; border:1px solid #a8a8a8; line-height:36px; font-size:0.9em;} - -/* buttom */ -.ML_btn_area {background:#fafafa; text-align:center; margin:10px 9px 0; z-index:10;} -.btn_row {display:block; padding:0 5px; background:#fff;} -#btn_row_top { padding-top:20px} -.btn_row p{display:inline;} -.btn_row p.b_blue_btn button{ float:none;} -.btn_row_c {width:100%; display:block; margin-top:20px;} -.btn_row_c p{display:inline;} -.btn_row_s {margin:7px 9px;display:block; text-align:right;} -.btn_row_s p{display:inline;} -.btn_cell_left {width:100%; display:inline;vertical-align:top; text-align:left;} -.btn_cell_center {width:100%; display:inline;vertical-align:top;} -.btn_cell_right {width:100%; display:inline;vertical-align:top; text-align:right;} -.MSG_cls{display:inline !important;} - -.whtgrey_btn{text-align:center;} -.whtgrey_btn button{width:45%; height:36px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_btn button span{display:block;height:36px;border-radius:2px; font-size:1.1em;font-weight:bold;color:#34373b; line-height:34px;} -.whtgrey_btn img{vertical-align: text-top; padding-right:3px;} -.whtgrey_btn button:hover{background:#dbdbdb;} - -.whtgrey_ws_btn{text-align:center;} -.whtgrey_ws_btn button{width:100px;height:22px;padding:1px;border-radius:2px;border:1px solid #a8a8a8; cursor:pointer; background: #f4f4f4;} -.whtgrey_ws_btn button span{display:block;height:22px;border-radius:2px; font-size:1em;font-weight:bold;color:#34373b} -.whtgrey_ws_btn img{vertical-align:middle; padding-right:3px;} -.whtgrey_ws_btn button:hover{background:#dbdbdb;} - -.b_blue_btn{text-align:center; } -.b_blue_btn button{ float:left; width:28%;height:40px;border-radius:2px;border:1px solid #0456bb;cursor:pointer; background:#1672e4;} -.b_blue_btn button span{display:block;height:40px;border-radius:2px; line-height:40px; font-size:1.3em;font-weight:bold;color:#fff;} -.b_blue_btn button:hover{background:#1466cd;} - -.b_grey_btn{text-align:center;} -.b_grey_btn button{width:28%;height:40px;border-radius:2px;border:1px solid #a8a8a8;cursor:pointer; background:#dedede;} -.b_grey_btn button span{display:block;height:40px;border-radius:2px; line-height:40px; font-size:1.3em;font-weight:bold;color:#424242;} -.b_grey_btn button:hover{background:#c7c7c7;} - -/* tabs */ -#ML_tabs {margin-top:10px;} -.tabs{margin:0 10px; z-index:1;} -.tabs li {display:inline-block; font-size:0.9em; } -.tabs a {width:80px; padding:9px 10px;display:inline-block; text-align:center; background:#f4f4f4;color:#34373b;text-decoration:none; border:1px solid #a8a8a8;} -.tabs a.active {background:#fdfdfd;color:#34373b; font-weight:bold; border-bottom:1px solid #fdfdfd;} - - -/* table */ -.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead, .detail_tb tbody{display:block; float:left;} -.detail_tb thead {background-color:#c8c8c8;font-size:0.8em} -.detail_tb thead tr {} -.detail_tb thead tr th {height:20px; line-height:20px;} -.detail_tb tbody {border-top:1px solid #b6b6b6; height:210px; overflow-y:auto; overflow-x:hidden;} -.detail_tb tbody {border-top:1px solid #b6b6b6; font-size:0.7em} -.detail_tb tbody tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody td, .detail_tb thead th{border-right:1px solid #b6b6b6;} -.detail_tb thead th:first-child{ padding:5px 5px; width:96px;} -.detail_tb thead th {width:234px; padding:5px 5px;} -.detail_tb thead th:last-child{border-right:none;} -.detail_tb tbody td:first-child{padding:5px 5px; width:100px;} -.detail_tb tbody td:last-child{border-right:none; padding:5px 5px;background:#fff; width:70%;} -.detail_tb tbody tr {border-bottom:1px solid #b6b6b6; height:20px;} -.detail_tb tbody tr:last-child{border-bottom:none;} -.td_title{ font-size:1.1em} - -/*.detail_tb{width:100%; border:1px solid #b6b6b6; padding:5px 5px; background-color:#f6f6f6;} -.detail_tb thead tr{ background-color:#c8c8c8; } -.detail_tb thead tr th{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.detail_tb tbody tr td{padding:5px 5px; text-align:left; border:1px solid #b6b6b6;} -.td_title{width:30%;}*/ - -/* footer */ -.ft_area{font:Verdana, Geneva, sans-serif; font-size:9px; letter-spacing:-1; line-height:15px; text-align:right} -.ft_area .ft_ver{position:absolute; left:0; padding-left:10px;} -.ft_area .ft_copy{position:relative; right:0; padding-right:10px;} diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_key.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_key.css deleted file mode 100644 index 3db8479c..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/ML_key.css +++ /dev/null @@ -1,352 +0,0 @@ -@charset "utf-8"; - - -/******************* common *******************/ -html,body{height:100%} -*{margin:0;padding:0;font-family:"맑은고딕",Malgun Gothic,"돋움",Dotum,"굴림",Gulim,Helvetica,"애플고딕",AppleGothic,Sans-serif;-webkit-text-size-adjust:none} -body{background:#fff;color:#5e5e5e;word-wrap:break-word;word-break:break-all} -body,input,select,textarea{font-size:12px} -textarea{border:1px solid #bcbcbc} -li{list-style:none} -table{border-collapse:collapse} -img,fieldset{border:none} -a{text-decoration:none;cursor:pointer} -label{cursor:pointer} -strong{font-weight:normal} -em,address{font-style:normal} -input{outline-style:none;} - -/******************* key Select *******************/ -.ML_key_box {position:relative; margin:0; background:;} - -.ML_key_box .ML_key_caps a {position:absolute; top:107px; left:4px; width:45px; height:30px; background:url(../images/key/caps.gif) no-repeat; text-indent:-5000px; cursor:pointer;} -.ML_key_box .ML_key_caps a:hover {background:url(../images/key/caps_ovr.gif) no-repeat;} -.ML_key_box .ML_key_shift a {position:absolute; top:141px; left:4px; width:98px; height:30px; background:url(../images/key/shift.gif) no-repeat; text-indent:-5000px; cursor:pointer;} -.ML_key_box .ML_key_shift a:hover {background:url(../images/key/shift_ovr.gif) no-repeat;} -.ML_key_box .ML_key_space a {position:absolute; top:141px; left:106px; width:351px; height:30px; background:url(../images/key/space.gif) no-repeat; text-indent:-5000px; cursor:pointer;} -.ML_key_box .ML_key_space a:hover {background:url(../images/key/space_ovr.gif) no-repeat;} -.ML_key_box .ML_key_enter a {position:absolute; top:107px; right:4px; width:84px; height:64px; background:url(../images/key/enter.gif) no-repeat; text-indent:-5000px; cursor:pointer;} -.ML_key_box .ML_key_enter a:hover {background:url(../images/key/enter_ovr.gif) no-repeat;} -.ML_key_box .ML_key_reset a {position:absolute; top:73px; right:4px; width:65px; height:30px; background:url(../images/key/reset.gif) no-repeat; text-indent:-5000px; cursor:pointer;} -.ML_key_box .ML_key_reset a:hover {background:url(../images/key/reset_ovr.gif) no-repeat;} -.ML_key_box .ML_key_back a {position:absolute; top:5px; right:4px; width:30px; height:30px; background:url(../images/key/back.gif) no-repeat; text-indent:-5000px; cursor:pointer;} -.ML_key_box .ML_key_back a:hover {background:url(../images/key/back_ovr.gif) no-repeat;} - -.ML_key_area {margin:0 2px 2px; padding-top:2px; width:544px; height:170px; border-top:1px solid #d9d9d9;} -.ML_key_area ul {text-align:center;} -.ML_key_area li {float:left;margin:2px;background:;} -.ML_key_area li a{display:block; width:30px; height:30px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/key/nor/keylay.png) no-repeat; cursor:pointer; vertical-align:center; text-indent:-5000px;} -.ML_key_area li span{display:inline-block;} - -/* positioning */ -.ML_key_area li.gap1 {width:30px; height:30px;} -.ML_key_area li.gap2 {width:15px; height:30px;} -.ML_key_area li.gap3 {width:45px; height:30px;} -.ML_key_area li.ML_key_blank a {width:30px; height:30px; background-position: -150px -180px;} - -.ML_key_area li.ML_key_num1{width:506px; height:30px; background:url(../images/key/nor/key_num1.png) no-repeat;} -.ML_key_area li.ML_key_num2{width:506px; height:30px; background:url(../images/key/nor/key_num2.png) no-repeat;} -.ML_key_area li.ML_key_num3{width:438px; height:30px; background:url(../images/key/nor/key_num3.png) no-repeat;} -.ML_key_area li.ML_key_num4{width:404px; height:30px; background:url(../images/key/nor/key_num4.png) no-repeat;} - -.ML_key_area li.ML_key_ac a {width:30px; height:30px; background-position: 0 0;} -.ML_key_area li.ML_key_ac a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_1 a {width:30px; height:30px; background-position: -30px 0;} -.ML_key_area li.ML_key_1 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_2 a {width:30px; height:30px; background-position: -60px 0;} -.ML_key_area li.ML_key_2 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_3 a {width:30px; height:30px; background-position: -90px 0;} -.ML_key_area li.ML_key_3 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_4 a {width:30px; height:30px; background-position: -120px 0;} -.ML_key_area li.ML_key_4 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_5 a {width:30px; height:30px; background-position: -150px 0;} -.ML_key_area li.ML_key_5 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_6 a {width:30px; height:30px; background-position: -180px 0;} -.ML_key_area li.ML_key_6 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_7 a {width:30px; height:30px; background-position: 0 -30px;} -.ML_key_area li.ML_key_7 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_8 a {width:30px; height:30px; background-position: -30px -30px;} -.ML_key_area li.ML_key_8 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_9 a {width:30px; height:30px; background-position: -60px -30px;} -.ML_key_area li.ML_key_9 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_0 a {width:30px; height:30px; background-position: -90px -30px;} -.ML_key_area li.ML_key_0 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_hp a {width:30px; height:30px; background-position: -120px -30px;} -.ML_key_area li.ML_key_hp a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_eq a {width:30px; height:30px; background-position: -150px -30px;} -.ML_key_area li.ML_key_eq a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_q a {width:30px; height:30px; background-position: -180px -30px;} -.ML_key_area li.ML_key_q a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_w a {width:30px; height:30px; background-position: 0 -60px;} -.ML_key_area li.ML_key_w a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_e a {width:30px; height:30px; background-position: -30px -60px;} -.ML_key_area li.ML_key_e a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_r a {width:30px; height:30px; background-position: -60px -60px;} -.ML_key_area li.ML_key_r a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_t a {width:30px; height:30px; background-position: -90px -60px;} -.ML_key_area li.ML_key_t a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_y a {width:30px; height:30px; background-position: -120px -60px;} -.ML_key_area li.ML_key_y a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_u a {width:30px; height:30px; background-position: -150px -60px;} -.ML_key_area li.ML_key_u a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_i a {width:30px; height:30px; background-position: -180px -60px;} -.ML_key_area li.ML_key_i a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_o a {width:30px; height:30px; background-position: 0 -90px;} -.ML_key_area li.ML_key_o a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_p a {width:30px; height:30px; background-position: -30px -90px;} -.ML_key_area li.ML_key_p a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_sb1 a {width:30px; height:30px; background-position: -60px -90px;} -.ML_key_area li.ML_key_sb1 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_sb2 a {width:30px; height:30px; background-position: -90px -90px;} -.ML_key_area li.ML_key_sb2 a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_bs a {width:30px; height:30px; background-position: -120px -90px;} -.ML_key_area li.ML_key_bs a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_a a {width:30px; height:30px; background-position: -150px -90px;} -.ML_key_area li.ML_key_a a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_s a {width:30px; height:30px; background-position: -180px -90px;} -.ML_key_area li.ML_key_s a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_d a {width:30px; height:30px; background-position: 0 -120px;} -.ML_key_area li.ML_key_d a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_f a {width:30px; height:30px; background-position: -30px -120px;} -.ML_key_area li.ML_key_f a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_g a {width:30px; height:30px; background-position: -60px -120px;} -.ML_key_area li.ML_key_g a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_h a {width:30px; height:30px; background-position: -90px -120px;} -.ML_key_area li.ML_key_h a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_j a {width:30px; height:30px; background-position: -120px -120px;} -.ML_key_area li.ML_key_j a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_k a {width:30px; height:30px; background-position: -150px -120px;} -.ML_key_area li.ML_key_k a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_l a {width:30px; height:30px; background-position: -180px -120px;} -.ML_key_area li.ML_key_l a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_sc a {width:30px; height:30px; background-position: 0 -150px;} -.ML_key_area li.ML_key_sc a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_as a {width:30px; height:30px; background-position: -30px -150px;} -.ML_key_area li.ML_key_as a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_z a {width:30px; height:30px; background-position: -60px -150px;} -.ML_key_area li.ML_key_z a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_x a {width:30px; height:30px; background-position: -90px -150px;} -.ML_key_area li.ML_key_x a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_c a {width:30px; height:30px; background-position: -120px -150px;} -.ML_key_area li.ML_key_c a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_v a {width:30px; height:30px; background-position: -150px -150px;} -.ML_key_area li.ML_key_v a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_b a {width:30px; height:30px; background-position: -180px -150px;} -.ML_key_area li.ML_key_b a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_n a {width:30px; height:30px; background-position: 0 -180px;} -.ML_key_area li.ML_key_n a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_m a {width:30px; height:30px; background-position: -30px -180px;} -.ML_key_area li.ML_key_m a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_cm a {width:30px; height:30px; background-position: -60px -180px;} -.ML_key_area li.ML_key_cm a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_pr a {width:30px; height:30px; background-position: -90px -180px;} -.ML_key_area li.ML_key_pr a:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_fs a {width:30px; height:30px; background-position: -120px -180px;} -.ML_key_area li.ML_key_fs a:hover {background-position: -75px -150px;} - -.ML_key_area li a.sf{display:block; width:30px; height:30px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; background:url(../images/key/shift/keylay.png) no-repeat; cursor:pointer; vertical-align:center; text-indent:-5000px;} -.ML_key_area li.ML_key_ac a.sf {width:30px; height:30px; background-position: 0 0;} -.ML_key_area li.ML_key_ac a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_1 a.sf {width:30px; height:30px; background-position: -30px 0;} -.ML_key_area li.ML_key_1 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_2 a.sf {width:30px; height:30px; background-position: -60px 0;} -.ML_key_area li.ML_key_2 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_3 a.sf {width:30px; height:30px; background-position: -90px 0;} -.ML_key_area li.ML_key_3 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_4 a.sf {width:30px; height:30px; background-position: -120px 0;} -.ML_key_area li.ML_key_4 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_5 a.sf {width:30px; height:30px; background-position: -150px 0;} -.ML_key_area li.ML_key_5 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_6 a.sf {width:30px; height:30px; background-position: -180px 0;} -.ML_key_area li.ML_key_6 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_7 a.sf {width:30px; height:30px; background-position: 0 -30px;} -.ML_key_area li.ML_key_7 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_8 a.sf {width:30px; height:30px; background-position: -30px -30px;} -.ML_key_area li.ML_key_8 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_9 a.sf {width:30px; height:30px; background-position: -60px -30px;} -.ML_key_area li.ML_key_9 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_0 a.sf {width:30px; height:30px; background-position: -90px -30px;} -.ML_key_area li.ML_key_0 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_hp a.sf {width:30px; height:30px; background-position: -120px -30px;} -.ML_key_area li.ML_key_hp a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_eq a.sf {width:30px; height:30px; background-position: -150px -30px;} -.ML_key_area li.ML_key_eq a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_q a.sf {width:30px; height:30px; background-position: -180px -30px;} -.ML_key_area li.ML_key_q a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_w a.sf {width:30px; height:30px; background-position: 0 -60px;} -.ML_key_area li.ML_key_w a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_e a.sf {width:30px; height:30px; background-position: -30px -60px;} -.ML_key_area li.ML_key_e a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_r a.sf {width:30px; height:30px; background-position: -60px -60px;} -.ML_key_area li.ML_key_r a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_t a.sf {width:30px; height:30px; background-position: -90px -60px;} -.ML_key_area li.ML_key_t a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_y a.sf {width:30px; height:30px; background-position: -120px -60px;} -.ML_key_area li.ML_key_y a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_u a.sf {width:30px; height:30px; background-position: -150px -60px;} -.ML_key_area li.ML_key_u a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_i a.sf {width:30px; height:30px; background-position: -180px -60px;} -.ML_key_area li.ML_key_i a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_o a.sf {width:30px; height:30px; background-position: 0 -90px;} -.ML_key_area li.ML_key_o a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_p a.sf {width:30px; height:30px; background-position: -30px -90px;} -.ML_key_area li.ML_key_p a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_sb1 a.sf {width:30px; height:30px; background-position: -60px -90px;} -.ML_key_area li.ML_key_sb1 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_sb2 a.sf {width:30px; height:30px; background-position: -90px -90px;} -.ML_key_area li.ML_key_sb2 a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_bs a.sf {width:30px; height:30px; background-position: -120px -90px;} -.ML_key_area li.ML_key_bs a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_a a.sf {width:30px; height:30px; background-position: -150px -90px;} -.ML_key_area li.ML_key_a a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_s a.sf {width:30px; height:30px; background-position: -180px -90px;} -.ML_key_area li.ML_key_s a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_d a.sf {width:30px; height:30px; background-position: 0 -120px;} -.ML_key_area li.ML_key_d a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_f a.sf {width:30px; height:30px; background-position: -30px -120px;} -.ML_key_area li.ML_key_f a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_g a.sf {width:30px; height:30px; background-position: -60px -120px;} -.ML_key_area li.ML_key_g a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_h a.sf {width:30px; height:30px; background-position: -90px -120px;} -.ML_key_area li.ML_key_h a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_j a.sf {width:30px; height:30px; background-position: -120px -120px;} -.ML_key_area li.ML_key_j a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_k a.sf {width:30px; height:30px; background-position: -150px -120px;} -.ML_key_area li.ML_key_k a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_l a.sf {width:30px; height:30px; background-position: -180px -120px;} -.ML_key_area li.ML_key_l a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_sc a.sf {width:30px; height:30px; background-position: 0 -150px;} -.ML_key_area li.ML_key_sc a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_as a.sf {width:30px; height:30px; background-position: -30px -150px;} -.ML_key_area li.ML_key_as a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_z a.sf {width:30px; height:30px; background-position: -60px -150px;} -.ML_key_area li.ML_key_z a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_x a.sf {width:30px; height:30px; background-position: -90px -150px;} -.ML_key_area li.ML_key_x a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_c a.sf {width:30px; height:30px; background-position: -120px -150px;} -.ML_key_area li.ML_key_c a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_v a.sf {width:30px; height:30px; background-position: -150px -150px;} -.ML_key_area li.ML_key_v a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_b a.sf {width:30px; height:30px; background-position: -180px -150px;} -.ML_key_area li.ML_key_b a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_n a.sf {width:30px; height:30px; background-position: 0 -180px;} -.ML_key_area li.ML_key_n a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_m a.sf {width:30px; height:30px; background-position: -30px -180px;} -.ML_key_area li.ML_key_m a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_cm a.sf {width:30px; height:30px; background-position: -60px -180px;} -.ML_key_area li.ML_key_cm a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_pr a.sf {width:30px; height:30px; background-position: -90px -180px;} -.ML_key_area li.ML_key_pr a.sf:hover {background-position: -75px -150px;} -.ML_key_area li.ML_key_fs a.sf {width:30px; height:30px; background-position: -120px -180px;} -.ML_key_area li.ML_key_fs a.sf:hover {background-position: -75px -150px;} - -.ML_key_area {*zoom:1;} -.ML_key_area li:after{display:block; content:'';clear:both;} - -.ML_key_area_upper {position:absolute; top:0; left:0; margin:0 2px 2px; padding-top:2px; width:544px; height:170px; /*background:rgba(0,0,0,0.3);*/} -.ML_key_area_upper li {float:left;margin:2px;background:;} -.ML_key_area_upper li a{display:block; width:30px; height:30px; overflow:hidden; color:#34373b; font-size:11px; font-weight:bold; letter-spacing:-1px; cursor:pointer; vertical-align:center; text-indent:-5000px;} -.ML_key_area_upper li a:hover {background:url(../images/key/key_upper.png) no-repeat;} -/* positioning */ -.ML_key_area_upper li.gap1 {width:30px; height:30px;} -.ML_key_area_upper li.gap2 {width:15px; height:30px;} -.ML_key_area_upper li.gap3 {width:45px; height:30px;} -.ML_key_area_upper li.ML_key_blank a {width:30px; height:30px; background-position: -150px -180px;} - -.ML_key_area_upper li.ML_key_ac a {width:30px; height:30px; background-position: 0 0;} -.ML_key_area_upper li.ML_key_ac a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_1 a {width:30px; height:30px; background-position: -30px 0;} -.ML_key_area_upper li.ML_key_1 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_2 a {width:30px; height:30px; background-position: -60px 0;} -.ML_key_area_upper li.ML_key_2 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_3 a {width:30px; height:30px; background-position: -90px 0;} -.ML_key_area_upper li.ML_key_3 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_4 a {width:30px; height:30px; background-position: -120px 0;} -.ML_key_area_upper li.ML_key_4 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_5 a {width:30px; height:30px; background-position: -150px 0;} -.ML_key_area_upper li.ML_key_5 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_6 a {width:30px; height:30px; background-position: -180px 0;} -.ML_key_area_upper li.ML_key_6 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_7 a {width:30px; height:30px; background-position: 0 -30px;} -.ML_key_area_upper li.ML_key_7 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_8 a {width:30px; height:30px; background-position: -30px -30px;} -.ML_key_area_upper li.ML_key_8 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_9 a {width:30px; height:30px; background-position: -60px -30px;} -.ML_key_area_upper li.ML_key_9 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_0 a {width:30px; height:30px; background-position: -90px -30px;} -.ML_key_area_upper li.ML_key_0 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_hp a {width:30px; height:30px; background-position: -120px -30px;} -.ML_key_area_upper li.ML_key_hp a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_eq a {width:30px; height:30px; background-position: -150px -30px;} -.ML_key_area_upper li.ML_key_eq a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_q a {width:30px; height:30px; background-position: -180px -30px;} -.ML_key_area_upper li.ML_key_q a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_w a {width:30px; height:30px; background-position: 0 -60px;} -.ML_key_area_upper li.ML_key_w a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_e a {width:30px; height:30px; background-position: -30px -60px;} -.ML_key_area_upper li.ML_key_e a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_r a {width:30px; height:30px; background-position: -60px -60px;} -.ML_key_area_upper li.ML_key_r a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_t a {width:30px; height:30px; background-position: -90px -60px;} -.ML_key_area_upper li.ML_key_t a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_y a {width:30px; height:30px; background-position: -120px -60px;} -.ML_key_area_upper li.ML_key_y a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_u a {width:30px; height:30px; background-position: -150px -60px;} -.ML_key_area_upper li.ML_key_u a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_i a {width:30px; height:30px; background-position: -180px -60px;} -.ML_key_area_upper li.ML_key_i a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_o a {width:30px; height:30px; background-position: 0 -90px;} -.ML_key_area_upper li.ML_key_o a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_p a {width:30px; height:30px; background-position: -30px -90px;} -.ML_key_area_upper li.ML_key_p a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_sb1 a {width:30px; height:30px; background-position: -60px -90px;} -.ML_key_area_upper li.ML_key_sb1 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_sb2 a {width:30px; height:30px; background-position: -90px -90px;} -.ML_key_area_upper li.ML_key_sb2 a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_bs a {width:30px; height:30px; background-position: -120px -90px;} -.ML_key_area_upper li.ML_key_bs a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_a a {width:30px; height:30px; background-position: -150px -90px;} -.ML_key_area_upper li.ML_key_a a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_s a {width:30px; height:30px; background-position: -180px -90px;} -.ML_key_area_upper li.ML_key_s a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_d a {width:30px; height:30px; background-position: 0 -120px;} -.ML_key_area_upper li.ML_key_d a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_f a {width:30px; height:30px; background-position: -30px -120px;} -.ML_key_area_upper li.ML_key_f a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_g a {width:30px; height:30px; background-position: -60px -120px;} -.ML_key_area_upper li.ML_key_g a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_h a {width:30px; height:30px; background-position: -90px -120px;} -.ML_key_area_upper li.ML_key_h a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_j a {width:30px; height:30px; background-position: -120px -120px;} -.ML_key_area_upper li.ML_key_j a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_k a {width:30px; height:30px; background-position: -150px -120px;} -.ML_key_area_upper li.ML_key_k a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_l a {width:30px; height:30px; background-position: -180px -120px;} -.ML_key_area_upper li.ML_key_l a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_sc a {width:30px; height:30px; background-position: 0 -150px;} -.ML_key_area_upper li.ML_key_sc a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_as a {width:30px; height:30px; background-position: -30px -150px;} -.ML_key_area_upper li.ML_key_as a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_z a {width:30px; height:30px; background-position: -60px -150px;} -.ML_key_area_upper li.ML_key_z a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_x a {width:30px; height:30px; background-position: -90px -150px;} -.ML_key_area_upper li.ML_key_x a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_c a {width:30px; height:30px; background-position: -120px -150px;} -.ML_key_area_upper li.ML_key_c a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_v a {width:30px; height:30px; background-position: -150px -150px;} -.ML_key_area_upper li.ML_key_v a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_b a {width:30px; height:30px; background-position: -180px -150px;} -.ML_key_area_upper li.ML_key_b a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_n a {width:30px; height:30px; background-position: 0 -180px;} -.ML_key_area_upper li.ML_key_n a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_m a {width:30px; height:30px; background-position: -30px -180px;} -.ML_key_area_upper li.ML_key_m a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_cm a {width:30px; height:30px; background-position: -60px -180px;} -.ML_key_area_upper li.ML_key_cm a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_pr a {width:30px; height:30px; background-position: -90px -180px;} -.ML_key_area_upper li.ML_key_pr a:hover {background-position: -75px -150px;} -.ML_key_area_upper li.ML_key_fs a {width:30px; height:30px; background-position: -120px -180px;} -.ML_key_area_upper li.ML_key_fs a:hover {background-position: -75px -150px;} - -.ML_key_area_upper {*zoom:1;} -.ML_key_area_upper li:after{display:block; content:'';clear:both;} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase.css deleted file mode 100644 index 16c7e667..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase.css +++ /dev/null @@ -1,6825 +0,0 @@ -/*Rounded Corners*/ -/*top-left rounded Corners*/ -.MLjqui-rc-tl -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; -} -/*top-right rounded Corners*/ -.MLjqui-rc-tr -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom-left rounded Corners*/ -.MLjqui-rc-bl -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*bottom-right rounded Corners*/ -.MLjqui-rc-br -{ - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*top rounded Corners*/ -.MLjqui-rc-t -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom rounded Corners*/ -.MLjqui-rc-b -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*right rounded Corners*/ -.MLjqui-rc-r -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*left rounded Corners*/ -.MLjqui-rc-l -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*all rounded Corners*/ -.MLjqui-rc-all -{ -/* -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; */ -} -/*reset rounded corners*/ -.MLjqui-rc-reset -{ - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} - -/*Reset Style*/ -.MLjqui-reset -{ - padding: 0; - margin: 0; - border: none; - background: transparent; - outline: none; - box-sizing: content-box; -} -.MLjqui-clear { - align:left; valign:top; left: 0px; top: 0px; -webkit-appearance: none !important; outline: none !important; padding: 0px; margin: 0px; -} -.MLjqui-popup { - box-sizing: content-box; -} -.MLjqui-position-reset { - position: static !important; -} -.MLjqui-border-reset { - border: none !important; -} -.MLjqui-overflow-hidden { - overflow: hidden !important; -} -.MLjqui-position-relative { - position: relative !important; -} -.MLjqui-position-absolute { - position: absolute !important; -} -.MLjqui-max-size { - width: 100% !important; - height: 100% !important; -} -.MLjqui-background-reset { - background: transparent !important; -} -/*Disable browser selection*/ -.MLjqui-disableselect -{ - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - -ms-user-select:none; - -webkit-touch-callout:none; - -webkit-tap-highlight-color: rgba(0,0,0,0); -} -.MLjqui-enableselect { - -webkit-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -o-user-select: auto; - -ms-user-select:text; - user-select:all; -} -.MLjqui-hideborder -{ - border: none !important; -} -.MLjqui-hidescrollbars -{ - overflow: hidden !important; -} -/*MLjquiButton, MLjquiToggleButton, MLjquiRepeatButton Style*/ -.MLjqui-button{outline: none; border: 1px solid transparent; padding: 3px; text-align: center; vertical-align: central; margin: 0 0 0 0; cursor: default; } -button.MLjqui-button, input[type=button].MLjqui-button, input[type=submit].MLjqui-button { - box-sizing: border-box !important; -moz-box-sizing: border-box !important; -} - -.MLjqui-buttongroup{} -.MLjqui-group-button-normal { - vertical-align: middle; - text-align: center; -} -/*applied to the link button's anchor element.*/ -.MLjqui-link -{ - text-decoration: none; - color: #111111; -} - -/*shows elements.*/ -.MLjqui-visible -{ - display: block; -} -/*hides elements.*/ -.MLjqui-hidden -{ - display: none; -} -.MLjqui-widget, .MLjqui-widget-content, .MLjqui-widget-header, .MLjqui-fill-state-normal { - line-height: 1.231; -} -/*MLjquiGauge Style*/ -.MLjqui-gauge-label, .MLjqui-gauge-caption -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-knob { - text-align: center; -} -/*MLjquiChart Style*/ -.MLjqui-knob-label, -.MLjqui-chart-axis-text, -.MLjqui-chart-label-text, -.MLjqui-chart-tooltip-text, -.MLjqui-chart-legend-text -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-chart-axis-description -{ - fill: #555555; - color: #555555; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-chart-title-text -{ - fill: #111111; - color: #111111; - font-size: 14px; - font-weight: bold; - font-family: Verdana; -} -.MLjqui-chart-title-description -{ - fill: #111111; - color: #111111; - font-size: 12px; - font-weight: normal; - font-family: Verdana; -} - -/*applied to the Grid's element.*/ -.MLjqui-grid -{ - overflow: hidden; - border-style: solid; - border-width: 1px; -} -/*applied to the Pager.*/ -.MLjqui-grid-pager -{ - border: none; - border-top: 1px solid transparent; -} -/*applied to the Top Pager.*/ -.MLjqui-grid-pager-top -{ - border: none; - border-bottom: 1px solid transparent; -} -.MLjqui-grid-pager-number{ - padding: 2px 5px; - text-decoration: none; - margin: 1px; - border: 1px solid transparent; - color: inherit !important; - *color: expression(this.parentNode.currentStyle['color']) !important; - outline: none; - font-weight: normal !important; -} -.MLjqui-grid-menu-item-touch { - padding-top: 6px !important; - padding-bottom: 6px !important; -} -/*applied to the Grid's bottom-right area between the horizontal and vertical scrollbars.*/ -.MLjqui-grid-bottomright -{ - -} -/*applied to the Grid's header area.*/ -.MLjqui-grid-header -{ - border-style: solid; - border-width: 0px 0px 1px 0px; - overflow: hidden; - border-color: transparent; - margin: 0px; - padding: 0px; - background: #f4f4f4; - - } - /*applied to the columns.*/ -.MLjqui-grid-column-header, .MLjqui-grid-columngroup-header { - border-style: solid; - border-width: 0px 1px 0px 0px; - border-color: transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -.MLjqui-grid-column-header-rtl, .MLjqui-grid-columngroup-header-rtl { - border-width: 0px 0px 0px 1px; -} -.MLjqui-grid-columngroup-header { - border-bottom-width: 1px; - border-left-width: 1px; -} - /*applied to the column's button.*/ - .MLjqui-grid-column-menubutton { - border-style: solid; - border-width: 0px 0px 0px 1px; - border-color: transparent; - background-image: url('../images/menubutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } -.MLjqui-grid-column-menubutton-rtl { - border-width: 0px 1px 0px 0px; -} - /*applied to the column's sort button when the sort order is ascending.*/ - .MLjqui-grid-column-sortascbutton { - border: none; - background-image: url('../images/sortascbutton.png'); - background-repeat: no-repeat; - background-position: center; - background-color: none; - cursor: pointer; - } - /*applied to the column's sort button when the sort order is descending.*/ - .MLjqui-grid-column-sortdescbutton { - background-image: url('../images/sortdescbutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } - /*applied to the column's filter button.*/ - .MLjqui-grid-column-filterbutton - { - border: none; - background-image: url('../images/filter.png'); - background-repeat: no-repeat; - background-position: center; - } - /*applied to the column's resize line.*/ - .MLjqui-grid-column-resizeline { - border-right: 1px dotted #555; - } - /*applied to the validation popup during cell editing.*/ - .MLjqui-grid-validation - { - background: #df2227 !important; - color: #fff !important; - padding: 4px 8px; - } -.MLjqui-grid-validation-label { - color: #fff !important; - background: #df2227 !important; - border: 1px solid #df2227 !important; -} - .MLjqui-grid-validation-arrow-up - { - background-image: url('../images/red_arrow_up.png'); - background-repeat: no-repeat; - background-position: center center; - } - .MLjqui-grid-validation-arrow-down - { - background-image: url('../images/red_arrow_down.png'); - background-repeat: no-repeat; - background-position: center center; - } - /*applied to the column's resize start line.*/ - .MLjqui-grid-column-resizestartline { - border-right: 1px solid #444; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .MLjqui-grid-sortasc-icon - { - background-image: url('../images/sortasc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .MLjqui-grid-sortdesc-icon - { - background-image: url('../images/sortdesc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grid menu's sort remove item/*/ - .MLjqui-grid-sortremove-icon - { - background-image: url('../images/sortremove.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grouping column's drag and drop item when the drop operation is allowed.*/ - .MLjqui-grid-drag-icon - { - background-image: url('../images/drag.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the grouping column's drag and drop item when the drop operation is not allowed.*/ - .MLjqui-grid-dragcancel-icon - { - background-image: url('../images/dragcancel.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the 'group by' menu item.*/ - .MLjqui-grid-groupby-icon - { - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } -/*applied to the column anchor tags.*/ - .MLjqui-grid-column-header a:link, .MLjqui-grid-column-header a:visited - { - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -.MLjqui-grid-toolbar a:link, .MLjqui-grid-toolbar a:visited { - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -/*applied to the groups header area.*/ - .MLjqui-grid-groups-header, .MLjqui-grid-toolbar, .MLjqui-scheduler-toolbar { - border-style: solid; - border-width: 0px 0px 1px 0px; - border-color: #aaa; - white-space: nowrap; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -/*applied to a grouping row.*/ - .MLjqui-grid-groups-row { - font-weight:bold; - white-space: nowrap; - text-align: left; - padding: 0px; - top: 50%; - margin-top: -8px; - } - /*applied to the row details.*/ - .MLjqui-grid-groups-row-details { - font-weight: normal; - } - /*applied to a grouping column.*/ - .MLjqui-grid-group-column - { - border: 1px solid transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } - /*applied to the lines between the group columns.*/ - .MLjqui-grid-group-column-line - { - background: #aaa; - } - /*applied to the drop line indicators displayed in the grouping header.*/ - .MLjqui-grid-group-drag-line - { - background: #80be09; - } - /*applied to the anchor tags inside a grouping column.*/ - .MLjqui-grid-group-column a:link{ - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); -} - .MLjqui-grid-group-column a:visited{ - color: inherit; - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a grid cell*/ -.MLjqui-grid-cell { - border-style: solid; - border-width: 0px 1px 1px 0px; - margin-right: 1px; - margin-bottom: 1px; - border-color: transparent; - background: #fff; - white-space: nowrap; - font-weight: normal; - font-size: inherit; - overflow: hidden; - text-overflow: ellipsis; - position: absolute !important; - height: 100%; - } -.MLjqui-grid-cell-locked { - color: #aaa !important; -} -.MLjqui-grid-cell-left-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: left; - margin-right: 2px; - margin-left: 4px; -} -.MLjqui-grid-cell-middle-align { - text-overflow: ellipsis; - overflow: hidden; - padding-bottom: 2px; - text-align: center; -} -.MLjqui-grid-cell-right-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: right; - margin-right: 4px; - margin-left: 2px; -} - -/*applied to a grid cell that is part of a rows group.*/ - .MLjqui-grid-group-cell{ - overflow: hidden; - position: absolute !important; - height: 100%; - background: #fff; - } -/*applied to the grid cells in the sort column*/ - .MLjqui-grid-cell-sort { - background-color: #f0f0f0; - } - - /*applied to the grid cells in the filter column*/ - .MLjqui-grid-cell-filter { - background-color: #e6e6e6; - } -.MLjqui-grid-cell-add-new-row { - background: #fdfcf3 !important; - color: #000 !important; -} - - /*applied to the grid cells area.*/ -.MLjqui-grid-content { - border-style: solid; - border-width: 0px 0px 0px 0px; - border-color: transparent; - white-space: nowrap; - overflow: hidden; - } - /*applied to a grid cell that is part of a rows group.*/ -.MLjqui-grid-group-cell, .MLjqui-grid-empty-cell { - border-style: solid; - border-width: 0px 0px 1px 0px; - white-space: nowrap; - font-weight: normal; - } -.MLjqui-widget .MLjqui-grid-cleared-cell, .MLjqui-grid-cleared-cell { - border: transparent !important; -} -.MLjqui-grid-cell-wrap {white-space: normal !important;} - -.MLjqui-tree-grid-indent { - width: 15px; - display: inline-block; - height: 8px; - overflow: hidden; - vertical-align: top; -} -.MLjqui-tree-grid-title { - text-decoration: none; - vertical-align: top; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-tree-grid-collapse-button, .MLjqui-tree-grid-expand-button { - display: inline-block; - margin-top: 0px; - margin-right: 0px; - position: relative; - width: 15px; - height: 16px; - vertical-align: top; -} -.MLjqui-tree-grid-checkbox { - float: none !important; - width: 14px; - height: 14px; - cursor: pointer; - margin-right: 2px !important; - margin-left: 2px !important; -} -.MLjqui-tree-grid-icon { - float: none !important; - width: 14px; - height: 14px; - margin-right: 4px; -} -.MLjqui-tree-grid-icon-rtl { - margin-right: 0px; - margin-left: 4px; -} -.MLjqui-tree-grid-icon-size { - width: 14px; - height: 14px; - line-height: 16px; -} - -.MLjqui-tree-grid-checkbox-tick { - width: 100%; - height: 100%; -} -.MLjqui-tree-grid-expand-button { - height: 16px; - width: 15px; - vertical-align: top; -} - -/*applied to a cell in MLjquiDataTable*/ -.MLjqui-cell { - min-height: 23px; - padding: 4px 4px 2px; - margin: 0; - border-collapse: separate; - border-spacing: 0px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-top-width: 0px; - border-left-width: 0px; - box-sizing: border-box; - -moz-box-sizing: border-box; - white-space: normal; - line-height: 1.231; -} -.MLjqui-grid-cell-nowrap {white-space: nowrap;} - -.MLjqui-cell-editor { - padding-left: 4px !important; - padding-right: 3px !important; -} -.MLjqui-left-align { - text-align: left; -} -.MLjqui-center-align { - text-align: center; -} -.MLjqui-right-align { - text-align: right; -} -.MLjqui-top-align { - vertical-align:top; -} -.MLjqui-bottom-align { - vertical-align: bottom; -} - -.MLjqui-grid-table .MLjqui-grid-cell { - position: static !important; - zoom: 1 !important; -} -/*applied to the Grid's Table element.=========================================================================================================================================================================================================*/ -.MLjqui-grid-table { - font-size: 11px; - table-layout: fixed; - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 0px; - -webkit-overflow-scrolling: touch; - outline: none; - zoom: 1 !important; - empty-cells: show; - border-right: 1px solid #a8a8a8; - line-height: 1.231; - width: auto; - border: none; -} -.MLjqui-grid-table-rtl { - border-left-width: 1px; - border-right-width: 0px; -} -.MLjqui-details table { - border-collapse: collapse; - table-layout: fixed; - border-spacing: 0px; -} - - /*applied to a grid cell that is part of a details row and grouping is enabled.*/ -.MLjqui-grid-group-details-cell { - - } - /*applied to a grid cell that is part of a details row.*/ -.MLjqui-grid-details-cell { - border-width: 0px 1px 0px 0px; - } - /*applied to a grid cell. Represents the alternating cell background.*/ -.MLjqui-grid-cell-alt { - background: #f2f2f2; - } -/*applied to a sorted and alternating grid cell*/ -.MLjqui-grid-cell-sort-alt { - background-color: #e5e5e5; - }/*applied to a sorted and alternating grid cell*/ -.MLjqui-grid-cell-filter-alt { - background-color: #f0f0f0; - } - /*applied to a pinned grid cell.*/ -.MLjqui-grid-cell-pinned { - background-color: #e5e5e5; - } - /*applied to a pinned grid cell. Represents the alternating cell background.*/ -.MLjqui-grid-cell-pinned-alt { - background-color: #e5e5e5; - } - /*applied to a selected grid cell.*/ - .MLjqui-grid-cell-selected { - border-left: 0px solid transparent; - } - .MLjqui-cell-rtl { - border-left-width: 1px; - border-right-width: 0px; - } - .MLjqui-grid-cell-rtl { - border-width: 0px 0px 1px 1px; - } - .MLjqui-grid-table .MLjqui-grid-cell { - border-width: 0px 0px 1px 1px; - } -.MLjqui-grid-table-one-cell { - border: none; - border-right-width: 1px; - border-right-style:solid; - border-right-color:#aaa; -} - - .MLjqui-grid-table .MLjqui-grid-cell:first-child { - border-left-width: 0px; - } - - /*applied to the selection area.*/ - .MLjqui-grid-selectionarea { - border: 1px solid transparent; - opacity: 0.5; - filter: alpha(opacity=50); - } - /*applied to a hovered grid cell.*/ - .MLjqui-grid-cell-hover { - border-color: transparent; - } - /*applied to a grid cell when the grid is empty.*/ - .MLjqui-grid-empty-cell{ overflow: visible; border-bottom: none;} - - /*applied to the Grid when its loading the data.*/ - .MLjqui-grid-load -{ - padding-right: 0px; - background-image: url(../images/loader.gif); - background-position: 50% 50%; - background-repeat: no-repeat; - z-index: 9999; - display: block; -} -/*applied to a group's collapse button.*/ -.MLjqui-grid-group-collapse -{ - padding-right: 0px; - background-image: url(../images/icon-right.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-grid-group-collapse-rtl -{ - padding-right: 0px; - background-image: url(../images/icon-left.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to a group's expand button.*/ -.MLjqui-grid-group-expand, .MLjqui-grid-group-expand-rtl -{ - padding-right: 0px; - background-image: url(../images/icon-down.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*MLjquiProgresBar Style*/ -.MLjqui-progressbar -{ - overflow: hidden; - outline: none; - border: 1px solid transparent; - height: 2em; -} -/*applied to the progressbar's value element*/ -.MLjqui-progressbar-value -{ - outline: none; - border: 0px solid transparent; - height: 100%; -} -/*applied to the progress bar's vertical value element- when the widget's orientation is 'vertical'*/ -.MLjqui-progressbar-value-vertical -{ - outline: none; - border: 0px solid transparent; - height: 100%; - background: transparent; -} -/*applied to the progressbar's text element*/ -.MLjqui-progressbar-text -{ - font-size: 10px; - border: none; -} -/*applied to the progress bar when the widget is in disabled state*/ -.MLjqui-progressbar-disabled -{ - outline: none; - border: 1px solid transparent; - height: 2em; -} - -/*MLjquiMenu Style*/ -.MLjqui-menu -{ - border: 1px solid transparent; - float: none; - margin: 0px; - height: 100%; - padding: 0px; - overflow: hidden; - text-align: left; -} -.MLjqui-menu-dropdown-column -{ - float: left; -} -/*applied to the menu when it is horizontal. Sets the menu's background*/ -.MLjqui-menu-horizontal -{ - margin: 0px; - padding: 0px; - overflow: hidden; - text-align: center; -} -/*applied to the menu when it is vertical. Sets the menu's background*/ -.MLjqui-menu-vertical -{ - text-align: left; -} -/*applied to the sub menu. Sets the sub menu's background*/ -.MLjqui-menu-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - display: none; - float: none; - width: 150px; - border-style: solid; - border-width: 1px; - text-align: left; - padding: 2px; -} -/*applied to the sub menu's ul elements.*/ -.MLjqui-menu-dropdown ul -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - border: none; -} -/*applied to the menu's ul elements.*/ -.MLjqui-menu ul -{ - left: 100%; - margin: 0px; - padding: 2px; - right: 0; - overflow: hidden; - background-color: transparent; - border: none; -} -/*applied to the menu's li elements.*/ -.MLjqui-menu li, .MLjqui-menu-dropdown li -{ - line-height: 1.3 !important; -} -/*applied to the top level menu items.*/ -.MLjqui-menu-item-top -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - left: 100%; - overflow: hidden; - color: inherit; - right: 0; - margin: 0px 1px 0px 1px; - cursor: pointer; -} -/*applied to the sub menu items.*/ -.MLjqui-menu-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - margin: 1px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when the mouse is over the item.*/ -.MLjqui-menu-item-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a top-level menu item when the mouse is over it.*/ -.MLjqui-menu-item-top-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - top: 50%; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when its sub menu is opened.*/ -.MLjqui-menu-item-selected -{ - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a disabled sub menu item.*/ -.MLjqui-menu-item-disabled -{ - -} -/*applied to a top-level menu item when its sub menu is opened.*/ -.MLjqui-menu-item-top-selected -{ - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - cursor: pointer; -} -/*applied to the menu separator items.*/ -.MLjqui-menu-item-separator -{ - text-indent: 0; - background-color: #ddd; - border: none; - list-style: none; - height: 1px; - line-height:0 !important; - padding: 0px; - margin: 1px 2px 1px 2px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - font-size: 1px; -} -/*applied to a sub menu item when it has sub menu items. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-right -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items. Displays down arrow icon.*/ -.MLjqui-menu-item-arrow-down -{ - background-image: url(../images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items. Displays up arrow icon.*/ -.MLjqui-menu-item-arrow-up -{ - background-image: url(../images/icon-up.png); -} -.MLjqui-menu-minimized { - position: relative; -} -.MLjqui-menu-title { - position: relative; - float: right; - margin-top: 4px; - padding-top: 4px; - padding-right: 20px; -} -.MLjqui-menu-minimized-button -{ - background-image: url('../images/icon-menu-minimized.png'); - background-repeat: no-repeat; - background-position: left center; - height: 24px; - width: 24px; - padding: 0px; - margin-left: 7px; - margin-top: 4px; - float : left; -} -.MLjqui-menu-ul-minimized { - display: block!important; - width: auto !important; -} -.MLjqui-menu-ul-minimized ul { - margin-top: 0px; - margin-bottom: 0px; - padding-top: 0px; - padding-bottom: 0px; - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.MLjqui-menu-minimized li:last-child { - padding-bottom: 0px; - margin: 0px; -} -.MLjqui-menu-item-arrow-right, .MLjqui-menu-item-arrow-down, .MLjqui-menu-item-arrow-up, .MLjqui-menu-item-arrow-right { - background-position: 100% 50%; - background-repeat: no-repeat; - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; -} -/*applied to a sub menu item when it has sub menu items. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-left -{ - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; - background-image: url(../images/icon-left.png); - background-position: 0 50%; - background-repeat: no-repeat; -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-right-selected -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays down arrow icon.*/ -.MLjqui-menu-item-arrow-down-selected -{ - background-image: url(../images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays up arrow icon.*/ -.MLjqui-menu-item-arrow-up-selected -{ - background-image: url(../images/icon-up.png); -} -.MLjqui-menu-item-arrow-right-selected, .MLjqui-menu-item-arrow-up-selected, .MLjqui-menu-item-arrow-down-selected, .MLjqui-menu-item-arrow-top-right { - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; - background-position: 100% 50%; - background-repeat: no-repeat; -} -/*applied to a top-level menu item when it has sub menu items. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-top-right -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-left-selected -{ - background-image: url(../images/icon-left.png); -} -/*applied to a top-level menu item when it has sub menu items. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-top-left -{ - background-image: url(../images/icon-left.png); -} -.MLjqui-menu-item-arrow-left-selected, .MLjqui-menu-item-arrow-top-left { - background-position: 0 50%; - background-repeat: no-repeat; - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; -} -/*applied to the anchor elements*/ -.MLjqui-menu-item a:link, .MLjqui-menu-item a:visited, .MLjqui-menu-item a:hover, .MLjqui-menu-item-top a:link, .MLjqui-menu-item-top a:visited, .MLjqui-menu-item-top a:hover -{ - text-decoration: none; - color: inherit; - outline: none; - background-color: transparent; - *color: expression(this.parentNode.currentStyle['color']); -} - -/*applied to the menu widget when it is disabled.*/ -.MLjqui-menu-disabled -{ - cursor: default; -} -/*applied to the anchor elements of all disabled menu items.*/ -.MLjqui-menu-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.MLjqui-menu-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.MLjqui-menu-disabled a:hover -{ - cursor: default; -} -.MLjqui-menu-dropdown -{ - right: -1px; -} - -/*MLjquitree Style*/ -.MLjqui-tree -{ - left: 100%; - right: 0; - float: none; - margin: 0px; - border-style: solid; - border-width: 1px; - padding: 0px; - overflow: hidden; - text-align: left; - outline: none; - white-space: nowrap; - line-height: 14px !important; -} -/*applied to the MLjquiTree root UL element.*/ -.MLjqui-tree-dropdown-root -{ - left: 100%; - padding: 0px 5px 0px 5px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: #fff; - text-align: left; - outline: none; - white-space: nowrap; - margin: 0px; -} -.MLjqui-tree-dropdown-root-rtl { - padding: 0px 5px 0px 0px; - text-align: right; - float: right; - margin: 0px; -} - -/*applied to the MLjquiTree UL elements.*/ -.MLjqui-tree-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px 0px 0px 10px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: transparent; - text-align: left; - outline: none; -} -.MLjqui-tree-dropdown-rtl { - padding: 3px 0px 0px 0px; - text-align: right; -} - -/*applied to a tree item.*/ -.MLjqui-tree-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 3px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - right: 0; - text-align: left; - cursor: default; - text-decoration: none; -} -/*applied to the MLjquiTree LI elements.*/ -.MLjqui-tree-item-li -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - left: 100%; - right: 0; - text-align: left; - outline: none; - margin: 0px; - margin-top: 1px; - padding: 0px; -} -/*applied to the last LI elements in an UL element.*/ -.MLjqui-tree-item-u-last -{ - margin: 0px 0px 0px 0px; -} -/*applied to a tree item when the mouse is over the item.*/ -.MLjqui-tree-item-hover -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -/*applied to a tree item when the item is selected.*/ -.MLjqui-tree-item-selected -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -.MLjqui-tree-item-rtl { - text-align: right; -} -.MLjqui-tree-item-li-rtl { - text-align: right; -} -/*applied to the anchor element of a tree item.*/ -.MLjqui-tree-item a:link, .MLjqui-tree-item a:visited -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - padding: 0px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - text-decoration: none; - outline: none; -} -.MLjqui-tree-item-selected, .MLjqui-tree-item-hover a:hover -{ - color: inherit; -} -.MLjqui-tree-item-selected, .MLjqui-tree-item-hover a:visited -{ - color: inherit; -} - -/*applied to a tree item when the item is disabled.*/ -.MLjqui-tree-item-disabled -{ - -} -/*applied to a tree item when it has sub items and is collapsed. Displays an arrow icon next to the item.*/ -.MLjqui-tree-item-arrow-collapse, .MLjqui-tree-item-arrow-collapse-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(../images/icon-right.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-tree-item-arrow-collapse-rtl, .MLjqui-tree-item-arrow-collapse-hover-rtl { - background-image: url(../images/icon-left.png); -} - -/*applied to a tree item when it has sub items and is expanded. Displays an arrow icon next to the item.*/ -.MLjqui-tree-item-arrow-expand, .MLjqui-tree-item-arrow-expand-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(../images/icon-down.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to the tree when it is disabled.*/ -.MLjqui-tree-disabled -{ - cursor: default; -} -/*applied to the anchor elements in a tree when it is disabled.*/ -.MLjqui-tree-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.MLjqui-tree-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.MLjqui-tree-disabled a:hover -{ - cursor: default; -} - - -/*MLjquiTabs*/ -.MLjqui-tabs -{ - outline: none; - margin: 0 0 0 0; - padding: 0px; - overflow: hidden; - background: transparent; - border: 1px solid transparent; -} -/*applied to the tab close button.*/ -.MLjqui-tabs-close-button -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - position: relative; - left: 5px; -} -/*applied to the tab close button when the tab is selected.*/ -.MLjqui-tabs-close-button-selected -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -/*applied to the tab close button when the mouse is over the tab.*/ -.MLjqui-tabs-close-button-hover -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.MLjqui-tabs-close-button, .MLjqui-tabs-close-button-selected, .MLjqui-tabs-close-button-hover{background-repeat:no-repeat; background-position:center;} -/*applied to the tab's left scroll arrow.*/ -.MLjqui-tabs-arrow-left -{ - outline: none; - position: relative; - z-index: 15; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -/*applied to the tab's right scroll arrow.*/ -.MLjqui-tabs-arrow-right -{ - outline: none; - position: relative; - z-index: 15; - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.MLjqui-tabs-arrow-background -{ - background: #eeeeee; -} -/*applied to the tab's title.*/ -.MLjqui-tabs-title -{ - outline: none; - display: block; - cursor: pointer; - white-space: nowrap; - left: 100%; - right: 0; - text-indent: 0px; - list-style: none; - border: 1px solid transparent; - margin: 0px 2px 0px 0px; - overflow: hidden; - z-index: 1; - padding-left: 13px; - padding-right: 13px; - padding-bottom: 5px; - padding-top: 5px; - background: transparent; - height: auto; - position: relative; -} -.MLjqui-tabs-title-bottom -{ -} -.MLjqui-tabs-title a:link -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:hover -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:active -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:visited -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'top' .*/ -.MLjqui-tabs-title-selected-top -{ - z-index: 99; - outline: none; - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid #fff; - background-color: #fff; - padding-bottom: 7px; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-selected-bottom -{ - outline: none; - border-top: 1px solid #fff; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - padding-top: 7px; - padding-bottom: 5px; - margin-top: -2px; - background-color: #fff; -} -/*applied to the tab's title when the tab is hovered and the MLjquiTab's position property is set to 'top' .*/ -.MLjqui-tabs-title-hover-top -{ - outline: none; - border: 1px solid transparent; - padding-bottom: 5px; -} -/*applied to the tab's title when the tab is hovered and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-hover-bottom -{ - outline: none; - border: 1px solid transparent; - padding-top: 5px; -} -/*applied to the tab's title when the tab is disabled.*/ -.MLjqui-tabs-title-disable -{ - -} -/*applied to the tab's header.*/ -.MLjqui-tabs-header -{ - padding-left: 0px; - padding-right: 0px; - padding-top: 3px; - padding-bottom: 1px; - margin: 0px; - border-top: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid #aaa; - background: #eeeeee; -} -/*applied to the tab's header when the position is bottom.*/ -.MLjqui-tabs-header-bottom -{ - padding-top: 1px; - padding-bottom: 3px; - border-top: 0px solid #a8a8a8; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid transparent; -} -/*applied to the tab's header when the tab is collapsed.*/ -.MLjqui-tabs-header-collapsed -{ - border: 1px solid #a8a8a8; -} -/*applied to the tab's header when the position is bottom and tab is collapsed.*/ -.MLjqui-tabs-header-collapsed-bottom -{ - border: 1px solid #a8a8a8; -} -.MLjqui-tabs-collapsed -{ - border: 0px solid transparent; -} -.MLjqui-tabs-collapsed-bottom -{ - border: 0px solid transparent; -} -/*applied to the tab's selection tracker container element.*/ -.MLjqui-tabs-selection-tracker-container -{ - outline: none; - position: relative; - text-indent: 0px; - margin: 0 0 0 0; - padding: 0 0 0 0; - width: 100%; - background: transparent; - height: 0px; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'top'.*/ -.MLjqui-tabs-selection-tracker-top -{ - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - padding-bottom: 2px; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'bottom'.*/ -.MLjqui-tabs-selection-tracker-bottom -{ - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; - margin-top: -1px; - padding-bottom: 2px; -} -/*applied to the tab's content element which represents a DIV element.*/ -.MLjqui-tabs-content -{ - outline: none; - border-bottom: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - text-align: left; - clear: both; -} -.MLjqui-tabs-content-element -{ - height: 100%; - overflow: auto; -} - -/*MLjquiCheckBox*/ -.MLjqui-checkbox -{ - overflow:hidden; - text-align: left; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; - text-overflow: ellipsis; -} -/*applied to the check box.*/ -.MLjqui-checkbox-default -{ - text-align: left; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when the mouse cursor is over it.*/ -.MLjqui-checkbox-hover -{ - cursor: pointer; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the widget when it is disabled.*/ -.MLjqui-checkbox-disabled -{ - cursor: default; - background: transparent; - padding: 0px; - border: none; - outline: none; - margin: 0px 0px 0px 0px; -} -/*applied to the check box when the widget is disabled.*/ -.MLjqui-checkbox-disabled-box -{ - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when it is checked. Displays a check icon.*/ -.MLjqui-checkbox-check-checked -{ - float: left; - background: transparent url(../images/check_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when the widget is disabled. Displays a disabled check icon.*/ -.MLjqui-checkbox-check-disabled -{ - float: left; - background: transparent url(../images/check_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate.*/ -.MLjqui-checkbox-check-indeterminate -{ - float: left; - background: transparent url(../images/check_indeterminate_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate and it is disabled.*/ -.MLjqui-checkbox-check-indeterminate-disabled -{ - float: left; - background: transparent url(../images/check_indeterminate_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its in rtl mode.*/ -.MLjqui-checkbox-rtl { - float: right; -} -/*MLjquiRadioButton*/ -.MLjqui-radiobutton -{ - overflow:hidden; - text-overflow: ellipsis; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; -} -/*applied to the radio button.*/ -.MLjqui-radiobutton-default -{ - cursor: pointer; - float: left; - background: transparent url(../images/roundbg_classic_normal.png) left center scroll repeat-x; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when the mouse is over it.*/ -.MLjqui-radiobutton-hover -{ - cursor: pointer; - float: left; - background: transparent; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when it is disabled.*/ -.MLjqui-radiobutton-disabled -{ - cursor: default; -} -/*applied to the radio button's radio icon when it is disabled.*/ -.MLjqui-radiobutton-disabled-box -{ -} -/*applied to the radio button when it is checked.*/ -.MLjqui-radiobutton-check-checked -{ - float: left; - background: transparent url(../images/roundbg_check_black.png) left top no-repeat; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 7px; - height: 7px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is checked and disabled.*/ -.MLjqui-radiobutton-check-disabled -{ -} -/*applied to the radio button when it is in indeterminate state.*/ -.MLjqui-radiobutton-check-indeterminate -{ - float: left; - background: transparent url(../images/roundbg_check_indeterminate.png) left top no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 6px; - height: 6px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is in indeterminate state and disabled.*/ -.MLjqui-radiobutton-check-indeterminate-disabled -{ -} -/*applied to the radio button when its in rtl mode.*/ -.MLjqui-radiobutton-rtl { - float: right; -} - -/*MLjquiRating*/ -.MLjqui-rating -{ - margin: 0px; - padding: 0px; - outline: none; - overflow: hidden; -} -.MLjqui-rating-image -{ - border-width: 0px; -} -.MLjqui-rating-image-default -{ - margin: 0px; - padding: 0px; - outline: none; - background-color: transparent; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star.png); - overflow: hidden; -} -/*applied to the rating when it is hovered.*/ -.MLjqui-rating-image-hover -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star_hover.png); - overflow: hidden; -} -/*applied to the rating when it is disabled.*/ -.MLjqui-rating-image-backward -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star_disabled.png); - overflow: hidden; -} -/*MLjquiCalendar Style*/ -.MLjqui-calendar -{ - border: 1px solid transparent; - -webkit-appearance: none; - overflow: hidden; - outline: none; - padding: 0px; - margin: 0 0 0 0; - cursor: default; - border-collapse: separate; -} -.MLjqui-calendar td { - padding-top: 0px; - padding-bottom: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -.MLjqui-calendar table { - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -/*applied to the calendar's row header. This header displays the week numbers.*/ -.MLjqui-calendar-row-header -{ - outline: none; - border: 0px solid #f2f2f2; - padding: 0; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's column. This header displays the day names.*/ -.MLjqui-calendar-column-header -{ - outline: none; - text-align: right; - padding: 3px; - border-top: none; - border-bottom: 1px solid transparent; - border-left: none; - border-right: none; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's top-left header. This header is displayed before the day names and above the week numbers.*/ -.MLjqui-calendar-top-left-header -{ - outline: none; - border: 0px solid #f2f2f2; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's navigation buttons.*/ -.MLjqui-calendar-title-navigation -{ - cursor: pointer; - background-color: transparent; - margin: 0; - padding: 0; - border: none; - width: 25px; - height: 25px; -} -/*applied to the month table*/ -.MLjqui-calendar-month -{ - margin: 0; padding: 0; - border: none; - width: 100%; -} -/*applied to the calendar's title content.*/ -.MLjqui-calendar-title-content -{ - cursor: pointer; - text-align: center; -} -/*applied to the calendar's navigation title.*/ -.MLjqui-calendar-title-header -{ - border-left: none; - border-top: none; - border-right: none; - border-bottom-width: 1px; - border-bottom-style: solid; - margin: 0 0 0 0; -} -.MLjqui-calendar-title-header td { - padding-left: 0px; - padding-right: 0px; - border: none; -} -/*applied to the calendar's navigation title when the calendar is disabled.*/ -.MLjqui-calendar-title-header-disabled -{ - border-bottom-width: 1px; - border-bottom-style:solid; - margin: 0 0 0 0; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - -} -/*applied to a calendar cell.*/ -.MLjqui-calendar-cell -{ - border: 1px solid transparent; - margin: 0px; - outline: none; - text-align: center; - padding: 1px; - cursor: pointer; - background-color: transparent; -} -.MLjqui-calendar-cell td -{ - padding: 0; - margin: 0; -} -/*applied to a calendar cell in decade and year views.*/ -.MLjqui-calendar-cell-decade, .MLjqui-calendar-cell-year { - text-align: center; - } - -.MLjqui-calendar .MLjqui-fill-state-normal -{ - background: transparent; - border: 1px solid transparent; -} - -/*applied to a calendar cell when the cell is hidden. A cell can be hidden when the showOtherMonthDays property is false and the calendar hides the cells with dates from the other months*/ -.MLjqui-calendar-cell-hidden -{ - margin: 0 0 0 0; - visibility: hidden; - cursor: default; -} -/*applied to a calendar cell when the cell's date is a weekend date.*/ -.MLjqui-calendar-cell-weekend -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a special date(holiday, vacation, birthay. See the SpecialDates demo).*/ -.MLjqui-calendar-cell-specialDate -{ - color: #FF0000 !important; - background-color: transparent; - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a restricted date.*/ -.MLjqui-calendar-cell-restrictedDate -{ - background-color: rgba(251, 132, 153, 1); - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -.MLjqui-calendar-cell-selected-invalid -{ - color: #FFF !important; - background: #FF0000 !important; - border: 1px solid #FF0000 !important; -} -/*applied to a calendar cell when the cell's date is the today date.*/ -.MLjqui-calendar-cell-today -{ - color: #898989; - background-color: #ffffdb; - border: 1px solid #fdc066; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is hovered.*/ -.MLjqui-calendar-cell-hover -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is selected.*/ -.MLjqui-calendar-cell-selected -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date represents a date from the previous or next month.*/ -.MLjqui-calendar-cell-othermonth -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the calendar is disabled.*/ -.MLjqui-calendar-cell-disabled -{ - color: #ccc; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers.*/ -.MLjqui-calendar-row-cell -{ - outline: none; - text-align: center; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers and the calendar is disabled.*/ -.MLjqui-calendar-row-cell-disabled -{ - -} -.MLjqui-calendar-footer -{ - margin: 5px; - color: inherit; - font-size: 13px; -} - -.MLjqui-calendar-title-container -{ - overflow: hidden; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names.*/ -.MLjqui-calendar-column-cell -{ - overflow: hidden; - text-align: center; - outline: none; - font-weight: normal; - padding: 1px; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names and the calendar is disabled.*/ -.MLjqui-calendar-column-cell-disabled -{ - -} -/*applied to the calendar's cell area element.*/ -.MLjqui-calendar-view -{ - -webkit-appearance: none; - outline: none; - padding: 0px; - border: 0px solid #fff; - margin: 0 0 0 0; - cursor: default; -} - -/*MLjquiExpander and MLjquiNavigationBar Style*/ -.MLjqui-expander -{ -} -/*applied to the Expander's header and content*/ -.MLjqui-expander-header, .MLjqui-expander-content -{ - border-left-width: 1px; - border-right-width: 1px; - border-left-style: solid; - border-right-style: solid; - padding-top: 5px; - padding-bottom: 5px; - outline: 0; -} -/*applid to the content of the expander header.*/ -.MLjqui-expander-header-content -{ - padding-left: 3px; -} -/*applid to the content of the expander header.*/ -.MLjqui-expander-header-content-rtl -{ - padding-right: 3px; -} - .MLjqui-expander-content{padding-top: 0px;padding-bottom:0px; overflow: auto; outline: 0;} -/*applied to the Expander's header and its content when it is on the top of the header*/ -.MLjqui-expander-header, .MLjqui-expander-content-top -{ - border-top-width: 1px; - border-top-style: solid; -} -/*applied to the Expander's header and its content when it is on the bottom of the header*/ -.MLjqui-expander-header, .MLjqui-expander-content-bottom -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -/*applied to the Expander's header*/ -.MLjqui-expander-header -{ - cursor: pointer; - overflow: hidden; -} -/*applied to the Expander's header when the expander is disabled or the toggleMode is "none"*/ -.MLjqui-expander-header-disabled -{ - cursor: default; -} -/*applied to the Expander's arrow*/ -.MLjqui-expander-arrow -{ - width: 17px; - height: 17px; - position: relative; -} -/*applied to the Expander's content if it is empty*/ -.MLjqui-expander-content-empty -{ - border-width: 0px; - padding: 0px; -} - -/*applied to MLjquiNavigationBar. The NavigationBar internally uses MLjquiExpander's classes and inherits all header and content style settings from the Expander.*/ -.MLjqui-navigationbar -{ - border: none; - margin: 0px; - -webkit-appearance: none; - outline: none; -} -/*MLjquiPanel Style*/ -.MLjqui-panel -{ - border: 1px solid transparent; - -webkit-appearance: none; - outline: none; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the Panel's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.MLjqui-panel-bottomright -{ - -} -/*applied to the DropDownButton's Popup.*/ -.MLjqui-dropdownbutton-popup { - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - } - -.MLjqui-listbox -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the ListBox's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.MLjqui-listbox-bottomright -{ - -} -/*applied to the ListBox's groups.*/ -.MLjqui-listitem-state-group -{ - white-space: nowrap; - padding: 4px 2px 4px 2px; - background: transparent; - font-weight: bold; - text-align: left; - outline: none; - overflow: hidden; - vertical-align: middle; - cursor: default; -} -/*applied to a list item in default state.*/ -.MLjqui-listitem-state-normal -{ - white-space: nowrap; - padding: 3px; - margin: 1px; - border: 1px solid transparent; - outline: none; - visibility: inherit; - display: inherit; - text-align: left; - overflow: hidden; - position: absolute; - left: 0; - top: 0; - cursor: default; -} -/*applied to a list item in hovered state.*/ -.MLjqui-listitem-state-hover -{ - white-space: nowrap; - background: transparent; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -/*applied to a list item when the item is selected.*/ -.MLjqui-listitem-state-selected -{ - white-space: nowrap; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -.MLjqui-listbox-feedback -{ - height: 1px; - border-top: 1px dashed #000; -} -.MLjqui-listitem-element -{ - -ms-touch-action: none; - border: none; - width:100%; - height: 100%; - align:left; - valign:top; - position: absolute; -} -/*MLjquiComboBox Style*/ -/*applied to the MLjquiComboBox's content which displays the text.*/ -.MLjqui-combobox-content -{ - padding: 0px; - overflow: hidden; - padding-left: 0px; - padding-top: 0px; - padding-bottom: 0px; - padding-right: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: none; - border: none; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - border-right: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-combobox-content-rtl { - border: none; - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 0px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 3px; - border-right: none; - border-left: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the ComboBox's input field.*/ -.MLjqui-combobox-input -{ - -webkit-appearance: none; - -webkit-border-radius: 0px; - padding: 0 0 0 0; - outline: none; - border: 0px solid #aaa; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-combobox-input::-ms-clear { - display: none; -} -/*applied to the ComboBox's content when the widget is disabled.*/ -.MLjqui-combobox-content-disabled -{ - color: #AAA; -} -/*applied to the ComboBox's arrow button.*/ -.MLjqui-combobox-arrow-normal, .MLjqui-action-button -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; - border: none; - cursor: pointer; -} -/*applied to the ComboBox's arrow button*/ -.MLjqui-combobox-arrow-hover, .MLjqui-combobox-arrow-selected -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox in normal state.*/ -.MLjqui-combobox-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the mouse is over the widget.*/ -.MLjqui-combobox-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the popup ListBox is shown.*/ -.MLjqui-combobox-state-selected -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the widget is focused.*/ -.MLjqui-combobox-state-focus -{ - border: 1px solid transparent; -} -.MLjqui-combobox-multi-item { - padding: 1px 3px; - margin: 2px; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - -} -.MLjqui-combobox-multi-item a:link, .MLjqui-combobox-multi-item a:visited { - color: inherit; - display: block; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to the ComboBox when the widget is disabled.*/ -.MLjqui-combobox-state-disabled -{ - white-space: nowrap; - margin: 0px; - color: #AAA; -} -/*MLjquiSelect Style*/ -.MLjqui-select { - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - -webkit-appearance: none; - outline: 0 none; -} -.MLjqui-select-content { - cursor: pointer; - text-overflow: ellipsis; -} -.MLjqui-select-container { - padding: 0; -} -.MLjqui-select-item -{ - padding: 3px; - margin: 1px; - white-space: normal !important; - cursor: default; -} -/*MLjquiDropDownList Style*/ -/*applied to the dropdownlist's content element which displays the selected item's text or html.*/ -.MLjqui-dropdownlist-content -{ - padding: 0px; - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: 0 none; - border: none; -} -.MLjqui-dropdownlist-content-rtl { - padding-left: 0px; - padding-right: 3px; -} - -/*applied to the dropdownlist's content element which displays the selected item's text or html and the widget is disabled. */ -.MLjqui-dropdownlist-content-disabled -{ -} -/*applied to the dropdownlist in default state.*/ -.MLjqui-dropdownlist-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in hovered state.*/ -.MLjqui-dropdownlist-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in selected state.*/ -.MLjqui-dropdownlist-state-selected -{ - overflow: hidden; - background-color: transparent; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in focused state.*/ -.MLjqui-dropdownlist-state-focus -{ - border: 1px solid #909090; -} -/*applied to the dropdownlist in disabled state.*/ -.MLjqui-dropdownlist-state-disabled -{ - -} -/*MLjquiScrollBar Style*/ -.MLjqui-scrollbar -{ - background: transparent; - margin: 0; - padding: 0; - border: none; -} -/*applied to the scrollbar in default state.*/ -.MLjqui-scrollbar-state-normal -{ - background: #efefef; - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in default state.*/ -.MLjqui-scrollbar-button-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in hovered state.*/ -.MLjqui-scrollbar-button-state-hover -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in pressed state.*/ -.MLjqui-scrollbar-button-state-pressed -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-normal-horizontal -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the horizontal scrollbar thumb in hovered state.*/ -.MLjqui-scrollbar-thumb-state-hover-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-pressed-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-hover -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-pressed -{ - margin: 0px; - padding: 0px; - background: #d1d1d1; - border: 1px solid #909090; -} - -/* MLjquiWindow */ -.MLjqui-window -{ - position: absolute; - overflow: hidden; - border: 1px solid transparent; - border-radius:5px; - box-shadow:0 4px 4px #777; - -moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ - -webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ - -o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ - -ms-box-shadow:0 4px 4px #777; /* IE10+ */ - /* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -/*applied to the MLjquiWindow when it’s disabled*/ -.MLjqui-window-disabled -{ -} -/*applied to the window’s header*/ -.MLjqui-window-header -{ - outline: none; - border-width: 0px; - overflow: hidden; - height:35px; - line-height:35px; - white-space: nowrap; - overflow: hidden; - background:#e4e4e4; - color:#34373b; - font-size:16px; - padding-left:10px; -} - -.MLjqui-window-header-MLkey -{ - outline: none; - border-width: 0px; - overflow: hidden; - height:25px; - line-height:25px; - white-space: nowrap; - overflow: hidden; - background:#fdfdfd; - color:#34373b; - font-size:16px; - padding-left:10px; -} -/*applied to the window’s header when the window is disabled*/ -.MLjqui-window-header-disabled -{ - -} -/*applied to the window’s content*/ -.MLjqui-window-content -{ - outline: none; - overflow: hidden; - text-align: left; - background-color: transparent; - margin-top:0; - padding: 0; - -webkit-background-clip: padding-box; background-clip: padding-box; -} -/*applied to the window’s content when the window is disabled*/ -.MLjqui-window-content-disabled -{ - outline: none; - overflow: auto; - text-align: left; - padding: 5px; -} -/*applied to the window’s close button*/ -.MLjqui-window-close-button -{ - background:#b2b2b2; - cursor: pointer; - background-image: url(../images/close.png); - background-repeat: no-repeat; -} -.MLjqui-window-close-button-MLkey -{ - width:18px; - height:18px; - background:none; - cursor: pointer; - background-image: url(../images/key/close_nor.gif) no-repeat; - background-repeat: no-repeat; -} -/*applied to the window's collapse button*/ -.MLjqui-window-collapse-button -{ - background-image: url(../images/icon-up.png); - cursor: pointer; - margin-top: 1px; -} -/*applied to the window's collapse button when the window is collapsed*/ -.MLjqui-window-collapse-button-collapsed -{ - margin-top: 0px; - cursor: pointer; - background-image: url(../images/icon-down.png); -} -/*setting styles of the modal window’s background*/ -.MLjqui-window-modal -{ - background-color: Black; -} -.MLjqui-window-close-button-hover -{ - background-color:#a0a0a0; -} -.MLjqui-window-close-button-hover-MLkey -{ - /* background-color:#fdfdfd; */ - background:#fdfdfd url(../images/key/close_ovr.gif) no-repeat; - background-image:url(../images/key/close_ovr.gif) no-repeat; -} -.MLjqui-docking -{ - overflow: hidden; -} -.MLjqui-docking-panel -{ - margin: 0px; - padding: 0px; - min-height: 100px; -} -.MLjqui-docking-drop-indicator -{ - border-style: dashed; - border-width: 1px; - margin: 0px; -} -.MLjqui-docking-window -{ - margin: 0px; -} - -/* jxSlider */ -/* applied to MLjquiSlider widget */ -.MLjqui-slider -{ - outline: none; - clear: both; - position: relative; - overflow:hidden; -} -/*applied to the ticks which can be in the top/bottom/both sides of the MLjquiSlider*/ -.MLjqui-slider-tick -{ - border-left: 1px solid transparent; - z-index: 9; -} -/*applied to the ticks when the slider is in horizontal mode*/ -.MLjqui-slider-tick-horizontal -{ - width: 1px; - border-left: none; - margin-top: 1px; -} -/*applied to the ticks when the slider is in vertical mode*/ -.MLjqui-slider-tick-vertical -{ - height: 1px; - border-top: none; -} -/*applied to the ticks container*/ -.MLjqui-slider-tickscontainer -{ - z-index: 10; - position: relative; - margin-top: 0px; - margin-bottom: 0px; - z-index: 9; -} -/*applied to the MLjquiSlider thumb used for changing/indicating current value*/ -.MLjqui-slider-slider -{ - cursor: pointer; - width: 16px; - height: 16px; - z-index: 15; - position: absolute; - left: 0px; - top: 0px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.MLjqui-slider-button -{ - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - box-sizing: content-box !important; -} -/*applied to the slider's thumb when the slider is in horizontal mode*/ -.MLjqui-slider-slider-horizontal -{ - margin-top: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; -} -/*applied to the slider's thumb when the slider is in vertical mode*/ -.MLjqui-slider-slider-vertical -{ - margin-left: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; - } -/*applied to the track where is located the thumb*/ -.MLjqui-slider-track -{ - height: 8px; - float:left; - position: relative; - z-index: 20; -} -/*used in horizontal slider*/ -.MLjqui-slider-track-horizontal -{ - height: 8px; - margin-top: 2px; -} -/*used in vertical slider*/ -.MLjqui-slider-track-vertical -{ - width: 8px; -} -/*applied to the div which is between the thumbs in a range slider or from beginning of the track to the current thumb position in the default slider*/ -.MLjqui-slider-rangebar -{ - -} - -/* MLjquiSplitter */ -.MLjqui-splitter -{ - overflow: hidden; - border: 1px solid transparent; - position: relative; -} -/* Split bar's class when the MLjquiSplitter is with horizontal orientation */ -.MLjqui-splitter-splitbar-vertical -{ - border: 1px solid transparent; - border-top-width: 0px; - border-bottom-width: 0px; - cursor: e-resize; - cursor: col-resize; - position: absolute; -} -/* Split bar's mouse over state */ -.MLjqui-splitter-splitbar-hover -{ - background-color: transparent; -} -/* Split bar's class when the MLjquiSplitter is with horizontal orientation. */ -.MLjqui-splitter-splitbar-horizontal -{ - position: absolute; - border: 1px solid transparent; - border-left-width: 0px; - border-right-width: 0px; - cursor: n-resize; - cursor: row-resize; -} -/* This class is applied to the splitter when it's dragged to it's max left/right boundary */ -.MLjqui-splitter-splitbar-invalid -{ - background: #FF0000 !important; -} -/* This class is added to split bar's collapse button when the splitter is with vectical orientation. */ -.MLjqui-splitter-collapse-button-horizontal -{ - cursor: pointer; - width: 45px; - height: 5px; -} -/* This class is added to split bar's collapse button when the splitter is with horizontal orientation. */ -.MLjqui-splitter-collapse-button-vertical -{ - cursor: pointer; - width: 5px; - height: 45px; -} -/* This class is added when the user disable the splitter. */ -.MLjqui-splitter-splitbar-collapsed -{ - cursor: default; -} -/* Applied to the MLjquiSplitter panels. */ -.MLjqui-splitter-panel -{ - border: none; - outline: none; - position: absolute; - overflow: hidden; -} -/* This class is added to a nested splitter.*/ -.MLjqui-splitter-nested, .MLjqui-splitter-panel-nested -{ - border: none; - overflow: hidden; -} -.MLjqui-draggable -{ - -} -.MLjqui-draggable-dragging -{ - border: 0px solid black; -} -.MLjqui-draggable-disabled -{ - cursor: default; -} -.MLjqui-validator-hint -{ - height: 18px; - width: auto; - display: inline-block; - cursor: pointer; - padding-left: 5px; - padding-right: 5px; - font-family: Verdana; - font-size: 13px; - border: 1px solid #6E0000; - background-color: #942724; - color: #fff; - z-index: 99999; - white-space: nowrap; -} -.MLjqui-validator-hint-arrow -{ - z-index: 99999; - height: 9px; - width: 9px; - padding: 0px; - margin: 0px; - background-color: transparent; - background-image: url(../images/multi-arrow.gif); -} -.MLjqui-validator-error-label { - color: #dd4b39; - vertical-align:top; - text-align: left; - display: block; - cursor: default; - line-height: 17px; - } -.MLjqui-validator-error-element { - border-color: #dd4b39 !important; -} - -.MLjqui-switchbutton -{ - outline: none; - overflow: hidden; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border: 1px solid #ccc; -} -.MLjqui-switchbutton-thumb -{ - display: inline-block; - cursor: pointer; - border: 1px solid #ccc; -} -.MLjqui-switchbutton-label -{ - font-size: 15px; - font-family: Sans-Serif; - text-align: center; - text-transform: uppercase; - font-weight: bold; -} -.MLjqui-switchbutton-wrapper -{ -} -.MLjqui-switchbutton-label-on -{ - -} -.MLjqui-switchbutton-label-off -{ - -} - -/*left, right, up and down arrow icons.*/ -.MLjqui-left-arrow -{ - background: transparent; - background-image: url('../images/icon-left.png'); - cursor: pointer; -} -.MLjqui-right-arrow -{ - background: transparent; - background-image: url('../images/icon-right.png'); - cursor: pointer; -} -.MLjqui-icon-delete -{ - background-image: url('../images/icon-delete.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-edit -{ - background-image: url('../images/icon-edit.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-save -{ - background-image: url('../images/icon-save.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-cancel -{ - background-image: url('../images/icon-cancel.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-up, .MLjqui-icon-arrow-up-hover, .MLjqui-icon-arrow-up-selected -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down, .MLjqui-icon-arrow-down-hover, .MLjqui-icon-arrow-down-selected -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} - -.MLjqui-icon-arrow-left, .MLjqui-icon-arrow-left-hover, .MLjqui-icon-arrow-left-selected -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right, .MLjqui-icon-arrow-right-hover, .MLjqui-icon-arrow-right-selected -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-first, .MLjqui-icon-arrow-first-hover, .MLjqui-icon-arrow-first-selected -{ - background-image: url('../images/icon-first.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-last, .MLjqui-icon-arrow-last-hover, .MLjqui-icon-arrow-last-selected -{ - background-image: url('../images/icon-last.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-up-hover -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down-hover -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-left-hover -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right-hover -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} - -.MLjqui-icon-arrow-up-selected -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down-selected -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-left-selected -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right-selected -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close -{ - cursor: pointer; - background-image: url(../images/btn_hd_close.png); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close-MLkey -{ - cursor: pointer; - background-image: url(../images/key/close_nor.gif); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close-white { - background-image: url(../images/close_white.png); - } -.MLjqui-icon-close-hover -{ - cursor: pointer; - background-image: url(../images/close.png); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-search -{ - cursor: pointer; - background-image: url(../images/search.png); - background-repeat: no-repeat; - background-position: center; - margin-top: 1px; - background-size: 13px; - width: 13px; - height: 13px; -} -.MLjqui-icon-plus -{ - background-image: url(../images/plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.MLjqui-icon-plus-alt, .MLjqui-icon-plus-alt-white -{ - background-image: url(../images/icon-plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.MLjqui-icon-plus-alt-white { - background-image: url(../images/icon-plus-white.png); -} -/* MLjquiScrollView */ -.MLjqui-scrollview-button -{ - width: 10px; - height: 10px; - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - display: inline-block; - margin: 2px; - cursor: pointer; - background-color: #aaaeaf; -} -.MLjqui-scrollview -{ - background-color: #000; - -ms-touch-action: auto !important; -} -.MLjqui-icon-calendar, .MLjqui-icon-calendar-hover, .MLjqui-icon-calendar-pressed -{ - background-image: url('../images/icon-calendar.png'); - background-repeat: no-repeat; - background-position: left top; - position: relative; - width: 15px !important; - height: 15px !important; - margin-top: -7.5px !important; -} -/*applied to Inputs*/ -.MLjqui-input{overflow: hidden; background-color: inherit; border-color: #c7c7c7;} -.MLjqui-input-invalid { - color: red !important; -} -.MLjqui-input-group {overflow: hidden;} -.MLjqui-input-group-addon {border: 1px solid transparent; position: relative; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important; padding: 2px 8px !important; float: left; white-space: nowrap; vertical-align: middle; } -.MLjqui-input-group-addon:first-child { - border-right-width: 0px; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; -} -.MLjqui-input-group-addon:last-child { - border-left-width: 0px; - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; -} -.MLjqui-input-group-addon:not(:last-child):not(:first-child) { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; - border-left-width: 0px; -} -.MLjqui-input-group .MLjqui-input { - padding: 2px 1px !important; - border-left-width: 1px !important; - border-right-width: 1px !important; -} -.MLjqui-editor { - border-style: solid; - border-width: 1px; - border-color: transparent; - overflow: hidden; - box-sizing: border-box !important; -} -.MLjqui-editor-window { - overflow: hidden; -} -.MLjqui-editor-inline { - padding: 0px; - border-width: 1px; - border-style: solid; - border-color: transparent; -} -.MLjqui-editor-inline p { - margin: 0px;padding:0 .2em; -} -.MLjqui-editor-inline-focus { - border-width: 1px; - border-style: solid; - overflow: auto; -} -.MLjqui-editor iframe { - border: 0; - margin: 0; - padding: 0; - background: #fff; - display: inline; - vertical-align: top; - width: 100%; - height: 100%; -} -.MLjqui-editor-color-bar { - height: 3px; -} -.MLjqui-editor-color-picker table { - margin: 0; - padding: 0 4px 4px; - empty-cells: show; - border-collapse: separate; -} -.MLjqui-editor-color-picker td { - border-collapse: separate; - border: 1px solid transparent; - cursor: pointer; - margin: 0; - position: relative; -} -.MLjqui-editor-color-picker td:hover { - border: 1px solid #000; -} -.MLjqui-editor-color-picker-selected-cell { - outline: 1px solid #000; -} -.MLjqui-editor-color-picker td div{ - width: 16px; - height: 16px; -} -.MLjqui-editor-content { - width: 100%; - border-style: solid; - border-width: 1px; - outline: 0; - left: 0px; - position: relative; - box-sizing: border-box !important; -} -.MLjqui-editor-container { - position: relative; - padding: 4px; - padding-top: 0px; - width: 100%; - height: 100%; - box-sizing: border-box !important; -} -.MLjqui-editor-toolbar-container { - top: 0px; left: 0px; - box-sizing: border-box !important; -} -.MLjqui-editor-toolbar-inline { - padding: 0px 4px; - border-width: 1px; - border-style: solid; -} -.MLjqui-editor-toolbar { - margin: 0; - padding: 0px; - padding-bottom: 4px; -} -.MLjqui-editor-toolbar-icon { - height: 21px; - width: 21px; - vertical-align: middle; - opacity: .667; - margin: 2px 0; - background: url('../images/html_editor.png') no-repeat; -} -.MLjqui-editor-toolbar-icon-bold { - background-position: 0px 0px !important; -} -.MLjqui-editor-toolbar-icon-italic { - background-position: -21px 0px !important; -} -.MLjqui-editor-toolbar-icon-underline { - background-position: -42px 0px !important; -} -.MLjqui-editor-toolbar-icon-fontname { - background-position: -63px 0px !important; -} -.MLjqui-editor-toolbar-icon-fontsize { - background-position: -84px 0px !important; -} -.MLjqui-editor-toolbar-icon-createlink { - background-position: -147px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertorderedlist { - background-position: -168px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertunorderedlist { - background-position: -189px 0px !important; -} -.MLjqui-editor-toolbar-icon-outdent { - background-position: -210px 0px !important; -} -.MLjqui-editor-toolbar-icon-indent { - background-position: -231px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertimage { - background-position: -337px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifyleft { - background-position: -252px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifycenter { - background-position: -273px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifyright { - background-position: -294px 0px !important; -} -.MLjqui-editor-toolbar-icon-removeformat { - background-position: -316px 0px !important; -} -.MLjqui-editor-toolbar-icon-viewsource { - background-position: -359px 0px !important; -} -.MLjqui-editor-toolbar-icon-forecolor { - background-position: -105px 0px !important; - height: 15px; -} -.MLjqui-editor-toolbar-icon-backcolor { - background-position: -380px 0px !important; - height: 15px; -} - -.MLjqui-editor-toolbar-icon:hover { - opacity: 1; -} -.MLjqui-fill-state-disabled .MLjqui-editor-toolbar-icon { - opacity: .667; -} -.MLjqui-editor-toolbar-item { - display: inline-block; - margin-left: 2px; - vertical-align: middle; -} -.MLjqui-editor-toolbar-separator { - border-left: 1px solid #ccc; - margin: 0 2px; - outline: none; - overflow: hidden; - padding: 0; - text-decoration: none; - vertical-align: middle; - width: 0; - display: inline-block; -} -.MLjqui-editor-toolbar-group { - display: inline-block; - margin-right: 4px; - margin-top: 4px; - white-space: nowrap; -} -.MLjqui-editor-toolbar-button { - text-decoration: none; - vertical-align: middle; - cursor: default; - display: inline-block; - padding: 0px !important; - margin-right: 2px; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button { - margin-right: -1px; - box-shadow: none; - position: relative; - margin-left: 0px !important; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button:hover, .MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button:active { - z-index: 55; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button.MLjqui-fill-state-normal { - background: transparent !important; -} - -.MLjqui-date-time-input-popup table td a -{ - border: 1px transparent solid; - width: 100%; - display: inline-block; - margin: 0; - padding: 0; - outline: 0; - color: #333; -} -.MLjqui-date-time-input-popup table td input { - width: 25px; - margin: 0; - text-align: center; - padding: 4px 6px; - height:20px; - line-height: 20px; - vertical-align: middle; -} - -.MLjqui-scheduler .MLjqui-cell { - padding: 0px !important; - cursor: default; -} -.MLjqui-scheduler .MLjqui-widget-header.MLjqui-grid-header -{ - border-bottom-color: transparent; - border-bottom-width: 0px; -} -.MLjqui-scheduler .MLjqui-grid-column-header, .MLjqui-scheduler.MLjqui-widget .MLjqui-grid-column-header -{ - border-bottom: 1px solid #c5c5c5; -} - -.MLjqui-scheduler-all-day-cell -{ - text-align: left; -} -.MLjqui-scheduler-all-day-cell span -{ - margin-left:3px; -} - -.MLjqui-scheduler-month-cell { - background: #f2f2f2; - color: #000; - opacity: 0.8; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: inherit; - vertical-align: top; - text-align: left; -} -.MLjqui-scheduler-month-cell-touch { - background: transparent; - border:none; - vertical-align:middle; - text-align:center; -} -.MLjqui-scheduler-month-cell-popup { - border: 1px solid #333; - background: #f2f2f2; - box-shadow: 0 5px 0px rgba(0,0,0,.15)!important; -} -.MLjqui-widget .MLjqui-scheduler-middle-cell, .MLjqui-scheduler-middle-cell { - border-bottom-color: #ddd !important; -} -.MLjqui-scheduler-cell-selected.MLjqui-scheduler-middle-cell -{ - border-bottom-style:dotted; -} -.MLjqui-scheduler-work-time-cell -{ - background: #fff; -} -.MLjqui-scheduler-not-work-time-cell -{ - background: #eee; -} -.MLjqui-scheduler-month-outer-cell -{ - color: #555; -} -.MLjqui-scheduler-month-weekend-cell -{ - background: #eee; -} -.MLjqui-scheduler-disabled-cell { - background: #e9edf1; -} -.MLjqui-scheduler-toolbar -{ - font-size: 14px; -} -.MLjqui-scheduler-time-column, .MLjqui-scheduler-toolbar { - background-image: none !important; - background: #fff !important; - color: #333 !important; -} -.MLjqui-scheduler-week-number-column { - background: #e8e8e8 !important; - color: #333; -} -.MLjqui-scheduler-time-column-header-cell -{ - border-left-color:transparent !important; -} -.MLjqui-scheduler-time-column-header-cell-rtl -{ - border-right-color:transparent !important; -} -.MLjqui-scheduler-appointment { - overflow: visible; - border: 1px solid #555; - white-space:pre-line; - cursor:pointer; - vertical-align: middle; - text-overflow:ellipsis; - user-select: none; -} -.MLjqui-scheduler-appointment-rtl { - direction: rtl; - text-align: right; -} - -.MLjqui-scheduler-appointment-content { - overflow: hidden; - text-overflow:ellipsis; - height:100%; - padding-left:5px; - padding-right:5px; -} -.MLjqui-scheduler-appointment-inner-content { - overflow:hidden; - width:100%; - text-overflow: ellipsis; - padding-bottom: 3px; -} -.MLjqui-scheduler-appointment-duration-status { - height: 0px; - border-bottom-width: 2px; - border-bottom-style: dotted; - border-color: #f05c2d; - background: #f05c2d; - position:absolute; - bottom: -1px; left: 0px; - border-radius: 5px; -} -.MLjqui-scheduler-appointment-status { - width: 4px; - height: 100%; - border-right-width: 1px; - border-right-style:solid; - position:absolute; - top: 0px; left: 0px; -} -.MLjqui-scheduler-appointment-status-rtl { - width: 4px; - height: 100%; - border-right-width: 0px; - border-right-style:none; - border-left-width: 1px; - border-left-style:solid; - position:absolute; - top: 0px; right:0px; -} -.MLjqui-scheduler-appointment-status-stripes { - background-image: url('../images/stripes.png'); - background-repeat:repeat-y; - background-position: left top; -} -.MLjqui-scheduler-appointment-resize-indicator { - width: 4px; - height: 4px; - position: absolute; - border: 1px solid black; - background: white; - display: none; -} -.MLjqui-scheduler-appointment-top-resize-indicator { - top: -3px; - left: 50%; - margin-left:-2px; - cursor: row-resize; -} -.MLjqui-scheduler-appointment-bottom-resize-indicator { - cursor: row-resize; - bottom: -3px; - left: 50%; - margin-left:-2px; -} -.MLjqui-scheduler-appointment-left-resize-indicator { - cursor: col-resize; - top: 50%; - left: -3px; - margin-top: -2px; -} -.MLjqui-scheduler-appointment-right-resize-indicator { - cursor: col-resize; - top: 50%; - margin-top: -2px; - right: -3px; -} - -.MLjqui-scheduler-appointment span { - vertical-align: middle; - text-overflow:ellipsis; - position: relative; - top: -1px; -} -.MLjqui-scheduler-feedback-appointment { - opacity: 0.7; - position:absolute; - z-index:99999; -} -.MLjqui-scheduler-selected-appointment { - border: 1px solid #316293 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - white-space:pre-line; -} -.MLjqui-scheduler-appointment:hover { - border: 1px solid #3f7ebe !important; - } -.MLjqui-scheduler-feedback-drag-appointment { - background: #aaa !important; -} -.MLjqui-icon-recurrence, .MLjqui-icon-recurrence-exception,.MLjqui-icon-recurrence-white, .MLjqui-icon-recurrence-exception-white, .MLjqui-icon-time -{ - background-image: url('../images/icon-recurrence.png'); - background-repeat: no-repeat; - background-position: center; - width: 16px; - height: 16px; - float: left; - margin:3px; - margin-left:5px; -} -.MLjqui-icon-time -{ - background-image: url('../images/icon-time.png'); - margin:0px; - position: relative; - left: 1px; - margin-top:-8px; -} -.MLjqui-icon-time-white -{ - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-icon-recurrence-exception -{ - background-image: url('../images/icon-recurrence-exception.png'); -} -.MLjqui-icon-recurrence-exception-white { - background-image: url('../images/icon-recurrence-exception-white.png'); -} -.MLjqui-icon-recurrence-white { - background-image: url('../images/icon-recurrence-white.png'); - } -.MLjqui-scheduler-cell-hover { - border-color: #3f7ebe !important; - background: #a2c0df !important; -} -.MLjqui-scheduler-cell-selected { - border-color: #316293 !important; - background: #2f7eb6 !important; -} -.MLjqui-scheduler-edit-dialog-label { - clear: both; - float: left; - margin-left: 2%; - padding: 4px; - text-align: right; - width: 18%; - line-height: 25px; -} -.MLjqui-scheduler-edit-dialog-field { - clear: right; - float: right; - margin-right: 2%; - padding: 4px; - width: 72%; -} -.MLjqui-scheduler-edit-dialog-label-rtl { - clear: both; - float: right; - margin-left: 0px; - margin-right: 2%; - padding: 4px; - text-align: left; - width: 18%; - line-height: 25px; -} -.MLjqui-scheduler-edit-dialog-field-rtl { - clear: left; - float: left; - margin-right: 0px; - margin-left: 2%; - padding: 4px; - width: 72%; -} -.MLjqui-scheduler-legend-bar -{ - overflow:hidden; - border-color:inherit; - border: none; -} -.MLjqui-scheduler-legend-bar-bottom -{ - border-top-width: 1px; - border-top-style:solid; -} -.MLjqui-scheduler-legend-bar-top -{ - border-bottom-width: 1px; - border-bottom-style:solid; -} -.MLjqui-scheduler-legend { - width:14px; - height:14px; - float: left; - margin-right: 3px; - border-style:solid; - border-width:1px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.MLjqui-scheduler-legend-label { - float: left; - margin-right: 12px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-date { - color: #fff; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-time { - color: #fff; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-appointment, .MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-appointment-rtl { - color: #fff; -} - -.MLjqui-scheduler-agenda-date { - padding-top:5px; - padding-bottom:5px; -} -.MLjqui-scheduler-agenda-time { - padding: 5px; -} -.MLjqui-scheduler-agenda-appointment, .MLjqui-scheduler-agenda-appointment-rtl { - cursor: pointer; -} -.MLjqui-scheduler-agenda-appointment-resource, .MLjqui-scheduler-agenda-appointment-resource-rtl { - margin: 5px; - cursor: pointer; -} -.MLjqui-scheduler-agenda-appointment-resource-rtl, .MLjqui-scheduler-agenda-appointment-rtl { - float: right; -} -.MLjqui-scheduler-agenda-day { - margin: 3px; - font-size: 33px; - font-weight: normal; -} -.MLjqui-scheduler-agenda-week { - font-style: normal; - font-size:13px; -} -.MLjqui-scheduler-agenda-date { - font-size: 10px; -} -.MLjqui-scheduler-cell-focus -{ - border-style:dotted; - border-color: #59a0d5 !important; - background: #59a0d5 !important; -} -/*applied to all widgets*/ -.MLjqui-widget{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; zoom: 1 !important; color: #000000; -moz-background-clip: padding; background-clip: padding-box; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-appearance: none; -webkit-background-clip: padding-box; direction: ltr !important; -webkit-tap-highlight-color: rgba(0,0,0,0); font-size: 11px;} - -.MLjqui-item{-ms-touch-action: none; -moz-box-sizing: content-box; box-sizing: content-box; color: inherit; -webkit-text-size-adjust: none;} - -/*applied to containers to set a background and border color. Tabs, NavigationBar, Calendar content.*/ -.MLjqui-widget-content { -moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; -moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); font-size: 11px; color:#34373b; border-color: #a8a8a8; background: #fff;} -/*applied to header areas. Tabs, Menu, Window, Calendar.*/ -.MLjqui-widget-header {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;-moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); border-color: #a8a8a8; font-weight:bold;} - -.MLjqui-tb-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 11px; border-color:#aaa; background: #efefef; } -.MLjqui-tb-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:; background: #e5f1ff;} -.MLjqui-tb-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:; background: #1672e4; color:#ffffff;} -.MLjqui-tb-fill-state-focus {border-color: #555; } -.MLjqui-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 13px; border-color:#aaa; background: #efefef; } -.MLjqui-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #e8e8e8;} -.MLjqui-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #d1d1d1;} -.MLjqui-fill-state-focus {border-color: #555; } -.MLjqui-fill-state-disabled {cursor: default; color: #000; opacity: .55; filter:Alpha(Opacity=45);} -.MLjqui-fill-state-normal td, .MLjqui-fill-state-hover td, .MLjqui-fill-state-pressed td, .MLjqui-fill-state-disabled td, .MLjqui-fill-state-focus td, .MLjqui-widget td, .MLjqui-widget-content td, .MLjqui-widget-header td { - box-sizing: border-box; -moz-box-sizing: border-box; -} -.MLjqui-widget .MLjqui-grid-cell, .MLjqui-widget .MLjqui-grid-column-header, .MLjqui-widget .MLjqui-grid-group-cell {border-color:;} -.MLjqui-widget .MLjqui-grid-column-menubutton, .MLjqui-widget .MLjqui-grid-column-sortascbutton, .MLjqui-widget .MLjqui-grid-column-sortdescbutton, .MLjqui-widget .MLjqui-grid-column-filterbutton -{ - background-color: transparent; - border-color: #aaa; -} -.MLjqui-grid-column-header a:link, .MLjqui-grid-column-header a:visited -{ - *color: expression(this.parentNode.currentStyle['color']); -} -.MLjqui-grid-bottomright, .MLjqui-panel-bottomright, .MLjqui-listbox-bottomright -{ - background-color: #e5e5e5; -} - -.MLjqui-tabs-title-selected-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-selected-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'top'.*/ -.MLjqui-tabs-selection-tracker-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'bottom'.*/ -.MLjqui-tabs-selection-tracker-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; -} -/*MLjquiMaskedInput and MLjquiNumberInput Styles*/ -.MLjqui-input -{ - -webkit-appearance: none; - padding: 0 0 0 0; - outline: none; - border-width: 1px; - border-style: solid; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -input[type=text].MLjqui-input, input[type=password].MLjqui-input { - min-height: 16px; - min-width: 16px; - margin: 0px; - border-width: 1px; - border-style: solid; - font-size: 13px; - padding: 0px; - padding-left:3px; - padding-right: 3px; -} -.MLjqui-input::-ms-reveal { - display: none; -} -.MLjqui-input::-ms-clear { - display: none; -} -.MLjqui-input-content::-ms-clear { - display: none; -} -.MLjqui-input::-ms-value { - margin: 0px; - padding: 0px; - min-height: 13px; - line-height: 13px; -} - -/*applied to the input when the validation fails.*/ -.MLjqui-input-invalid -{ - border-color: #dd4b39 !important; -} - -/*applied to the input's content.*/ -.MLjqui-input-content -{ - -webkit-appearance: none; - padding: 1px; - resize: none; - outline: none; - outline-width: 0px; - -webkit-user-modify:inherit; -moz-user-modify:inherit; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the input when it is disabled.*/ -.MLjqui-input-disabled -{ - -webkit-appearance: none; - resize: none; - outline: none; - outline-width: 0px; -} -/*applied to the list menu.*/ -.MLjqui-listmenu-widget { - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget .MLjqui-widget-content{ - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget .MLjqui-widget-header{ - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget li{ - -ms-touch-action: auto; -} -.MLjqui-menu-popup { - -} -.MLjqui-menu-vertical -{ - background-color: #efefef; -} -.MLjqui-color-picker -{ - -} -.MLjqui-color-picker-panel -{ -} -.MLjqui-color-picker-map -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/map-saturation.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.MLjqui-color-picker-map-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/map-hue.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.MLjqui-color-picker-map-overlay -{ - background-color: transparent; - background-image: url('../images/colorpicker/map-saturation-overlay.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-bar -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/bar-saturation.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-bar-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/bar-hue.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-preview -{ - border: 1px solid #A0A0A0; -} -.MLjqui-color-picker-pointer -{ - background-image: url('../images/crosshair.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.MLjqui-color-picker-pointer-alt -{ - background-image: url('../images/crosshair-white.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.MLjqui-color-picker-bar-pointer -{ - background-image: url('../images/pointer.png'); - background-repeat: no-repeat; - height: 15px; - margin-left: 6px; - background-position: right top; -} -.MLjqui-icon -{ - width: 16px; - height: 16px; - margin: 0 auto; - position: relative; - top: 50%; - margin-top: -8px; -} -.MLjqui-input-icon -{ - width: 13px; - height: 13px; - margin: 0 auto; -} -.MLjqui-scrollbar-thumb-state-normal-touch -{ - border-color:#c3c3c3; background: #c3c3c3; -} -.MLjqui-touch, .MLjqui-touch .MLjqui-fill-state-normal, .MLjqui-touch .MLjqui-widget-content, .MLjqui-touch .MLjqui-widget-header, .MLjqui-touch a:link{} -.MLjqui-scrollbar .MLjqui-icon-arrow-up{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-down{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-left{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-right{width: 100%; height: 100%;} -/*MLjqui-listmenu*/ -.MLjqui-listmenu-widget -{ - border-width: 1px; - border-style: solid; -} -ol.MLjqui-listmenu, ul.MLjqui-listmenu -{ - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - line-height: 1; - counter-reset: section; -} -.MLjqui-listmenu li -{ - margin-left: 0px; - list-style: none; - line-height: 1; -} -.MLjqui-listmenu -{ - width: 100%; -} -.MLjqui-listmenu-header -{ - padding: 15px; -} -.MLjqui-listmenu-item -{ - cursor: pointer; - padding: 15px; - float: none; - overflow: hidden; - text-align: left; - position: relative; -} - -.MLjqui-listmenu-separator -{ - padding: 10px; - counter-reset: section; -} -.MLjqui-listmenu-header-label -{ - margin-left: 30px; -} -.MLjqui-listmenu-arrow-right -{ - width: 16px; - height: 16px; - position: absolute; - top: 50%; - margin-top: -7px; - right: 7px; -} -.MLjqui-listmenu-arrow-rtl { - right: 0px; - left: 7px; -} -.MLjqui-listmenu-arrow-right-pressed -{ - width: 16px; - height: 16px; -} -.MLjqui-listmenu-header .MLjqui-button -{ - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -o-border-radius: 10px; - border-radius: 10px; - padding: 6px 10px; -} -.MLjqui-listmenu-filter-input -{ - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - border: 1px solid; - outline: none; - width: 97%; - padding: 3px; - padding-left: 10px; - padding-right: 10px; - border-color: #c7c7c7; - background-color: #fff; - font-size: 20px; - min-height: 25px !important; - height: 25px; -} -.MLjqui-listmenu-filter -{ - text-align: center; - padding: 4px; -} -ol li .MLjqui-listmenu-item-label:before -{ - content: counter(section) ". "; - counter-increment: section; -} -.MLjqui-listmenu div -{ - clear: both; -} -.MLjqui-listmenu-auto-separator -{ -} -.MLjqui-listmenu-item-readonly -{ - cursor: default; -} -.MLjqui-tooltip -{ - position: absolute; - width: auto; - height: auto; -} -.MLjqui-tooltip-main -{ - position: relative; - width: 100%; - height: 100%; - text-align: center; - filter: inherit; - border-style: solid; - border-width: 1px; -} -.MLjqui-tooltip-text -{ - padding: 5px 8px; - overflow: hidden; - filter: inherit; -} -.MLjqui-tooltip, .MLjqui-tooltip-text, .MLjqui-tooltip-main { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-tooltip-arrow -{ - position: absolute; - width: 0px; - height: 0px; - display: block; - border-style: solid; - margin: -6px 0 0 -7px; - background: transparent !important; - filter: inherit; -} -.MLjqui-tooltip-arrow-t-b -{ - border-left-color: transparent !important; - border-right-color: transparent !important; -} -.MLjqui-tooltip-arrow-l-r -{ - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} -/*Sets the text-alignment to right.*/ -.MLjqui-rtl{text-align: right !important;} -.MLjqui-shadow{ - -webkit-box-shadow: 0 2px 3px rgba(0,0,0,.15)!important; - -moz-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - -o-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; -} -.MLjqui-noshadow { - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.MLjqui-passwordinput-password-icon, .MLjqui-passwordinput-password-icon-rtl -{ - background-image: url(../images/icon-showpassword.png) !important; - background-repeat: no-repeat !important; - width: 14px; - height: 9px; -} -.MLjqui-passwordinput-password-icon-ltr -{ - background-position: right !important; -} -.MLjqui-passwordinput-password-icon-rtl -{ - background-position: left !important; -} -.MLjqui-passwordinput-password-strength-inicator -{ - width: 20%; - height: 5px; - margin-top: 5px; -} -/*top rounded Corners*/ -.MLjqui-rc-t-expanded -{ - -moz-border-radius-topleft: 0px !important; - -webkit-border-top-left-radius: 0px !important; - border-top-left-radius: 0px !important; - -moz-border-radius-topright: 0px !important; - -webkit-border-top-right-radius: 0px !important; - border-top-right-radius: 0px !important; -} -/*bottom rounded Corners*/ -.MLjqui-rc-b-expanded -{ - -moz-border-radius-bottomleft: 0px !important; - -webkit-border-bottom-left-radius: 0px !important; - border-bottom-left-radius: 0px !important; - -moz-border-radius-bottomright: 0px !important; - -webkit-border-bottom-right-radius: 0px !important; - border-bottom-right-radius: 0px !important; -} -.MLjqui-treemap-rectangle { - font-size: 13px; - font-weight: normal; - border: 1px solid #555; - color: #222; - text-shadow: 0px 0px 0px; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-treemap-label { - text-overflow: ellipsis; - overflow: hidden; -} -.MLjqui-treemap-rectangle-parent { - color: #222; - font-size: 15px; - font-family: Verdana; - font-weight: bold; -} -.MLjqui-treemap-legend-label { - color: #fff; -} -.MLjqui-treemap-legend { - width: 350px; - background-color: rgba(0, 0, 0, 0.1); - z-index: 41; - overflow: hidden; -} -.MLjqui-treemap-legend-table { - table-layout: fixed; - width: 100%; -} -.MLjqui-treemap-legend-color { - height: 3px; -} -.MLjqui-treemap-legend-values { - height: 12px; - width: 100%; -} -.MLjqui-treemap-legend-value { - font-size: 9px; - position: absolute; - color: #fff; -} -.MLjqui-treemap-rectangle-hover { - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - z-index: 40; -} -/*MLjquiRangeSelector*/ -.MLjqui-rangeselector, .MLjqui-rangeselector-content, .MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers, -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-shutter -{ - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-sizing: content-box !important; -} -.MLjqui-rangeselector-markers { - -} -.MLjqui-rangeselector-content, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-labels, .MLjqui-rangeselector-shutter, .MLjqui-rangeselector-markers, .MLjqui-rangeselector-marker-arrow -{ - position: absolute; -} -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-shutter, .MLjqui-rangeselector-slider -{ - height: 100%; -} -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-slider -{ - width: 100%; - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} -.MLjqui-rangeselector-group-labels-rtl, .MLjqui-rangeselector-group-labels-ticks, .MLjqui-rangeselector-slider -{ - float: left; -} -.MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers, .MLjqui-rangeselector-marker-arrow -{ - border-style: solid; -} -.MLjqui-rangeselector-ticks, .MLjqui-rangeselector-group-labels-ticks -{ - width: 1px; - background: #aaa; -} -.MLjqui-rangeselector-labels, .MLjqui-rangeselector-markers -{ - white-space: nowrap; - width: auto; -} -.MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers -{ - border-width: 1px !important; -} -.MLjqui-rangeselector-ticks-container -{ - background-color: transparent; - position: relative; -} -.MLjqui-rangeselector-shutter -{ - opacity: 0.75; - background: #efefef; - border-width: 0px !important; -} -.MLjqui-rangeselector-slider -{ - background-color: transparent !important; - border-top: none !important; - background-image: none !important; - border-bottom: none !important; - border-color: #aaa; - border-right-color: transparent !important; - position: relative; - overflow: hidden; -} -.MLjqui-rangeselector-inner-slider -{ - position: absolute; - right: 0; - background: #aaa; - width: 1px; - height: 100%; -} -.MLjqui-rangeselector-ticks -{ - margin-top: 0px; -} -.MLjqui-rangeselector-labels, .MLjqui-rangeselector-group-labels -{ - margin-top: 4px; -} -.MLjqui-rangeselector-markers -{ - height: 20px; - padding: 5px; - opacity: 0.75; -} -.MLjqui-rangeselector-marker-arrow -{ - width: 0px; - height: 0px; - display: block; - margin: -6px 0 0 -7px; - background-color: transparent !important; - filter: inherit; - border-top-width: 5px; - border-bottom-width: 5px; - border-right-color: transparent !important; - border-left-color: transparent !important; - background-clip: border-box; - background-repeat: repeat; - box-shadow: none !important; - -webkit-box-shadow: none !important; - background-image: none !important; -} -.MLjqui-rangeselector-marker-arrow-top { - border-bottom-color: transparent !important; -} -.MLjqui-rangeselector-marker-arrow-bottom { - border-top-color: transparent !important; -} -.MLjqui-rangeselector-marker-left-arrow -{ - border-right-width: 0px; - border-left-width: 5px; -} -.MLjqui-rangeselector-marker-right-arrow -{ - border-right-width: 5px; - border-left-width: 0px; -} -.MLjqui-rangeselector-markers-value -{ - overflow: hidden; - white-space: nowrap; -} -.MLjqui-rangeselector-group-labels-rtl -{ - margin-right: 10px; - direction: rtl; -} -.MLjqui-rangeselector-group-labels-ticks -{ - height: 17px; -} -.MLjqui-rangeselector-group-labels-ticks-rtl -{ - margin-left: 5px; -} -.MLjqui-action-button { - border: none; - border-left: 1px solid #c7c7c7; -} -.MLjqui-action-button-rtl { - border: none; - border-right: 1px solid #c7c7c7; - cursor: pointer; -} -/*MLjquiBulletChart*/ -.MLjqui-bulletchart -{ -} -.MLjqui-bulletchart, .MLjqui-bulletchart-title-container-horizontal, .MLjqui-bulletchart-title-container-vertical, .MLjqui-bulletchart-chart-container-horizontal, .MLjqui-bulletchart-chart-container-vertical -{ - position: relative; -} -.MLjqui-bulletchart-title-inner-container, .MLjqui-bulletchart-range, .MLjqui-bulletchart-pointer, .MLjqui-bulletchart-target, .MLjqui-bulletchart-ticks, .MLjqui-bulletchart-labels -{ - position: absolute; -} -.MLjqui-bulletchart-title-container-vertical, .MLjqui-bulletchart-title, .MLjqui-bulletchart-description, .MLjqui-bulletchart-range-vertical -{ - width: 100%; -} -.MLjqui-bulletchart-title-container-horizontal, .MLjqui-bulletchart-chart-container-horizontal -{ - float: left; - overflow: hidden; -} -.MLjqui-bulletchart-title, .MLjqui-bulletchart-description -{ - text-align: center; -} -.MLjqui-bulletchart-title-inner-container -{ - margin: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.MLjqui-bulletchart-title-inner-container-ltr -{ - padding-right: 5px; -} -.MLjqui-bulletchart-title-inner-container-rtl -{ - padding-left: 5px; -} -.MLjqui-bulletchart-title-description-ltr -{ - text-align: right; -} -.MLjqui-bulletchart-title-description-rtl -{ - text-align: left; -} -.MLjqui-bulletchart-title-description-vertical -{ - text-align: center; -} -.MLjqui-bulletchart-title -{ - font-size: 110%; - font-weight: bold; -} -.MLjqui-bulletchart-description -{ - font-size: 90%; -} -.MLjqui-bulletchart-range-horizontal -{ - height: 100%; -} -.MLjqui-bulletchart-target-horizontal -{ - top: 10%; - height: 80%; -} -.MLjqui-bulletchart-target-vertical -{ - left: 10%; - width: 80%; -} -.MLjqui-bulletchart-ticks -{ - background-color: #AAAAAA; -} -.MLjqui-bulletchart-ticks-horizontal -{ - width: 1px; -} -.MLjqui-bulletchart-ticks-vertical -{ - height: 1px; -} -.MLjqui-bulletchart-zero-tick -{ -} -.MLjqui-bulletchart-labels -{ -} -/*MLjquiNotification*/ -.MLjqui-notification -{ - padding: 10px; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - pointer-events: auto; -} -.MLjqui-notification-table -{ - width: 100%; - font-size: inherit; - font-weight: inherit; - font-style: inherit; - color:inherit; -} -.MLjqui-notification-container -{ - position: fixed; - height: auto; - width: auto; - pointer-events: none; -} -.MLjqui-notification-container-full-width -{ - width: 100%; -} -.MLjqui-notification-container-full-height -{ - height: 100%; -} -#MLjquiNotificationDefaultContainer-top-right, #MLjquiNotificationDefaultContainer-bottom-left -{ - direction: rtl; -} -.MLjqui-notification-icon, .MLjqui-notification-content -{ - vertical-align: middle; -} -.MLjqui-notification-content -{ -} -.MLjqui-notification-content-rtl -{ - direction: rtl; -} -.MLjqui-link, .MLjqui-inverse, .MLjqui-primary, .MLjqui-warning, .MLjqui-danger, .MLjqui-success, .MLjqui-info { - background: none !important; - box-shadow: none !important; - text-shadow: none !important; -} - -.MLjqui-primary .MLjqui-icon-calendar, .MLjqui-primary .MLjqui-icon-calendar-hover, .MLjqui-primary .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-primary .MLjqui-icon-time, .MLjqui-primary .MLjqui-icon-time-hover, .MLjqui-primary .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-success .MLjqui-icon-calendar, .MLjqui-success .MLjqui-icon-calendar-hover, .MLjqui-success .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-success .MLjqui-icon-time, .MLjqui-success .MLjqui-icon-time-hover, .MLjqui-success .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-warning .MLjqui-icon-calendar, .MLjqui-warning .MLjqui-icon-calendar-hover, .MLjqui-warning .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-warning .MLjqui-icon-time, .MLjqui-warning .MLjqui-icon-time-hover, .MLjqui-warning .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-danger .MLjqui-icon-calendar, .MLjqui-danger .MLjqui-icon-calendar-hover, .MLjqui-danger .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-danger .MLjqui-icon-time, .MLjqui-danger .MLjqui-icon-time-hover, .MLjqui-danger .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-info .MLjqui-icon-calendar, .MLjqui-info .MLjqui-icon-calendar-hover, .MLjqui-info .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-info .MLjqui-icon-time, .MLjqui-info .MLjqui-icon-time-hover, .MLjqui-info .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-inverse .MLjqui-icon-calendar, .MLjqui-inverse .MLjqui-icon-calendar-hover, .MLjqui-inverse .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-inverse .MLjqui-icon-time, .MLjqui-inverse .MLjqui-icon-time-hover, .MLjqui-inverse .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - - -.MLjqui-notification-info, .MLjqui-info -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5bc0de !important; - *background-color: #5bc0de !important; - border-left-color: #46b8da !important; - border-right-color: #46b8da !important; - border-top-color: #46b8da !important; - border-bottom-color: #46b8da !important; -} -.MLjqui-info:hover, -.MLjqui-info:focus, -.MLjqui-info:active, -.MLjqui-info.active, -.MLjqui-info.disabled, -.MLjqui-info[disabled] { - color: #ffffff !important; - background-color: #31b0d5 !important; - *background-color: #31b0d5 !important; - border-color: #269abc !important; -} - -.MLjqui-fill-state-pressed.MLjqui-info, -.MLjqui-info:active, -.MLjqui-info.active { - background-color: #269abc \9 !important; -} -.MLjqui-notification-warning, .MLjqui-warning -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #f0ad4e !important; - *background-color: #f0ad4e !important; - border-left-color: #eea236 !important; - border-right-color: #eea236 !important; - border-top-color: #eea236 !important; - border-bottom-color: #eea236 !important; -} -.MLjqui-warning:hover, -.MLjqui-warning:focus, -.MLjqui-warning:active, -.MLjqui-warning.active, -.MLjqui-warning.disabled, -.MLjqui-warning[disabled] { - color: #ffffff !important; - background-color: #ec971f !important; - *background-color: #ec971f !important; - border-color: #d58512 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-warning, -.MLjqui-warning:active, -.MLjqui-warning.active { - background-color: #d58512 \9 !important; - border-color: #985f0d !important; -} -.MLjqui-notification-success, .MLjqui-success -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5cb85c !important; - *background-color: #5cb85c !important; - border-left-color: #4cae4c !important; - border-right-color: #4cae4c !important; - border-top-color: #4cae4c !important; - border-bottom-color: #4cae4c !important; -} -.MLjqui-success:hover, -.MLjqui-success:focus, -.MLjqui-success:active, -.MLjqui-success.active, -.MLjqui-success.disabled, -.MLjqui-success[disabled] { - color: #ffffff !important; - background-color: #449d44 !important; - *background-color: #449d44 !important; - border-color: #398439 !important; -} -.MLjqui-fill-state-pressed.MLjqui-success, -.MLjqui-success:active, -.MLjqui-success.active { - background-color: #398439 !important; - border-color: #255625 !important; -} -.MLjqui-notification-error, .MLjqui-danger -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #d9534f !important; - *background-color: #d9534f !important; - border-left-color: #d43f3a !important; - border-right-color: #d43f3a !important; - border-top-color: #d43f3a !important; - border-bottom-color: #d43f3a !important; -} -.MLjqui-danger:hover, -.MLjqui-danger:focus, -.MLjqui-danger:active, -.MLjqui-danger.active, -.MLjqui-danger.disabled, -.MLjqui-danger[disabled] { - color: #ffffff !important; - background-color: #c9302c !important; - *background-color: #c9302c !important; - border-color: #ac2925 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-danger, .MLjqui-danger:active, -.MLjqui-danger.active { - background-color: #ac2925 !important; - border-color: #761c19 !important; -} -.MLjqui-notification-mail, .MLjqui-primary -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #337ab7 !important; - *background-color: #337ab7 !important; - border-left-color: #2e6da4 !important; - border-right-color: #2e6da4 !important; - border-top-color: #2e6da4 !important; - border-bottom-color: #2e6da4 !important; -} -.MLjqui-primary:hover, -.MLjqui-primary:focus, -.MLjqui-primary:active, -.MLjqui-primary.active, -.MLjqui-primary.disabled, -.MLjqui-primary[disabled] { - color: #ffffff !important; - background-color: #286090 !important; - *background-color: #286090 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-primary, -.MLjqui-primary:active, -.MLjqui-primary.active { - background-color: #204d74 !important; -} -.MLjqui-notification-time, .MLjqui-inverse -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #363636 !important; - *background-color: #222222 !important; - border-left-color: #222222 !important; - border-right-color: #222222 !important; - border-top-color: #222222 !important; - border-bottom-color: #000000 !important; -} -.MLjqui-inverse:hover, -.MLjqui-inverse:focus, -.MLjqui-inverse:active, -.MLjqui-inverse.active, -.MLjqui-inverse.disabled, -.MLjqui-inverse[disabled] { - color: #ffffff !important; - background-color: #222222 !important; - *background-color: #151515 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-inverse, -.MLjqui-inverse:active, -.MLjqui-inverse.active { - background-color: #080808 !important; - background-image: linear-gradient(to bottom, #444444, #444444) !important; -} -.MLjqui-link, -.MLjqui-link:active, -.MLjqui-link[disabled] { - background-color: transparent !important; - background-image: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; -} - -.MLjqui-link { - color: #0088cc !important; - cursor: pointer !important; - border-color: transparent !important; - -webkit-border-radius: 0 !important; - -moz-border-radius: 0 !important; - border-radius: 0 !important; -} - -.MLjqui-link:hover, -.MLjqui-link:focus { - color: #005580 !important; - text-decoration: underline !important; - background-color: transparent !important; -} - -.MLjqui-link[disabled]:hover, -.MLjqui-link[disabled]:focus { - color: #333333 !important; - text-decoration: none !important; -} -.MLjqui-link:focus, .MLjqui-inverse:focus, .MLjqui-primary:focus, .MLjqui-warning:focus, .MLjqui-danger:focus, .MLjqui-success:focus, .MLjqui-info:focus, -.MLjqui-link:hover, .MLjqui-inverse:hover, .MLjqui-primary:hover, .MLjqui-warning:hover, .MLjqui-danger:hover, .MLjqui-success:hover, .MLjqui-info:hover { - background-position: 0 -15px !important; - -webkit-transition: background-position 0.1s linear !important; - -moz-transition: background-position 0.1s linear !important; - -o-transition: background-position 0.1s linear !important; - transition: background-position 0.1s linear !important; -} -.MLjqui-link:active, .MLjqui-inverse:active, .MLjqui-primary:active, .MLjqui-warning:active, .MLjqui-danger:active, .MLjqui-success:active, .MLjqui-info:active { - background-image: none !important; - outline: 0 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; -} -.MLjqui-notification-icon -{ - background-repeat: no-repeat; -} -.MLjqui-notification-icon-ltr -{ - background-position: left center; -} -.MLjqui-notification-icon-rtl -{ - background-position: right center; -} -.MLjqui-notification-icon-info, .MLjqui-notification-icon-warning, .MLjqui-notification-icon-success, .MLjqui-notification-icon-error, .MLjqui-notification-icon-mail, .MLjqui-notification-icon-time -{ - width: 30px; - height: 25px; -} -.MLjqui-notification-icon-info -{ - background-image: url('../images/info.png'); -} -.MLjqui-notification-icon-warning -{ - background-image: url('../images/warning.png'); -} -.MLjqui-notification-icon-success -{ - background-image: url('../images/success.png'); -} -.MLjqui-notification-icon-error -{ - background-image: url('../images/error.png'); -} -.MLjqui-notification-icon-mail -{ - background-image: url('../images/mail.png'); -} -.MLjqui-notification-icon-time -{ - background-image: url('../images/time.png'); -} -.MLjqui-notification-close-button-info, .MLjqui-notification-close-button-success, .MLjqui-notification-close-button-mail, .MLjqui-notification-close-button-time, .MLjqui-notification-close-button-error -{ - background-image: url('../images/close_white.png'); -} -.MLjqui-notification-close-button-warning -{ - background-image: url('../images/close_black.png'); -} -.MLjqui-notification-close-button-container, .MLjqui-notification-close-button -{ - width: 16px; - height: 16px; -} -.MLjqui-notification-close-button-container -{ - vertical-align: top; -} -.MLjqui-notification-close-button -{ - position: relative; - top: -11px; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-notification-close-button-ltr -{ - right: -11px; - background-position: right top; -} -.MLjqui-notification-close-button-rtl -{ - left: -11px; - background-position: left top; -} -.MLjqui-navbar { - width: 100%; - border-style: solid; - border-width: 1px; -} -.MLjqui-navbar ul:before, -.MLjqui-navbar ul:after { - content: ""; - display: table; -} -.MLjqui-navbar ul:after { - clear: both; -} -.MLjqui-navbar ul { - list-style: none; - margin: 0; - padding: 0; - position: relative; - display: block; - border: 0; - max-width: 100%; - overflow: visible; -} -.MLjqui-navbar-block { - margin: 0; - overflow:hidden; - padding: 0px 12px; - border-width:0px; - float: left; - min-height: 1px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - box-shadow: none !important; - border-radius: 0px !important; -} -.MLjqui-navbar-block-rtl { - float:right; -} -.MLjqui-ribbon -{ - position: relative; - overflow: hidden; -} -.MLjqui-ribbon-auto -{ - display: inline-block; -} -.MLjqui-ribbon-popup -{ - overflow: visible; -} -.MLjqui-ribbon-header -{ - position: absolute; - margin: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - overflow: hidden; - float: left; - display: block; - box-shadow: none !important; -} -.MLjqui-ribbon-header-auto -{ - position: relative; -} -.MLjqui-ribbon-header-horizontal -{ - width: 100%; - min-height: 30px; - padding: 0px; - white-space: nowrap; -} -.MLjqui-ribbon-header-bottom -{ - bottom: 0; -} -.MLjqui-ribbon-header-vertical -{ - min-width: 75px; - height: 100%; - float: left; - padding: 0px; -} -.MLjqui-ribbon-header-right -{ - right: 0; -} -.MLjqui-ribbon-header-horizontal-popup, .MLjqui-ribbon-header-vertical-popup -{ - position: relative; -} -.MLjqui-ribbon-header-horizontal-popup -{ - height:100%; -} -.MLjqui-ribbon-header-vertical-popup -{ - width: 100%; -} -.MLjqui-ribbon-item -{ - position: relative; - list-style-type: none; - padding: 5px; - border: 1px solid transparent; - box-sizing: border-box; - text-overflow: ellipsis; - cursor: default; - min-width: 10px; - vertical-align: top; -} -.MLjqui-ribbon-item-top, .MLjqui-ribbon-item-bottom -{ - height: 100%; - display: inline-block; - margin-left: 1px; - margin-right: 1px; -} -.MLjqui-ribbon-item-top -{ - margin-top: 1px; -} -.MLjqui-ribbon-item-bottom -{ - margin-top: -1px; -} -.MLjqui-ribbon-item-left, .MLjqui-ribbon-item-right -{ - width: 100%; - margin-top: 2px; -} -.MLjqui-ribbon-item-left -{ - margin-left: 1px; -} -.MLjqui-ribbon-item-right -{ - margin-left: -1px; -} -.MLjqui-ribbon-item-hover -{ - border-color: inherit; -} -.MLjqui-ribbon-item-top.MLjqui-ribbon-item-hover -{ - border-bottom-color: inherit !important; -} -.MLjqui-ribbon-item-bottom.MLjqui-ribbon-item-hover -{ - border-top-color: inherit !important; -} -.MLjqui-ribbon-item-left.MLjqui-ribbon-item-hover -{ - border-right-color: inherit !important; -} -.MLjqui-ribbon-item-right.MLjqui-ribbon-item-hover -{ - border-left-color: inherit !important; -} -.MLjqui-ribbon-item-selected -{ - border-color: inherit; -} -.MLjqui-ribbon-item-top.MLjqui-ribbon-item-selected -{ - border-bottom-color: transparent; -} -.MLjqui-ribbon-item-bottom.MLjqui-ribbon-item-selected -{ - border-top-color: transparent; -} -.MLjqui-ribbon-item-left.MLjqui-ribbon-item-selected -{ - border-right-color: transparent; -} -.MLjqui-ribbon-item-right.MLjqui-ribbon-item-selected -{ - border-left-color:transparent; -} -.MLjqui-ribbon-content -{ - background-image: none !important; - background-color: transparent !important; - box-sizing: border-box; -} -.MLjqui-ribbon-content-horizontal -{ - clear: both; - height: 100%; -} -.MLjqui-ribbon-content-vertical -{ - height: 100%; - width: 100%; - float: left; - border-width: 1px; -} -.MLjqui-ribbon-content-popup -{ - z-index:99999; - position: absolute; - border-left: none; -} -.MLjqui-ribbon-content-popup.MLjqui-ribbon-content-horizontal -{ - width: 100%; - height: auto; -} -.MLjqui-ribbon-content-popup.MLjqui-ribbon-content-vertical -{ - width: auto; - height: 100%; -} -.MLjqui-ribbon-content-popup-top { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-bottom { - -webkit-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-left { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-right { - -webkit-box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); - box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); -} - -.MLjqui-ribbon-content-auto-width -{ - width: auto; -} -.MLjqui-ribbon-content-section -{ - width: 100%; - height: 100%; - display: none; - border-width: 1px; - border-style: solid; - box-sizing: inherit; - overflow: auto; -} -.MLjqui-ribbon-content-section-top -{ - border-top: none; -} -.MLjqui-ribbon-content-section-bottom -{ - bottom: 0; - border-bottom: none; -} -.MLjqui-ribbon-content-section-left -{ - border-left: none; -} -.MLjqui-ribbon-content-section-right -{ - border-right: none; - right: 0; -} -.MLjqui-ribbon-content-section-popup -{ - position: relative; -} -.MLjqui-ribbon-content-section-horizontal-popup -{ - height: auto; -} -.MLjqui-ribbon-content-section-vertical-popup -{ - width: auto; -} -.MLjqui-ribbon-header-rtl -{ - text-align: right; -} -.MLjqui-ribbon-header-horizontal.MLjqui-ribbon-header-rtl -{ - direction: rtl; -} -.MLjqui-ribbon-item-rtl -{ - direction: rtl; -} -.MLjqui-ribbon-scrollbutton -{ - position: absolute; - display: none; - box-sizing: border-box; - cursor: pointer; - background-repeat: no-repeat !important; - background-position: center !important; - z-index: 1000; -} -.MLjqui-ribbon-scrollbutton-top, .MLjqui-ribbon-scrollbutton-bottom -{ - width: 17px; -} -.MLjqui-ribbon-scrollbutton-left, .MLjqui-ribbon-scrollbutton-right -{ - height: 17px; -} -.MLjqui-ribbon-scrollbutton-top -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-bottom -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-right -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far -{ - right: 18px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near -{ - left: 18px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far -{ - bottom: 18px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near -{ - top: 18px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-inner -{ - width: 100%; - height: 100%; - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-ribbon-selection-token -{ - position: absolute; - z-index: 1000; -} -.MLjqui-ribbon-selection-token-top, .MLjqui-ribbon-selection-token-bottom -{ - height: 1px; -} -.MLjqui-ribbon-selection-token-left, .MLjqui-ribbon-selection-token-right -{ - width: 1px; -} -.MLjqui-ribbon-auto, .MLjqui-ribbon-item-top, .MLjqui-ribbon-item-bottom, .MLjqui-ribbon-content -{ - *display: inline; -} -.MLjqui-ribbon-content-left -{ - *float: none; -} -.MLjqui-ribbon-content-right -{ - *float: left; -} -.MLjqui-ribbon-content.MLjqui-ribbon-content-popup -{ - *left: 0; -} -.MLjqui-ribbon-content-popup .MLjqui-ribbon-content-section -{ - *overflow: visible; -} -.MLjqui-ribbon-content-section-popup -{ - *position: absolute; -} -.MLjqui-toolbar, .MLjqui-toolbar-minimized-popup-separator -{ - box-sizing: border-box; -} -.MLjqui-toolbar, .MLjqui-toolbar-minimized-popup -{ - padding: 5px; -} -.MLjqui-toolbar -{ - position: relative; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.MLjqui-toolbar-tool -{ - float: left; - margin-top: 0; - margin-bottom: 0; -} -.MLjqui-toolbar-tool-rtl -{ - float: right; -} -.MLjqui-toolbar-tool-no-separator-ltr -{ - margin-right: 2px !important; -} -.MLjqui-toolbar-tool-no-separator-rtl -{ - margin-left: 2px !important; -} -.MLjqui-toolbar-tool-separator-ltr -{ - margin-right: 6px !important; -} -.MLjqui-toolbar-tool-separator-rtl -{ - margin-left: 6px !important; -} -.MLjqui-toolbar-tool-inner-button -{ - margin-right: 0; - margin-left: 0; - border-radius: 0 !important; -} -.MLjqui-toolbar-minimized-button, .MLjqui-toolbar-minimized-popup -{ - position: absolute; -} -.MLjqui-toolbar-minimized-button -{ - height: 100%; - right: 0; - cursor: pointer; - margin-top: -5px; - margin-right: 5px; - display: none; -} -.MLjqui-toolbar-minimized-button-rtl -{ - left: 0; - margin-left: 5px; - margin-right: 0; -} -.MLjqui-toolbar-minimized-popup -{ - border-width: 1px; - border-top-width: 0; - border-style: solid; - visibility: hidden; - z-index: 99999; -} -.MLjqui-toolbar-tool-minimized -{ - margin: 1px 0 !important; -} -.MLjqui-toolbar-minimized-popup-separator -{ - width: 100%; - height: 2px; - margin: 5px 0; - display: none; -} -.MLjqui-complex-input-spin-buttons-container -{ - border-width: 1px; - border-style: solid; - position: relative; - -webkit-box-sizing: border-box !important; - -moz-box-sizing: border-box !important; - box-sizing: border-box !important; - padding: 2px 8px !important; - white-space: nowrap; - vertical-align: middle; -} -.MLjqui-formatted-input, .MLjqui-complex-input -{ - padding-right: 2px !important; - text-align: right; -} -.MLjqui-formatted-input-lower-case, .MLjqui-complex-input -{ - text-transform: lowercase; -} -.MLjqui-formatted-input-upper-case -{ - text-transform: uppercase; -} -.MLjqui-formatted-input-item -{ - word-wrap: break-word; -} -.MLjqui-formatted-input-item-rtl, .MLjqui-complex-input-rtl -{ - direction: rtl !important; -} -.MLjqui-formatted-input-spin-buttons-container, .MLjqui-formatted-input-addon -{ - height: 100%; -} -.MLjqui-formatted-input-spin-buttons-container -{ - width: 18px; - padding: 0 0 0 1px !important; - overflow: hidden; -} -.MLjqui-formatted-input-spin-buttons-container-rtl -{ - border-right-width: 0px; - padding: 0 0 0 2px !important; -} -.MLjqui-formatted-input-spin-buttons-container-rtl-border -{ - border-left-width: 1px !important; -} -.MLjqui-formatted-input-spin-button -{ - position: relative; - width: 17px; - height: 50%; - margin-left: -1px; - border-width: 0px; - padding: 0px; - overflow: hidden; - cursor: pointer; -} -.MLjqui-formatted-input-addon -{ - width: 19px; - padding: 0 !important; - cursor: pointer; -} -.MLjqui-formatted-input-addon-rtl -{ - border-right-width: 1px !important; -} -.MLjqui-complex-input-parent -{ - overflow: hidden; -} -.MLjqui-complex-input-child -{ - height: 100%; - float: left; - box-sizing: border-box; -} -.MLjqui-complex-input-child-rtl -{ - float: right; -} -.MLjqui-complex-input-spin-buttons-container-ltr -{ - border-left-width: 0; -} -.MLjqui-complex-input-spin-buttons-container-rtl -{ - border-left-width: 1px !important; - border-right-width: 0; -} -.MLjqui-file-upload -{ - position: relative; - overflow: auto; -} -.MLjqui-file-upload, .MLjqui-file-upload-file-row, .MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; -} -.MLjqui-file-upload-buttons-container, .MLjqui-file-upload-iframe, .MLjqui-file-upload-loading-element -{ - display: none; -} -.MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-buttons-container, .MLjqui-file-upload-file-row, .MLjqui-file-upload-icon -{ - width: 100%; -} -.MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-icon, .MLjqui-file-upload-loading-element -{ - height: 100%; -} -.MLjqui-file-input-iframe, .MLjqui-file-upload-form-ie9 -{ - position: absolute; -} -.MLjqui-file-input-iframe -{ - width: 0; - height: 0; - border: none; -} -.MLjqui-file-upload-form, .MLjqui-file-upload-file-input -{ - visibility: hidden; - display: none; -} -.MLjqui-file-upload-form-ie9, .MLjqui-file-upload-file-input-ie9 -{ - display: block; - visibility: visible; -} -.MLjqui-file-upload-form-ie9 -{ - z-index: 10000; - opacity: 0; - filter: alpha(opacity=0); -} -.MLjqui-file-upload-file-name -{ - width: auto; - padding: 0 2px 0 2px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - *float: left; -} -.MLjqui-file-upload-button-browse-rtl, .MLjqui-file-upload-button-upload-rtl, .MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-file-name-rtl, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-loading-element -{ - float: right; -} -.MLjqui-file-upload, .MLjqui-file-upload-file-row -{ - padding: 5px; -} -.MLjqui-file-upload-button-browse -{ - display: block; -} -.MLjqui-file-upload-buttons-container -{ - height: auto; - margin-top: 10px; -} -.MLjqui-file-upload-button-browse-rtl, .MLjqui-file-upload-button-upload-rtl, .MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-file-name-rtl, .MLjqui-file-upload-file-cancel-rtl, .MLjqui-file-upload-file-upload-rtl -{ - direction: rtl !important; -} -.MLjqui-file-upload-button-cancel, .MLjqui-file-upload-button-upload-rtl -{ - margin-left: 5px; -} -.MLjqui-file-upload-button-upload-rtl-ie -{ - margin-right: 5px; -} -.MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-button-upload-rtl-ie -{ - margin-left: 0; -} -.MLjqui-file-upload-file-row -{ - height: 30px; - margin-bottom: 3px; - clear: both; -} -.MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-loading-element -{ - width: 17px; - margin: 0 1px 0 1px; -} -.MLjqui-file-upload-file-cancel-rtl, .MLjqui-file-upload-file-upload-rtl, .MLjqui-file-upload-loading-element-rtl -{ - float: none; - *float: left; -} -.MLjqui-file-upload-button-browse, .MLjqui-file-upload-button-upload, .MLjqui-file-upload-button-cancel, .MLjqui-file-upload-form-ie9, .MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - cursor: pointer; - white-space:nowrap; -} -.MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - display: inline-block; -} -.MLjqui-file-upload-icon-upload, .MLjqui-file-upload-loading-element -{ - margin-top: 1px; -} -.MLjqui-file-upload-loading-element -{ - background-image: url('../images/loader-small.gif'); - background-repeat: no-repeat; -} - -.MLjqui-date-time-input-popup .MLjqui-icon { - margin-top:0px; -} - - -.MLjqui-text-area-element -{ - height: 100%; - width: 100%; - overflow: hidden; - border: none; - outline: none; - left: 0px; - top: 0px; - margin: 0px; - position: absolute; - resize: none; -} -.MLjqui-text-area-element-rtl -{ - direction: rtl !important; -} -.MLjqui-responsive-panel -{ - overflow: auto; -} -.MLjqui-responsive-panel, .MLjqui-responsive-panel-button -{ - border-width: 1px; - border-style: solid; -} -.MLjqui-responsive-panel-button -{ - display: none; - cursor: pointer; -} -.MLjqui-responsive-panel-button-inner -{ - margin: 0; - width: 100%; - height: 100%; - background-position: center; -} -.MLjqui-loader -{ - margin: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background-color: rgba(255,255,255,0.5); - z-index: 999; - border-style: solid; - border-width: 1px; -} -.MLjqui-loader-ie-transparency -{ - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff)"; /*For IE 8*/ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff); /*For IE 7*/ -} -.MLjqui-loader-modal -{ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - position: fixed; - height: 100%; - width: 100%; - z-index: 99; - cursor: default; - top: 0; - left: 0; - background-color: black; - opacity: 0.6; -} -.MLjqui-loader-icon -{ - background-image: url("../images/loader.gif"); - background-repeat: no-repeat; - background-position: center; - width: 100%; - height: 100%; - position: absolute; - z-index: 999; -} -.MLjqui-loader-text -{ - z-index: 999; - position: relative; -} -.MLjqui-loader-text-left -{ - margin-left: 5px; - position: absolute; - top: 50%; -} -.MLjqui-loader-text-right -{ - margin-right: 5px; - position: absolute; - top: 50%; - right: 0px; -} -.MLjqui-loader-text-top -{ - text-align: center; - margin-top: 5px; -} -.MLjqui-loader-text-bottom -{ - bottom: 0px; - position: absolute; - text-align: center; - margin: 0 auto; - width: 100%; - margin-bottom: 5px; -} -.MLjqui-loader-rtl -{ - direction: rtl; -} -/* MLjquiLayout and MLjquiDockingLayout */ -.MLjqui-layout, .MLjqui-layout-group-root, .MLjqui-layout-pseudo-window-header, .MLjqui-docking-layout-overlay-inner-square-content -{ - position: relative; -} -.MLjqui-layout-pseudo-window-pin-background, .MLjqui-layout-pseudo-window-close-background, .MLjqui-layout-resize-feedback, .MLjqui-layout-overlay, .MLjqui-docking-layout-overlay, .MLjqui-docking-layout-overlay-highlight-right, .MLjqui-docking-layout-overlay-highlight-bottom, .MLjqui-docking-layout-overlay-square-edge, .MLjqui-docking-layout-drop-overlay -{ - position: absolute; -} -.MLjqui-layout -{ - background-color: #c5c5c5; -} -.MLjqui-layout-group-root, .MLjqui-layout-pseudo-window-pin-icon, .MLjqui-layout-pseudo-window-pinned-icon, .MLjqui-layout-pseudo-window-close-icon, .MLjqui-layout-overlay -{ - width: 100%; - height: 100%; -} -.MLjqui-layout-group-default-horizontal > div, .MLjqui-layout-pseudo-window-title-ltr, .MLjqui-docking-layout-overlay-square, .MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-square-edge-arrow-container-horizontal -{ - float: left; -} -.MLjqui-layout-group-tabbed -{ - position: static; - box-sizing: border-box; - min-height: 0 !important; -} -.MLjqui-layout-group-tabbed .MLjqui-window-content, .MLjqui-docking-layout-group-floating .MLjqui-window-content -{ - padding: 0; -} -.MLjqui-layout-group-tabbed .MLjqui-ribbon-content-section, .MLjqui-layout-window, .MLjqui-docking-layout-group-floating .MLjqui-ribbon-content-section -{ - border: none; -} -.MLjqui-layout-window -{ - position: static; -} -.MLjqui-layout-group-auto-hide-content-vertical, .MLjqui-layout-group-auto-hide-content-horizontal -{ - overflow: auto; -} -.MLjqui-layout-group-auto-hide-content-vertical -{ - width: 150px; -} -.MLjqui-layout-group-auto-hide-content-horizontal -{ - width: 100%; - height: 150px; -} -.MLjqui-layout-pseudo-window -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; - box-shadow: none !important; -} -.MLjqui-layout-pseudo-window-header, .MLjqui-layout-pseudo-window-content -{ - width: 100%; - box-sizing: border-box; -} -.MLjqui-layout-pseudo-window-header -{ - height: 30px; -} -.MLjqui-layout-pseudo-window-pin-background, .MLjqui-layout-pseudo-window-close-background -{ - width: 16px; - height: 16px; - top: 5px; -} -.MLjqui-layout-pseudo-window-pin-background-ltr -{ - right: 15px; -} -.MLjqui-layout-pseudo-window-close-background-ltr -{ - right: 0; -} -.MLjqui-layout-pseudo-window-pin-background-rtl -{ - left: 15px; -} -.MLjqui-layout-pseudo-window-close-background-rtl -{ - left: 0; -} -.MLjqui-layout-pseudo-window-pin-icon, .MLjqui-layout-pseudo-window-pinned-icon, .MLjqui-layout-pseudo-window-close-icon -{ - cursor: pointer; -} -.MLjqui-layout-pseudo-window-title -{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-layout-pseudo-window-pin-icon -{ - background-image: url("../images/pin.png"); -} -.MLjqui-layout-pseudo-window-pinned-icon -{ - background-image: url("../images/pinned.png"); -} -.MLjqui-layout-pseudo-window-title-rtl -{ - float: right; -} -.MLjqui-layout-resize-feedback -{ - z-index: 9999; - top: 0; - left: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - opacity: 0.6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - *filter: alpha(opacity=60); - display: none; -} -.MLjqui-layout-resize-feedback-horizontal -{ - width: 100%; - height: 4px; - cursor: row-resize; -} -.MLjqui-layout-resize-feedback-vertical -{ - width: 4px; - height: 100%; - cursor: col-resize; -} -.MLjqui-layout-resize-feedback-warning -{ - border-color: #800000 !important; - background-color: Red !important; -} -.MLjqui-layout-overlay -{ - top: 0; - left: 0; - display: none; - background-color: transparent; - z-index: 8999; -} -.MLjqui-layout-ribbon-header-ltr -{ - padding-left: 20px; -} -.MLjqui-layout-ribbon-header-rtl -{ - padding-right: 20px; -} - -/* MLjquiDockingLayout-specific */ -.MLjqui-docking-layout-group-floating -{ - border-color: #FFD280 !important; -} -.MLjqui-docking-layout-group-floating .MLjqui-window-header -{ - border-color: #FFD280; - background-color: #FFD280 !important; - background: -webkit-linear-gradient(#FFE4B5, #FFD280) !important; - background: -o-linear-gradient(#FFE4B5, #FFD280) !important; - background: -moz-linear-gradient(#FFE4B5, #FFD280) !important; - background: linear-gradient(#FFE4B5, #FFD280 ) !important; -} -.MLjqui-docking-layout-overlay, .MLjqui-docking-layout-overlay-square-edge -{ - display: none; - z-index: 99999; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - *filter: alpha(opacity=90); -} -.MLjqui-docking-layout-overlay -{ - width: 100px; - height: 100px; - left: 100px; - top: 70px; -} -.MLjqui-docking-layout-overlay-section -{ - height: 33px; - width: 100px; -} -.MLjqui-docking-layout-overlay-square -{ - width: 26px; - height: 26px; - padding: 3px; -} -.MLjqui-docking-layout-overlay-square-invisible -{ - background-color: transparent !important; - background-image: none !important; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-center, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-highlight-bottom -{ - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-highlight-right -{ - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-highlight-left -{ - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-center, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-inner-square-header, .MLjqui-docking-layout-overlay-highlight-top -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-docking-layout-overlay-square-center -{ - border-color: transparent !important; -} -.MLjqui-docking-layout-overlay-inner-square, .MLjqui-docking-layout-overlay-inner-square-header, .MLjqui-docking-layout-overlay-inner-square-content, .MLjqui-docking-layout-overlay-highlight-top, .MLjqui-docking-layout-overlay-highlight-bottom, .MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - width: 24px; -} -.MLjqui-docking-layout-overlay-inner-square -{ - border-width: 1px; - border-style: solid; - height: 24px; -} -.MLjqui-docking-layout-overlay-inner-square-header -{ - height: 5px; -} -.MLjqui-docking-layout-overlay-inner-square-content -{ - height: 18px; -} -.MLjqui-docking-layout-overlay-highlight -{ -} -.MLjqui-docking-layout-overlay-highlight-top -{ - height: 9px; - border-bottom-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-left, .MLjqui-docking-layout-overlay-highlight-right -{ - width: 12px; - height: 18px; -} -.MLjqui-docking-layout-overlay-highlight-left -{ - border-right-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-right -{ - right: 0; - border-left-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-bottom -{ - bottom: 0; - height: 9px; - border-top-style: dashed; -} -.MLjqui-docking-layout-drop-overlay -{ - display: none; - background-color: #6495ED; - opacity: 0.5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - *filter: alpha(opacity=50); - z-index: 10000; -} -.MLjqui-docking-layout-square-disabled -{ - visibility: hidden; -} -.MLjqui-docking-layout-overlay-square-edge, .MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - border-style: solid; - border-width: 1px; -} -.MLjqui-docking-layout-overlay-inner-square-edge -{ - width: 26px; - height: 26px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-horizontal -{ - height: 24px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - height: 13px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-inner-square-header-horizontal, .MLjqui-docking-layout-overlay-inner-square-content-horizontal -{ - width: 13px; -} -.MLjqui-docking-layout-overlay-inner-square-content-vertical -{ - height: 7px; -} -.MLjqui-docking-layout-overlay-square-edge-arrow -{ - border-style: solid; - border-width: 5px; - width: 0px; - height: 0px; - display: block; - background: transparent !important; - *filter: inherit; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-top -{ - border-top-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-bottom-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-left-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-right-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right -{ - margin-top: 8px; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - margin-left: 8px; -} - -.MLjqui-tag-cloud ul { - padding-left: 5px; -} - -.MLjqui-tag-cloud-item{ - padding: 3px; - display:inline-block; -} - -.MLjqui-tag-cloud-item a { - text-decoration: initial; -} - -.MLjqui-tag-cloud-item a:hover { - text-decoration: underline; -} -.MLjqui-popover { - position: absolute; - top: 0; - left: 0; - z-index: 9999; - background-color: #ffffff; - border: 1px solid #aaa; - border: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); -} -.MLjqui-popover-modal-background -{ - position:fixed; - left:0px; - top:0px; - width:100%; - height:100%; - z-index:999; - /* Fallback for web browsers that don't support RGBa */ - background-color: rgb(0, 0, 0); - /* RGBa with 0.6 opacity */ - background-color: rgba(0, 0, 0, 0.6); - /* For IE 5.5 - 7*/ - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - /* For IE 8*/ - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -.MLjqui-popover-close-button { - width:16px; - height:16px; - float:right; -} -.MLjqui-popover-close-button-rtl { - float:left; -} -.MLjqui-popover.top { - margin-top: -10px; -} - -.MLjqui-popover.right { - margin-left: 10px; -} - -.MLjqui-popover.bottom { - margin-top: 10px; -} - -.MLjqui-popover.left { - margin-left: -10px; -} - -.MLjqui-popover-title { - padding: 8px 14px; - margin: 0; - border-bottom: 1px solid inherit; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} - -.MLjqui-popover-title:empty { - display: none; -} - -.MLjqui-popover-content { - padding: 9px 14px; -} - -.MLjqui-popover .MLjqui-popover-arrow, -.MLjqui-popover .MLjqui-popover-arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.MLjqui-popover .MLjqui-popover-arrow { - border-width: 11px; -} - -.MLjqui-popover .MLjqui-popover-arrow:after { - border-width: 10px; - content: ""; -} - -.MLjqui-popover.top .MLjqui-popover-arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: inherit; - border-bottom-width: 0; -} - -.MLjqui-popover.top .MLjqui-popover-arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #ffffff; - border-bottom-width: 0; -} - -.MLjqui-popover.right .MLjqui-popover-arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: inherit; - border-left-width: 0; -} - -.MLjqui-popover.right .MLjqui-popover-arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; -} - -.MLjqui-popover.bottom .MLjqui-popover-arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color:inherit; - border-top-width: 0; -} - -.MLjqui-popover.bottom .MLjqui-popover-arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #ffffff; - border-top-width: 0; -} - -.MLjqui-popover.left .MLjqui-popover-arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; border-left-color: inherit; -} - -.MLjqui-popover.left .MLjqui-popover-arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #ffffff; - border-right-width: 0; -} - - -.MLjqui-kanban-full-frame { - width: 100vw; - height: 100vh; -} - -.MLjqui-kanban-in-frame { - width: 100%; - height: 100%; - box-sizing: border-box; -} - -.MLjqui-kanban-rtl { - direction: rtl; - text-align: right; -} - -.MLjqui-kanban-column { - box-sizing: border-box; - border-style: solid; - border-width: 1px 1px 1px 0px; - float: left; -} - -.MLjqui-kanban-column-collapsed { - width: 50px; -} - -.MLjqui-kanban-column-first { - border-width: 1px; -} - -.MLjqui-kanban-column:first-of-type { - border-width: 1px 1px 1px 1px; -} - -.MLjqui-kanban-column-selected { - /* background-color: blue;*/ -} - -.MLjqui-kanban-column-header-collapsed { /*vertical column invisible*/ - display: none; - box-sizing: border-box; - height: 0px; - width: 0px; - position: relative; - cursor: pointer; -} - -.MLjqui-kanban-column-header-collapsed-show { /*vertical column visible*/ - display: block !important; - height: 100%; - box-sizing: border-box; - width: 100%; - position: relative; - cursor: pointer; -} - -.MLjqui-kanban-column-vertical-container { - padding-top: 0px; - padding-left: 0px; - transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - white-space: nowrap; -} - -.MLjqui-kanban-column-vertical-container-inverse { - padding-top: 0px; - padding-left: 20px; - transform: rotate(90deg); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -o-transform: rotate(90deg); - white-space: nowrap; -} -.MLjqui-kanban-column-vertical-container .MLjqui-kanban-column-header-title, .MLjqui-kanban-column-vertical-container .MLjqui-kanban-column-header-status{ - position:relative; -} - -.MLjqui-kanban-column-hide { /*colapsed*/ - display: none !important; -} - -.MLjqui-kanban-column-header { - border-width: 1px; - border-style: solid; - margin: 1px; - white-space: nowrap; - padding-left: 5px; - padding-right: 5px; - cursor: pointer; - overflow:hidden; - position: relative; -} -.MLjqui-kanban-column-header-button { - position: absolute; - right: 0px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.MLjqui-kanban-column-header .MLjqui-window-collapse-button { - margin-top:1px !important; -} -.MLjqui-kanban-column-header-custom-button { - position: absolute; - right: 20px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.MLjqui-kanban-column-header-custom-button-rtl { - left: 20px; -} -.MLjqui-kanban-column-header-button-rtl { - left: 0px; -} -.MLjqui-kanban-column-header-collapsed .MLjqui-kanban-column-header-button { - top: 100%; - right: 50%; - margin-top: -21px; - left: 50%; - margin-left:-8px; -} -.MLjqui-kanban-column-header-collapsed .MLjqui-kanban-column-header-custom-button { - top: 100%; - right: 50%; - margin-top: -41px; - left: 50%; - margin-left:-8px; -} - -.MLjqui-kanban-column-container { - margin: 1px; - overflow-y: auto; -} - -.MLjqui-kanban-item-placeholder { - height: 100px; - border: gray dotted 1px; - border-radius: 3px; - margin: 5px; -} - -.MLjqui-kanban-column-vertical-container-inverse-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.MLjqui-kanban-column-vertical-container-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.MLjqui-kanban-item { - margin: 2px; - padding-top: 5px; - padding-bottom: 5px; - border-width: 1px; - border-style: solid; - border-color: inherit; - position: relative; - box-shadow: #ddd 2px 2px 3px; - cursor: pointer; - touch-action: none; - -ms-touch-action: none; -} - -.MLjqui-kanban-item-selected { -} - -.MLjqui-kanban-item-color-status { - background-color: #6bbd49; - width: 3px; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} -.MLjqui-kanban-item-color-status-rtl { - right:0px; - left:100%; -} -.MLjqui-kanban-item-text { - padding-left:6px; - padding-right:23px; - font-size: 14px; - padding-bottom:5px; - overflow:hidden; - text-overflow: ellipsis; -} -.MLjqui-kanban-rtl .MLjqui-kanban-item-text { - padding-right:6px; - padding-left:23px; -} -.MLjqui-kanban-column-header-title { -} - -.MLjqui-kanban-column-header-status { -} - -.MLjqui-kanban-item-content { - -} - -.MLjqui-kanban-item-avatar { - width: 22px; - height: 22px; - position: absolute; - right: 3px; - top: 3px; - background: #eee; - text-align: center; - overflow: hidden; -} -.MLjqui-kanban-item-avatar-rtl { - left: 3px; -} -.MLjqui-kanban-item-avatar-image { - width: 20px; - height: 20px; -} - -.MLjqui-kanban-item-avatar-image:hover { -} - -.MLjqui-kanban-item-footer { - border-top: 1px solid transparent; - border-color: inherit; - overflow: hidden; - padding-top: 5px; - margin-top: 5px; - padding-bottom:1px; - padding-left:6px; - padding-right:6px; -} - - -.MLjqui-kanban-item-keyword { - float: left; - margin:2px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-color:inherit; - padding-left:2px; - padding-right: 2px; - cursor: pointer; -} - -.MLjqui-kanban-item-keyword-rtl { - direction: rtl; - text-align: right; - float: right; -} - -.MLjqui-kanban-item-keyword:hover { -} - -.MLjqui-kanban-item-avatar { - height: 20px; -} - -.MLjqui-kanban-handle { - cursor: move; -} - -.MLjqui-kanban-clearing { - clear: both; -} -.MLjqui-sortable { - touch-action: none; - -ms-touch-action: none; -} - -.MLjqui-bar-gauge-tooltip { - position:absolute; - left:20px; - top:20px; - display:none; - padding: 6px 12px; - border:black solid 1px; - background-color: white; - color: #333333; - font-size: 11px; - font-weight:100; - font-family: Verdana; - border:black solid 1px; - border-radius:3px; - opacity: 1; - white-space: nowrap; - z-index:5; -} - -.MLjqui-bar-gauge-measure-text { - position: absolute; - top: 0; - right: 0; - visibility: hidden; - z-index:-99999; - margin:0px; - padding:0px; - border-width:0px; -} -.MLjqui-scrollbar-mobile { - background: transparent !important; -} - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-state-normal { - background: transparent !important; - border-color: transparent !important; - } -.MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal-horizontal, .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal{ - background: #808080 ! important; - border-color: #808080 !important; - border-width: 1px; - z-index:99999; - border-radius: 0px !important; -} - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal { - width: 4px ! important; - } - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal-horizontal { - height: 4px !important; - } - - -.MLjqui-primary .MLjqui-icon-arrow-down, .MLjqui-warning .MLjqui-icon-arrow-down, .MLjqui-danger .MLjqui-icon-arrow-down, .MLjqui-success .MLjqui-icon-arrow-down, .MLjqui-info .MLjqui-icon-arrow-down { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-down-selected, .MLjqui-warning .MLjqui-icon-arrow-down-selected, .MLjqui-danger .MLjqui-icon-arrow-down-selected, .MLjqui-success .MLjqui-icon-arrow-down-selected, .MLjqui-info .MLjqui-icon-arrow-down-selected { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-down-hover, .MLjqui-warning .MLjqui-icon-arrow-down-hover, .MLjqui-danger .MLjqui-icon-arrow-down-hover, .MLjqui-success .MLjqui-icon-arrow-down-hover, .MLjqui-info .MLjqui-icon-arrow-down-hover { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up, .MLjqui-warning .MLjqui-icon-arrow-up, .MLjqui-danger .MLjqui-icon-arrow-up, .MLjqui-success .MLjqui-icon-arrow-up, .MLjqui-info .MLjqui-icon-arrow-up { - background-image: url('../images/icon-up-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up-selected, .MLjqui-warning .MLjqui-icon-arrow-up-selected, .MLjqui-danger .MLjqui-icon-arrow-up-selected, .MLjqui-success .MLjqui-icon-arrow-up-selected, .MLjqui-info .MLjqui-icon-arrow-up-selected { - background-image: url('../images/icon-up-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up-hover, .MLjqui-warning .MLjqui-icon-arrow-up-hover, .MLjqui-danger .MLjqui-icon-arrow-up-hover, .MLjqui-success .MLjqui-icon-arrow-up-hover, .MLjqui-info .MLjqui-icon-arrow-up-hover { - background-image: url('../images/icon-up-white.png'); -} - -.MLjqui-primary .MLjqui-icon-arrow-right, .MLjqui-warning .MLjqui-icon-arrow-right, .MLjqui-danger .MLjqui-icon-arrow-right, .MLjqui-success .MLjqui-icon-arrow-right, .MLjqui-info .MLjqui-icon-arrow-right { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-right-selected, .MLjqui-warning .MLjqui-icon-arrow-right-selected, .MLjqui-danger .MLjqui-icon-arrow-right-selected, .MLjqui-success .MLjqui-icon-arrow-right-selected, .MLjqui-info .MLjqui-icon-arrow-right-selected { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-right-hover, .MLjqui-warning .MLjqui-icon-arrow-right-hover, .MLjqui-danger .MLjqui-icon-arrow-right-hover, .MLjqui-success .MLjqui-icon-arrow-right-hover, .MLjqui-info .MLjqui-icon-arrow-right-hover { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left, .MLjqui-warning .MLjqui-icon-arrow-left, .MLjqui-danger .MLjqui-icon-arrow-left, .MLjqui-success .MLjqui-icon-arrow-left, .MLjqui-info .MLjqui-icon-arrow-left { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left-selected, .MLjqui-warning .MLjqui-icon-arrow-left-selected, .MLjqui-danger .MLjqui-icon-arrow-left-selected, .MLjqui-success .MLjqui-icon-arrow-left-selected, .MLjqui-info .MLjqui-icon-arrow-left-selected { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left-hover, .MLjqui-warning .MLjqui-icon-arrow-left-hover, .MLjqui-danger .MLjqui-icon-arrow-left-hover, .MLjqui-success .MLjqui-icon-arrow-left-hover, .MLjqui-info .MLjqui-icon-arrow-left-hover { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary-item .MLjqui-listitem-state-hover, .MLjqui-primary-item .MLjqui-menu-item-hover, .MLjqui-primary-item .MLjqui-tree-item-hover, .MLjqui-primary-item .MLjqui-calendar-cell-hover, .MLjqui-primary-item .MLjqui-grid-cell-hover, -.MLjqui-primary-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-primary-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-primary-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-primary-item .MLjqui-listitem-state-selected, .MLjqui-primary-item .MLjqui-menu-item-selected, .MLjqui-primary-item .MLjqui-tree-item-selected, .MLjqui-primary-item .MLjqui-calendar-cell-selected, .MLjqui-primary-item .MLjqui-grid-cell-selected, -.MLjqui-primary-item .MLjqui-menu-vertical .MLjqui-primary-item .MLjqui-menu-item-top-selected, .MLjqui-primary-item .MLjqui-grid-selectionarea, .MLjqui-primary-item .MLjqui-input-button-header, .MLjqui-primary-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-warning-item .MLjqui-listitem-state-hover, .MLjqui-warning-item .MLjqui-menu-item-hover, .MLjqui-warning-item .MLjqui-tree-item-hover, .MLjqui-warning-item .MLjqui-calendar-cell-hover, .MLjqui-warning-item .MLjqui-grid-cell-hover, -.MLjqui-warning-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-warning-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-warning-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-warning-item .MLjqui-listitem-state-selected, .MLjqui-warning-item .MLjqui-menu-item-selected, .MLjqui-warning-item .MLjqui-tree-item-selected, .MLjqui-warning-item .MLjqui-calendar-cell-selected, .MLjqui-warning-item .MLjqui-grid-cell-selected, -.MLjqui-warning-item .MLjqui-menu-vertical .MLjqui-warning-item .MLjqui-menu-item-top-selected, .MLjqui-warning-item .MLjqui-grid-selectionarea, .MLjqui-warning-item .MLjqui-input-button-header, .MLjqui-warning-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-danger-item .MLjqui-listitem-state-hover, .MLjqui-danger-item .MLjqui-menu-item-hover, .MLjqui-danger-item .MLjqui-tree-item-hover, .MLjqui-danger-item .MLjqui-calendar-cell-hover, .MLjqui-danger-item .MLjqui-grid-cell-hover, -.MLjqui-danger-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-danger-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-danger-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-danger-item .MLjqui-listitem-state-selected, .MLjqui-danger-item .MLjqui-menu-item-selected, .MLjqui-danger-item .MLjqui-tree-item-selected, .MLjqui-danger-item .MLjqui-calendar-cell-selected, .MLjqui-danger-item .MLjqui-grid-cell-selected, -.MLjqui-danger-item .MLjqui-menu-vertical .MLjqui-danger-item .MLjqui-menu-item-top-selected, .MLjqui-danger-item .MLjqui-grid-selectionarea, .MLjqui-danger-item .MLjqui-input-button-header, .MLjqui-danger-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-success-item .MLjqui-listitem-state-hover, .MLjqui-success-item .MLjqui-menu-item-hover, .MLjqui-success-item .MLjqui-tree-item-hover, .MLjqui-success-item .MLjqui-calendar-cell-hover, .MLjqui-success-item .MLjqui-grid-cell-hover, -.MLjqui-success-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-success-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-success-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-success-item .MLjqui-listitem-state-selected, .MLjqui-success-item .MLjqui-menu-item-selected, .MLjqui-success-item .MLjqui-tree-item-selected, .MLjqui-success-item .MLjqui-calendar-cell-selected, .MLjqui-success-item .MLjqui-grid-cell-selected, -.MLjqui-success-item .MLjqui-menu-vertical .MLjqui-success-item .MLjqui-menu-item-top-selected, .MLjqui-success-item .MLjqui-grid-selectionarea, .MLjqui-success-item .MLjqui-input-button-header, .MLjqui-success-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-info-item .MLjqui-listitem-state-hover, .MLjqui-info-item .MLjqui-menu-item-hover, .MLjqui-info-item .MLjqui-tree-item-hover, .MLjqui-info-item .MLjqui-calendar-cell-hover, .MLjqui-info-item .MLjqui-grid-cell-hover, -.MLjqui-info-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-info-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-info-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-info-item .MLjqui-listitem-state-selected, .MLjqui-info-item .MLjqui-menu-item-selected, .MLjqui-info-item .MLjqui-tree-item-selected, .MLjqui-info-item .MLjqui-calendar-cell-selected, .MLjqui-info-item .MLjqui-grid-cell-selected, -.MLjqui-info-item .MLjqui-menu-vertical .MLjqui-info-item .MLjqui-menu-item-top-selected, .MLjqui-info-item .MLjqui-grid-selectionarea, .MLjqui-info-item .MLjqui-input-button-header, .MLjqui-info-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-inverse-item .MLjqui-listitem-state-hover, .MLjqui-inverse-item .MLjqui-menu-item-hover, .MLjqui-inverse-item .MLjqui-tree-item-hover, .MLjqui-inverse-item .MLjqui-calendar-cell-hover, .MLjqui-inverse-item .MLjqui-grid-cell-hover, -.MLjqui-inverse-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-inverse-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-inverse-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-inverse-item .MLjqui-listitem-state-selected, .MLjqui-inverse-item .MLjqui-menu-item-selected, .MLjqui-inverse-item .MLjqui-tree-item-selected, .MLjqui-inverse-item .MLjqui-calendar-cell-selected, .MLjqui-inverse-item .MLjqui-grid-cell-selected, -.MLjqui-inverse-item .MLjqui-menu-vertical .MLjqui-inverse-item .MLjqui-menu-item-top-selected, .MLjqui-inverse-item .MLjqui-grid-selectionarea, .MLjqui-inverse-item .MLjqui-input-button-header, .MLjqui-inverse-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase_mobile.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase_mobile.css deleted file mode 100644 index 99174843..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase_mobile.css +++ /dev/null @@ -1,6828 +0,0 @@ -/*Rounded Corners*/ -/*top-left rounded Corners*/ -.MLjqui-rc-tl -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; -} -/*top-right rounded Corners*/ -.MLjqui-rc-tr -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom-left rounded Corners*/ -.MLjqui-rc-bl -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*bottom-right rounded Corners*/ -.MLjqui-rc-br -{ - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*top rounded Corners*/ -.MLjqui-rc-t -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom rounded Corners*/ -.MLjqui-rc-b -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*right rounded Corners*/ -.MLjqui-rc-r -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*left rounded Corners*/ -.MLjqui-rc-l -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*all rounded Corners*/ -.MLjqui-rc-all -{ -/* -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; */ -} -/*reset rounded corners*/ -.MLjqui-rc-reset -{ - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} - -/*Reset Style*/ -.MLjqui-reset -{ - padding: 0; - margin: 0; - border: none; - background: transparent; - outline: none; - box-sizing: content-box; -} -.MLjqui-clear { - align:left; valign:top; left: 0px; top: 0px; -webkit-appearance: none !important; outline: none !important; padding: 0px; margin: 0px; -} -.MLjqui-popup { - box-sizing: content-box; -} -.MLjqui-position-reset { - position: static !important; -} -.MLjqui-border-reset { - border: none !important; -} -.MLjqui-overflow-hidden { - overflow: hidden !important; -} -.MLjqui-position-relative { - position: relative !important; -} -.MLjqui-position-absolute { - position: absolute !important; -} -.MLjqui-max-size { - width: 100% !important; - height: 100% !important; -} -.MLjqui-background-reset { - background: transparent !important; -} -/*Disable browser selection*/ -.MLjqui-disableselect -{ - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - -ms-user-select:none; - -webkit-touch-callout:none; - -webkit-tap-highlight-color: rgba(0,0,0,0); -} -.MLjqui-enableselect { - -webkit-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -o-user-select: auto; - -ms-user-select:text; - user-select:all; -} -.MLjqui-hideborder -{ - border: none !important; -} -.MLjqui-hidescrollbars -{ - overflow: hidden !important; -} -/*MLjquiButton, MLjquiToggleButton, MLjquiRepeatButton Style*/ -.MLjqui-button{outline: none; border: 1px solid transparent; padding: 3px; text-align: center; vertical-align: central; margin: 0 0 0 0; cursor: default; } -button.MLjqui-button, input[type=button].MLjqui-button, input[type=submit].MLjqui-button { - box-sizing: border-box !important; -moz-box-sizing: border-box !important; -} - -.MLjqui-buttongroup{} -.MLjqui-group-button-normal { - vertical-align: middle; - text-align: center; -} -/*applied to the link button's anchor element.*/ -.MLjqui-link -{ - text-decoration: none; - color: #111111; -} - -/*shows elements.*/ -.MLjqui-visible -{ - display: block; -} -/*hides elements.*/ -.MLjqui-hidden -{ - display: none; -} -.MLjqui-widget, .MLjqui-widget-content, .MLjqui-widget-header, .MLjqui-fill-state-normal { - line-height: 1.231; -} -.MLjqui-widget-header{ height:46px !important; line-height: 46px !important} - -/*MLjquiGauge Style*/ -.MLjqui-gauge-label, .MLjqui-gauge-caption -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-knob { - text-align: center; -} -/*MLjquiChart Style*/ -.MLjqui-knob-label, -.MLjqui-chart-axis-text, -.MLjqui-chart-label-text, -.MLjqui-chart-tooltip-text, -.MLjqui-chart-legend-text -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-chart-axis-description -{ - fill: #555555; - color: #555555; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-chart-title-text -{ - fill: #111111; - color: #111111; - font-size: 14px; - font-weight: bold; - font-family: Verdana; -} -.MLjqui-chart-title-description -{ - fill: #111111; - color: #111111; - font-size: 12px; - font-weight: normal; - font-family: Verdana; -} - -/*applied to the Grid's element.*/ -.MLjqui-grid -{ - overflow: hidden; - border-style: solid; - border-width: 1px; -} -/*applied to the Pager.*/ -.MLjqui-grid-pager -{ - border: none; - border-top: 1px solid transparent; -} -/*applied to the Top Pager.*/ -.MLjqui-grid-pager-top -{ - border: none; - border-bottom: 1px solid transparent; -} -.MLjqui-grid-pager-number{ - padding: 2px 5px; - text-decoration: none; - margin: 1px; - border: 1px solid transparent; - color: inherit !important; - *color: expression(this.parentNode.currentStyle['color']) !important; - outline: none; - font-weight: normal !important; -} -.MLjqui-grid-menu-item-touch { - padding-top: 6px !important; - padding-bottom: 6px !important; -} -/*applied to the Grid's bottom-right area between the horizontal and vertical scrollbars.*/ -.MLjqui-grid-bottomright -{ - -} -/*applied to the Grid's header area.*/ -.MLjqui-grid-header -{ - border-style: solid; - border-width: 0px 0px 1px 0px; - overflow: hidden; - border-color: transparent; - margin: 0px; - padding: 0px; - background: #f4f4f4; - - } - /*applied to the columns.*/ -.MLjqui-grid-column-header, .MLjqui-grid-columngroup-header { - border-style: solid; - border-width: 0px 1px 0px 0px; - border-color: transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -.MLjqui-grid-column-header-rtl, .MLjqui-grid-columngroup-header-rtl { - border-width: 0px 0px 0px 1px; -} -.MLjqui-grid-columngroup-header { - border-bottom-width: 1px; - border-left-width: 1px; -} - /*applied to the column's button.*/ - .MLjqui-grid-column-menubutton { - border-style: solid; - border-width: 0px 0px 0px 1px; - border-color: transparent; - background-image: url('../images/menubutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } -.MLjqui-grid-column-menubutton-rtl { - border-width: 0px 1px 0px 0px; -} - /*applied to the column's sort button when the sort order is ascending.*/ - .MLjqui-grid-column-sortascbutton { - border: none; - background-image: url('../images/sortascbutton.png'); - background-repeat: no-repeat; - background-position: center; - background-color: none; - cursor: pointer; - } - /*applied to the column's sort button when the sort order is descending.*/ - .MLjqui-grid-column-sortdescbutton { - background-image: url('../images/sortdescbutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } - /*applied to the column's filter button.*/ - .MLjqui-grid-column-filterbutton - { - border: none; - background-image: url('../images/filter.png'); - background-repeat: no-repeat; - background-position: center; - } - /*applied to the column's resize line.*/ - .MLjqui-grid-column-resizeline { - border-right: 1px dotted #555; - } - /*applied to the validation popup during cell editing.*/ - .MLjqui-grid-validation - { - background: #df2227 !important; - color: #fff !important; - padding: 4px 8px; - } -.MLjqui-grid-validation-label { - color: #fff !important; - background: #df2227 !important; - border: 1px solid #df2227 !important; -} - .MLjqui-grid-validation-arrow-up - { - background-image: url('../images/red_arrow_up.png'); - background-repeat: no-repeat; - background-position: center center; - } - .MLjqui-grid-validation-arrow-down - { - background-image: url('../images/red_arrow_down.png'); - background-repeat: no-repeat; - background-position: center center; - } - /*applied to the column's resize start line.*/ - .MLjqui-grid-column-resizestartline { - border-right: 1px solid #444; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .MLjqui-grid-sortasc-icon - { - background-image: url('../images/sortasc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .MLjqui-grid-sortdesc-icon - { - background-image: url('../images/sortdesc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grid menu's sort remove item/*/ - .MLjqui-grid-sortremove-icon - { - background-image: url('../images/sortremove.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grouping column's drag and drop item when the drop operation is allowed.*/ - .MLjqui-grid-drag-icon - { - background-image: url('../images/drag.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the grouping column's drag and drop item when the drop operation is not allowed.*/ - .MLjqui-grid-dragcancel-icon - { - background-image: url('../images/dragcancel.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the 'group by' menu item.*/ - .MLjqui-grid-groupby-icon - { - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } -/*applied to the column anchor tags.*/ - .MLjqui-grid-column-header a:link, .MLjqui-grid-column-header a:visited - { - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -.MLjqui-grid-toolbar a:link, .MLjqui-grid-toolbar a:visited { - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -/*applied to the groups header area.*/ - .MLjqui-grid-groups-header, .MLjqui-grid-toolbar, .MLjqui-scheduler-toolbar { - border-style: solid; - border-width: 0px 0px 1px 0px; - border-color: #aaa; - white-space: nowrap; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -/*applied to a grouping row.*/ - .MLjqui-grid-groups-row { - font-weight:bold; - white-space: nowrap; - text-align: left; - padding: 0px; - top: 50%; - margin-top: -8px; - } - /*applied to the row details.*/ - .MLjqui-grid-groups-row-details { - font-weight: normal; - } - /*applied to a grouping column.*/ - .MLjqui-grid-group-column - { - border: 1px solid transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } - /*applied to the lines between the group columns.*/ - .MLjqui-grid-group-column-line - { - background: #aaa; - } - /*applied to the drop line indicators displayed in the grouping header.*/ - .MLjqui-grid-group-drag-line - { - background: #80be09; - } - /*applied to the anchor tags inside a grouping column.*/ - .MLjqui-grid-group-column a:link{ - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); -} - .MLjqui-grid-group-column a:visited{ - color: inherit; - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a grid cell*/ -.MLjqui-grid-cell { - border-style: solid; - border-width: 0px 1px 1px 0px; - margin-right: 1px; - margin-bottom: 1px; - border-color: transparent; - background: #fff; - white-space: nowrap; - font-weight: normal; - font-size: inherit; - overflow: hidden; - text-overflow: ellipsis; - position: absolute !important; - height: 100%; - } -.MLjqui-grid-cell-locked { - color: #aaa !important; -} -.MLjqui-grid-cell-left-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: left; - margin-right: 2px; - margin-left: 4px; -} -.MLjqui-grid-cell-middle-align { - text-overflow: ellipsis; - overflow: hidden; - padding-bottom: 2px; - text-align: center; -} -.MLjqui-grid-cell-right-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: right; - margin-right: 4px; - margin-left: 2px; -} - -/*applied to a grid cell that is part of a rows group.*/ - .MLjqui-grid-group-cell{ - overflow: hidden; - position: absolute !important; - height: 100%; - background: #fff; - } -/*applied to the grid cells in the sort column*/ - .MLjqui-grid-cell-sort { - background-color: #f0f0f0; - } - - /*applied to the grid cells in the filter column*/ - .MLjqui-grid-cell-filter { - background-color: #e6e6e6; - } -.MLjqui-grid-cell-add-new-row { - background: #fdfcf3 !important; - color: #000 !important; -} - - /*applied to the grid cells area.*/ -.MLjqui-grid-content { - border-style: solid; - border-width: 0px 0px 0px 0px; - border-color: transparent; - white-space: nowrap; - overflow: hidden; - } - /*applied to a grid cell that is part of a rows group.*/ -.MLjqui-grid-group-cell, .MLjqui-grid-empty-cell { - border-style: solid; - border-width: 0px 0px 1px 0px; - white-space: nowrap; - font-weight: normal; - } -.MLjqui-widget .MLjqui-grid-cleared-cell, .MLjqui-grid-cleared-cell { - border: transparent !important; -} -.MLjqui-grid-cell-wrap {white-space: normal !important;} - -.MLjqui-tree-grid-indent { - width: 15px; - display: inline-block; - height: 8px; - overflow: hidden; - vertical-align: top; -} -.MLjqui-tree-grid-title { - text-decoration: none; - vertical-align: top; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-tree-grid-collapse-button, .MLjqui-tree-grid-expand-button { - display: inline-block; - margin-top: 0px; - margin-right: 0px; - position: relative; - width: 15px; - height: 16px; - vertical-align: top; -} -.MLjqui-tree-grid-checkbox { - float: none !important; - width: 14px; - height: 14px; - cursor: pointer; - margin-right: 2px !important; - margin-left: 2px !important; -} -.MLjqui-tree-grid-icon { - float: none !important; - width: 14px; - height: 14px; - margin-right: 4px; -} -.MLjqui-tree-grid-icon-rtl { - margin-right: 0px; - margin-left: 4px; -} -.MLjqui-tree-grid-icon-size { - width: 14px; - height: 14px; - line-height: 16px; -} - -.MLjqui-tree-grid-checkbox-tick { - width: 100%; - height: 100%; -} -.MLjqui-tree-grid-expand-button { - height: 16px; - width: 15px; - vertical-align: top; -} - -/*applied to a cell in MLjquiDataTable*/ -.MLjqui-cell { - min-height: 23px; - padding: 4px 4px 2px; - margin: 0; - border-collapse: separate; - border-spacing: 0px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-top-width: 0px; - border-left-width: 0px; - box-sizing: border-box; - -moz-box-sizing: border-box; - white-space: normal; - line-height: 1.231; -} -.MLjqui-grid-cell-nowrap {white-space: nowrap;} - -.MLjqui-cell-editor { - padding-left: 4px !important; - padding-right: 3px !important; -} -.MLjqui-left-align { - text-align: left; -} -.MLjqui-center-align { - text-align: center; -} -.MLjqui-right-align { - text-align: right; -} -.MLjqui-top-align { - vertical-align:top; -} -.MLjqui-bottom-align { - vertical-align: bottom; -} - -.MLjqui-grid-table .MLjqui-grid-cell { - position: static !important; - zoom: 1 !important; -} -/*applied to the Grid's Table element.=========================================================================================================================================================================================================*/ -.MLjqui-grid-table { - font-size: 11px; - table-layout: fixed; - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 0px; - -webkit-overflow-scrolling: touch; - outline: none; - zoom: 1 !important; - empty-cells: show; - border-right: 1px solid #a8a8a8; - line-height: 1.231; - width: auto; - border: none; -} -.MLjqui-grid-table-rtl { - border-left-width: 1px; - border-right-width: 0px; -} -.MLjqui-details table { - border-collapse: collapse; - table-layout: fixed; - border-spacing: 0px; -} - - /*applied to a grid cell that is part of a details row and grouping is enabled.*/ -.MLjqui-grid-group-details-cell { - - } - /*applied to a grid cell that is part of a details row.*/ -.MLjqui-grid-details-cell { - border-width: 0px 1px 0px 0px; - } - /*applied to a grid cell. Represents the alternating cell background.*/ -.MLjqui-grid-cell-alt { - background: #f2f2f2; - } -/*applied to a sorted and alternating grid cell*/ -.MLjqui-grid-cell-sort-alt { - background-color: #e5e5e5; - }/*applied to a sorted and alternating grid cell*/ -.MLjqui-grid-cell-filter-alt { - background-color: #f0f0f0; - } - /*applied to a pinned grid cell.*/ -.MLjqui-grid-cell-pinned { - background-color: #e5e5e5; - } - /*applied to a pinned grid cell. Represents the alternating cell background.*/ -.MLjqui-grid-cell-pinned-alt { - background-color: #e5e5e5; - } - /*applied to a selected grid cell.*/ - .MLjqui-grid-cell-selected { - border-left: 0px solid transparent; - } - .MLjqui-cell-rtl { - border-left-width: 1px; - border-right-width: 0px; - } - .MLjqui-grid-cell-rtl { - border-width: 0px 0px 1px 1px; - } - .MLjqui-grid-table .MLjqui-grid-cell { - border-width: 0px 0px 1px 1px; - } -.MLjqui-grid-table-one-cell { - border: none; - border-right-width: 1px; - border-right-style:solid; - border-right-color:#aaa; -} - - .MLjqui-grid-table .MLjqui-grid-cell:first-child { - border-left-width: 0px; - } - - /*applied to the selection area.*/ - .MLjqui-grid-selectionarea { - border: 1px solid transparent; - opacity: 0.5; - filter: alpha(opacity=50); - } - /*applied to a hovered grid cell.*/ - .MLjqui-grid-cell-hover { - border-color: transparent; - } - /*applied to a grid cell when the grid is empty.*/ - .MLjqui-grid-empty-cell{ overflow: visible; border-bottom: none;} - - /*applied to the Grid when its loading the data.*/ - .MLjqui-grid-load -{ - padding-right: 0px; - background-image: url(../images/loader.gif); - background-position: 50% 50%; - background-repeat: no-repeat; - z-index: 9999; - display: block; -} -/*applied to a group's collapse button.*/ -.MLjqui-grid-group-collapse -{ - padding-right: 0px; - background-image: url(../images/icon-right.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-grid-group-collapse-rtl -{ - padding-right: 0px; - background-image: url(../images/icon-left.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to a group's expand button.*/ -.MLjqui-grid-group-expand, .MLjqui-grid-group-expand-rtl -{ - padding-right: 0px; - background-image: url(../images/icon-down.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*MLjquiProgresBar Style*/ -.MLjqui-progressbar -{ - overflow: hidden; - outline: none; - border: 1px solid transparent; - height: 2em; -} -/*applied to the progressbar's value element*/ -.MLjqui-progressbar-value -{ - outline: none; - border: 0px solid transparent; - height: 100%; -} -/*applied to the progress bar's vertical value element- when the widget's orientation is 'vertical'*/ -.MLjqui-progressbar-value-vertical -{ - outline: none; - border: 0px solid transparent; - height: 100%; - background: transparent; -} -/*applied to the progressbar's text element*/ -.MLjqui-progressbar-text -{ - font-size: 10px; - border: none; -} -/*applied to the progress bar when the widget is in disabled state*/ -.MLjqui-progressbar-disabled -{ - outline: none; - border: 1px solid transparent; - height: 2em; -} - -/*MLjquiMenu Style*/ -.MLjqui-menu -{ - border: 1px solid transparent; - float: none; - margin: 0px; - height: 100%; - padding: 0px; - overflow: hidden; - text-align: left; -} -.MLjqui-menu-dropdown-column -{ - float: left; -} -/*applied to the menu when it is horizontal. Sets the menu's background*/ -.MLjqui-menu-horizontal -{ - margin: 0px; - padding: 0px; - overflow: hidden; - text-align: center; -} -/*applied to the menu when it is vertical. Sets the menu's background*/ -.MLjqui-menu-vertical -{ - text-align: left; -} -/*applied to the sub menu. Sets the sub menu's background*/ -.MLjqui-menu-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - display: none; - float: none; - width: 150px; - border-style: solid; - border-width: 1px; - text-align: left; - padding: 2px; -} -/*applied to the sub menu's ul elements.*/ -.MLjqui-menu-dropdown ul -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - border: none; -} -/*applied to the menu's ul elements.*/ -.MLjqui-menu ul -{ - left: 100%; - margin: 0px; - padding: 2px; - right: 0; - overflow: hidden; - background-color: transparent; - border: none; -} -/*applied to the menu's li elements.*/ -.MLjqui-menu li, .MLjqui-menu-dropdown li -{ - line-height: 1.3 !important; -} -/*applied to the top level menu items.*/ -.MLjqui-menu-item-top -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - left: 100%; - overflow: hidden; - color: inherit; - right: 0; - margin: 0px 1px 0px 1px; - cursor: pointer; -} -/*applied to the sub menu items.*/ -.MLjqui-menu-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - margin: 1px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when the mouse is over the item.*/ -.MLjqui-menu-item-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a top-level menu item when the mouse is over it.*/ -.MLjqui-menu-item-top-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - top: 50%; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when its sub menu is opened.*/ -.MLjqui-menu-item-selected -{ - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a disabled sub menu item.*/ -.MLjqui-menu-item-disabled -{ - -} -/*applied to a top-level menu item when its sub menu is opened.*/ -.MLjqui-menu-item-top-selected -{ - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - cursor: pointer; -} -/*applied to the menu separator items.*/ -.MLjqui-menu-item-separator -{ - text-indent: 0; - background-color: #ddd; - border: none; - list-style: none; - height: 1px; - line-height:0 !important; - padding: 0px; - margin: 1px 2px 1px 2px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - font-size: 1px; -} -/*applied to a sub menu item when it has sub menu items. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-right -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items. Displays down arrow icon.*/ -.MLjqui-menu-item-arrow-down -{ - background-image: url(../images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items. Displays up arrow icon.*/ -.MLjqui-menu-item-arrow-up -{ - background-image: url(../images/icon-up.png); -} -.MLjqui-menu-minimized { - position: relative; -} -.MLjqui-menu-title { - position: relative; - float: right; - margin-top: 4px; - padding-top: 4px; - padding-right: 20px; -} -.MLjqui-menu-minimized-button -{ - background-image: url('../images/icon-menu-minimized.png'); - background-repeat: no-repeat; - background-position: left center; - height: 24px; - width: 24px; - padding: 0px; - margin-left: 7px; - margin-top: 4px; - float : left; -} -.MLjqui-menu-ul-minimized { - display: block!important; - width: auto !important; -} -.MLjqui-menu-ul-minimized ul { - margin-top: 0px; - margin-bottom: 0px; - padding-top: 0px; - padding-bottom: 0px; - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.MLjqui-menu-minimized li:last-child { - padding-bottom: 0px; - margin: 0px; -} -.MLjqui-menu-item-arrow-right, .MLjqui-menu-item-arrow-down, .MLjqui-menu-item-arrow-up, .MLjqui-menu-item-arrow-right { - background-position: 100% 50%; - background-repeat: no-repeat; - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; -} -/*applied to a sub menu item when it has sub menu items. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-left -{ - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; - background-image: url(../images/icon-left.png); - background-position: 0 50%; - background-repeat: no-repeat; -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-right-selected -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays down arrow icon.*/ -.MLjqui-menu-item-arrow-down-selected -{ - background-image: url(../images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays up arrow icon.*/ -.MLjqui-menu-item-arrow-up-selected -{ - background-image: url(../images/icon-up.png); -} -.MLjqui-menu-item-arrow-right-selected, .MLjqui-menu-item-arrow-up-selected, .MLjqui-menu-item-arrow-down-selected, .MLjqui-menu-item-arrow-top-right { - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; - background-position: 100% 50%; - background-repeat: no-repeat; -} -/*applied to a top-level menu item when it has sub menu items. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-top-right -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-left-selected -{ - background-image: url(../images/icon-left.png); -} -/*applied to a top-level menu item when it has sub menu items. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-top-left -{ - background-image: url(../images/icon-left.png); -} -.MLjqui-menu-item-arrow-left-selected, .MLjqui-menu-item-arrow-top-left { - background-position: 0 50%; - background-repeat: no-repeat; - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; -} -/*applied to the anchor elements*/ -.MLjqui-menu-item a:link, .MLjqui-menu-item a:visited, .MLjqui-menu-item a:hover, .MLjqui-menu-item-top a:link, .MLjqui-menu-item-top a:visited, .MLjqui-menu-item-top a:hover -{ - text-decoration: none; - color: inherit; - outline: none; - background-color: transparent; - *color: expression(this.parentNode.currentStyle['color']); -} - -/*applied to the menu widget when it is disabled.*/ -.MLjqui-menu-disabled -{ - cursor: default; -} -/*applied to the anchor elements of all disabled menu items.*/ -.MLjqui-menu-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.MLjqui-menu-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.MLjqui-menu-disabled a:hover -{ - cursor: default; -} -.MLjqui-menu-dropdown -{ - right: -1px; -} - -/*MLjquitree Style*/ -.MLjqui-tree -{ - left: 100%; - right: 0; - float: none; - margin: 0px; - border-style: solid; - border-width: 1px; - padding: 0px; - overflow: hidden; - text-align: left; - outline: none; - white-space: nowrap; - line-height: 14px !important; -} -/*applied to the MLjquiTree root UL element.*/ -.MLjqui-tree-dropdown-root -{ - left: 100%; - padding: 0px 5px 0px 5px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: #fff; - text-align: left; - outline: none; - white-space: nowrap; - margin: 0px; -} -.MLjqui-tree-dropdown-root-rtl { - padding: 0px 5px 0px 0px; - text-align: right; - float: right; - margin: 0px; -} - -/*applied to the MLjquiTree UL elements.*/ -.MLjqui-tree-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px 0px 0px 10px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: transparent; - text-align: left; - outline: none; -} -.MLjqui-tree-dropdown-rtl { - padding: 3px 0px 0px 0px; - text-align: right; -} - -/*applied to a tree item.*/ -.MLjqui-tree-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 3px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - right: 0; - text-align: left; - cursor: default; - text-decoration: none; -} -/*applied to the MLjquiTree LI elements.*/ -.MLjqui-tree-item-li -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - left: 100%; - right: 0; - text-align: left; - outline: none; - margin: 0px; - margin-top: 1px; - padding: 0px; -} -/*applied to the last LI elements in an UL element.*/ -.MLjqui-tree-item-u-last -{ - margin: 0px 0px 0px 0px; -} -/*applied to a tree item when the mouse is over the item.*/ -.MLjqui-tree-item-hover -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -/*applied to a tree item when the item is selected.*/ -.MLjqui-tree-item-selected -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -.MLjqui-tree-item-rtl { - text-align: right; -} -.MLjqui-tree-item-li-rtl { - text-align: right; -} -/*applied to the anchor element of a tree item.*/ -.MLjqui-tree-item a:link, .MLjqui-tree-item a:visited -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - padding: 0px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - text-decoration: none; - outline: none; -} -.MLjqui-tree-item-selected, .MLjqui-tree-item-hover a:hover -{ - color: inherit; -} -.MLjqui-tree-item-selected, .MLjqui-tree-item-hover a:visited -{ - color: inherit; -} - -/*applied to a tree item when the item is disabled.*/ -.MLjqui-tree-item-disabled -{ - -} -/*applied to a tree item when it has sub items and is collapsed. Displays an arrow icon next to the item.*/ -.MLjqui-tree-item-arrow-collapse, .MLjqui-tree-item-arrow-collapse-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(../images/icon-right.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-tree-item-arrow-collapse-rtl, .MLjqui-tree-item-arrow-collapse-hover-rtl { - background-image: url(../images/icon-left.png); -} - -/*applied to a tree item when it has sub items and is expanded. Displays an arrow icon next to the item.*/ -.MLjqui-tree-item-arrow-expand, .MLjqui-tree-item-arrow-expand-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(../images/icon-down.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to the tree when it is disabled.*/ -.MLjqui-tree-disabled -{ - cursor: default; -} -/*applied to the anchor elements in a tree when it is disabled.*/ -.MLjqui-tree-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.MLjqui-tree-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.MLjqui-tree-disabled a:hover -{ - cursor: default; -} - - -/*MLjquiTabs*/ -.MLjqui-tabs -{ - outline: none; - margin: 0 0 0 0; - padding: 0px; - overflow: hidden; - background: transparent; - border: 1px solid transparent; -} -/*applied to the tab close button.*/ -.MLjqui-tabs-close-button -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - position: relative; - left: 5px; -} -/*applied to the tab close button when the tab is selected.*/ -.MLjqui-tabs-close-button-selected -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -/*applied to the tab close button when the mouse is over the tab.*/ -.MLjqui-tabs-close-button-hover -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.MLjqui-tabs-close-button, .MLjqui-tabs-close-button-selected, .MLjqui-tabs-close-button-hover{background-repeat:no-repeat; background-position:center;} -/*applied to the tab's left scroll arrow.*/ -.MLjqui-tabs-arrow-left -{ - outline: none; - position: relative; - z-index: 15; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -/*applied to the tab's right scroll arrow.*/ -.MLjqui-tabs-arrow-right -{ - outline: none; - position: relative; - z-index: 15; - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.MLjqui-tabs-arrow-background -{ - background: #eeeeee; -} -/*applied to the tab's title.*/ -.MLjqui-tabs-title -{ - outline: none; - display: block; - cursor: pointer; - white-space: nowrap; - left: 100%; - right: 0; - text-indent: 0px; - list-style: none; - border: 1px solid transparent; - margin: 0px 2px 0px 0px; - overflow: hidden; - z-index: 1; - padding-left: 13px; - padding-right: 13px; - padding-bottom: 5px; - padding-top: 5px; - background: transparent; - height: auto; - position: relative; -} -.MLjqui-tabs-title-bottom -{ -} -.MLjqui-tabs-title a:link -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:hover -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:active -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:visited -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'top' .*/ -.MLjqui-tabs-title-selected-top -{ - z-index: 99; - outline: none; - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid #fff; - background-color: #fff; - padding-bottom: 7px; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-selected-bottom -{ - outline: none; - border-top: 1px solid #fff; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - padding-top: 7px; - padding-bottom: 5px; - margin-top: -2px; - background-color: #fff; -} -/*applied to the tab's title when the tab is hovered and the MLjquiTab's position property is set to 'top' .*/ -.MLjqui-tabs-title-hover-top -{ - outline: none; - border: 1px solid transparent; - padding-bottom: 5px; -} -/*applied to the tab's title when the tab is hovered and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-hover-bottom -{ - outline: none; - border: 1px solid transparent; - padding-top: 5px; -} -/*applied to the tab's title when the tab is disabled.*/ -.MLjqui-tabs-title-disable -{ - -} -/*applied to the tab's header.*/ -.MLjqui-tabs-header -{ - padding-left: 0px; - padding-right: 0px; - padding-top: 3px; - padding-bottom: 1px; - margin: 0px; - border-top: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid #aaa; - background: #eeeeee; -} -/*applied to the tab's header when the position is bottom.*/ -.MLjqui-tabs-header-bottom -{ - padding-top: 1px; - padding-bottom: 3px; - border-top: 0px solid #a8a8a8; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid transparent; -} -/*applied to the tab's header when the tab is collapsed.*/ -.MLjqui-tabs-header-collapsed -{ - border: 1px solid #a8a8a8; -} -/*applied to the tab's header when the position is bottom and tab is collapsed.*/ -.MLjqui-tabs-header-collapsed-bottom -{ - border: 1px solid #a8a8a8; -} -.MLjqui-tabs-collapsed -{ - border: 0px solid transparent; -} -.MLjqui-tabs-collapsed-bottom -{ - border: 0px solid transparent; -} -/*applied to the tab's selection tracker container element.*/ -.MLjqui-tabs-selection-tracker-container -{ - outline: none; - position: relative; - text-indent: 0px; - margin: 0 0 0 0; - padding: 0 0 0 0; - width: 100%; - background: transparent; - height: 0px; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'top'.*/ -.MLjqui-tabs-selection-tracker-top -{ - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - padding-bottom: 2px; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'bottom'.*/ -.MLjqui-tabs-selection-tracker-bottom -{ - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; - margin-top: -1px; - padding-bottom: 2px; -} -/*applied to the tab's content element which represents a DIV element.*/ -.MLjqui-tabs-content -{ - outline: none; - border-bottom: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - text-align: left; - clear: both; -} -.MLjqui-tabs-content-element -{ - height: 100%; - overflow: auto; -} - -/*MLjquiCheckBox*/ -.MLjqui-checkbox -{ - overflow:hidden; - text-align: left; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; - text-overflow: ellipsis; -} -/*applied to the check box.*/ -.MLjqui-checkbox-default -{ - text-align: left; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when the mouse cursor is over it.*/ -.MLjqui-checkbox-hover -{ - cursor: pointer; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the widget when it is disabled.*/ -.MLjqui-checkbox-disabled -{ - cursor: default; - background: transparent; - padding: 0px; - border: none; - outline: none; - margin: 0px 0px 0px 0px; -} -/*applied to the check box when the widget is disabled.*/ -.MLjqui-checkbox-disabled-box -{ - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when it is checked. Displays a check icon.*/ -.MLjqui-checkbox-check-checked -{ - float: left; - background: transparent url(../images/check_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when the widget is disabled. Displays a disabled check icon.*/ -.MLjqui-checkbox-check-disabled -{ - float: left; - background: transparent url(../images/check_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate.*/ -.MLjqui-checkbox-check-indeterminate -{ - float: left; - background: transparent url(../images/check_indeterminate_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate and it is disabled.*/ -.MLjqui-checkbox-check-indeterminate-disabled -{ - float: left; - background: transparent url(../images/check_indeterminate_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its in rtl mode.*/ -.MLjqui-checkbox-rtl { - float: right; -} -/*MLjquiRadioButton*/ -.MLjqui-radiobutton -{ - overflow:hidden; - text-overflow: ellipsis; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; -} -/*applied to the radio button.*/ -.MLjqui-radiobutton-default -{ - cursor: pointer; - float: left; - background: transparent url(../images/roundbg_classic_normal.png) left center scroll repeat-x; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when the mouse is over it.*/ -.MLjqui-radiobutton-hover -{ - cursor: pointer; - float: left; - background: transparent; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when it is disabled.*/ -.MLjqui-radiobutton-disabled -{ - cursor: default; -} -/*applied to the radio button's radio icon when it is disabled.*/ -.MLjqui-radiobutton-disabled-box -{ -} -/*applied to the radio button when it is checked.*/ -.MLjqui-radiobutton-check-checked -{ - float: left; - background: transparent url(../images/roundbg_check_black.png) left top no-repeat; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 7px; - height: 7px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is checked and disabled.*/ -.MLjqui-radiobutton-check-disabled -{ -} -/*applied to the radio button when it is in indeterminate state.*/ -.MLjqui-radiobutton-check-indeterminate -{ - float: left; - background: transparent url(../images/roundbg_check_indeterminate.png) left top no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 6px; - height: 6px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is in indeterminate state and disabled.*/ -.MLjqui-radiobutton-check-indeterminate-disabled -{ -} -/*applied to the radio button when its in rtl mode.*/ -.MLjqui-radiobutton-rtl { - float: right; -} - -/*MLjquiRating*/ -.MLjqui-rating -{ - margin: 0px; - padding: 0px; - outline: none; - overflow: hidden; -} -.MLjqui-rating-image -{ - border-width: 0px; -} -.MLjqui-rating-image-default -{ - margin: 0px; - padding: 0px; - outline: none; - background-color: transparent; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star.png); - overflow: hidden; -} -/*applied to the rating when it is hovered.*/ -.MLjqui-rating-image-hover -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star_hover.png); - overflow: hidden; -} -/*applied to the rating when it is disabled.*/ -.MLjqui-rating-image-backward -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star_disabled.png); - overflow: hidden; -} -/*MLjquiCalendar Style*/ -.MLjqui-calendar -{ - border: 1px solid transparent; - -webkit-appearance: none; - overflow: hidden; - outline: none; - padding: 0px; - margin: 0 0 0 0; - cursor: default; - border-collapse: separate; -} -.MLjqui-calendar td { - padding-top: 0px; - padding-bottom: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -.MLjqui-calendar table { - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -/*applied to the calendar's row header. This header displays the week numbers.*/ -.MLjqui-calendar-row-header -{ - outline: none; - border: 0px solid #f2f2f2; - padding: 0; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's column. This header displays the day names.*/ -.MLjqui-calendar-column-header -{ - outline: none; - text-align: right; - padding: 3px; - border-top: none; - border-bottom: 1px solid transparent; - border-left: none; - border-right: none; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's top-left header. This header is displayed before the day names and above the week numbers.*/ -.MLjqui-calendar-top-left-header -{ - outline: none; - border: 0px solid #f2f2f2; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's navigation buttons.*/ -.MLjqui-calendar-title-navigation -{ - cursor: pointer; - background-color: transparent; - margin: 0; - padding: 0; - border: none; - width: 25px; - height: 25px; -} -/*applied to the month table*/ -.MLjqui-calendar-month -{ - margin: 0; padding: 0; - border: none; - width: 100%; -} -/*applied to the calendar's title content.*/ -.MLjqui-calendar-title-content -{ - cursor: pointer; - text-align: center; -} -/*applied to the calendar's navigation title.*/ -.MLjqui-calendar-title-header -{ - border-left: none; - border-top: none; - border-right: none; - border-bottom-width: 1px; - border-bottom-style: solid; - margin: 0 0 0 0; -} -.MLjqui-calendar-title-header td { - padding-left: 0px; - padding-right: 0px; - border: none; -} -/*applied to the calendar's navigation title when the calendar is disabled.*/ -.MLjqui-calendar-title-header-disabled -{ - border-bottom-width: 1px; - border-bottom-style:solid; - margin: 0 0 0 0; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - -} -/*applied to a calendar cell.*/ -.MLjqui-calendar-cell -{ - border: 1px solid transparent; - margin: 0px; - outline: none; - text-align: center; - padding: 1px; - cursor: pointer; - background-color: transparent; -} -.MLjqui-calendar-cell td -{ - padding: 0; - margin: 0; -} -/*applied to a calendar cell in decade and year views.*/ -.MLjqui-calendar-cell-decade, .MLjqui-calendar-cell-year { - text-align: center; - } - -.MLjqui-calendar .MLjqui-fill-state-normal -{ - background: transparent; - border: 1px solid transparent; -} - -/*applied to a calendar cell when the cell is hidden. A cell can be hidden when the showOtherMonthDays property is false and the calendar hides the cells with dates from the other months*/ -.MLjqui-calendar-cell-hidden -{ - margin: 0 0 0 0; - visibility: hidden; - cursor: default; -} -/*applied to a calendar cell when the cell's date is a weekend date.*/ -.MLjqui-calendar-cell-weekend -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a special date(holiday, vacation, birthay. See the SpecialDates demo).*/ -.MLjqui-calendar-cell-specialDate -{ - color: #FF0000 !important; - background-color: transparent; - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a restricted date.*/ -.MLjqui-calendar-cell-restrictedDate -{ - background-color: rgba(251, 132, 153, 1); - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -.MLjqui-calendar-cell-selected-invalid -{ - color: #FFF !important; - background: #FF0000 !important; - border: 1px solid #FF0000 !important; -} -/*applied to a calendar cell when the cell's date is the today date.*/ -.MLjqui-calendar-cell-today -{ - color: #898989; - background-color: #ffffdb; - border: 1px solid #fdc066; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is hovered.*/ -.MLjqui-calendar-cell-hover -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is selected.*/ -.MLjqui-calendar-cell-selected -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date represents a date from the previous or next month.*/ -.MLjqui-calendar-cell-othermonth -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the calendar is disabled.*/ -.MLjqui-calendar-cell-disabled -{ - color: #ccc; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers.*/ -.MLjqui-calendar-row-cell -{ - outline: none; - text-align: center; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers and the calendar is disabled.*/ -.MLjqui-calendar-row-cell-disabled -{ - -} -.MLjqui-calendar-footer -{ - margin: 5px; - color: inherit; - font-size: 13px; -} - -.MLjqui-calendar-title-container -{ - overflow: hidden; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names.*/ -.MLjqui-calendar-column-cell -{ - overflow: hidden; - text-align: center; - outline: none; - font-weight: normal; - padding: 1px; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names and the calendar is disabled.*/ -.MLjqui-calendar-column-cell-disabled -{ - -} -/*applied to the calendar's cell area element.*/ -.MLjqui-calendar-view -{ - -webkit-appearance: none; - outline: none; - padding: 0px; - border: 0px solid #fff; - margin: 0 0 0 0; - cursor: default; -} - -/*MLjquiExpander and MLjquiNavigationBar Style*/ -.MLjqui-expander -{ -} -/*applied to the Expander's header and content*/ -.MLjqui-expander-header, .MLjqui-expander-content -{ - border-left-width: 1px; - border-right-width: 1px; - border-left-style: solid; - border-right-style: solid; - padding-top: 5px; - padding-bottom: 5px; - outline: 0; -} -/*applid to the content of the expander header.*/ -.MLjqui-expander-header-content -{ - padding-left: 3px; -} -/*applid to the content of the expander header.*/ -.MLjqui-expander-header-content-rtl -{ - padding-right: 3px; -} - .MLjqui-expander-content{padding-top: 0px;padding-bottom:0px; overflow: auto; outline: 0;} -/*applied to the Expander's header and its content when it is on the top of the header*/ -.MLjqui-expander-header, .MLjqui-expander-content-top -{ - border-top-width: 1px; - border-top-style: solid; -} -/*applied to the Expander's header and its content when it is on the bottom of the header*/ -.MLjqui-expander-header, .MLjqui-expander-content-bottom -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -/*applied to the Expander's header*/ -.MLjqui-expander-header -{ - cursor: pointer; - overflow: hidden; -} -/*applied to the Expander's header when the expander is disabled or the toggleMode is "none"*/ -.MLjqui-expander-header-disabled -{ - cursor: default; -} -/*applied to the Expander's arrow*/ -.MLjqui-expander-arrow -{ - width: 17px; - height: 17px; - position: relative; -} -/*applied to the Expander's content if it is empty*/ -.MLjqui-expander-content-empty -{ - border-width: 0px; - padding: 0px; -} - -/*applied to MLjquiNavigationBar. The NavigationBar internally uses MLjquiExpander's classes and inherits all header and content style settings from the Expander.*/ -.MLjqui-navigationbar -{ - border: none; - margin: 0px; - -webkit-appearance: none; - outline: none; -} -/*MLjquiPanel Style*/ -.MLjqui-panel -{ - border: 1px solid transparent; - -webkit-appearance: none; - outline: none; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the Panel's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.MLjqui-panel-bottomright -{ - -} -/*applied to the DropDownButton's Popup.*/ -.MLjqui-dropdownbutton-popup { - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - } - -.MLjqui-listbox -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the ListBox's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.MLjqui-listbox-bottomright -{ - -} -/*applied to the ListBox's groups.*/ -.MLjqui-listitem-state-group -{ - white-space: nowrap; - padding: 4px 2px 4px 2px; - background: transparent; - font-weight: bold; - text-align: left; - outline: none; - overflow: hidden; - vertical-align: middle; - cursor: default; -} -/*applied to a list item in default state.*/ -.MLjqui-listitem-state-normal -{ - white-space: nowrap; - padding: 3px; - margin: 1px; - border: 1px solid transparent; - outline: none; - visibility: inherit; - display: inherit; - text-align: left; - overflow: hidden; - position: absolute; - left: 0; - top: 0; - cursor: default; -} -/*applied to a list item in hovered state.*/ -.MLjqui-listitem-state-hover -{ - white-space: nowrap; - background: transparent; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -/*applied to a list item when the item is selected.*/ -.MLjqui-listitem-state-selected -{ - white-space: nowrap; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -.MLjqui-listbox-feedback -{ - height: 1px; - border-top: 1px dashed #000; -} -.MLjqui-listitem-element -{ - -ms-touch-action: none; - border: none; - width:100%; - height: 100%; - align:left; - valign:top; - position: absolute; -} -/*MLjquiComboBox Style*/ -/*applied to the MLjquiComboBox's content which displays the text.*/ -.MLjqui-combobox-content -{ - padding: 0px; - overflow: hidden; - padding-left: 0px; - padding-top: 0px; - padding-bottom: 0px; - padding-right: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: none; - border: none; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - border-right: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-combobox-content-rtl { - border: none; - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 0px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 3px; - border-right: none; - border-left: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the ComboBox's input field.*/ -.MLjqui-combobox-input -{ - -webkit-appearance: none; - -webkit-border-radius: 0px; - padding: 0 0 0 0; - outline: none; - border: 0px solid #aaa; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-combobox-input::-ms-clear { - display: none; -} -/*applied to the ComboBox's content when the widget is disabled.*/ -.MLjqui-combobox-content-disabled -{ - color: #AAA; -} -/*applied to the ComboBox's arrow button.*/ -.MLjqui-combobox-arrow-normal, .MLjqui-action-button -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; - border: none; - cursor: pointer; -} -/*applied to the ComboBox's arrow button*/ -.MLjqui-combobox-arrow-hover, .MLjqui-combobox-arrow-selected -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox in normal state.*/ -.MLjqui-combobox-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the mouse is over the widget.*/ -.MLjqui-combobox-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the popup ListBox is shown.*/ -.MLjqui-combobox-state-selected -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the widget is focused.*/ -.MLjqui-combobox-state-focus -{ - border: 1px solid transparent; -} -.MLjqui-combobox-multi-item { - padding: 1px 3px; - margin: 2px; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - -} -.MLjqui-combobox-multi-item a:link, .MLjqui-combobox-multi-item a:visited { - color: inherit; - display: block; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to the ComboBox when the widget is disabled.*/ -.MLjqui-combobox-state-disabled -{ - white-space: nowrap; - margin: 0px; - color: #AAA; -} -/*MLjquiSelect Style*/ -.MLjqui-select { - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - -webkit-appearance: none; - outline: 0 none; -} -.MLjqui-select-content { - cursor: pointer; - text-overflow: ellipsis; -} -.MLjqui-select-container { - padding: 0; -} -.MLjqui-select-item -{ - padding: 3px; - margin: 1px; - white-space: normal !important; - cursor: default; -} -/*MLjquiDropDownList Style*/ -/*applied to the dropdownlist's content element which displays the selected item's text or html.*/ -.MLjqui-dropdownlist-content -{ - padding: 0px; - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: 0 none; - border: none; -} -.MLjqui-dropdownlist-content-rtl { - padding-left: 0px; - padding-right: 3px; -} - -/*applied to the dropdownlist's content element which displays the selected item's text or html and the widget is disabled. */ -.MLjqui-dropdownlist-content-disabled -{ -} -/*applied to the dropdownlist in default state.*/ -.MLjqui-dropdownlist-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in hovered state.*/ -.MLjqui-dropdownlist-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in selected state.*/ -.MLjqui-dropdownlist-state-selected -{ - overflow: hidden; - background-color: transparent; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in focused state.*/ -.MLjqui-dropdownlist-state-focus -{ - border: 1px solid #909090; -} -/*applied to the dropdownlist in disabled state.*/ -.MLjqui-dropdownlist-state-disabled -{ - -} -/*MLjquiScrollBar Style*/ -.MLjqui-scrollbar -{ - background: transparent; - margin: 0; - padding: 0; - border: none; -} -/*applied to the scrollbar in default state.*/ -.MLjqui-scrollbar-state-normal -{ - background: #efefef; - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in default state.*/ -.MLjqui-scrollbar-button-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in hovered state.*/ -.MLjqui-scrollbar-button-state-hover -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in pressed state.*/ -.MLjqui-scrollbar-button-state-pressed -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-normal-horizontal -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the horizontal scrollbar thumb in hovered state.*/ -.MLjqui-scrollbar-thumb-state-hover-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-pressed-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-hover -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-pressed -{ - margin: 0px; - padding: 0px; - background: #d1d1d1; - border: 1px solid #909090; -} - -/* MLjquiWindow */ -.MLjqui-window -{ - position: absolute; - overflow-x: hidden; - overflow-y: auto; - border: 1px solid transparent; - border-radius:5px; - box-shadow:0 4px 4px #777; - -moz-box-shadow:0 4px 4px #777; /* FF3.6+ */ - -webkitbox-shadow:0 4px 4px #777; /* Chrome,Safari4+ */ - -o-box-shadow:0 4px 4px #777; /* Opera 11.10+ */ - -ms-box-shadow:0 4px 4px #777; /* IE10+ */ - /* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -/*applied to the MLjquiWindow when its disabled*/ -.MLjqui-window-disabled -{ -} -/*applied to the windows header*/ -.MLjqui-window-header -{ - outline: none; - border-width: 0px; - overflow: hidden; - height:35px; - line-height:35px; - white-space: nowrap; - overflow: hidden; - background:#e4e4e4; - color:#34373b; - font-size:1.5em; - padding-left:10px; -} - -.MLjqui-window-header-MLkey -{ - outline: none; - border-width: 0px; - overflow: hidden; - height:25px; - line-height:25px; - white-space: nowrap; - overflow: hidden; - background:#fdfdfd; - color:#34373b; - font-size:1.5em; - padding-left:10px; -} -/*applied to the windows header when the window is disabled*/ -.MLjqui-window-header-disabled -{ - -} -/*applied to the windows content*/ -.MLjqui-window-content -{ - outline: none; - overflow: hidden; - text-align: left; - background-color: transparent; - margin-top:0; - padding: 0; - -webkit-background-clip: padding-box; background-clip: padding-box; -} -/*applied to the windows content when the window is disabled*/ -.MLjqui-window-content-disabled -{ - outline: none; - overflow: auto; - text-align: left; - padding: 5px; -} -/*applied to the windows close button*/ -.MLjqui-window-close-button -{ - background:#b2b2b2; - cursor: pointer; - background-image: url(../images/close.png); - background-repeat: no-repeat; -} -.MLjqui-window-close-button-MLkey -{ - width:18px; - height:18px; - background:none; - cursor: pointer; - background-image: url(../images/key/close_nor.gif) no-repeat; - background-repeat: no-repeat; -} -/*applied to the window's collapse button*/ -.MLjqui-window-collapse-button -{ - background-image: url(../images/icon-up.png); - cursor: pointer; - margin-top: 1px; -} -/*applied to the window's collapse button when the window is collapsed*/ -.MLjqui-window-collapse-button-collapsed -{ - margin-top: 0px; - cursor: pointer; - background-image: url(../images/icon-down.png); -} -/*setting styles of the modal windows background*/ -.MLjqui-window-modal -{ - background-color: Black; -} -.MLjqui-window-close-button-hover -{ - background-color:#a0a0a0; -} -.MLjqui-window-close-button-hover-MLkey -{ - /* background-color:#fdfdfd; */ - background:#fdfdfd url(../images/key/close_ovr.gif) no-repeat; - background-image:url(../images/key/close_ovr.gif) no-repeat; -} -.MLjqui-docking -{ - overflow: hidden; -} -.MLjqui-docking-panel -{ - margin: 0px; - padding: 0px; - min-height: 100px; -} -.MLjqui-docking-drop-indicator -{ - border-style: dashed; - border-width: 1px; - margin: 0px; -} -.MLjqui-docking-window -{ - margin: 0px; -} - -/* jxSlider */ -/* applied to MLjquiSlider widget */ -.MLjqui-slider -{ - outline: none; - clear: both; - position: relative; - overflow:hidden; -} -/*applied to the ticks which can be in the top/bottom/both sides of the MLjquiSlider*/ -.MLjqui-slider-tick -{ - border-left: 1px solid transparent; - z-index: 9; -} -/*applied to the ticks when the slider is in horizontal mode*/ -.MLjqui-slider-tick-horizontal -{ - width: 1px; - border-left: none; - margin-top: 1px; -} -/*applied to the ticks when the slider is in vertical mode*/ -.MLjqui-slider-tick-vertical -{ - height: 1px; - border-top: none; -} -/*applied to the ticks container*/ -.MLjqui-slider-tickscontainer -{ - z-index: 10; - position: relative; - margin-top: 0px; - margin-bottom: 0px; - z-index: 9; -} -/*applied to the MLjquiSlider thumb used for changing/indicating current value*/ -.MLjqui-slider-slider -{ - cursor: pointer; - width: 16px; - height: 16px; - z-index: 15; - position: absolute; - left: 0px; - top: 0px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.MLjqui-slider-button -{ - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - box-sizing: content-box !important; -} -/*applied to the slider's thumb when the slider is in horizontal mode*/ -.MLjqui-slider-slider-horizontal -{ - margin-top: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; -} -/*applied to the slider's thumb when the slider is in vertical mode*/ -.MLjqui-slider-slider-vertical -{ - margin-left: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; - } -/*applied to the track where is located the thumb*/ -.MLjqui-slider-track -{ - height: 8px; - float:left; - position: relative; - z-index: 20; -} -/*used in horizontal slider*/ -.MLjqui-slider-track-horizontal -{ - height: 8px; - margin-top: 2px; -} -/*used in vertical slider*/ -.MLjqui-slider-track-vertical -{ - width: 8px; -} -/*applied to the div which is between the thumbs in a range slider or from beginning of the track to the current thumb position in the default slider*/ -.MLjqui-slider-rangebar -{ - -} - -/* MLjquiSplitter */ -.MLjqui-splitter -{ - overflow: hidden; - border: 1px solid transparent; - position: relative; -} -/* Split bar's class when the MLjquiSplitter is with horizontal orientation */ -.MLjqui-splitter-splitbar-vertical -{ - border: 1px solid transparent; - border-top-width: 0px; - border-bottom-width: 0px; - cursor: e-resize; - cursor: col-resize; - position: absolute; -} -/* Split bar's mouse over state */ -.MLjqui-splitter-splitbar-hover -{ - background-color: transparent; -} -/* Split bar's class when the MLjquiSplitter is with horizontal orientation. */ -.MLjqui-splitter-splitbar-horizontal -{ - position: absolute; - border: 1px solid transparent; - border-left-width: 0px; - border-right-width: 0px; - cursor: n-resize; - cursor: row-resize; -} -/* This class is applied to the splitter when it's dragged to it's max left/right boundary */ -.MLjqui-splitter-splitbar-invalid -{ - background: #FF0000 !important; -} -/* This class is added to split bar's collapse button when the splitter is with vectical orientation. */ -.MLjqui-splitter-collapse-button-horizontal -{ - cursor: pointer; - width: 45px; - height: 5px; -} -/* This class is added to split bar's collapse button when the splitter is with horizontal orientation. */ -.MLjqui-splitter-collapse-button-vertical -{ - cursor: pointer; - width: 5px; - height: 45px; -} -/* This class is added when the user disable the splitter. */ -.MLjqui-splitter-splitbar-collapsed -{ - cursor: default; -} -/* Applied to the MLjquiSplitter panels. */ -.MLjqui-splitter-panel -{ - border: none; - outline: none; - position: absolute; - overflow: hidden; -} -/* This class is added to a nested splitter.*/ -.MLjqui-splitter-nested, .MLjqui-splitter-panel-nested -{ - border: none; - overflow: hidden; -} -.MLjqui-draggable -{ - -} -.MLjqui-draggable-dragging -{ - border: 0px solid black; -} -.MLjqui-draggable-disabled -{ - cursor: default; -} -.MLjqui-validator-hint -{ - height: 18px; - width: auto; - display: inline-block; - cursor: pointer; - padding-left: 5px; - padding-right: 5px; - font-family: Verdana; - font-size: 13px; - border: 1px solid #6E0000; - background-color: #942724; - color: #fff; - z-index: 99999; - white-space: nowrap; -} -.MLjqui-validator-hint-arrow -{ - z-index: 99999; - height: 9px; - width: 9px; - padding: 0px; - margin: 0px; - background-color: transparent; - background-image: url(../images/multi-arrow.gif); -} -.MLjqui-validator-error-label { - color: #dd4b39; - vertical-align:top; - text-align: left; - display: block; - cursor: default; - line-height: 17px; - } -.MLjqui-validator-error-element { - border-color: #dd4b39 !important; -} - -.MLjqui-switchbutton -{ - outline: none; - overflow: hidden; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border: 1px solid #ccc; -} -.MLjqui-switchbutton-thumb -{ - display: inline-block; - cursor: pointer; - border: 1px solid #ccc; -} -.MLjqui-switchbutton-label -{ - font-size: 15px; - font-family: Sans-Serif; - text-align: center; - text-transform: uppercase; - font-weight: bold; -} -.MLjqui-switchbutton-wrapper -{ -} -.MLjqui-switchbutton-label-on -{ - -} -.MLjqui-switchbutton-label-off -{ - -} - -/*left, right, up and down arrow icons.*/ -.MLjqui-left-arrow -{ - background: transparent; - background-image: url('../images/icon-left.png'); - cursor: pointer; -} -.MLjqui-right-arrow -{ - background: transparent; - background-image: url('../images/icon-right.png'); - cursor: pointer; -} -.MLjqui-icon-delete -{ - background-image: url('../images/icon-delete.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-edit -{ - background-image: url('../images/icon-edit.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-save -{ - background-image: url('../images/icon-save.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-cancel -{ - background-image: url('../images/icon-cancel.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-up, .MLjqui-icon-arrow-up-hover, .MLjqui-icon-arrow-up-selected -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down, .MLjqui-icon-arrow-down-hover, .MLjqui-icon-arrow-down-selected -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} - -.MLjqui-icon-arrow-left, .MLjqui-icon-arrow-left-hover, .MLjqui-icon-arrow-left-selected -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right, .MLjqui-icon-arrow-right-hover, .MLjqui-icon-arrow-right-selected -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-first, .MLjqui-icon-arrow-first-hover, .MLjqui-icon-arrow-first-selected -{ - background-image: url('../images/icon-first.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-last, .MLjqui-icon-arrow-last-hover, .MLjqui-icon-arrow-last-selected -{ - background-image: url('../images/icon-last.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-up-hover -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down-hover -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-left-hover -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right-hover -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} - -.MLjqui-icon-arrow-up-selected -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down-selected -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-left-selected -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right-selected -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close -{ - cursor: pointer; - background-image: url(../images/btn_hd_close.png); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close-MLkey -{ - cursor: pointer; - background-image: url(../images/key/close_nor.gif); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close-white { - background-image: url(../images/close_white.png); - } -.MLjqui-icon-close-hover -{ - cursor: pointer; - background-image: url(../images/close.png); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-search -{ - cursor: pointer; - background-image: url(../images/search.png); - background-repeat: no-repeat; - background-position: center; - margin-top: 1px; - background-size: 13px; - width: 13px; - height: 13px; -} -.MLjqui-icon-plus -{ - background-image: url(../images/plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.MLjqui-icon-plus-alt, .MLjqui-icon-plus-alt-white -{ - background-image: url(../images/icon-plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.MLjqui-icon-plus-alt-white { - background-image: url(../images/icon-plus-white.png); -} -/* MLjquiScrollView */ -.MLjqui-scrollview-button -{ - width: 10px; - height: 10px; - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - display: inline-block; - margin: 2px; - cursor: pointer; - background-color: #aaaeaf; -} -.MLjqui-scrollview -{ - background-color: #000; - -ms-touch-action: auto !important; -} -.MLjqui-icon-calendar, .MLjqui-icon-calendar-hover, .MLjqui-icon-calendar-pressed -{ - background-image: url('../images/icon-calendar.png'); - background-repeat: no-repeat; - background-position: left top; - position: relative; - width: 15px !important; - height: 15px !important; - margin-top: -7.5px !important; -} -/*applied to Inputs*/ -.MLjqui-input{overflow: hidden; background-color: inherit; border-color: #c7c7c7;} -.MLjqui-input-invalid { - color: red !important; -} -.MLjqui-input-group {overflow: hidden;} -.MLjqui-input-group-addon {border: 1px solid transparent; position: relative; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important; padding: 2px 8px !important; float: left; white-space: nowrap; vertical-align: middle; } -.MLjqui-input-group-addon:first-child { - border-right-width: 0px; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; -} -.MLjqui-input-group-addon:last-child { - border-left-width: 0px; - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; -} -.MLjqui-input-group-addon:not(:last-child):not(:first-child) { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; - border-left-width: 0px; -} -.MLjqui-input-group .MLjqui-input { - padding: 2px 1px !important; - border-left-width: 1px !important; - border-right-width: 1px !important; -} -.MLjqui-editor { - border-style: solid; - border-width: 1px; - border-color: transparent; - overflow: hidden; - box-sizing: border-box !important; -} -.MLjqui-editor-window { - overflow: hidden; -} -.MLjqui-editor-inline { - padding: 0px; - border-width: 1px; - border-style: solid; - border-color: transparent; -} -.MLjqui-editor-inline p { - margin: 0px;padding:0 .2em; -} -.MLjqui-editor-inline-focus { - border-width: 1px; - border-style: solid; - overflow: auto; -} -.MLjqui-editor iframe { - border: 0; - margin: 0; - padding: 0; - background: #fff; - display: inline; - vertical-align: top; - width: 100%; - height: 100%; -} -.MLjqui-editor-color-bar { - height: 3px; -} -.MLjqui-editor-color-picker table { - margin: 0; - padding: 0 4px 4px; - empty-cells: show; - border-collapse: separate; -} -.MLjqui-editor-color-picker td { - border-collapse: separate; - border: 1px solid transparent; - cursor: pointer; - margin: 0; - position: relative; -} -.MLjqui-editor-color-picker td:hover { - border: 1px solid #000; -} -.MLjqui-editor-color-picker-selected-cell { - outline: 1px solid #000; -} -.MLjqui-editor-color-picker td div{ - width: 16px; - height: 16px; -} -.MLjqui-editor-content { - width: 100%; - border-style: solid; - border-width: 1px; - outline: 0; - left: 0px; - position: relative; - box-sizing: border-box !important; -} -.MLjqui-editor-container { - position: relative; - padding: 4px; - padding-top: 0px; - width: 100%; - height: 100%; - box-sizing: border-box !important; -} -.MLjqui-editor-toolbar-container { - top: 0px; left: 0px; - box-sizing: border-box !important; -} -.MLjqui-editor-toolbar-inline { - padding: 0px 4px; - border-width: 1px; - border-style: solid; -} -.MLjqui-editor-toolbar { - margin: 0; - padding: 0px; - padding-bottom: 4px; -} -.MLjqui-editor-toolbar-icon { - height: 21px; - width: 21px; - vertical-align: middle; - opacity: .667; - margin: 2px 0; - background: url('../images/html_editor.png') no-repeat; -} -.MLjqui-editor-toolbar-icon-bold { - background-position: 0px 0px !important; -} -.MLjqui-editor-toolbar-icon-italic { - background-position: -21px 0px !important; -} -.MLjqui-editor-toolbar-icon-underline { - background-position: -42px 0px !important; -} -.MLjqui-editor-toolbar-icon-fontname { - background-position: -63px 0px !important; -} -.MLjqui-editor-toolbar-icon-fontsize { - background-position: -84px 0px !important; -} -.MLjqui-editor-toolbar-icon-createlink { - background-position: -147px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertorderedlist { - background-position: -168px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertunorderedlist { - background-position: -189px 0px !important; -} -.MLjqui-editor-toolbar-icon-outdent { - background-position: -210px 0px !important; -} -.MLjqui-editor-toolbar-icon-indent { - background-position: -231px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertimage { - background-position: -337px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifyleft { - background-position: -252px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifycenter { - background-position: -273px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifyright { - background-position: -294px 0px !important; -} -.MLjqui-editor-toolbar-icon-removeformat { - background-position: -316px 0px !important; -} -.MLjqui-editor-toolbar-icon-viewsource { - background-position: -359px 0px !important; -} -.MLjqui-editor-toolbar-icon-forecolor { - background-position: -105px 0px !important; - height: 15px; -} -.MLjqui-editor-toolbar-icon-backcolor { - background-position: -380px 0px !important; - height: 15px; -} - -.MLjqui-editor-toolbar-icon:hover { - opacity: 1; -} -.MLjqui-fill-state-disabled .MLjqui-editor-toolbar-icon { - opacity: .667; -} -.MLjqui-editor-toolbar-item { - display: inline-block; - margin-left: 2px; - vertical-align: middle; -} -.MLjqui-editor-toolbar-separator { - border-left: 1px solid #ccc; - margin: 0 2px; - outline: none; - overflow: hidden; - padding: 0; - text-decoration: none; - vertical-align: middle; - width: 0; - display: inline-block; -} -.MLjqui-editor-toolbar-group { - display: inline-block; - margin-right: 4px; - margin-top: 4px; - white-space: nowrap; -} -.MLjqui-editor-toolbar-button { - text-decoration: none; - vertical-align: middle; - cursor: default; - display: inline-block; - padding: 0px !important; - margin-right: 2px; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button { - margin-right: -1px; - box-shadow: none; - position: relative; - margin-left: 0px !important; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button:hover, .MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button:active { - z-index: 55; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button.MLjqui-fill-state-normal { - background: transparent !important; -} - -.MLjqui-date-time-input-popup table td a -{ - border: 1px transparent solid; - width: 100%; - display: inline-block; - margin: 0; - padding: 0; - outline: 0; - color: #333; -} -.MLjqui-date-time-input-popup table td input { - width: 25px; - margin: 0; - text-align: center; - padding: 4px 6px; - height:20px; - line-height: 20px; - vertical-align: middle; -} - -.MLjqui-scheduler .MLjqui-cell { - padding: 0px !important; - cursor: default; -} -.MLjqui-scheduler .MLjqui-widget-header.MLjqui-grid-header -{ - border-bottom-color: transparent; - border-bottom-width: 0px; -} -.MLjqui-scheduler .MLjqui-grid-column-header, .MLjqui-scheduler.MLjqui-widget .MLjqui-grid-column-header -{ - border-bottom: 1px solid #c5c5c5; -} - -.MLjqui-scheduler-all-day-cell -{ - text-align: left; -} -.MLjqui-scheduler-all-day-cell span -{ - margin-left:3px; -} - -.MLjqui-scheduler-month-cell { - background: #f2f2f2; - color: #000; - opacity: 0.8; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: inherit; - vertical-align: top; - text-align: left; -} -.MLjqui-scheduler-month-cell-touch { - background: transparent; - border:none; - vertical-align:middle; - text-align:center; -} -.MLjqui-scheduler-month-cell-popup { - border: 1px solid #333; - background: #f2f2f2; - box-shadow: 0 5px 0px rgba(0,0,0,.15)!important; -} -.MLjqui-widget .MLjqui-scheduler-middle-cell, .MLjqui-scheduler-middle-cell { - border-bottom-color: #ddd !important; -} -.MLjqui-scheduler-cell-selected.MLjqui-scheduler-middle-cell -{ - border-bottom-style:dotted; -} -.MLjqui-scheduler-work-time-cell -{ - background: #fff; -} -.MLjqui-scheduler-not-work-time-cell -{ - background: #eee; -} -.MLjqui-scheduler-month-outer-cell -{ - color: #555; -} -.MLjqui-scheduler-month-weekend-cell -{ - background: #eee; -} -.MLjqui-scheduler-disabled-cell { - background: #e9edf1; -} -.MLjqui-scheduler-toolbar -{ - font-size: 14px; -} -.MLjqui-scheduler-time-column, .MLjqui-scheduler-toolbar { - background-image: none !important; - background: #fff !important; - color: #333 !important; -} -.MLjqui-scheduler-week-number-column { - background: #e8e8e8 !important; - color: #333; -} -.MLjqui-scheduler-time-column-header-cell -{ - border-left-color:transparent !important; -} -.MLjqui-scheduler-time-column-header-cell-rtl -{ - border-right-color:transparent !important; -} -.MLjqui-scheduler-appointment { - overflow: visible; - border: 1px solid #555; - white-space:pre-line; - cursor:pointer; - vertical-align: middle; - text-overflow:ellipsis; - user-select: none; -} -.MLjqui-scheduler-appointment-rtl { - direction: rtl; - text-align: right; -} - -.MLjqui-scheduler-appointment-content { - overflow: hidden; - text-overflow:ellipsis; - height:100%; - padding-left:5px; - padding-right:5px; -} -.MLjqui-scheduler-appointment-inner-content { - overflow:hidden; - width:100%; - text-overflow: ellipsis; - padding-bottom: 3px; -} -.MLjqui-scheduler-appointment-duration-status { - height: 0px; - border-bottom-width: 2px; - border-bottom-style: dotted; - border-color: #f05c2d; - background: #f05c2d; - position:absolute; - bottom: -1px; left: 0px; - border-radius: 5px; -} -.MLjqui-scheduler-appointment-status { - width: 4px; - height: 100%; - border-right-width: 1px; - border-right-style:solid; - position:absolute; - top: 0px; left: 0px; -} -.MLjqui-scheduler-appointment-status-rtl { - width: 4px; - height: 100%; - border-right-width: 0px; - border-right-style:none; - border-left-width: 1px; - border-left-style:solid; - position:absolute; - top: 0px; right:0px; -} -.MLjqui-scheduler-appointment-status-stripes { - background-image: url('../images/stripes.png'); - background-repeat:repeat-y; - background-position: left top; -} -.MLjqui-scheduler-appointment-resize-indicator { - width: 4px; - height: 4px; - position: absolute; - border: 1px solid black; - background: white; - display: none; -} -.MLjqui-scheduler-appointment-top-resize-indicator { - top: -3px; - left: 50%; - margin-left:-2px; - cursor: row-resize; -} -.MLjqui-scheduler-appointment-bottom-resize-indicator { - cursor: row-resize; - bottom: -3px; - left: 50%; - margin-left:-2px; -} -.MLjqui-scheduler-appointment-left-resize-indicator { - cursor: col-resize; - top: 50%; - left: -3px; - margin-top: -2px; -} -.MLjqui-scheduler-appointment-right-resize-indicator { - cursor: col-resize; - top: 50%; - margin-top: -2px; - right: -3px; -} - -.MLjqui-scheduler-appointment span { - vertical-align: middle; - text-overflow:ellipsis; - position: relative; - top: -1px; -} -.MLjqui-scheduler-feedback-appointment { - opacity: 0.7; - position:absolute; - z-index:99999; -} -.MLjqui-scheduler-selected-appointment { - border: 1px solid #316293 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - white-space:pre-line; -} -.MLjqui-scheduler-appointment:hover { - border: 1px solid #3f7ebe !important; - } -.MLjqui-scheduler-feedback-drag-appointment { - background: #aaa !important; -} -.MLjqui-icon-recurrence, .MLjqui-icon-recurrence-exception,.MLjqui-icon-recurrence-white, .MLjqui-icon-recurrence-exception-white, .MLjqui-icon-time -{ - background-image: url('../images/icon-recurrence.png'); - background-repeat: no-repeat; - background-position: center; - width: 16px; - height: 16px; - float: left; - margin:3px; - margin-left:5px; -} -.MLjqui-icon-time -{ - background-image: url('../images/icon-time.png'); - margin:0px; - position: relative; - left: 1px; - margin-top:-8px; -} -.MLjqui-icon-time-white -{ - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-icon-recurrence-exception -{ - background-image: url('../images/icon-recurrence-exception.png'); -} -.MLjqui-icon-recurrence-exception-white { - background-image: url('../images/icon-recurrence-exception-white.png'); -} -.MLjqui-icon-recurrence-white { - background-image: url('../images/icon-recurrence-white.png'); - } -.MLjqui-scheduler-cell-hover { - border-color: #3f7ebe !important; - background: #a2c0df !important; -} -.MLjqui-scheduler-cell-selected { - border-color: #316293 !important; - background: #2f7eb6 !important; -} -.MLjqui-scheduler-edit-dialog-label { - clear: both; - float: left; - margin-left: 2%; - padding: 4px; - text-align: right; - width: 18%; - line-height: 25px; -} -.MLjqui-scheduler-edit-dialog-field { - clear: right; - float: right; - margin-right: 2%; - padding: 4px; - width: 72%; -} -.MLjqui-scheduler-edit-dialog-label-rtl { - clear: both; - float: right; - margin-left: 0px; - margin-right: 2%; - padding: 4px; - text-align: left; - width: 18%; - line-height: 25px; -} -.MLjqui-scheduler-edit-dialog-field-rtl { - clear: left; - float: left; - margin-right: 0px; - margin-left: 2%; - padding: 4px; - width: 72%; -} -.MLjqui-scheduler-legend-bar -{ - overflow:hidden; - border-color:inherit; - border: none; -} -.MLjqui-scheduler-legend-bar-bottom -{ - border-top-width: 1px; - border-top-style:solid; -} -.MLjqui-scheduler-legend-bar-top -{ - border-bottom-width: 1px; - border-bottom-style:solid; -} -.MLjqui-scheduler-legend { - width:14px; - height:14px; - float: left; - margin-right: 3px; - border-style:solid; - border-width:1px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.MLjqui-scheduler-legend-label { - float: left; - margin-right: 12px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-date { - color: #fff; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-time { - color: #fff; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-appointment, .MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-appointment-rtl { - color: #fff; -} - -.MLjqui-scheduler-agenda-date { - padding-top:5px; - padding-bottom:5px; -} -.MLjqui-scheduler-agenda-time { - padding: 5px; -} -.MLjqui-scheduler-agenda-appointment, .MLjqui-scheduler-agenda-appointment-rtl { - cursor: pointer; -} -.MLjqui-scheduler-agenda-appointment-resource, .MLjqui-scheduler-agenda-appointment-resource-rtl { - margin: 5px; - cursor: pointer; -} -.MLjqui-scheduler-agenda-appointment-resource-rtl, .MLjqui-scheduler-agenda-appointment-rtl { - float: right; -} -.MLjqui-scheduler-agenda-day { - margin: 3px; - font-size: 33px; - font-weight: normal; -} -.MLjqui-scheduler-agenda-week { - font-style: normal; - font-size:13px; -} -.MLjqui-scheduler-agenda-date { - font-size: 10px; -} -.MLjqui-scheduler-cell-focus -{ - border-style:dotted; - border-color: #59a0d5 !important; - background: #59a0d5 !important; -} -/*applied to all widgets*/ -.MLjqui-widget{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; zoom: 1 !important; color: #000000; -moz-background-clip: padding; background-clip: padding-box; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-appearance: none; -webkit-background-clip: padding-box; direction: ltr !important; -webkit-tap-highlight-color: rgba(0,0,0,0); font-size: 11px;} - -.MLjqui-item{-ms-touch-action: none; -moz-box-sizing: content-box; box-sizing: content-box; color: inherit; -webkit-text-size-adjust: none;} - -/*applied to containers to set a background and border color. Tabs, NavigationBar, Calendar content.*/ -.MLjqui-widget-content {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; -moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); color:#34373b; border-color: #a8a8a8; background: #fff;} -/*applied to header areas. Tabs, Menu, Window, Calendar.*/ -.MLjqui-widget-header {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;-moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); border-color: #a8a8a8; font-weight:bold;} - -.MLjqui-tb-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 11px; border-color:#aaa; background: #efefef; } -.MLjqui-tb-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:; background: #e5f1ff;} -.MLjqui-tb-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:; background: #1672e4; color:#ffffff;} -.MLjqui-tb-fill-state-focus {border-color: #555; } -.MLjqui-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 13px; border-color:#aaa; background: #efefef; } -.MLjqui-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #e8e8e8;} -.MLjqui-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #d1d1d1;} -.MLjqui-fill-state-focus {border-color: #555; } -.MLjqui-fill-state-disabled {cursor: default; color: #000; opacity: .55; filter:Alpha(Opacity=45);} -.MLjqui-fill-state-normal td, .MLjqui-fill-state-hover td, .MLjqui-fill-state-pressed td, .MLjqui-fill-state-disabled td, .MLjqui-fill-state-focus td, .MLjqui-widget td, .MLjqui-widget-content td, .MLjqui-widget-header td { - box-sizing: border-box; -moz-box-sizing: border-box; -} -.MLjqui-widget .MLjqui-grid-cell, .MLjqui-widget .MLjqui-grid-column-header, .MLjqui-widget .MLjqui-grid-group-cell {border-color:;} -.MLjqui-widget .MLjqui-grid-column-menubutton, .MLjqui-widget .MLjqui-grid-column-sortascbutton, .MLjqui-widget .MLjqui-grid-column-sortdescbutton, .MLjqui-widget .MLjqui-grid-column-filterbutton -{ - background-color: transparent; - border-color: #aaa; -} -.MLjqui-grid-column-header a:link, .MLjqui-grid-column-header a:visited -{ - *color: expression(this.parentNode.currentStyle['color']); -} -.MLjqui-grid-bottomright, .MLjqui-panel-bottomright, .MLjqui-listbox-bottomright -{ - background-color: #e5e5e5; -} - -.MLjqui-tabs-title-selected-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-selected-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'top'.*/ -.MLjqui-tabs-selection-tracker-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'bottom'.*/ -.MLjqui-tabs-selection-tracker-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; -} -/*MLjquiMaskedInput and MLjquiNumberInput Styles*/ -.MLjqui-input -{ - -webkit-appearance: none; - padding: 0 0 0 0; - outline: none; - border-width: 1px; - border-style: solid; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -input[type=text].MLjqui-input, input[type=password].MLjqui-input { - min-height: 16px; - min-width: 16px; - margin: 0px; - border-width: 1px; - border-style: solid; - font-size: 13px; - padding: 0px; - padding-left:3px; - padding-right: 3px; -} -.MLjqui-input::-ms-reveal { - display: none; -} -.MLjqui-input::-ms-clear { - display: none; -} -.MLjqui-input-content::-ms-clear { - display: none; -} -.MLjqui-input::-ms-value { - margin: 0px; - padding: 0px; - min-height: 13px; - line-height: 13px; -} - -/*applied to the input when the validation fails.*/ -.MLjqui-input-invalid -{ - border-color: #dd4b39 !important; -} - -/*applied to the input's content.*/ -.MLjqui-input-content -{ - -webkit-appearance: none; - padding: 1px; - resize: none; - outline: none; - outline-width: 0px; - -webkit-user-modify:inherit; -moz-user-modify:inherit; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the input when it is disabled.*/ -.MLjqui-input-disabled -{ - -webkit-appearance: none; - resize: none; - outline: none; - outline-width: 0px; -} -/*applied to the list menu.*/ -.MLjqui-listmenu-widget { - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget .MLjqui-widget-content{ - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget .MLjqui-widget-header{ - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget li{ - -ms-touch-action: auto; -} -.MLjqui-menu-popup { - -} -.MLjqui-menu-vertical -{ - background-color: #efefef; -} -.MLjqui-color-picker -{ - -} -.MLjqui-color-picker-panel -{ -} -.MLjqui-color-picker-map -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/map-saturation.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.MLjqui-color-picker-map-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/map-hue.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.MLjqui-color-picker-map-overlay -{ - background-color: transparent; - background-image: url('../images/colorpicker/map-saturation-overlay.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-bar -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/bar-saturation.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-bar-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/bar-hue.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-preview -{ - border: 1px solid #A0A0A0; -} -.MLjqui-color-picker-pointer -{ - background-image: url('../images/crosshair.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.MLjqui-color-picker-pointer-alt -{ - background-image: url('../images/crosshair-white.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.MLjqui-color-picker-bar-pointer -{ - background-image: url('../images/pointer.png'); - background-repeat: no-repeat; - height: 15px; - margin-left: 6px; - background-position: right top; -} -.MLjqui-icon -{ - width: 16px; - height: 16px; - margin: 0 auto; - position: relative; - top: 50%; - margin-top: -8px; -} -.MLjqui-input-icon -{ - width: 13px; - height: 13px; - margin: 0 auto; -} -.MLjqui-scrollbar-thumb-state-normal-touch -{ - border-color:#c3c3c3; background: #c3c3c3; -} -.MLjqui-touch, .MLjqui-touch .MLjqui-fill-state-normal, .MLjqui-touch .MLjqui-widget-content, .MLjqui-touch .MLjqui-widget-header, .MLjqui-touch a:link{} -.MLjqui-scrollbar .MLjqui-icon-arrow-up{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-down{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-left{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-right{width: 100%; height: 100%;} -/*MLjqui-listmenu*/ -.MLjqui-listmenu-widget -{ - border-width: 1px; - border-style: solid; -} -ol.MLjqui-listmenu, ul.MLjqui-listmenu -{ - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - line-height: 1; - counter-reset: section; -} -.MLjqui-listmenu li -{ - margin-left: 0px; - list-style: none; - line-height: 1; -} -.MLjqui-listmenu -{ - width: 100%; -} -.MLjqui-listmenu-header -{ - padding: 15px; -} -.MLjqui-listmenu-item -{ - cursor: pointer; - padding: 15px; - float: none; - overflow: hidden; - text-align: left; - position: relative; -} - -.MLjqui-listmenu-separator -{ - padding: 10px; - counter-reset: section; -} -.MLjqui-listmenu-header-label -{ - margin-left: 30px; -} -.MLjqui-listmenu-arrow-right -{ - width: 16px; - height: 16px; - position: absolute; - top: 50%; - margin-top: -7px; - right: 7px; -} -.MLjqui-listmenu-arrow-rtl { - right: 0px; - left: 7px; -} -.MLjqui-listmenu-arrow-right-pressed -{ - width: 16px; - height: 16px; -} -.MLjqui-listmenu-header .MLjqui-button -{ - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -o-border-radius: 10px; - border-radius: 10px; - padding: 6px 10px; -} -.MLjqui-listmenu-filter-input -{ - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - border: 1px solid; - outline: none; - width: 97%; - padding: 3px; - padding-left: 10px; - padding-right: 10px; - border-color: #c7c7c7; - background-color: #fff; - font-size: 20px; - min-height: 25px !important; - height: 25px; -} -.MLjqui-listmenu-filter -{ - text-align: center; - padding: 4px; -} -ol li .MLjqui-listmenu-item-label:before -{ - content: counter(section) ". "; - counter-increment: section; -} -.MLjqui-listmenu div -{ - clear: both; -} -.MLjqui-listmenu-auto-separator -{ -} -.MLjqui-listmenu-item-readonly -{ - cursor: default; -} -.MLjqui-tooltip -{ - position: absolute; - width: auto; - height: auto; -} -.MLjqui-tooltip-main -{ - position: relative; - width: 100%; - height: 100%; - text-align: center; - filter: inherit; - border-style: solid; - border-width: 1px; -} -.MLjqui-tooltip-text -{ - padding: 5px 8px; - overflow: hidden; - filter: inherit; -} -.MLjqui-tooltip, .MLjqui-tooltip-text, .MLjqui-tooltip-main { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-tooltip-arrow -{ - position: absolute; - width: 0px; - height: 0px; - display: block; - border-style: solid; - margin: -6px 0 0 -7px; - background: transparent !important; - filter: inherit; -} -.MLjqui-tooltip-arrow-t-b -{ - border-left-color: transparent !important; - border-right-color: transparent !important; -} -.MLjqui-tooltip-arrow-l-r -{ - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} -/*Sets the text-alignment to right.*/ -.MLjqui-rtl{text-align: right !important;} -.MLjqui-shadow{ - -webkit-box-shadow: 0 2px 3px rgba(0,0,0,.15)!important; - -moz-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - -o-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; -} -.MLjqui-noshadow { - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.MLjqui-passwordinput-password-icon, .MLjqui-passwordinput-password-icon-rtl -{ - background-image: url(../images/icon-showpassword.png) !important; - background-repeat: no-repeat !important; - width: 14px; - height: 9px; -} -.MLjqui-passwordinput-password-icon-ltr -{ - background-position: right !important; -} -.MLjqui-passwordinput-password-icon-rtl -{ - background-position: left !important; -} -.MLjqui-passwordinput-password-strength-inicator -{ - width: 20%; - height: 5px; - margin-top: 5px; -} -/*top rounded Corners*/ -.MLjqui-rc-t-expanded -{ - -moz-border-radius-topleft: 0px !important; - -webkit-border-top-left-radius: 0px !important; - border-top-left-radius: 0px !important; - -moz-border-radius-topright: 0px !important; - -webkit-border-top-right-radius: 0px !important; - border-top-right-radius: 0px !important; -} -/*bottom rounded Corners*/ -.MLjqui-rc-b-expanded -{ - -moz-border-radius-bottomleft: 0px !important; - -webkit-border-bottom-left-radius: 0px !important; - border-bottom-left-radius: 0px !important; - -moz-border-radius-bottomright: 0px !important; - -webkit-border-bottom-right-radius: 0px !important; - border-bottom-right-radius: 0px !important; -} -.MLjqui-treemap-rectangle { - font-size: 13px; - font-weight: normal; - border: 1px solid #555; - color: #222; - text-shadow: 0px 0px 0px; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-treemap-label { - text-overflow: ellipsis; - overflow: hidden; -} -.MLjqui-treemap-rectangle-parent { - color: #222; - font-size: 15px; - font-family: Verdana; - font-weight: bold; -} -.MLjqui-treemap-legend-label { - color: #fff; -} -.MLjqui-treemap-legend { - width: 350px; - background-color: rgba(0, 0, 0, 0.1); - z-index: 41; - overflow: hidden; -} -.MLjqui-treemap-legend-table { - table-layout: fixed; - width: 100%; -} -.MLjqui-treemap-legend-color { - height: 3px; -} -.MLjqui-treemap-legend-values { - height: 12px; - width: 100%; -} -.MLjqui-treemap-legend-value { - font-size: 9px; - position: absolute; - color: #fff; -} -.MLjqui-treemap-rectangle-hover { - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - z-index: 40; -} -/*MLjquiRangeSelector*/ -.MLjqui-rangeselector, .MLjqui-rangeselector-content, .MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers, -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-shutter -{ - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-sizing: content-box !important; -} -.MLjqui-rangeselector-markers { - -} -.MLjqui-rangeselector-content, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-labels, .MLjqui-rangeselector-shutter, .MLjqui-rangeselector-markers, .MLjqui-rangeselector-marker-arrow -{ - position: absolute; -} -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-shutter, .MLjqui-rangeselector-slider -{ - height: 100%; -} -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-slider -{ - width: 100%; - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} -.MLjqui-rangeselector-group-labels-rtl, .MLjqui-rangeselector-group-labels-ticks, .MLjqui-rangeselector-slider -{ - float: left; -} -.MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers, .MLjqui-rangeselector-marker-arrow -{ - border-style: solid; -} -.MLjqui-rangeselector-ticks, .MLjqui-rangeselector-group-labels-ticks -{ - width: 1px; - background: #aaa; -} -.MLjqui-rangeselector-labels, .MLjqui-rangeselector-markers -{ - white-space: nowrap; - width: auto; -} -.MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers -{ - border-width: 1px !important; -} -.MLjqui-rangeselector-ticks-container -{ - background-color: transparent; - position: relative; -} -.MLjqui-rangeselector-shutter -{ - opacity: 0.75; - background: #efefef; - border-width: 0px !important; -} -.MLjqui-rangeselector-slider -{ - background-color: transparent !important; - border-top: none !important; - background-image: none !important; - border-bottom: none !important; - border-color: #aaa; - border-right-color: transparent !important; - position: relative; - overflow: hidden; -} -.MLjqui-rangeselector-inner-slider -{ - position: absolute; - right: 0; - background: #aaa; - width: 1px; - height: 100%; -} -.MLjqui-rangeselector-ticks -{ - margin-top: 0px; -} -.MLjqui-rangeselector-labels, .MLjqui-rangeselector-group-labels -{ - margin-top: 4px; -} -.MLjqui-rangeselector-markers -{ - height: 20px; - padding: 5px; - opacity: 0.75; -} -.MLjqui-rangeselector-marker-arrow -{ - width: 0px; - height: 0px; - display: block; - margin: -6px 0 0 -7px; - background-color: transparent !important; - filter: inherit; - border-top-width: 5px; - border-bottom-width: 5px; - border-right-color: transparent !important; - border-left-color: transparent !important; - background-clip: border-box; - background-repeat: repeat; - box-shadow: none !important; - -webkit-box-shadow: none !important; - background-image: none !important; -} -.MLjqui-rangeselector-marker-arrow-top { - border-bottom-color: transparent !important; -} -.MLjqui-rangeselector-marker-arrow-bottom { - border-top-color: transparent !important; -} -.MLjqui-rangeselector-marker-left-arrow -{ - border-right-width: 0px; - border-left-width: 5px; -} -.MLjqui-rangeselector-marker-right-arrow -{ - border-right-width: 5px; - border-left-width: 0px; -} -.MLjqui-rangeselector-markers-value -{ - overflow: hidden; - white-space: nowrap; -} -.MLjqui-rangeselector-group-labels-rtl -{ - margin-right: 10px; - direction: rtl; -} -.MLjqui-rangeselector-group-labels-ticks -{ - height: 17px; -} -.MLjqui-rangeselector-group-labels-ticks-rtl -{ - margin-left: 5px; -} -.MLjqui-action-button { - border: none; - border-left: 1px solid #c7c7c7; -} -.MLjqui-action-button-rtl { - border: none; - border-right: 1px solid #c7c7c7; - cursor: pointer; -} -/*MLjquiBulletChart*/ -.MLjqui-bulletchart -{ -} -.MLjqui-bulletchart, .MLjqui-bulletchart-title-container-horizontal, .MLjqui-bulletchart-title-container-vertical, .MLjqui-bulletchart-chart-container-horizontal, .MLjqui-bulletchart-chart-container-vertical -{ - position: relative; -} -.MLjqui-bulletchart-title-inner-container, .MLjqui-bulletchart-range, .MLjqui-bulletchart-pointer, .MLjqui-bulletchart-target, .MLjqui-bulletchart-ticks, .MLjqui-bulletchart-labels -{ - position: absolute; -} -.MLjqui-bulletchart-title-container-vertical, .MLjqui-bulletchart-title, .MLjqui-bulletchart-description, .MLjqui-bulletchart-range-vertical -{ - width: 100%; -} -.MLjqui-bulletchart-title-container-horizontal, .MLjqui-bulletchart-chart-container-horizontal -{ - float: left; - overflow: hidden; -} -.MLjqui-bulletchart-title, .MLjqui-bulletchart-description -{ - text-align: center; -} -.MLjqui-bulletchart-title-inner-container -{ - margin: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.MLjqui-bulletchart-title-inner-container-ltr -{ - padding-right: 5px; -} -.MLjqui-bulletchart-title-inner-container-rtl -{ - padding-left: 5px; -} -.MLjqui-bulletchart-title-description-ltr -{ - text-align: right; -} -.MLjqui-bulletchart-title-description-rtl -{ - text-align: left; -} -.MLjqui-bulletchart-title-description-vertical -{ - text-align: center; -} -.MLjqui-bulletchart-title -{ - font-size: 110%; - font-weight: bold; -} -.MLjqui-bulletchart-description -{ - font-size: 90%; -} -.MLjqui-bulletchart-range-horizontal -{ - height: 100%; -} -.MLjqui-bulletchart-target-horizontal -{ - top: 10%; - height: 80%; -} -.MLjqui-bulletchart-target-vertical -{ - left: 10%; - width: 80%; -} -.MLjqui-bulletchart-ticks -{ - background-color: #AAAAAA; -} -.MLjqui-bulletchart-ticks-horizontal -{ - width: 1px; -} -.MLjqui-bulletchart-ticks-vertical -{ - height: 1px; -} -.MLjqui-bulletchart-zero-tick -{ -} -.MLjqui-bulletchart-labels -{ -} -/*MLjquiNotification*/ -.MLjqui-notification -{ - padding: 10px; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - pointer-events: auto; -} -.MLjqui-notification-table -{ - width: 100%; - font-size: inherit; - font-weight: inherit; - font-style: inherit; - color:inherit; -} -.MLjqui-notification-container -{ - position: fixed; - height: auto; - width: auto; - pointer-events: none; -} -.MLjqui-notification-container-full-width -{ - width: 100%; -} -.MLjqui-notification-container-full-height -{ - height: 100%; -} -#MLjquiNotificationDefaultContainer-top-right, #MLjquiNotificationDefaultContainer-bottom-left -{ - direction: rtl; -} -.MLjqui-notification-icon, .MLjqui-notification-content -{ - vertical-align: middle; -} -.MLjqui-notification-content -{ -} -.MLjqui-notification-content-rtl -{ - direction: rtl; -} -.MLjqui-link, .MLjqui-inverse, .MLjqui-primary, .MLjqui-warning, .MLjqui-danger, .MLjqui-success, .MLjqui-info { - background: none !important; - box-shadow: none !important; - text-shadow: none !important; -} - -.MLjqui-primary .MLjqui-icon-calendar, .MLjqui-primary .MLjqui-icon-calendar-hover, .MLjqui-primary .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-primary .MLjqui-icon-time, .MLjqui-primary .MLjqui-icon-time-hover, .MLjqui-primary .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-success .MLjqui-icon-calendar, .MLjqui-success .MLjqui-icon-calendar-hover, .MLjqui-success .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-success .MLjqui-icon-time, .MLjqui-success .MLjqui-icon-time-hover, .MLjqui-success .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-warning .MLjqui-icon-calendar, .MLjqui-warning .MLjqui-icon-calendar-hover, .MLjqui-warning .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-warning .MLjqui-icon-time, .MLjqui-warning .MLjqui-icon-time-hover, .MLjqui-warning .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-danger .MLjqui-icon-calendar, .MLjqui-danger .MLjqui-icon-calendar-hover, .MLjqui-danger .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-danger .MLjqui-icon-time, .MLjqui-danger .MLjqui-icon-time-hover, .MLjqui-danger .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-info .MLjqui-icon-calendar, .MLjqui-info .MLjqui-icon-calendar-hover, .MLjqui-info .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-info .MLjqui-icon-time, .MLjqui-info .MLjqui-icon-time-hover, .MLjqui-info .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-inverse .MLjqui-icon-calendar, .MLjqui-inverse .MLjqui-icon-calendar-hover, .MLjqui-inverse .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-inverse .MLjqui-icon-time, .MLjqui-inverse .MLjqui-icon-time-hover, .MLjqui-inverse .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - - -.MLjqui-notification-info, .MLjqui-info -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5bc0de !important; - *background-color: #5bc0de !important; - border-left-color: #46b8da !important; - border-right-color: #46b8da !important; - border-top-color: #46b8da !important; - border-bottom-color: #46b8da !important; -} -.MLjqui-info:hover, -.MLjqui-info:focus, -.MLjqui-info:active, -.MLjqui-info.active, -.MLjqui-info.disabled, -.MLjqui-info[disabled] { - color: #ffffff !important; - background-color: #31b0d5 !important; - *background-color: #31b0d5 !important; - border-color: #269abc !important; -} - -.MLjqui-fill-state-pressed.MLjqui-info, -.MLjqui-info:active, -.MLjqui-info.active { - background-color: #269abc \9 !important; -} -.MLjqui-notification-warning, .MLjqui-warning -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #f0ad4e !important; - *background-color: #f0ad4e !important; - border-left-color: #eea236 !important; - border-right-color: #eea236 !important; - border-top-color: #eea236 !important; - border-bottom-color: #eea236 !important; -} -.MLjqui-warning:hover, -.MLjqui-warning:focus, -.MLjqui-warning:active, -.MLjqui-warning.active, -.MLjqui-warning.disabled, -.MLjqui-warning[disabled] { - color: #ffffff !important; - background-color: #ec971f !important; - *background-color: #ec971f !important; - border-color: #d58512 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-warning, -.MLjqui-warning:active, -.MLjqui-warning.active { - background-color: #d58512 \9 !important; - border-color: #985f0d !important; -} -.MLjqui-notification-success, .MLjqui-success -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5cb85c !important; - *background-color: #5cb85c !important; - border-left-color: #4cae4c !important; - border-right-color: #4cae4c !important; - border-top-color: #4cae4c !important; - border-bottom-color: #4cae4c !important; -} -.MLjqui-success:hover, -.MLjqui-success:focus, -.MLjqui-success:active, -.MLjqui-success.active, -.MLjqui-success.disabled, -.MLjqui-success[disabled] { - color: #ffffff !important; - background-color: #449d44 !important; - *background-color: #449d44 !important; - border-color: #398439 !important; -} -.MLjqui-fill-state-pressed.MLjqui-success, -.MLjqui-success:active, -.MLjqui-success.active { - background-color: #398439 !important; - border-color: #255625 !important; -} -.MLjqui-notification-error, .MLjqui-danger -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #d9534f !important; - *background-color: #d9534f !important; - border-left-color: #d43f3a !important; - border-right-color: #d43f3a !important; - border-top-color: #d43f3a !important; - border-bottom-color: #d43f3a !important; -} -.MLjqui-danger:hover, -.MLjqui-danger:focus, -.MLjqui-danger:active, -.MLjqui-danger.active, -.MLjqui-danger.disabled, -.MLjqui-danger[disabled] { - color: #ffffff !important; - background-color: #c9302c !important; - *background-color: #c9302c !important; - border-color: #ac2925 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-danger, .MLjqui-danger:active, -.MLjqui-danger.active { - background-color: #ac2925 !important; - border-color: #761c19 !important; -} -.MLjqui-notification-mail, .MLjqui-primary -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #337ab7 !important; - *background-color: #337ab7 !important; - border-left-color: #2e6da4 !important; - border-right-color: #2e6da4 !important; - border-top-color: #2e6da4 !important; - border-bottom-color: #2e6da4 !important; -} -.MLjqui-primary:hover, -.MLjqui-primary:focus, -.MLjqui-primary:active, -.MLjqui-primary.active, -.MLjqui-primary.disabled, -.MLjqui-primary[disabled] { - color: #ffffff !important; - background-color: #286090 !important; - *background-color: #286090 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-primary, -.MLjqui-primary:active, -.MLjqui-primary.active { - background-color: #204d74 !important; -} -.MLjqui-notification-time, .MLjqui-inverse -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #363636 !important; - *background-color: #222222 !important; - border-left-color: #222222 !important; - border-right-color: #222222 !important; - border-top-color: #222222 !important; - border-bottom-color: #000000 !important; -} -.MLjqui-inverse:hover, -.MLjqui-inverse:focus, -.MLjqui-inverse:active, -.MLjqui-inverse.active, -.MLjqui-inverse.disabled, -.MLjqui-inverse[disabled] { - color: #ffffff !important; - background-color: #222222 !important; - *background-color: #151515 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-inverse, -.MLjqui-inverse:active, -.MLjqui-inverse.active { - background-color: #080808 !important; - background-image: linear-gradient(to bottom, #444444, #444444) !important; -} -.MLjqui-link, -.MLjqui-link:active, -.MLjqui-link[disabled] { - background-color: transparent !important; - background-image: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; -} - -.MLjqui-link { - color: #0088cc !important; - cursor: pointer !important; - border-color: transparent !important; - -webkit-border-radius: 0 !important; - -moz-border-radius: 0 !important; - border-radius: 0 !important; -} - -.MLjqui-link:hover, -.MLjqui-link:focus { - color: #005580 !important; - text-decoration: underline !important; - background-color: transparent !important; -} - -.MLjqui-link[disabled]:hover, -.MLjqui-link[disabled]:focus { - color: #333333 !important; - text-decoration: none !important; -} -.MLjqui-link:focus, .MLjqui-inverse:focus, .MLjqui-primary:focus, .MLjqui-warning:focus, .MLjqui-danger:focus, .MLjqui-success:focus, .MLjqui-info:focus, -.MLjqui-link:hover, .MLjqui-inverse:hover, .MLjqui-primary:hover, .MLjqui-warning:hover, .MLjqui-danger:hover, .MLjqui-success:hover, .MLjqui-info:hover { - background-position: 0 -15px !important; - -webkit-transition: background-position 0.1s linear !important; - -moz-transition: background-position 0.1s linear !important; - -o-transition: background-position 0.1s linear !important; - transition: background-position 0.1s linear !important; -} -.MLjqui-link:active, .MLjqui-inverse:active, .MLjqui-primary:active, .MLjqui-warning:active, .MLjqui-danger:active, .MLjqui-success:active, .MLjqui-info:active { - background-image: none !important; - outline: 0 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; -} -.MLjqui-notification-icon -{ - background-repeat: no-repeat; -} -.MLjqui-notification-icon-ltr -{ - background-position: left center; -} -.MLjqui-notification-icon-rtl -{ - background-position: right center; -} -.MLjqui-notification-icon-info, .MLjqui-notification-icon-warning, .MLjqui-notification-icon-success, .MLjqui-notification-icon-error, .MLjqui-notification-icon-mail, .MLjqui-notification-icon-time -{ - width: 30px; - height: 25px; -} -.MLjqui-notification-icon-info -{ - background-image: url('../images/info.png'); -} -.MLjqui-notification-icon-warning -{ - background-image: url('../images/warning.png'); -} -.MLjqui-notification-icon-success -{ - background-image: url('../images/success.png'); -} -.MLjqui-notification-icon-error -{ - background-image: url('../images/error.png'); -} -.MLjqui-notification-icon-mail -{ - background-image: url('../images/mail.png'); -} -.MLjqui-notification-icon-time -{ - background-image: url('../images/time.png'); -} -.MLjqui-notification-close-button-info, .MLjqui-notification-close-button-success, .MLjqui-notification-close-button-mail, .MLjqui-notification-close-button-time, .MLjqui-notification-close-button-error -{ - background-image: url('../images/close_white.png'); -} -.MLjqui-notification-close-button-warning -{ - background-image: url('../images/close_black.png'); -} -.MLjqui-notification-close-button-container, .MLjqui-notification-close-button -{ - width: 16px; - height: 16px; -} -.MLjqui-notification-close-button-container -{ - vertical-align: top; -} -.MLjqui-notification-close-button -{ - position: relative; - top: -11px; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-notification-close-button-ltr -{ - right: -11px; - background-position: right top; -} -.MLjqui-notification-close-button-rtl -{ - left: -11px; - background-position: left top; -} -.MLjqui-navbar { - width: 100%; - border-style: solid; - border-width: 1px; -} -.MLjqui-navbar ul:before, -.MLjqui-navbar ul:after { - content: ""; - display: table; -} -.MLjqui-navbar ul:after { - clear: both; -} -.MLjqui-navbar ul { - list-style: none; - margin: 0; - padding: 0; - position: relative; - display: block; - border: 0; - max-width: 100%; - overflow: visible; -} -.MLjqui-navbar-block { - margin: 0; - overflow:hidden; - padding: 0px 12px; - border-width:0px; - float: left; - min-height: 1px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - box-shadow: none !important; - border-radius: 0px !important; -} -.MLjqui-navbar-block-rtl { - float:right; -} -.MLjqui-ribbon -{ - position: relative; - overflow: hidden; -} -.MLjqui-ribbon-auto -{ - display: inline-block; -} -.MLjqui-ribbon-popup -{ - overflow: visible; -} -.MLjqui-ribbon-header -{ - position: absolute; - margin: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - overflow: hidden; - float: left; - display: block; - box-shadow: none !important; -} -.MLjqui-ribbon-header-auto -{ - position: relative; -} -.MLjqui-ribbon-header-horizontal -{ - width: 100%; - min-height: 30px; - padding: 0px; - white-space: nowrap; -} -.MLjqui-ribbon-header-bottom -{ - bottom: 0; -} -.MLjqui-ribbon-header-vertical -{ - min-width: 75px; - height: 100%; - float: left; - padding: 0px; -} -.MLjqui-ribbon-header-right -{ - right: 0; -} -.MLjqui-ribbon-header-horizontal-popup, .MLjqui-ribbon-header-vertical-popup -{ - position: relative; -} -.MLjqui-ribbon-header-horizontal-popup -{ - height:100%; -} -.MLjqui-ribbon-header-vertical-popup -{ - width: 100%; -} -.MLjqui-ribbon-item -{ - position: relative; - list-style-type: none; - padding: 5px; - border: 1px solid transparent; - box-sizing: border-box; - text-overflow: ellipsis; - cursor: default; - min-width: 10px; - vertical-align: top; -} -.MLjqui-ribbon-item-top, .MLjqui-ribbon-item-bottom -{ - height: 100%; - display: inline-block; - margin-left: 1px; - margin-right: 1px; -} -.MLjqui-ribbon-item-top -{ - margin-top: 1px; -} -.MLjqui-ribbon-item-bottom -{ - margin-top: -1px; -} -.MLjqui-ribbon-item-left, .MLjqui-ribbon-item-right -{ - width: 100%; - margin-top: 2px; -} -.MLjqui-ribbon-item-left -{ - margin-left: 1px; -} -.MLjqui-ribbon-item-right -{ - margin-left: -1px; -} -.MLjqui-ribbon-item-hover -{ - border-color: inherit; -} -.MLjqui-ribbon-item-top.MLjqui-ribbon-item-hover -{ - border-bottom-color: inherit !important; -} -.MLjqui-ribbon-item-bottom.MLjqui-ribbon-item-hover -{ - border-top-color: inherit !important; -} -.MLjqui-ribbon-item-left.MLjqui-ribbon-item-hover -{ - border-right-color: inherit !important; -} -.MLjqui-ribbon-item-right.MLjqui-ribbon-item-hover -{ - border-left-color: inherit !important; -} -.MLjqui-ribbon-item-selected -{ - border-color: inherit; -} -.MLjqui-ribbon-item-top.MLjqui-ribbon-item-selected -{ - border-bottom-color: transparent; -} -.MLjqui-ribbon-item-bottom.MLjqui-ribbon-item-selected -{ - border-top-color: transparent; -} -.MLjqui-ribbon-item-left.MLjqui-ribbon-item-selected -{ - border-right-color: transparent; -} -.MLjqui-ribbon-item-right.MLjqui-ribbon-item-selected -{ - border-left-color:transparent; -} -.MLjqui-ribbon-content -{ - background-image: none !important; - background-color: transparent !important; - box-sizing: border-box; -} -.MLjqui-ribbon-content-horizontal -{ - clear: both; - height: 100%; -} -.MLjqui-ribbon-content-vertical -{ - height: 100%; - width: 100%; - float: left; - border-width: 1px; -} -.MLjqui-ribbon-content-popup -{ - z-index:99999; - position: absolute; - border-left: none; -} -.MLjqui-ribbon-content-popup.MLjqui-ribbon-content-horizontal -{ - width: 100%; - height: auto; -} -.MLjqui-ribbon-content-popup.MLjqui-ribbon-content-vertical -{ - width: auto; - height: 100%; -} -.MLjqui-ribbon-content-popup-top { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-bottom { - -webkit-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-left { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-right { - -webkit-box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); - box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); -} - -.MLjqui-ribbon-content-auto-width -{ - width: auto; -} -.MLjqui-ribbon-content-section -{ - width: 100%; - height: 100%; - display: none; - border-width: 1px; - border-style: solid; - box-sizing: inherit; - overflow: auto; -} -.MLjqui-ribbon-content-section-top -{ - border-top: none; -} -.MLjqui-ribbon-content-section-bottom -{ - bottom: 0; - border-bottom: none; -} -.MLjqui-ribbon-content-section-left -{ - border-left: none; -} -.MLjqui-ribbon-content-section-right -{ - border-right: none; - right: 0; -} -.MLjqui-ribbon-content-section-popup -{ - position: relative; -} -.MLjqui-ribbon-content-section-horizontal-popup -{ - height: auto; -} -.MLjqui-ribbon-content-section-vertical-popup -{ - width: auto; -} -.MLjqui-ribbon-header-rtl -{ - text-align: right; -} -.MLjqui-ribbon-header-horizontal.MLjqui-ribbon-header-rtl -{ - direction: rtl; -} -.MLjqui-ribbon-item-rtl -{ - direction: rtl; -} -.MLjqui-ribbon-scrollbutton -{ - position: absolute; - display: none; - box-sizing: border-box; - cursor: pointer; - background-repeat: no-repeat !important; - background-position: center !important; - z-index: 1000; -} -.MLjqui-ribbon-scrollbutton-top, .MLjqui-ribbon-scrollbutton-bottom -{ - width: 17px; -} -.MLjqui-ribbon-scrollbutton-left, .MLjqui-ribbon-scrollbutton-right -{ - height: 17px; -} -.MLjqui-ribbon-scrollbutton-top -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-bottom -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-right -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far -{ - right: 18px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near -{ - left: 18px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far -{ - bottom: 18px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near -{ - top: 18px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-inner -{ - width: 100%; - height: 100%; - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-ribbon-selection-token -{ - position: absolute; - z-index: 1000; -} -.MLjqui-ribbon-selection-token-top, .MLjqui-ribbon-selection-token-bottom -{ - height: 1px; -} -.MLjqui-ribbon-selection-token-left, .MLjqui-ribbon-selection-token-right -{ - width: 1px; -} -.MLjqui-ribbon-auto, .MLjqui-ribbon-item-top, .MLjqui-ribbon-item-bottom, .MLjqui-ribbon-content -{ - *display: inline; -} -.MLjqui-ribbon-content-left -{ - *float: none; -} -.MLjqui-ribbon-content-right -{ - *float: left; -} -.MLjqui-ribbon-content.MLjqui-ribbon-content-popup -{ - *left: 0; -} -.MLjqui-ribbon-content-popup .MLjqui-ribbon-content-section -{ - *overflow: visible; -} -.MLjqui-ribbon-content-section-popup -{ - *position: absolute; -} -.MLjqui-toolbar, .MLjqui-toolbar-minimized-popup-separator -{ - box-sizing: border-box; -} -.MLjqui-toolbar, .MLjqui-toolbar-minimized-popup -{ - padding: 5px; -} -.MLjqui-toolbar -{ - position: relative; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.MLjqui-toolbar-tool -{ - float: left; - margin-top: 0; - margin-bottom: 0; -} -.MLjqui-toolbar-tool-rtl -{ - float: right; -} -.MLjqui-toolbar-tool-no-separator-ltr -{ - margin-right: 2px !important; -} -.MLjqui-toolbar-tool-no-separator-rtl -{ - margin-left: 2px !important; -} -.MLjqui-toolbar-tool-separator-ltr -{ - margin-right: 6px !important; -} -.MLjqui-toolbar-tool-separator-rtl -{ - margin-left: 6px !important; -} -.MLjqui-toolbar-tool-inner-button -{ - margin-right: 0; - margin-left: 0; - border-radius: 0 !important; -} -.MLjqui-toolbar-minimized-button, .MLjqui-toolbar-minimized-popup -{ - position: absolute; -} -.MLjqui-toolbar-minimized-button -{ - height: 100%; - right: 0; - cursor: pointer; - margin-top: -5px; - margin-right: 5px; - display: none; -} -.MLjqui-toolbar-minimized-button-rtl -{ - left: 0; - margin-left: 5px; - margin-right: 0; -} -.MLjqui-toolbar-minimized-popup -{ - border-width: 1px; - border-top-width: 0; - border-style: solid; - visibility: hidden; - z-index: 99999; -} -.MLjqui-toolbar-tool-minimized -{ - margin: 1px 0 !important; -} -.MLjqui-toolbar-minimized-popup-separator -{ - width: 100%; - height: 2px; - margin: 5px 0; - display: none; -} -.MLjqui-complex-input-spin-buttons-container -{ - border-width: 1px; - border-style: solid; - position: relative; - -webkit-box-sizing: border-box !important; - -moz-box-sizing: border-box !important; - box-sizing: border-box !important; - padding: 2px 8px !important; - white-space: nowrap; - vertical-align: middle; -} -.MLjqui-formatted-input, .MLjqui-complex-input -{ - padding-right: 2px !important; - text-align: right; -} -.MLjqui-formatted-input-lower-case, .MLjqui-complex-input -{ - text-transform: lowercase; -} -.MLjqui-formatted-input-upper-case -{ - text-transform: uppercase; -} -.MLjqui-formatted-input-item -{ - word-wrap: break-word; -} -.MLjqui-formatted-input-item-rtl, .MLjqui-complex-input-rtl -{ - direction: rtl !important; -} -.MLjqui-formatted-input-spin-buttons-container, .MLjqui-formatted-input-addon -{ - height: 100%; -} -.MLjqui-formatted-input-spin-buttons-container -{ - width: 18px; - padding: 0 0 0 1px !important; - overflow: hidden; -} -.MLjqui-formatted-input-spin-buttons-container-rtl -{ - border-right-width: 0px; - padding: 0 0 0 2px !important; -} -.MLjqui-formatted-input-spin-buttons-container-rtl-border -{ - border-left-width: 1px !important; -} -.MLjqui-formatted-input-spin-button -{ - position: relative; - width: 17px; - height: 50%; - margin-left: -1px; - border-width: 0px; - padding: 0px; - overflow: hidden; - cursor: pointer; -} -.MLjqui-formatted-input-addon -{ - width: 19px; - padding: 0 !important; - cursor: pointer; -} -.MLjqui-formatted-input-addon-rtl -{ - border-right-width: 1px !important; -} -.MLjqui-complex-input-parent -{ - overflow: hidden; -} -.MLjqui-complex-input-child -{ - height: 100%; - float: left; - box-sizing: border-box; -} -.MLjqui-complex-input-child-rtl -{ - float: right; -} -.MLjqui-complex-input-spin-buttons-container-ltr -{ - border-left-width: 0; -} -.MLjqui-complex-input-spin-buttons-container-rtl -{ - border-left-width: 1px !important; - border-right-width: 0; -} -.MLjqui-file-upload -{ - position: relative; - overflow: auto; -} -.MLjqui-file-upload, .MLjqui-file-upload-file-row, .MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; -} -.MLjqui-file-upload-buttons-container, .MLjqui-file-upload-iframe, .MLjqui-file-upload-loading-element -{ - display: none; -} -.MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-buttons-container, .MLjqui-file-upload-file-row, .MLjqui-file-upload-icon -{ - width: 100%; -} -.MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-icon, .MLjqui-file-upload-loading-element -{ - height: 100%; -} -.MLjqui-file-input-iframe, .MLjqui-file-upload-form-ie9 -{ - position: absolute; -} -.MLjqui-file-input-iframe -{ - width: 0; - height: 0; - border: none; -} -.MLjqui-file-upload-form, .MLjqui-file-upload-file-input -{ - visibility: hidden; - display: none; -} -.MLjqui-file-upload-form-ie9, .MLjqui-file-upload-file-input-ie9 -{ - display: block; - visibility: visible; -} -.MLjqui-file-upload-form-ie9 -{ - z-index: 10000; - opacity: 0; - filter: alpha(opacity=0); -} -.MLjqui-file-upload-file-name -{ - width: auto; - padding: 0 2px 0 2px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - *float: left; -} -.MLjqui-file-upload-button-browse-rtl, .MLjqui-file-upload-button-upload-rtl, .MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-file-name-rtl, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-loading-element -{ - float: right; -} -.MLjqui-file-upload, .MLjqui-file-upload-file-row -{ - padding: 5px; -} -.MLjqui-file-upload-button-browse -{ - display: block; -} -.MLjqui-file-upload-buttons-container -{ - height: auto; - margin-top: 10px; -} -.MLjqui-file-upload-button-browse-rtl, .MLjqui-file-upload-button-upload-rtl, .MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-file-name-rtl, .MLjqui-file-upload-file-cancel-rtl, .MLjqui-file-upload-file-upload-rtl -{ - direction: rtl !important; -} -.MLjqui-file-upload-button-cancel, .MLjqui-file-upload-button-upload-rtl -{ - margin-left: 5px; -} -.MLjqui-file-upload-button-upload-rtl-ie -{ - margin-right: 5px; -} -.MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-button-upload-rtl-ie -{ - margin-left: 0; -} -.MLjqui-file-upload-file-row -{ - height: 30px; - margin-bottom: 3px; - clear: both; -} -.MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-loading-element -{ - width: 17px; - margin: 0 1px 0 1px; -} -.MLjqui-file-upload-file-cancel-rtl, .MLjqui-file-upload-file-upload-rtl, .MLjqui-file-upload-loading-element-rtl -{ - float: none; - *float: left; -} -.MLjqui-file-upload-button-browse, .MLjqui-file-upload-button-upload, .MLjqui-file-upload-button-cancel, .MLjqui-file-upload-form-ie9, .MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - cursor: pointer; - white-space:nowrap; -} -.MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - display: inline-block; -} -.MLjqui-file-upload-icon-upload, .MLjqui-file-upload-loading-element -{ - margin-top: 1px; -} -.MLjqui-file-upload-loading-element -{ - background-image: url('../images/loader-small.gif'); - background-repeat: no-repeat; -} - -.MLjqui-date-time-input-popup .MLjqui-icon { - margin-top:0px; -} - - -.MLjqui-text-area-element -{ - height: 100%; - width: 100%; - overflow: hidden; - border: none; - outline: none; - left: 0px; - top: 0px; - margin: 0px; - position: absolute; - resize: none; -} -.MLjqui-text-area-element-rtl -{ - direction: rtl !important; -} -.MLjqui-responsive-panel -{ - overflow: auto; -} -.MLjqui-responsive-panel, .MLjqui-responsive-panel-button -{ - border-width: 1px; - border-style: solid; -} -.MLjqui-responsive-panel-button -{ - display: none; - cursor: pointer; -} -.MLjqui-responsive-panel-button-inner -{ - margin: 0; - width: 100%; - height: 100%; - background-position: center; -} -.MLjqui-loader -{ - margin: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background-color: rgba(255,255,255,0.5); - z-index: 999; - border-style: solid; - border-width: 1px; -} -.MLjqui-loader-ie-transparency -{ - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff)"; /*For IE 8*/ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff); /*For IE 7*/ -} -.MLjqui-loader-modal -{ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - position: fixed; - height: 100%; - width: 100%; - z-index: 99; - cursor: default; - top: 0; - left: 0; - background-color: black; - opacity: 0.6; -} -.MLjqui-loader-icon -{ - background-image: url("../images/loader.gif"); - background-repeat: no-repeat; - background-position: center; - width: 100%; - height: 100%; - position: absolute; - z-index: 999; -} -.MLjqui-loader-text -{ - z-index: 999; - position: relative; -} -.MLjqui-loader-text-left -{ - margin-left: 5px; - position: absolute; - top: 50%; -} -.MLjqui-loader-text-right -{ - margin-right: 5px; - position: absolute; - top: 50%; - right: 0px; -} -.MLjqui-loader-text-top -{ - text-align: center; - margin-top: 5px; -} -.MLjqui-loader-text-bottom -{ - bottom: 0px; - position: absolute; - text-align: center; - margin: 0 auto; - width: 100%; - margin-bottom: 5px; -} -.MLjqui-loader-rtl -{ - direction: rtl; -} -/* MLjquiLayout and MLjquiDockingLayout */ -.MLjqui-layout, .MLjqui-layout-group-root, .MLjqui-layout-pseudo-window-header, .MLjqui-docking-layout-overlay-inner-square-content -{ - position: relative; -} -.MLjqui-layout-pseudo-window-pin-background, .MLjqui-layout-pseudo-window-close-background, .MLjqui-layout-resize-feedback, .MLjqui-layout-overlay, .MLjqui-docking-layout-overlay, .MLjqui-docking-layout-overlay-highlight-right, .MLjqui-docking-layout-overlay-highlight-bottom, .MLjqui-docking-layout-overlay-square-edge, .MLjqui-docking-layout-drop-overlay -{ - position: absolute; -} -.MLjqui-layout -{ - background-color: #c5c5c5; -} -.MLjqui-layout-group-root, .MLjqui-layout-pseudo-window-pin-icon, .MLjqui-layout-pseudo-window-pinned-icon, .MLjqui-layout-pseudo-window-close-icon, .MLjqui-layout-overlay -{ - width: 100%; - height: 100%; -} -.MLjqui-layout-group-default-horizontal > div, .MLjqui-layout-pseudo-window-title-ltr, .MLjqui-docking-layout-overlay-square, .MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-square-edge-arrow-container-horizontal -{ - float: left; -} -.MLjqui-layout-group-tabbed -{ - position: static; - box-sizing: border-box; - min-height: 0 !important; -} -.MLjqui-layout-group-tabbed .MLjqui-window-content, .MLjqui-docking-layout-group-floating .MLjqui-window-content -{ - padding: 0; -} -.MLjqui-layout-group-tabbed .MLjqui-ribbon-content-section, .MLjqui-layout-window, .MLjqui-docking-layout-group-floating .MLjqui-ribbon-content-section -{ - border: none; -} -.MLjqui-layout-window -{ - position: static; -} -.MLjqui-layout-group-auto-hide-content-vertical, .MLjqui-layout-group-auto-hide-content-horizontal -{ - overflow: auto; -} -.MLjqui-layout-group-auto-hide-content-vertical -{ - width: 150px; -} -.MLjqui-layout-group-auto-hide-content-horizontal -{ - width: 100%; - height: 150px; -} -.MLjqui-layout-pseudo-window -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; - box-shadow: none !important; -} -.MLjqui-layout-pseudo-window-header, .MLjqui-layout-pseudo-window-content -{ - width: 100%; - box-sizing: border-box; -} -.MLjqui-layout-pseudo-window-header -{ - height: 30px; -} -.MLjqui-layout-pseudo-window-pin-background, .MLjqui-layout-pseudo-window-close-background -{ - width: 16px; - height: 16px; - top: 5px; -} -.MLjqui-layout-pseudo-window-pin-background-ltr -{ - right: 15px; -} -.MLjqui-layout-pseudo-window-close-background-ltr -{ - right: 0; -} -.MLjqui-layout-pseudo-window-pin-background-rtl -{ - left: 15px; -} -.MLjqui-layout-pseudo-window-close-background-rtl -{ - left: 0; -} -.MLjqui-layout-pseudo-window-pin-icon, .MLjqui-layout-pseudo-window-pinned-icon, .MLjqui-layout-pseudo-window-close-icon -{ - cursor: pointer; -} -.MLjqui-layout-pseudo-window-title -{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-layout-pseudo-window-pin-icon -{ - background-image: url("../images/pin.png"); -} -.MLjqui-layout-pseudo-window-pinned-icon -{ - background-image: url("../images/pinned.png"); -} -.MLjqui-layout-pseudo-window-title-rtl -{ - float: right; -} -.MLjqui-layout-resize-feedback -{ - z-index: 9999; - top: 0; - left: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - opacity: 0.6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - *filter: alpha(opacity=60); - display: none; -} -.MLjqui-layout-resize-feedback-horizontal -{ - width: 100%; - height: 4px; - cursor: row-resize; -} -.MLjqui-layout-resize-feedback-vertical -{ - width: 4px; - height: 100%; - cursor: col-resize; -} -.MLjqui-layout-resize-feedback-warning -{ - border-color: #800000 !important; - background-color: Red !important; -} -.MLjqui-layout-overlay -{ - top: 0; - left: 0; - display: none; - background-color: transparent; - z-index: 8999; -} -.MLjqui-layout-ribbon-header-ltr -{ - padding-left: 20px; -} -.MLjqui-layout-ribbon-header-rtl -{ - padding-right: 20px; -} - -/* MLjquiDockingLayout-specific */ -.MLjqui-docking-layout-group-floating -{ - border-color: #FFD280 !important; -} -.MLjqui-docking-layout-group-floating .MLjqui-window-header -{ - border-color: #FFD280; - background-color: #FFD280 !important; - background: -webkit-linear-gradient(#FFE4B5, #FFD280) !important; - background: -o-linear-gradient(#FFE4B5, #FFD280) !important; - background: -moz-linear-gradient(#FFE4B5, #FFD280) !important; - background: linear-gradient(#FFE4B5, #FFD280 ) !important; -} -.MLjqui-docking-layout-overlay, .MLjqui-docking-layout-overlay-square-edge -{ - display: none; - z-index: 99999; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - *filter: alpha(opacity=90); -} -.MLjqui-docking-layout-overlay -{ - width: 100px; - height: 100px; - left: 100px; - top: 70px; -} -.MLjqui-docking-layout-overlay-section -{ - height: 33px; - width: 100px; -} -.MLjqui-docking-layout-overlay-square -{ - width: 26px; - height: 26px; - padding: 3px; -} -.MLjqui-docking-layout-overlay-square-invisible -{ - background-color: transparent !important; - background-image: none !important; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-center, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-highlight-bottom -{ - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-highlight-right -{ - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-highlight-left -{ - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-center, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-inner-square-header, .MLjqui-docking-layout-overlay-highlight-top -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-docking-layout-overlay-square-center -{ - border-color: transparent !important; -} -.MLjqui-docking-layout-overlay-inner-square, .MLjqui-docking-layout-overlay-inner-square-header, .MLjqui-docking-layout-overlay-inner-square-content, .MLjqui-docking-layout-overlay-highlight-top, .MLjqui-docking-layout-overlay-highlight-bottom, .MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - width: 24px; -} -.MLjqui-docking-layout-overlay-inner-square -{ - border-width: 1px; - border-style: solid; - height: 24px; -} -.MLjqui-docking-layout-overlay-inner-square-header -{ - height: 5px; -} -.MLjqui-docking-layout-overlay-inner-square-content -{ - height: 18px; -} -.MLjqui-docking-layout-overlay-highlight -{ -} -.MLjqui-docking-layout-overlay-highlight-top -{ - height: 9px; - border-bottom-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-left, .MLjqui-docking-layout-overlay-highlight-right -{ - width: 12px; - height: 18px; -} -.MLjqui-docking-layout-overlay-highlight-left -{ - border-right-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-right -{ - right: 0; - border-left-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-bottom -{ - bottom: 0; - height: 9px; - border-top-style: dashed; -} -.MLjqui-docking-layout-drop-overlay -{ - display: none; - background-color: #6495ED; - opacity: 0.5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - *filter: alpha(opacity=50); - z-index: 10000; -} -.MLjqui-docking-layout-square-disabled -{ - visibility: hidden; -} -.MLjqui-docking-layout-overlay-square-edge, .MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - border-style: solid; - border-width: 1px; -} -.MLjqui-docking-layout-overlay-inner-square-edge -{ - width: 26px; - height: 26px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-horizontal -{ - height: 24px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - height: 13px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-inner-square-header-horizontal, .MLjqui-docking-layout-overlay-inner-square-content-horizontal -{ - width: 13px; -} -.MLjqui-docking-layout-overlay-inner-square-content-vertical -{ - height: 7px; -} -.MLjqui-docking-layout-overlay-square-edge-arrow -{ - border-style: solid; - border-width: 5px; - width: 0px; - height: 0px; - display: block; - background: transparent !important; - *filter: inherit; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-top -{ - border-top-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-bottom-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-left-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-right-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right -{ - margin-top: 8px; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - margin-left: 8px; -} - -.MLjqui-tag-cloud ul { - padding-left: 5px; -} - -.MLjqui-tag-cloud-item{ - padding: 3px; - display:inline-block; -} - -.MLjqui-tag-cloud-item a { - text-decoration: initial; -} - -.MLjqui-tag-cloud-item a:hover { - text-decoration: underline; -} -.MLjqui-popover { - position: absolute; - top: 0; - left: 0; - z-index: 9999; - background-color: #ffffff; - border: 1px solid #aaa; - border: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); -} -.MLjqui-popover-modal-background -{ - position:fixed; - left:0px; - top:0px; - width:100%; - height:100%; - z-index:999; - /* Fallback for web browsers that don't support RGBa */ - background-color: rgb(0, 0, 0); - /* RGBa with 0.6 opacity */ - background-color: rgba(0, 0, 0, 0.6); - /* For IE 5.5 - 7*/ - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - /* For IE 8*/ - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -.MLjqui-popover-close-button { - width:16px; - height:16px; - float:right; -} -.MLjqui-popover-close-button-rtl { - float:left; -} -.MLjqui-popover.top { - margin-top: -10px; -} - -.MLjqui-popover.right { - margin-left: 10px; -} - -.MLjqui-popover.bottom { - margin-top: 10px; -} - -.MLjqui-popover.left { - margin-left: -10px; -} - -.MLjqui-popover-title { - padding: 8px 14px; - margin: 0; - border-bottom: 1px solid inherit; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} - -.MLjqui-popover-title:empty { - display: none; -} - -.MLjqui-popover-content { - padding: 9px 14px; -} - -.MLjqui-popover .MLjqui-popover-arrow, -.MLjqui-popover .MLjqui-popover-arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.MLjqui-popover .MLjqui-popover-arrow { - border-width: 11px; -} - -.MLjqui-popover .MLjqui-popover-arrow:after { - border-width: 10px; - content: ""; -} - -.MLjqui-popover.top .MLjqui-popover-arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: inherit; - border-bottom-width: 0; -} - -.MLjqui-popover.top .MLjqui-popover-arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #ffffff; - border-bottom-width: 0; -} - -.MLjqui-popover.right .MLjqui-popover-arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: inherit; - border-left-width: 0; -} - -.MLjqui-popover.right .MLjqui-popover-arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; -} - -.MLjqui-popover.bottom .MLjqui-popover-arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color:inherit; - border-top-width: 0; -} - -.MLjqui-popover.bottom .MLjqui-popover-arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #ffffff; - border-top-width: 0; -} - -.MLjqui-popover.left .MLjqui-popover-arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; border-left-color: inherit; -} - -.MLjqui-popover.left .MLjqui-popover-arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #ffffff; - border-right-width: 0; -} - - -.MLjqui-kanban-full-frame { - width: 100vw; - height: 100vh; -} - -.MLjqui-kanban-in-frame { - width: 100%; - height: 100%; - box-sizing: border-box; -} - -.MLjqui-kanban-rtl { - direction: rtl; - text-align: right; -} - -.MLjqui-kanban-column { - box-sizing: border-box; - border-style: solid; - border-width: 1px 1px 1px 0px; - float: left; -} - -.MLjqui-kanban-column-collapsed { - width: 50px; -} - -.MLjqui-kanban-column-first { - border-width: 1px; -} - -.MLjqui-kanban-column:first-of-type { - border-width: 1px 1px 1px 1px; -} - -.MLjqui-kanban-column-selected { - /* background-color: blue;*/ -} - -.MLjqui-kanban-column-header-collapsed { /*vertical column invisible*/ - display: none; - box-sizing: border-box; - height: 0px; - width: 0px; - position: relative; - cursor: pointer; -} - -.MLjqui-kanban-column-header-collapsed-show { /*vertical column visible*/ - display: block !important; - height: 100%; - box-sizing: border-box; - width: 100%; - position: relative; - cursor: pointer; -} - -.MLjqui-kanban-column-vertical-container { - padding-top: 0px; - padding-left: 0px; - transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - white-space: nowrap; -} - -.MLjqui-kanban-column-vertical-container-inverse { - padding-top: 0px; - padding-left: 20px; - transform: rotate(90deg); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -o-transform: rotate(90deg); - white-space: nowrap; -} -.MLjqui-kanban-column-vertical-container .MLjqui-kanban-column-header-title, .MLjqui-kanban-column-vertical-container .MLjqui-kanban-column-header-status{ - position:relative; -} - -.MLjqui-kanban-column-hide { /*colapsed*/ - display: none !important; -} - -.MLjqui-kanban-column-header { - border-width: 1px; - border-style: solid; - margin: 1px; - white-space: nowrap; - padding-left: 5px; - padding-right: 5px; - cursor: pointer; - overflow:hidden; - position: relative; -} -.MLjqui-kanban-column-header-button { - position: absolute; - right: 0px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.MLjqui-kanban-column-header .MLjqui-window-collapse-button { - margin-top:1px !important; -} -.MLjqui-kanban-column-header-custom-button { - position: absolute; - right: 20px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.MLjqui-kanban-column-header-custom-button-rtl { - left: 20px; -} -.MLjqui-kanban-column-header-button-rtl { - left: 0px; -} -.MLjqui-kanban-column-header-collapsed .MLjqui-kanban-column-header-button { - top: 100%; - right: 50%; - margin-top: -21px; - left: 50%; - margin-left:-8px; -} -.MLjqui-kanban-column-header-collapsed .MLjqui-kanban-column-header-custom-button { - top: 100%; - right: 50%; - margin-top: -41px; - left: 50%; - margin-left:-8px; -} - -.MLjqui-kanban-column-container { - margin: 1px; - overflow-y: auto; -} - -.MLjqui-kanban-item-placeholder { - height: 100px; - border: gray dotted 1px; - border-radius: 3px; - margin: 5px; -} - -.MLjqui-kanban-column-vertical-container-inverse-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.MLjqui-kanban-column-vertical-container-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.MLjqui-kanban-item { - margin: 2px; - padding-top: 5px; - padding-bottom: 5px; - border-width: 1px; - border-style: solid; - border-color: inherit; - position: relative; - box-shadow: #ddd 2px 2px 3px; - cursor: pointer; - touch-action: none; - -ms-touch-action: none; -} - -.MLjqui-kanban-item-selected { -} - -.MLjqui-kanban-item-color-status { - background-color: #6bbd49; - width: 3px; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} -.MLjqui-kanban-item-color-status-rtl { - right:0px; - left:100%; -} -.MLjqui-kanban-item-text { - padding-left:6px; - padding-right:23px; - font-size: 14px; - padding-bottom:5px; - overflow:hidden; - text-overflow: ellipsis; -} -.MLjqui-kanban-rtl .MLjqui-kanban-item-text { - padding-right:6px; - padding-left:23px; -} -.MLjqui-kanban-column-header-title { -} - -.MLjqui-kanban-column-header-status { -} - -.MLjqui-kanban-item-content { - -} - -.MLjqui-kanban-item-avatar { - width: 22px; - height: 22px; - position: absolute; - right: 3px; - top: 3px; - background: #eee; - text-align: center; - overflow: hidden; -} -.MLjqui-kanban-item-avatar-rtl { - left: 3px; -} -.MLjqui-kanban-item-avatar-image { - width: 20px; - height: 20px; -} - -.MLjqui-kanban-item-avatar-image:hover { -} - -.MLjqui-kanban-item-footer { - border-top: 1px solid transparent; - border-color: inherit; - overflow: hidden; - padding-top: 5px; - margin-top: 5px; - padding-bottom:1px; - padding-left:6px; - padding-right:6px; -} - - -.MLjqui-kanban-item-keyword { - float: left; - margin:2px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-color:inherit; - padding-left:2px; - padding-right: 2px; - cursor: pointer; -} - -.MLjqui-kanban-item-keyword-rtl { - direction: rtl; - text-align: right; - float: right; -} - -.MLjqui-kanban-item-keyword:hover { -} - -.MLjqui-kanban-item-avatar { - height: 20px; -} - -.MLjqui-kanban-handle { - cursor: move; -} - -.MLjqui-kanban-clearing { - clear: both; -} -.MLjqui-sortable { - touch-action: none; - -ms-touch-action: none; -} - -.MLjqui-bar-gauge-tooltip { - position:absolute; - left:20px; - top:20px; - display:none; - padding: 6px 12px; - border:black solid 1px; - background-color: white; - color: #333333; - font-size: 11px; - font-weight:100; - font-family: Verdana; - border:black solid 1px; - border-radius:3px; - opacity: 1; - white-space: nowrap; - z-index:5; -} - -.MLjqui-bar-gauge-measure-text { - position: absolute; - top: 0; - right: 0; - visibility: hidden; - z-index:-99999; - margin:0px; - padding:0px; - border-width:0px; -} -.MLjqui-scrollbar-mobile { - background: transparent !important; -} - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-state-normal { - background: transparent !important; - border-color: transparent !important; - } -.MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal-horizontal, .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal{ - background: #808080 ! important; - border-color: #808080 !important; - border-width: 4px; - z-index:99999; - border-radius: 0px !important; -} - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal { - width: 4px ! important; - } - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal-horizontal { - height: 4px !important; - } - - -.MLjqui-primary .MLjqui-icon-arrow-down, .MLjqui-warning .MLjqui-icon-arrow-down, .MLjqui-danger .MLjqui-icon-arrow-down, .MLjqui-success .MLjqui-icon-arrow-down, .MLjqui-info .MLjqui-icon-arrow-down { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-down-selected, .MLjqui-warning .MLjqui-icon-arrow-down-selected, .MLjqui-danger .MLjqui-icon-arrow-down-selected, .MLjqui-success .MLjqui-icon-arrow-down-selected, .MLjqui-info .MLjqui-icon-arrow-down-selected { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-down-hover, .MLjqui-warning .MLjqui-icon-arrow-down-hover, .MLjqui-danger .MLjqui-icon-arrow-down-hover, .MLjqui-success .MLjqui-icon-arrow-down-hover, .MLjqui-info .MLjqui-icon-arrow-down-hover { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up, .MLjqui-warning .MLjqui-icon-arrow-up, .MLjqui-danger .MLjqui-icon-arrow-up, .MLjqui-success .MLjqui-icon-arrow-up, .MLjqui-info .MLjqui-icon-arrow-up { - background-image: url('../images/icon-up-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up-selected, .MLjqui-warning .MLjqui-icon-arrow-up-selected, .MLjqui-danger .MLjqui-icon-arrow-up-selected, .MLjqui-success .MLjqui-icon-arrow-up-selected, .MLjqui-info .MLjqui-icon-arrow-up-selected { - background-image: url('../images/icon-up-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up-hover, .MLjqui-warning .MLjqui-icon-arrow-up-hover, .MLjqui-danger .MLjqui-icon-arrow-up-hover, .MLjqui-success .MLjqui-icon-arrow-up-hover, .MLjqui-info .MLjqui-icon-arrow-up-hover { - background-image: url('../images/icon-up-white.png'); -} - -.MLjqui-primary .MLjqui-icon-arrow-right, .MLjqui-warning .MLjqui-icon-arrow-right, .MLjqui-danger .MLjqui-icon-arrow-right, .MLjqui-success .MLjqui-icon-arrow-right, .MLjqui-info .MLjqui-icon-arrow-right { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-right-selected, .MLjqui-warning .MLjqui-icon-arrow-right-selected, .MLjqui-danger .MLjqui-icon-arrow-right-selected, .MLjqui-success .MLjqui-icon-arrow-right-selected, .MLjqui-info .MLjqui-icon-arrow-right-selected { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-right-hover, .MLjqui-warning .MLjqui-icon-arrow-right-hover, .MLjqui-danger .MLjqui-icon-arrow-right-hover, .MLjqui-success .MLjqui-icon-arrow-right-hover, .MLjqui-info .MLjqui-icon-arrow-right-hover { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left, .MLjqui-warning .MLjqui-icon-arrow-left, .MLjqui-danger .MLjqui-icon-arrow-left, .MLjqui-success .MLjqui-icon-arrow-left, .MLjqui-info .MLjqui-icon-arrow-left { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left-selected, .MLjqui-warning .MLjqui-icon-arrow-left-selected, .MLjqui-danger .MLjqui-icon-arrow-left-selected, .MLjqui-success .MLjqui-icon-arrow-left-selected, .MLjqui-info .MLjqui-icon-arrow-left-selected { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left-hover, .MLjqui-warning .MLjqui-icon-arrow-left-hover, .MLjqui-danger .MLjqui-icon-arrow-left-hover, .MLjqui-success .MLjqui-icon-arrow-left-hover, .MLjqui-info .MLjqui-icon-arrow-left-hover { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary-item .MLjqui-listitem-state-hover, .MLjqui-primary-item .MLjqui-menu-item-hover, .MLjqui-primary-item .MLjqui-tree-item-hover, .MLjqui-primary-item .MLjqui-calendar-cell-hover, .MLjqui-primary-item .MLjqui-grid-cell-hover, -.MLjqui-primary-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-primary-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-primary-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-primary-item .MLjqui-listitem-state-selected, .MLjqui-primary-item .MLjqui-menu-item-selected, .MLjqui-primary-item .MLjqui-tree-item-selected, .MLjqui-primary-item .MLjqui-calendar-cell-selected, .MLjqui-primary-item .MLjqui-grid-cell-selected, -.MLjqui-primary-item .MLjqui-menu-vertical .MLjqui-primary-item .MLjqui-menu-item-top-selected, .MLjqui-primary-item .MLjqui-grid-selectionarea, .MLjqui-primary-item .MLjqui-input-button-header, .MLjqui-primary-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-warning-item .MLjqui-listitem-state-hover, .MLjqui-warning-item .MLjqui-menu-item-hover, .MLjqui-warning-item .MLjqui-tree-item-hover, .MLjqui-warning-item .MLjqui-calendar-cell-hover, .MLjqui-warning-item .MLjqui-grid-cell-hover, -.MLjqui-warning-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-warning-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-warning-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-warning-item .MLjqui-listitem-state-selected, .MLjqui-warning-item .MLjqui-menu-item-selected, .MLjqui-warning-item .MLjqui-tree-item-selected, .MLjqui-warning-item .MLjqui-calendar-cell-selected, .MLjqui-warning-item .MLjqui-grid-cell-selected, -.MLjqui-warning-item .MLjqui-menu-vertical .MLjqui-warning-item .MLjqui-menu-item-top-selected, .MLjqui-warning-item .MLjqui-grid-selectionarea, .MLjqui-warning-item .MLjqui-input-button-header, .MLjqui-warning-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-danger-item .MLjqui-listitem-state-hover, .MLjqui-danger-item .MLjqui-menu-item-hover, .MLjqui-danger-item .MLjqui-tree-item-hover, .MLjqui-danger-item .MLjqui-calendar-cell-hover, .MLjqui-danger-item .MLjqui-grid-cell-hover, -.MLjqui-danger-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-danger-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-danger-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-danger-item .MLjqui-listitem-state-selected, .MLjqui-danger-item .MLjqui-menu-item-selected, .MLjqui-danger-item .MLjqui-tree-item-selected, .MLjqui-danger-item .MLjqui-calendar-cell-selected, .MLjqui-danger-item .MLjqui-grid-cell-selected, -.MLjqui-danger-item .MLjqui-menu-vertical .MLjqui-danger-item .MLjqui-menu-item-top-selected, .MLjqui-danger-item .MLjqui-grid-selectionarea, .MLjqui-danger-item .MLjqui-input-button-header, .MLjqui-danger-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-success-item .MLjqui-listitem-state-hover, .MLjqui-success-item .MLjqui-menu-item-hover, .MLjqui-success-item .MLjqui-tree-item-hover, .MLjqui-success-item .MLjqui-calendar-cell-hover, .MLjqui-success-item .MLjqui-grid-cell-hover, -.MLjqui-success-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-success-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-success-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-success-item .MLjqui-listitem-state-selected, .MLjqui-success-item .MLjqui-menu-item-selected, .MLjqui-success-item .MLjqui-tree-item-selected, .MLjqui-success-item .MLjqui-calendar-cell-selected, .MLjqui-success-item .MLjqui-grid-cell-selected, -.MLjqui-success-item .MLjqui-menu-vertical .MLjqui-success-item .MLjqui-menu-item-top-selected, .MLjqui-success-item .MLjqui-grid-selectionarea, .MLjqui-success-item .MLjqui-input-button-header, .MLjqui-success-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-info-item .MLjqui-listitem-state-hover, .MLjqui-info-item .MLjqui-menu-item-hover, .MLjqui-info-item .MLjqui-tree-item-hover, .MLjqui-info-item .MLjqui-calendar-cell-hover, .MLjqui-info-item .MLjqui-grid-cell-hover, -.MLjqui-info-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-info-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-info-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-info-item .MLjqui-listitem-state-selected, .MLjqui-info-item .MLjqui-menu-item-selected, .MLjqui-info-item .MLjqui-tree-item-selected, .MLjqui-info-item .MLjqui-calendar-cell-selected, .MLjqui-info-item .MLjqui-grid-cell-selected, -.MLjqui-info-item .MLjqui-menu-vertical .MLjqui-info-item .MLjqui-menu-item-top-selected, .MLjqui-info-item .MLjqui-grid-selectionarea, .MLjqui-info-item .MLjqui-input-button-header, .MLjqui-info-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-inverse-item .MLjqui-listitem-state-hover, .MLjqui-inverse-item .MLjqui-menu-item-hover, .MLjqui-inverse-item .MLjqui-tree-item-hover, .MLjqui-inverse-item .MLjqui-calendar-cell-hover, .MLjqui-inverse-item .MLjqui-grid-cell-hover, -.MLjqui-inverse-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-inverse-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-inverse-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-inverse-item .MLjqui-listitem-state-selected, .MLjqui-inverse-item .MLjqui-menu-item-selected, .MLjqui-inverse-item .MLjqui-tree-item-selected, .MLjqui-inverse-item .MLjqui-calendar-cell-selected, .MLjqui-inverse-item .MLjqui-grid-cell-selected, -.MLjqui-inverse-item .MLjqui-menu-vertical .MLjqui-inverse-item .MLjqui-menu-item-top-selected, .MLjqui-inverse-item .MLjqui-grid-selectionarea, .MLjqui-inverse-item .MLjqui-input-button-header, .MLjqui-inverse-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase_tablet.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase_tablet.css deleted file mode 100644 index 0788547d..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquibase_tablet.css +++ /dev/null @@ -1,6827 +0,0 @@ -/*Rounded Corners*/ -/*top-left rounded Corners*/ -.MLjqui-rc-tl -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; -} -/*top-right rounded Corners*/ -.MLjqui-rc-tr -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom-left rounded Corners*/ -.MLjqui-rc-bl -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*bottom-right rounded Corners*/ -.MLjqui-rc-br -{ - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*top rounded Corners*/ -.MLjqui-rc-t -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom rounded Corners*/ -.MLjqui-rc-b -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*right rounded Corners*/ -.MLjqui-rc-r -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*left rounded Corners*/ -.MLjqui-rc-l -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*all rounded Corners*/ -.MLjqui-rc-all -{ -/* -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; */ -} -/*reset rounded corners*/ -.MLjqui-rc-reset -{ - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} - -/*Reset Style*/ -.MLjqui-reset -{ - padding: 0; - margin: 0; - border: none; - background: transparent; - outline: none; - box-sizing: content-box; -} -.MLjqui-clear { - align:left; valign:top; left: 0px; top: 0px; -webkit-appearance: none !important; outline: none !important; padding: 0px; margin: 0px; -} -.MLjqui-popup { - box-sizing: content-box; -} -.MLjqui-position-reset { - position: static !important; -} -.MLjqui-border-reset { - border: none !important; -} -.MLjqui-overflow-hidden { - overflow: hidden !important; -} -.MLjqui-position-relative { - position: relative !important; -} -.MLjqui-position-absolute { - position: absolute !important; -} -.MLjqui-max-size { - width: 100% !important; - height: 100% !important; -} -.MLjqui-background-reset { - background: transparent !important; -} -/*Disable browser selection*/ -.MLjqui-disableselect -{ - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - -ms-user-select:none; - -webkit-touch-callout:none; - -webkit-tap-highlight-color: rgba(0,0,0,0); -} -.MLjqui-enableselect { - -webkit-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -o-user-select: auto; - -ms-user-select:text; - user-select:all; -} -.MLjqui-hideborder -{ - border: none !important; -} -.MLjqui-hidescrollbars -{ - overflow: hidden !important; -} -/*MLjquiButton, MLjquiToggleButton, MLjquiRepeatButton Style*/ -.MLjqui-button{outline: none; border: 1px solid transparent; padding: 3px; text-align: center; vertical-align: central; margin: 0 0 0 0; cursor: default; } -button.MLjqui-button, input[type=button].MLjqui-button, input[type=submit].MLjqui-button { - box-sizing: border-box !important; -moz-box-sizing: border-box !important; -} - -.MLjqui-buttongroup{} -.MLjqui-group-button-normal { - vertical-align: middle; - text-align: center; -} -/*applied to the link button's anchor element.*/ -.MLjqui-link -{ - text-decoration: none; - color: #111111; -} - -/*shows elements.*/ -.MLjqui-visible -{ - display: block; -} -/*hides elements.*/ -.MLjqui-hidden -{ - display: none; -} -.MLjqui-widget, .MLjqui-widget-content, .MLjqui-widget-header, .MLjqui-fill-state-normal { - line-height: 1.231; -} -.MLjqui-widget-header{ height:46px !important; line-height: 46px !important} - -/*MLjquiGauge Style*/ -.MLjqui-gauge-label, .MLjqui-gauge-caption -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-knob { - text-align: center; -} -/*MLjquiChart Style*/ -.MLjqui-knob-label, -.MLjqui-chart-axis-text, -.MLjqui-chart-label-text, -.MLjqui-chart-tooltip-text, -.MLjqui-chart-legend-text -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-chart-axis-description -{ - fill: #555555; - color: #555555; - font-size: 11px; - font-family: Verdana; -} -.MLjqui-chart-title-text -{ - fill: #111111; - color: #111111; - font-size: 14px; - font-weight: bold; - font-family: Verdana; -} -.MLjqui-chart-title-description -{ - fill: #111111; - color: #111111; - font-size: 12px; - font-weight: normal; - font-family: Verdana; -} - -/*applied to the Grid's element.*/ -.MLjqui-grid -{ - overflow: hidden; - border-style: solid; - border-width: 1px; -} -/*applied to the Pager.*/ -.MLjqui-grid-pager -{ - border: none; - border-top: 1px solid transparent; -} -/*applied to the Top Pager.*/ -.MLjqui-grid-pager-top -{ - border: none; - border-bottom: 1px solid transparent; -} -.MLjqui-grid-pager-number{ - padding: 2px 5px; - text-decoration: none; - margin: 1px; - border: 1px solid transparent; - color: inherit !important; - *color: expression(this.parentNode.currentStyle['color']) !important; - outline: none; - font-weight: normal !important; -} -.MLjqui-grid-menu-item-touch { - padding-top: 6px !important; - padding-bottom: 6px !important; -} -/*applied to the Grid's bottom-right area between the horizontal and vertical scrollbars.*/ -.MLjqui-grid-bottomright -{ - -} -/*applied to the Grid's header area.*/ -.MLjqui-grid-header -{ - border-style: solid; - border-width: 0px 0px 1px 0px; - overflow: hidden; - border-color: transparent; - margin: 0px; - padding: 0px; - background: #f4f4f4; - - } - /*applied to the columns.*/ -.MLjqui-grid-column-header, .MLjqui-grid-columngroup-header { - border-style: solid; - border-width: 0px 1px 0px 0px; - border-color: transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -.MLjqui-grid-column-header-rtl, .MLjqui-grid-columngroup-header-rtl { - border-width: 0px 0px 0px 1px; -} -.MLjqui-grid-columngroup-header { - border-bottom-width: 1px; - border-left-width: 1px; -} - /*applied to the column's button.*/ - .MLjqui-grid-column-menubutton { - border-style: solid; - border-width: 0px 0px 0px 1px; - border-color: transparent; - background-image: url('../images/menubutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } -.MLjqui-grid-column-menubutton-rtl { - border-width: 0px 1px 0px 0px; -} - /*applied to the column's sort button when the sort order is ascending.*/ - .MLjqui-grid-column-sortascbutton { - border: none; - background-image: url('../images/sortascbutton.png'); - background-repeat: no-repeat; - background-position: center; - background-color: none; - cursor: pointer; - } - /*applied to the column's sort button when the sort order is descending.*/ - .MLjqui-grid-column-sortdescbutton { - background-image: url('../images/sortdescbutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } - /*applied to the column's filter button.*/ - .MLjqui-grid-column-filterbutton - { - border: none; - background-image: url('../images/filter.png'); - background-repeat: no-repeat; - background-position: center; - } - /*applied to the column's resize line.*/ - .MLjqui-grid-column-resizeline { - border-right: 1px dotted #555; - } - /*applied to the validation popup during cell editing.*/ - .MLjqui-grid-validation - { - background: #df2227 !important; - color: #fff !important; - padding: 4px 8px; - } -.MLjqui-grid-validation-label { - color: #fff !important; - background: #df2227 !important; - border: 1px solid #df2227 !important; -} - .MLjqui-grid-validation-arrow-up - { - background-image: url('../images/red_arrow_up.png'); - background-repeat: no-repeat; - background-position: center center; - } - .MLjqui-grid-validation-arrow-down - { - background-image: url('../images/red_arrow_down.png'); - background-repeat: no-repeat; - background-position: center center; - } - /*applied to the column's resize start line.*/ - .MLjqui-grid-column-resizestartline { - border-right: 1px solid #444; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .MLjqui-grid-sortasc-icon - { - background-image: url('../images/sortasc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .MLjqui-grid-sortdesc-icon - { - background-image: url('../images/sortdesc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grid menu's sort remove item/*/ - .MLjqui-grid-sortremove-icon - { - background-image: url('../images/sortremove.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grouping column's drag and drop item when the drop operation is allowed.*/ - .MLjqui-grid-drag-icon - { - background-image: url('../images/drag.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the grouping column's drag and drop item when the drop operation is not allowed.*/ - .MLjqui-grid-dragcancel-icon - { - background-image: url('../images/dragcancel.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the 'group by' menu item.*/ - .MLjqui-grid-groupby-icon - { - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } -/*applied to the column anchor tags.*/ - .MLjqui-grid-column-header a:link, .MLjqui-grid-column-header a:visited - { - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -.MLjqui-grid-toolbar a:link, .MLjqui-grid-toolbar a:visited { - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -/*applied to the groups header area.*/ - .MLjqui-grid-groups-header, .MLjqui-grid-toolbar, .MLjqui-scheduler-toolbar { - border-style: solid; - border-width: 0px 0px 1px 0px; - border-color: #aaa; - white-space: nowrap; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -/*applied to a grouping row.*/ - .MLjqui-grid-groups-row { - font-weight:bold; - white-space: nowrap; - text-align: left; - padding: 0px; - top: 50%; - margin-top: -8px; - } - /*applied to the row details.*/ - .MLjqui-grid-groups-row-details { - font-weight: normal; - } - /*applied to a grouping column.*/ - .MLjqui-grid-group-column - { - border: 1px solid transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } - /*applied to the lines between the group columns.*/ - .MLjqui-grid-group-column-line - { - background: #aaa; - } - /*applied to the drop line indicators displayed in the grouping header.*/ - .MLjqui-grid-group-drag-line - { - background: #80be09; - } - /*applied to the anchor tags inside a grouping column.*/ - .MLjqui-grid-group-column a:link{ - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); -} - .MLjqui-grid-group-column a:visited{ - color: inherit; - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a grid cell*/ -.MLjqui-grid-cell { - border-style: solid; - border-width: 0px 1px 1px 0px; - margin-right: 1px; - margin-bottom: 1px; - border-color: transparent; - background: #fff; - white-space: nowrap; - font-weight: normal; - font-size: inherit; - overflow: hidden; - text-overflow: ellipsis; - position: absolute !important; - height: 100%; - } -.MLjqui-grid-cell-locked { - color: #aaa !important; -} -.MLjqui-grid-cell-left-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: left; - margin-right: 2px; - margin-left: 4px; -} -.MLjqui-grid-cell-middle-align { - text-overflow: ellipsis; - overflow: hidden; - padding-bottom: 2px; - text-align: center; -} -.MLjqui-grid-cell-right-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: right; - margin-right: 4px; - margin-left: 2px; -} - -/*applied to a grid cell that is part of a rows group.*/ - .MLjqui-grid-group-cell{ - overflow: hidden; - position: absolute !important; - height: 100%; - background: #fff; - } -/*applied to the grid cells in the sort column*/ - .MLjqui-grid-cell-sort { - background-color: #f0f0f0; - } - - /*applied to the grid cells in the filter column*/ - .MLjqui-grid-cell-filter { - background-color: #e6e6e6; - } -.MLjqui-grid-cell-add-new-row { - background: #fdfcf3 !important; - color: #000 !important; -} - - /*applied to the grid cells area.*/ -.MLjqui-grid-content { - border-style: solid; - border-width: 0px 0px 0px 0px; - border-color: transparent; - white-space: nowrap; - overflow: hidden; - } - /*applied to a grid cell that is part of a rows group.*/ -.MLjqui-grid-group-cell, .MLjqui-grid-empty-cell { - border-style: solid; - border-width: 0px 0px 1px 0px; - white-space: nowrap; - font-weight: normal; - } -.MLjqui-widget .MLjqui-grid-cleared-cell, .MLjqui-grid-cleared-cell { - border: transparent !important; -} -.MLjqui-grid-cell-wrap {white-space: normal !important;} - -.MLjqui-tree-grid-indent { - width: 15px; - display: inline-block; - height: 8px; - overflow: hidden; - vertical-align: top; -} -.MLjqui-tree-grid-title { - text-decoration: none; - vertical-align: top; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-tree-grid-collapse-button, .MLjqui-tree-grid-expand-button { - display: inline-block; - margin-top: 0px; - margin-right: 0px; - position: relative; - width: 15px; - height: 16px; - vertical-align: top; -} -.MLjqui-tree-grid-checkbox { - float: none !important; - width: 14px; - height: 14px; - cursor: pointer; - margin-right: 2px !important; - margin-left: 2px !important; -} -.MLjqui-tree-grid-icon { - float: none !important; - width: 14px; - height: 14px; - margin-right: 4px; -} -.MLjqui-tree-grid-icon-rtl { - margin-right: 0px; - margin-left: 4px; -} -.MLjqui-tree-grid-icon-size { - width: 14px; - height: 14px; - line-height: 16px; -} - -.MLjqui-tree-grid-checkbox-tick { - width: 100%; - height: 100%; -} -.MLjqui-tree-grid-expand-button { - height: 16px; - width: 15px; - vertical-align: top; -} - -/*applied to a cell in MLjquiDataTable*/ -.MLjqui-cell { - min-height: 23px; - padding: 4px 4px 2px; - margin: 0; - border-collapse: separate; - border-spacing: 0px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-top-width: 0px; - border-left-width: 0px; - box-sizing: border-box; - -moz-box-sizing: border-box; - white-space: normal; - line-height: 1.231; -} -.MLjqui-grid-cell-nowrap {white-space: nowrap;} - -.MLjqui-cell-editor { - padding-left: 4px !important; - padding-right: 3px !important; -} -.MLjqui-left-align { - text-align: left; -} -.MLjqui-center-align { - text-align: center; -} -.MLjqui-right-align { - text-align: right; -} -.MLjqui-top-align { - vertical-align:top; -} -.MLjqui-bottom-align { - vertical-align: bottom; -} - -.MLjqui-grid-table .MLjqui-grid-cell { - position: static !important; - zoom: 1 !important; -} -/*applied to the Grid's Table element.=========================================================================================================================================================================================================*/ -.MLjqui-grid-table { - font-size: 11px; - table-layout: fixed; - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 0px; - -webkit-overflow-scrolling: touch; - outline: none; - zoom: 1 !important; - empty-cells: show; - border-right: 1px solid #a8a8a8; - line-height: 1.231; - width: auto; - border: none; -} -.MLjqui-grid-table-rtl { - border-left-width: 1px; - border-right-width: 0px; -} -.MLjqui-details table { - border-collapse: collapse; - table-layout: fixed; - border-spacing: 0px; -} - - /*applied to a grid cell that is part of a details row and grouping is enabled.*/ -.MLjqui-grid-group-details-cell { - - } - /*applied to a grid cell that is part of a details row.*/ -.MLjqui-grid-details-cell { - border-width: 0px 1px 0px 0px; - } - /*applied to a grid cell. Represents the alternating cell background.*/ -.MLjqui-grid-cell-alt { - background: #f2f2f2; - } -/*applied to a sorted and alternating grid cell*/ -.MLjqui-grid-cell-sort-alt { - background-color: #e5e5e5; - }/*applied to a sorted and alternating grid cell*/ -.MLjqui-grid-cell-filter-alt { - background-color: #f0f0f0; - } - /*applied to a pinned grid cell.*/ -.MLjqui-grid-cell-pinned { - background-color: #e5e5e5; - } - /*applied to a pinned grid cell. Represents the alternating cell background.*/ -.MLjqui-grid-cell-pinned-alt { - background-color: #e5e5e5; - } - /*applied to a selected grid cell.*/ - .MLjqui-grid-cell-selected { - border-left: 0px solid transparent; - } - .MLjqui-cell-rtl { - border-left-width: 1px; - border-right-width: 0px; - } - .MLjqui-grid-cell-rtl { - border-width: 0px 0px 1px 1px; - } - .MLjqui-grid-table .MLjqui-grid-cell { - border-width: 0px 0px 1px 1px; - } -.MLjqui-grid-table-one-cell { - border: none; - border-right-width: 1px; - border-right-style:solid; - border-right-color:#aaa; -} - - .MLjqui-grid-table .MLjqui-grid-cell:first-child { - border-left-width: 0px; - } - - /*applied to the selection area.*/ - .MLjqui-grid-selectionarea { - border: 1px solid transparent; - opacity: 0.5; - filter: alpha(opacity=50); - } - /*applied to a hovered grid cell.*/ - .MLjqui-grid-cell-hover { - border-color: transparent; - } - /*applied to a grid cell when the grid is empty.*/ - .MLjqui-grid-empty-cell{ overflow: visible; border-bottom: none;} - - /*applied to the Grid when its loading the data.*/ - .MLjqui-grid-load -{ - padding-right: 0px; - background-image: url(../images/loader.gif); - background-position: 50% 50%; - background-repeat: no-repeat; - z-index: 9999; - display: block; -} -/*applied to a group's collapse button.*/ -.MLjqui-grid-group-collapse -{ - padding-right: 0px; - background-image: url(../images/icon-right.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-grid-group-collapse-rtl -{ - padding-right: 0px; - background-image: url(../images/icon-left.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to a group's expand button.*/ -.MLjqui-grid-group-expand, .MLjqui-grid-group-expand-rtl -{ - padding-right: 0px; - background-image: url(../images/icon-down.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*MLjquiProgresBar Style*/ -.MLjqui-progressbar -{ - overflow: hidden; - outline: none; - border: 1px solid transparent; - height: 2em; -} -/*applied to the progressbar's value element*/ -.MLjqui-progressbar-value -{ - outline: none; - border: 0px solid transparent; - height: 100%; -} -/*applied to the progress bar's vertical value element- when the widget's orientation is 'vertical'*/ -.MLjqui-progressbar-value-vertical -{ - outline: none; - border: 0px solid transparent; - height: 100%; - background: transparent; -} -/*applied to the progressbar's text element*/ -.MLjqui-progressbar-text -{ - font-size: 10px; - border: none; -} -/*applied to the progress bar when the widget is in disabled state*/ -.MLjqui-progressbar-disabled -{ - outline: none; - border: 1px solid transparent; - height: 2em; -} - -/*MLjquiMenu Style*/ -.MLjqui-menu -{ - border: 1px solid transparent; - float: none; - margin: 0px; - height: 100%; - padding: 0px; - overflow: hidden; - text-align: left; -} -.MLjqui-menu-dropdown-column -{ - float: left; -} -/*applied to the menu when it is horizontal. Sets the menu's background*/ -.MLjqui-menu-horizontal -{ - margin: 0px; - padding: 0px; - overflow: hidden; - text-align: center; -} -/*applied to the menu when it is vertical. Sets the menu's background*/ -.MLjqui-menu-vertical -{ - text-align: left; -} -/*applied to the sub menu. Sets the sub menu's background*/ -.MLjqui-menu-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - display: none; - float: none; - width: 150px; - border-style: solid; - border-width: 1px; - text-align: left; - padding: 2px; -} -/*applied to the sub menu's ul elements.*/ -.MLjqui-menu-dropdown ul -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - border: none; -} -/*applied to the menu's ul elements.*/ -.MLjqui-menu ul -{ - left: 100%; - margin: 0px; - padding: 2px; - right: 0; - overflow: hidden; - background-color: transparent; - border: none; -} -/*applied to the menu's li elements.*/ -.MLjqui-menu li, .MLjqui-menu-dropdown li -{ - line-height: 1.3 !important; -} -/*applied to the top level menu items.*/ -.MLjqui-menu-item-top -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - left: 100%; - overflow: hidden; - color: inherit; - right: 0; - margin: 0px 1px 0px 1px; - cursor: pointer; -} -/*applied to the sub menu items.*/ -.MLjqui-menu-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - margin: 1px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when the mouse is over the item.*/ -.MLjqui-menu-item-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a top-level menu item when the mouse is over it.*/ -.MLjqui-menu-item-top-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - top: 50%; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when its sub menu is opened.*/ -.MLjqui-menu-item-selected -{ - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a disabled sub menu item.*/ -.MLjqui-menu-item-disabled -{ - -} -/*applied to a top-level menu item when its sub menu is opened.*/ -.MLjqui-menu-item-top-selected -{ - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - cursor: pointer; -} -/*applied to the menu separator items.*/ -.MLjqui-menu-item-separator -{ - text-indent: 0; - background-color: #ddd; - border: none; - list-style: none; - height: 1px; - line-height:0 !important; - padding: 0px; - margin: 1px 2px 1px 2px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - font-size: 1px; -} -/*applied to a sub menu item when it has sub menu items. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-right -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items. Displays down arrow icon.*/ -.MLjqui-menu-item-arrow-down -{ - background-image: url(../images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items. Displays up arrow icon.*/ -.MLjqui-menu-item-arrow-up -{ - background-image: url(../images/icon-up.png); -} -.MLjqui-menu-minimized { - position: relative; -} -.MLjqui-menu-title { - position: relative; - float: right; - margin-top: 4px; - padding-top: 4px; - padding-right: 20px; -} -.MLjqui-menu-minimized-button -{ - background-image: url('../images/icon-menu-minimized.png'); - background-repeat: no-repeat; - background-position: left center; - height: 24px; - width: 24px; - padding: 0px; - margin-left: 7px; - margin-top: 4px; - float : left; -} -.MLjqui-menu-ul-minimized { - display: block!important; - width: auto !important; -} -.MLjqui-menu-ul-minimized ul { - margin-top: 0px; - margin-bottom: 0px; - padding-top: 0px; - padding-bottom: 0px; - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.MLjqui-menu-minimized li:last-child { - padding-bottom: 0px; - margin: 0px; -} -.MLjqui-menu-item-arrow-right, .MLjqui-menu-item-arrow-down, .MLjqui-menu-item-arrow-up, .MLjqui-menu-item-arrow-right { - background-position: 100% 50%; - background-repeat: no-repeat; - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; -} -/*applied to a sub menu item when it has sub menu items. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-left -{ - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; - background-image: url(../images/icon-left.png); - background-position: 0 50%; - background-repeat: no-repeat; -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-right-selected -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays down arrow icon.*/ -.MLjqui-menu-item-arrow-down-selected -{ - background-image: url(../images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays up arrow icon.*/ -.MLjqui-menu-item-arrow-up-selected -{ - background-image: url(../images/icon-up.png); -} -.MLjqui-menu-item-arrow-right-selected, .MLjqui-menu-item-arrow-up-selected, .MLjqui-menu-item-arrow-down-selected, .MLjqui-menu-item-arrow-top-right { - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; - background-position: 100% 50%; - background-repeat: no-repeat; -} -/*applied to a top-level menu item when it has sub menu items. Displays right arrow icon.*/ -.MLjqui-menu-item-arrow-top-right -{ - background-image: url(../images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-left-selected -{ - background-image: url(../images/icon-left.png); -} -/*applied to a top-level menu item when it has sub menu items. Displays left arrow icon.*/ -.MLjqui-menu-item-arrow-top-left -{ - background-image: url(../images/icon-left.png); -} -.MLjqui-menu-item-arrow-left-selected, .MLjqui-menu-item-arrow-top-left { - background-position: 0 50%; - background-repeat: no-repeat; - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; -} -/*applied to the anchor elements*/ -.MLjqui-menu-item a:link, .MLjqui-menu-item a:visited, .MLjqui-menu-item a:hover, .MLjqui-menu-item-top a:link, .MLjqui-menu-item-top a:visited, .MLjqui-menu-item-top a:hover -{ - text-decoration: none; - color: inherit; - outline: none; - background-color: transparent; - *color: expression(this.parentNode.currentStyle['color']); -} - -/*applied to the menu widget when it is disabled.*/ -.MLjqui-menu-disabled -{ - cursor: default; -} -/*applied to the anchor elements of all disabled menu items.*/ -.MLjqui-menu-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.MLjqui-menu-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.MLjqui-menu-disabled a:hover -{ - cursor: default; -} -.MLjqui-menu-dropdown -{ - right: -1px; -} - -/*MLjquitree Style*/ -.MLjqui-tree -{ - left: 100%; - right: 0; - float: none; - margin: 0px; - border-style: solid; - border-width: 1px; - padding: 0px; - overflow: hidden; - text-align: left; - outline: none; - white-space: nowrap; - line-height: 14px !important; -} -/*applied to the MLjquiTree root UL element.*/ -.MLjqui-tree-dropdown-root -{ - left: 100%; - padding: 0px 5px 0px 5px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: #fff; - text-align: left; - outline: none; - white-space: nowrap; - margin: 0px; -} -.MLjqui-tree-dropdown-root-rtl { - padding: 0px 5px 0px 0px; - text-align: right; - float: right; - margin: 0px; -} - -/*applied to the MLjquiTree UL elements.*/ -.MLjqui-tree-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px 0px 0px 10px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: transparent; - text-align: left; - outline: none; -} -.MLjqui-tree-dropdown-rtl { - padding: 3px 0px 0px 0px; - text-align: right; -} - -/*applied to a tree item.*/ -.MLjqui-tree-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 3px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - right: 0; - text-align: left; - cursor: default; - text-decoration: none; -} -/*applied to the MLjquiTree LI elements.*/ -.MLjqui-tree-item-li -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - left: 100%; - right: 0; - text-align: left; - outline: none; - margin: 0px; - margin-top: 1px; - padding: 0px; -} -/*applied to the last LI elements in an UL element.*/ -.MLjqui-tree-item-u-last -{ - margin: 0px 0px 0px 0px; -} -/*applied to a tree item when the mouse is over the item.*/ -.MLjqui-tree-item-hover -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -/*applied to a tree item when the item is selected.*/ -.MLjqui-tree-item-selected -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -.MLjqui-tree-item-rtl { - text-align: right; -} -.MLjqui-tree-item-li-rtl { - text-align: right; -} -/*applied to the anchor element of a tree item.*/ -.MLjqui-tree-item a:link, .MLjqui-tree-item a:visited -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - padding: 0px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - text-decoration: none; - outline: none; -} -.MLjqui-tree-item-selected, .MLjqui-tree-item-hover a:hover -{ - color: inherit; -} -.MLjqui-tree-item-selected, .MLjqui-tree-item-hover a:visited -{ - color: inherit; -} - -/*applied to a tree item when the item is disabled.*/ -.MLjqui-tree-item-disabled -{ - -} -/*applied to a tree item when it has sub items and is collapsed. Displays an arrow icon next to the item.*/ -.MLjqui-tree-item-arrow-collapse, .MLjqui-tree-item-arrow-collapse-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(../images/icon-right.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-tree-item-arrow-collapse-rtl, .MLjqui-tree-item-arrow-collapse-hover-rtl { - background-image: url(../images/icon-left.png); -} - -/*applied to a tree item when it has sub items and is expanded. Displays an arrow icon next to the item.*/ -.MLjqui-tree-item-arrow-expand, .MLjqui-tree-item-arrow-expand-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(../images/icon-down.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to the tree when it is disabled.*/ -.MLjqui-tree-disabled -{ - cursor: default; -} -/*applied to the anchor elements in a tree when it is disabled.*/ -.MLjqui-tree-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.MLjqui-tree-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.MLjqui-tree-disabled a:hover -{ - cursor: default; -} - - -/*MLjquiTabs*/ -.MLjqui-tabs -{ - outline: none; - margin: 0 0 0 0; - padding: 0px; - overflow: hidden; - background: transparent; - border: 1px solid transparent; -} -/*applied to the tab close button.*/ -.MLjqui-tabs-close-button -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - position: relative; - left: 5px; -} -/*applied to the tab close button when the tab is selected.*/ -.MLjqui-tabs-close-button-selected -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -/*applied to the tab close button when the mouse is over the tab.*/ -.MLjqui-tabs-close-button-hover -{ - outline: none; - background-image: url(../images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.MLjqui-tabs-close-button, .MLjqui-tabs-close-button-selected, .MLjqui-tabs-close-button-hover{background-repeat:no-repeat; background-position:center;} -/*applied to the tab's left scroll arrow.*/ -.MLjqui-tabs-arrow-left -{ - outline: none; - position: relative; - z-index: 15; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -/*applied to the tab's right scroll arrow.*/ -.MLjqui-tabs-arrow-right -{ - outline: none; - position: relative; - z-index: 15; - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.MLjqui-tabs-arrow-background -{ - background: #eeeeee; -} -/*applied to the tab's title.*/ -.MLjqui-tabs-title -{ - outline: none; - display: block; - cursor: pointer; - white-space: nowrap; - left: 100%; - right: 0; - text-indent: 0px; - list-style: none; - border: 1px solid transparent; - margin: 0px 2px 0px 0px; - overflow: hidden; - z-index: 1; - padding-left: 13px; - padding-right: 13px; - padding-bottom: 5px; - padding-top: 5px; - background: transparent; - height: auto; - position: relative; -} -.MLjqui-tabs-title-bottom -{ -} -.MLjqui-tabs-title a:link -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:hover -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:active -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.MLjqui-tabs-title a:visited -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'top' .*/ -.MLjqui-tabs-title-selected-top -{ - z-index: 99; - outline: none; - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid #fff; - background-color: #fff; - padding-bottom: 7px; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-selected-bottom -{ - outline: none; - border-top: 1px solid #fff; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - padding-top: 7px; - padding-bottom: 5px; - margin-top: -2px; - background-color: #fff; -} -/*applied to the tab's title when the tab is hovered and the MLjquiTab's position property is set to 'top' .*/ -.MLjqui-tabs-title-hover-top -{ - outline: none; - border: 1px solid transparent; - padding-bottom: 5px; -} -/*applied to the tab's title when the tab is hovered and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-hover-bottom -{ - outline: none; - border: 1px solid transparent; - padding-top: 5px; -} -/*applied to the tab's title when the tab is disabled.*/ -.MLjqui-tabs-title-disable -{ - -} -/*applied to the tab's header.*/ -.MLjqui-tabs-header -{ - padding-left: 0px; - padding-right: 0px; - padding-top: 3px; - padding-bottom: 1px; - margin: 0px; - border-top: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid #aaa; - background: #eeeeee; -} -/*applied to the tab's header when the position is bottom.*/ -.MLjqui-tabs-header-bottom -{ - padding-top: 1px; - padding-bottom: 3px; - border-top: 0px solid #a8a8a8; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid transparent; -} -/*applied to the tab's header when the tab is collapsed.*/ -.MLjqui-tabs-header-collapsed -{ - border: 1px solid #a8a8a8; -} -/*applied to the tab's header when the position is bottom and tab is collapsed.*/ -.MLjqui-tabs-header-collapsed-bottom -{ - border: 1px solid #a8a8a8; -} -.MLjqui-tabs-collapsed -{ - border: 0px solid transparent; -} -.MLjqui-tabs-collapsed-bottom -{ - border: 0px solid transparent; -} -/*applied to the tab's selection tracker container element.*/ -.MLjqui-tabs-selection-tracker-container -{ - outline: none; - position: relative; - text-indent: 0px; - margin: 0 0 0 0; - padding: 0 0 0 0; - width: 100%; - background: transparent; - height: 0px; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'top'.*/ -.MLjqui-tabs-selection-tracker-top -{ - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - padding-bottom: 2px; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'bottom'.*/ -.MLjqui-tabs-selection-tracker-bottom -{ - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; - margin-top: -1px; - padding-bottom: 2px; -} -/*applied to the tab's content element which represents a DIV element.*/ -.MLjqui-tabs-content -{ - outline: none; - border-bottom: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - text-align: left; - clear: both; -} -.MLjqui-tabs-content-element -{ - height: 100%; - overflow: auto; -} - -/*MLjquiCheckBox*/ -.MLjqui-checkbox -{ - overflow:hidden; - text-align: left; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; - text-overflow: ellipsis; -} -/*applied to the check box.*/ -.MLjqui-checkbox-default -{ - text-align: left; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when the mouse cursor is over it.*/ -.MLjqui-checkbox-hover -{ - cursor: pointer; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the widget when it is disabled.*/ -.MLjqui-checkbox-disabled -{ - cursor: default; - background: transparent; - padding: 0px; - border: none; - outline: none; - margin: 0px 0px 0px 0px; -} -/*applied to the check box when the widget is disabled.*/ -.MLjqui-checkbox-disabled-box -{ - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when it is checked. Displays a check icon.*/ -.MLjqui-checkbox-check-checked -{ - float: left; - background: transparent url(../images/check_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when the widget is disabled. Displays a disabled check icon.*/ -.MLjqui-checkbox-check-disabled -{ - float: left; - background: transparent url(../images/check_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate.*/ -.MLjqui-checkbox-check-indeterminate -{ - float: left; - background: transparent url(../images/check_indeterminate_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate and it is disabled.*/ -.MLjqui-checkbox-check-indeterminate-disabled -{ - float: left; - background: transparent url(../images/check_indeterminate_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its in rtl mode.*/ -.MLjqui-checkbox-rtl { - float: right; -} -/*MLjquiRadioButton*/ -.MLjqui-radiobutton -{ - overflow:hidden; - text-overflow: ellipsis; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; -} -/*applied to the radio button.*/ -.MLjqui-radiobutton-default -{ - cursor: pointer; - float: left; - background: transparent url(../images/roundbg_classic_normal.png) left center scroll repeat-x; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when the mouse is over it.*/ -.MLjqui-radiobutton-hover -{ - cursor: pointer; - float: left; - background: transparent; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when it is disabled.*/ -.MLjqui-radiobutton-disabled -{ - cursor: default; -} -/*applied to the radio button's radio icon when it is disabled.*/ -.MLjqui-radiobutton-disabled-box -{ -} -/*applied to the radio button when it is checked.*/ -.MLjqui-radiobutton-check-checked -{ - float: left; - background: transparent url(../images/roundbg_check_black.png) left top no-repeat; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 7px; - height: 7px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is checked and disabled.*/ -.MLjqui-radiobutton-check-disabled -{ -} -/*applied to the radio button when it is in indeterminate state.*/ -.MLjqui-radiobutton-check-indeterminate -{ - float: left; - background: transparent url(../images/roundbg_check_indeterminate.png) left top no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 6px; - height: 6px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is in indeterminate state and disabled.*/ -.MLjqui-radiobutton-check-indeterminate-disabled -{ -} -/*applied to the radio button when its in rtl mode.*/ -.MLjqui-radiobutton-rtl { - float: right; -} - -/*MLjquiRating*/ -.MLjqui-rating -{ - margin: 0px; - padding: 0px; - outline: none; - overflow: hidden; -} -.MLjqui-rating-image -{ - border-width: 0px; -} -.MLjqui-rating-image-default -{ - margin: 0px; - padding: 0px; - outline: none; - background-color: transparent; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star.png); - overflow: hidden; -} -/*applied to the rating when it is hovered.*/ -.MLjqui-rating-image-hover -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star_hover.png); - overflow: hidden; -} -/*applied to the rating when it is disabled.*/ -.MLjqui-rating-image-backward -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(../images/star_disabled.png); - overflow: hidden; -} -/*MLjquiCalendar Style*/ -.MLjqui-calendar -{ - border: 1px solid transparent; - -webkit-appearance: none; - overflow: hidden; - outline: none; - padding: 0px; - margin: 0 0 0 0; - cursor: default; - border-collapse: separate; -} -.MLjqui-calendar td { - padding-top: 0px; - padding-bottom: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -.MLjqui-calendar table { - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -/*applied to the calendar's row header. This header displays the week numbers.*/ -.MLjqui-calendar-row-header -{ - outline: none; - border: 0px solid #f2f2f2; - padding: 0; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's column. This header displays the day names.*/ -.MLjqui-calendar-column-header -{ - outline: none; - text-align: right; - padding: 3px; - border-top: none; - border-bottom: 1px solid transparent; - border-left: none; - border-right: none; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's top-left header. This header is displayed before the day names and above the week numbers.*/ -.MLjqui-calendar-top-left-header -{ - outline: none; - border: 0px solid #f2f2f2; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's navigation buttons.*/ -.MLjqui-calendar-title-navigation -{ - cursor: pointer; - background-color: transparent; - margin: 0; - padding: 0; - border: none; - width: 25px; - height: 25px; -} -/*applied to the month table*/ -.MLjqui-calendar-month -{ - margin: 0; padding: 0; - border: none; - width: 100%; -} -/*applied to the calendar's title content.*/ -.MLjqui-calendar-title-content -{ - cursor: pointer; - text-align: center; -} -/*applied to the calendar's navigation title.*/ -.MLjqui-calendar-title-header -{ - border-left: none; - border-top: none; - border-right: none; - border-bottom-width: 1px; - border-bottom-style: solid; - margin: 0 0 0 0; -} -.MLjqui-calendar-title-header td { - padding-left: 0px; - padding-right: 0px; - border: none; -} -/*applied to the calendar's navigation title when the calendar is disabled.*/ -.MLjqui-calendar-title-header-disabled -{ - border-bottom-width: 1px; - border-bottom-style:solid; - margin: 0 0 0 0; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - -} -/*applied to a calendar cell.*/ -.MLjqui-calendar-cell -{ - border: 1px solid transparent; - margin: 0px; - outline: none; - text-align: center; - padding: 1px; - cursor: pointer; - background-color: transparent; -} -.MLjqui-calendar-cell td -{ - padding: 0; - margin: 0; -} -/*applied to a calendar cell in decade and year views.*/ -.MLjqui-calendar-cell-decade, .MLjqui-calendar-cell-year { - text-align: center; - } - -.MLjqui-calendar .MLjqui-fill-state-normal -{ - background: transparent; - border: 1px solid transparent; -} - -/*applied to a calendar cell when the cell is hidden. A cell can be hidden when the showOtherMonthDays property is false and the calendar hides the cells with dates from the other months*/ -.MLjqui-calendar-cell-hidden -{ - margin: 0 0 0 0; - visibility: hidden; - cursor: default; -} -/*applied to a calendar cell when the cell's date is a weekend date.*/ -.MLjqui-calendar-cell-weekend -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a special date(holiday, vacation, birthay. See the SpecialDates demo).*/ -.MLjqui-calendar-cell-specialDate -{ - color: #FF0000 !important; - background-color: transparent; - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a restricted date.*/ -.MLjqui-calendar-cell-restrictedDate -{ - background-color: rgba(251, 132, 153, 1); - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -.MLjqui-calendar-cell-selected-invalid -{ - color: #FFF !important; - background: #FF0000 !important; - border: 1px solid #FF0000 !important; -} -/*applied to a calendar cell when the cell's date is the today date.*/ -.MLjqui-calendar-cell-today -{ - color: #898989; - background-color: #ffffdb; - border: 1px solid #fdc066; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is hovered.*/ -.MLjqui-calendar-cell-hover -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is selected.*/ -.MLjqui-calendar-cell-selected -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date represents a date from the previous or next month.*/ -.MLjqui-calendar-cell-othermonth -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the calendar is disabled.*/ -.MLjqui-calendar-cell-disabled -{ - color: #ccc; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers.*/ -.MLjqui-calendar-row-cell -{ - outline: none; - text-align: center; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers and the calendar is disabled.*/ -.MLjqui-calendar-row-cell-disabled -{ - -} -.MLjqui-calendar-footer -{ - margin: 5px; - color: inherit; - font-size: 13px; -} - -.MLjqui-calendar-title-container -{ - overflow: hidden; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names.*/ -.MLjqui-calendar-column-cell -{ - overflow: hidden; - text-align: center; - outline: none; - font-weight: normal; - padding: 1px; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names and the calendar is disabled.*/ -.MLjqui-calendar-column-cell-disabled -{ - -} -/*applied to the calendar's cell area element.*/ -.MLjqui-calendar-view -{ - -webkit-appearance: none; - outline: none; - padding: 0px; - border: 0px solid #fff; - margin: 0 0 0 0; - cursor: default; -} - -/*MLjquiExpander and MLjquiNavigationBar Style*/ -.MLjqui-expander -{ -} -/*applied to the Expander's header and content*/ -.MLjqui-expander-header, .MLjqui-expander-content -{ - border-left-width: 1px; - border-right-width: 1px; - border-left-style: solid; - border-right-style: solid; - padding-top: 5px; - padding-bottom: 5px; - outline: 0; -} -/*applid to the content of the expander header.*/ -.MLjqui-expander-header-content -{ - padding-left: 3px; -} -/*applid to the content of the expander header.*/ -.MLjqui-expander-header-content-rtl -{ - padding-right: 3px; -} - .MLjqui-expander-content{padding-top: 0px;padding-bottom:0px; overflow: auto; outline: 0;} -/*applied to the Expander's header and its content when it is on the top of the header*/ -.MLjqui-expander-header, .MLjqui-expander-content-top -{ - border-top-width: 1px; - border-top-style: solid; -} -/*applied to the Expander's header and its content when it is on the bottom of the header*/ -.MLjqui-expander-header, .MLjqui-expander-content-bottom -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -/*applied to the Expander's header*/ -.MLjqui-expander-header -{ - cursor: pointer; - overflow: hidden; -} -/*applied to the Expander's header when the expander is disabled or the toggleMode is "none"*/ -.MLjqui-expander-header-disabled -{ - cursor: default; -} -/*applied to the Expander's arrow*/ -.MLjqui-expander-arrow -{ - width: 17px; - height: 17px; - position: relative; -} -/*applied to the Expander's content if it is empty*/ -.MLjqui-expander-content-empty -{ - border-width: 0px; - padding: 0px; -} - -/*applied to MLjquiNavigationBar. The NavigationBar internally uses MLjquiExpander's classes and inherits all header and content style settings from the Expander.*/ -.MLjqui-navigationbar -{ - border: none; - margin: 0px; - -webkit-appearance: none; - outline: none; -} -/*MLjquiPanel Style*/ -.MLjqui-panel -{ - border: 1px solid transparent; - -webkit-appearance: none; - outline: none; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the Panel's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.MLjqui-panel-bottomright -{ - -} -/*applied to the DropDownButton's Popup.*/ -.MLjqui-dropdownbutton-popup { - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - } - -.MLjqui-listbox -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the ListBox's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.MLjqui-listbox-bottomright -{ - -} -/*applied to the ListBox's groups.*/ -.MLjqui-listitem-state-group -{ - white-space: nowrap; - padding: 4px 2px 4px 2px; - background: transparent; - font-weight: bold; - text-align: left; - outline: none; - overflow: hidden; - vertical-align: middle; - cursor: default; -} -/*applied to a list item in default state.*/ -.MLjqui-listitem-state-normal -{ - white-space: nowrap; - padding: 3px; - margin: 1px; - border: 1px solid transparent; - outline: none; - visibility: inherit; - display: inherit; - text-align: left; - overflow: hidden; - position: absolute; - left: 0; - top: 0; - cursor: default; -} -/*applied to a list item in hovered state.*/ -.MLjqui-listitem-state-hover -{ - white-space: nowrap; - background: transparent; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -/*applied to a list item when the item is selected.*/ -.MLjqui-listitem-state-selected -{ - white-space: nowrap; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -.MLjqui-listbox-feedback -{ - height: 1px; - border-top: 1px dashed #000; -} -.MLjqui-listitem-element -{ - -ms-touch-action: none; - border: none; - width:100%; - height: 100%; - align:left; - valign:top; - position: absolute; -} -/*MLjquiComboBox Style*/ -/*applied to the MLjquiComboBox's content which displays the text.*/ -.MLjqui-combobox-content -{ - padding: 0px; - overflow: hidden; - padding-left: 0px; - padding-top: 0px; - padding-bottom: 0px; - padding-right: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: none; - border: none; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - border-right: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-combobox-content-rtl { - border: none; - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 0px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 3px; - border-right: none; - border-left: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the ComboBox's input field.*/ -.MLjqui-combobox-input -{ - -webkit-appearance: none; - -webkit-border-radius: 0px; - padding: 0 0 0 0; - outline: none; - border: 0px solid #aaa; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-combobox-input::-ms-clear { - display: none; -} -/*applied to the ComboBox's content when the widget is disabled.*/ -.MLjqui-combobox-content-disabled -{ - color: #AAA; -} -/*applied to the ComboBox's arrow button.*/ -.MLjqui-combobox-arrow-normal, .MLjqui-action-button -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; - border: none; - cursor: pointer; -} -/*applied to the ComboBox's arrow button*/ -.MLjqui-combobox-arrow-hover, .MLjqui-combobox-arrow-selected -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox in normal state.*/ -.MLjqui-combobox-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the mouse is over the widget.*/ -.MLjqui-combobox-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the popup ListBox is shown.*/ -.MLjqui-combobox-state-selected -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the widget is focused.*/ -.MLjqui-combobox-state-focus -{ - border: 1px solid transparent; -} -.MLjqui-combobox-multi-item { - padding: 1px 3px; - margin: 2px; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - -} -.MLjqui-combobox-multi-item a:link, .MLjqui-combobox-multi-item a:visited { - color: inherit; - display: block; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to the ComboBox when the widget is disabled.*/ -.MLjqui-combobox-state-disabled -{ - white-space: nowrap; - margin: 0px; - color: #AAA; -} -/*MLjquiSelect Style*/ -.MLjqui-select { - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - -webkit-appearance: none; - outline: 0 none; -} -.MLjqui-select-content { - cursor: pointer; - text-overflow: ellipsis; -} -.MLjqui-select-container { - padding: 0; -} -.MLjqui-select-item -{ - padding: 3px; - margin: 1px; - white-space: normal !important; - cursor: default; -} -/*MLjquiDropDownList Style*/ -/*applied to the dropdownlist's content element which displays the selected item's text or html.*/ -.MLjqui-dropdownlist-content -{ - padding: 0px; - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: 0 none; - border: none; -} -.MLjqui-dropdownlist-content-rtl { - padding-left: 0px; - padding-right: 3px; -} - -/*applied to the dropdownlist's content element which displays the selected item's text or html and the widget is disabled. */ -.MLjqui-dropdownlist-content-disabled -{ -} -/*applied to the dropdownlist in default state.*/ -.MLjqui-dropdownlist-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in hovered state.*/ -.MLjqui-dropdownlist-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in selected state.*/ -.MLjqui-dropdownlist-state-selected -{ - overflow: hidden; - background-color: transparent; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in focused state.*/ -.MLjqui-dropdownlist-state-focus -{ - border: 1px solid #909090; -} -/*applied to the dropdownlist in disabled state.*/ -.MLjqui-dropdownlist-state-disabled -{ - -} -/*MLjquiScrollBar Style*/ -.MLjqui-scrollbar -{ - background: transparent; - margin: 0; - padding: 0; - border: none; -} -/*applied to the scrollbar in default state.*/ -.MLjqui-scrollbar-state-normal -{ - background: #efefef; - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in default state.*/ -.MLjqui-scrollbar-button-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in hovered state.*/ -.MLjqui-scrollbar-button-state-hover -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in pressed state.*/ -.MLjqui-scrollbar-button-state-pressed -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-normal-horizontal -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the horizontal scrollbar thumb in hovered state.*/ -.MLjqui-scrollbar-thumb-state-hover-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-pressed-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-hover -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.MLjqui-scrollbar-thumb-state-pressed -{ - margin: 0px; - padding: 0px; - background: #d1d1d1; - border: 1px solid #909090; -} - -/* MLjquiWindow */ -.MLjqui-window -{ - position: absolute; - overflow-x: hidden; - overflow-y: auto; - border: 1px solid transparent; - border-radius:5px; - box-shadow:0 6px 10px #777; - -moz-box-shadow:0 6px 10px #777; /* FF3.6+ */ - -webkitbox-shadow:0 6px 10px #777; /* Chrome,Safari4+ */ - -o-box-shadow:0 6px 10px #777; /* Opera 11.10+ */ - -ms-box-shadow:0 6px 10px #777; /* IE10+ */ - /* filter: progid:DXImageTransform.Microsoft.Shadow( color="#777", direction=40,strength=6 ); IE6-9 */ -} -/*applied to the MLjquiWindow when it’s disabled*/ -.MLjqui-window-disabled -{ -} -/*applied to the window’s header*/ -.MLjqui-window-header -{ - outline: none; - border-width: 0px; - overflow: hidden; - height:35px; - line-height:35px; - white-space: nowrap; - overflow: hidden; - background:#e4e4e4; - color:#34373b; - font-size:1.0em; - padding-left:10px; -} - -.MLjqui-window-header-MLkey -{ - outline: none; - border-width: 0px; - overflow: hidden; - height:25px; - line-height:25px; - white-space: nowrap; - overflow: hidden; - background:#fdfdfd; - color:#34373b; - font-size:1.5em; - padding-left:10px; -} -/*applied to the window’s header when the window is disabled*/ -.MLjqui-window-header-disabled -{ - -} -/*applied to the window’s content*/ -.MLjqui-window-content -{ - outline: none; - overflow: hidden; - text-align: left; - background-color: transparent; - margin-top:0; - padding: 0; - -webkit-background-clip: padding-box; background-clip: padding-box; -} -/*applied to the window’s content when the window is disabled*/ -.MLjqui-window-content-disabled -{ - outline: none; - overflow: auto; - text-align: left; - padding: 5px; -} -/*applied to the window’s close button*/ -.MLjqui-window-close-button -{ - background:#b2b2b2; - cursor: pointer; - background-image: url(../images/close.png); - background-repeat: no-repeat; -} -.MLjqui-window-close-button-MLkey -{ - width:18px; - height:18px; - background:none; - cursor: pointer; - background-image: url(../images/key/close_nor.gif) no-repeat; - background-repeat: no-repeat; -} -/*applied to the window's collapse button*/ -.MLjqui-window-collapse-button -{ - background-image: url(../images/icon-up.png); - cursor: pointer; - margin-top: 1px; -} -/*applied to the window's collapse button when the window is collapsed*/ -.MLjqui-window-collapse-button-collapsed -{ - margin-top: 0px; - cursor: pointer; - background-image: url(../images/icon-down.png); -} -/*setting styles of the modal window’s background*/ -.MLjqui-window-modal -{ - background-color: Black; -} -.MLjqui-window-close-button-hover -{ - background-color:#a0a0a0; -} -.MLjqui-window-close-button-hover-MLkey -{ - /* background-color:#fdfdfd; */ - background:#fdfdfd url(../images/key/close_ovr.gif) no-repeat; - background-image:url(../images/key/close_ovr.gif) no-repeat; -} -.MLjqui-docking -{ - overflow: hidden; -} -.MLjqui-docking-panel -{ - margin: 0px; - padding: 0px; - min-height: 100px; -} -.MLjqui-docking-drop-indicator -{ - border-style: dashed; - border-width: 1px; - margin: 0px; -} -.MLjqui-docking-window -{ - margin: 0px; -} - -/* jxSlider */ -/* applied to MLjquiSlider widget */ -.MLjqui-slider -{ - outline: none; - clear: both; - position: relative; - overflow:hidden; -} -/*applied to the ticks which can be in the top/bottom/both sides of the MLjquiSlider*/ -.MLjqui-slider-tick -{ - border-left: 1px solid transparent; - z-index: 9; -} -/*applied to the ticks when the slider is in horizontal mode*/ -.MLjqui-slider-tick-horizontal -{ - width: 1px; - border-left: none; - margin-top: 1px; -} -/*applied to the ticks when the slider is in vertical mode*/ -.MLjqui-slider-tick-vertical -{ - height: 1px; - border-top: none; -} -/*applied to the ticks container*/ -.MLjqui-slider-tickscontainer -{ - z-index: 10; - position: relative; - margin-top: 0px; - margin-bottom: 0px; - z-index: 9; -} -/*applied to the MLjquiSlider thumb used for changing/indicating current value*/ -.MLjqui-slider-slider -{ - cursor: pointer; - width: 16px; - height: 16px; - z-index: 15; - position: absolute; - left: 0px; - top: 0px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.MLjqui-slider-button -{ - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - box-sizing: content-box !important; -} -/*applied to the slider's thumb when the slider is in horizontal mode*/ -.MLjqui-slider-slider-horizontal -{ - margin-top: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; -} -/*applied to the slider's thumb when the slider is in vertical mode*/ -.MLjqui-slider-slider-vertical -{ - margin-left: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; - } -/*applied to the track where is located the thumb*/ -.MLjqui-slider-track -{ - height: 8px; - float:left; - position: relative; - z-index: 20; -} -/*used in horizontal slider*/ -.MLjqui-slider-track-horizontal -{ - height: 8px; - margin-top: 2px; -} -/*used in vertical slider*/ -.MLjqui-slider-track-vertical -{ - width: 8px; -} -/*applied to the div which is between the thumbs in a range slider or from beginning of the track to the current thumb position in the default slider*/ -.MLjqui-slider-rangebar -{ - -} - -/* MLjquiSplitter */ -.MLjqui-splitter -{ - overflow: hidden; - border: 1px solid transparent; - position: relative; -} -/* Split bar's class when the MLjquiSplitter is with horizontal orientation */ -.MLjqui-splitter-splitbar-vertical -{ - border: 1px solid transparent; - border-top-width: 0px; - border-bottom-width: 0px; - cursor: e-resize; - cursor: col-resize; - position: absolute; -} -/* Split bar's mouse over state */ -.MLjqui-splitter-splitbar-hover -{ - background-color: transparent; -} -/* Split bar's class when the MLjquiSplitter is with horizontal orientation. */ -.MLjqui-splitter-splitbar-horizontal -{ - position: absolute; - border: 1px solid transparent; - border-left-width: 0px; - border-right-width: 0px; - cursor: n-resize; - cursor: row-resize; -} -/* This class is applied to the splitter when it's dragged to it's max left/right boundary */ -.MLjqui-splitter-splitbar-invalid -{ - background: #FF0000 !important; -} -/* This class is added to split bar's collapse button when the splitter is with vectical orientation. */ -.MLjqui-splitter-collapse-button-horizontal -{ - cursor: pointer; - width: 45px; - height: 5px; -} -/* This class is added to split bar's collapse button when the splitter is with horizontal orientation. */ -.MLjqui-splitter-collapse-button-vertical -{ - cursor: pointer; - width: 5px; - height: 45px; -} -/* This class is added when the user disable the splitter. */ -.MLjqui-splitter-splitbar-collapsed -{ - cursor: default; -} -/* Applied to the MLjquiSplitter panels. */ -.MLjqui-splitter-panel -{ - border: none; - outline: none; - position: absolute; - overflow: hidden; -} -/* This class is added to a nested splitter.*/ -.MLjqui-splitter-nested, .MLjqui-splitter-panel-nested -{ - border: none; - overflow: hidden; -} -.MLjqui-draggable -{ - -} -.MLjqui-draggable-dragging -{ - border: 0px solid black; -} -.MLjqui-draggable-disabled -{ - cursor: default; -} -.MLjqui-validator-hint -{ - height: 18px; - width: auto; - display: inline-block; - cursor: pointer; - padding-left: 5px; - padding-right: 5px; - font-family: Verdana; - font-size: 13px; - border: 1px solid #6E0000; - background-color: #942724; - color: #fff; - z-index: 99999; - white-space: nowrap; -} -.MLjqui-validator-hint-arrow -{ - z-index: 99999; - height: 9px; - width: 9px; - padding: 0px; - margin: 0px; - background-color: transparent; - background-image: url(../images/multi-arrow.gif); -} -.MLjqui-validator-error-label { - color: #dd4b39; - vertical-align:top; - text-align: left; - display: block; - cursor: default; - line-height: 17px; - } -.MLjqui-validator-error-element { - border-color: #dd4b39 !important; -} - -.MLjqui-switchbutton -{ - outline: none; - overflow: hidden; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border: 1px solid #ccc; -} -.MLjqui-switchbutton-thumb -{ - display: inline-block; - cursor: pointer; - border: 1px solid #ccc; -} -.MLjqui-switchbutton-label -{ - font-size: 15px; - font-family: Sans-Serif; - text-align: center; - text-transform: uppercase; - font-weight: bold; -} -.MLjqui-switchbutton-wrapper -{ -} -.MLjqui-switchbutton-label-on -{ - -} -.MLjqui-switchbutton-label-off -{ - -} - -/*left, right, up and down arrow icons.*/ -.MLjqui-left-arrow -{ - background: transparent; - background-image: url('../images/icon-left.png'); - cursor: pointer; -} -.MLjqui-right-arrow -{ - background: transparent; - background-image: url('../images/icon-right.png'); - cursor: pointer; -} -.MLjqui-icon-delete -{ - background-image: url('../images/icon-delete.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-edit -{ - background-image: url('../images/icon-edit.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-save -{ - background-image: url('../images/icon-save.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-cancel -{ - background-image: url('../images/icon-cancel.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-up, .MLjqui-icon-arrow-up-hover, .MLjqui-icon-arrow-up-selected -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down, .MLjqui-icon-arrow-down-hover, .MLjqui-icon-arrow-down-selected -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} - -.MLjqui-icon-arrow-left, .MLjqui-icon-arrow-left-hover, .MLjqui-icon-arrow-left-selected -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right, .MLjqui-icon-arrow-right-hover, .MLjqui-icon-arrow-right-selected -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-first, .MLjqui-icon-arrow-first-hover, .MLjqui-icon-arrow-first-selected -{ - background-image: url('../images/icon-first.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-last, .MLjqui-icon-arrow-last-hover, .MLjqui-icon-arrow-last-selected -{ - background-image: url('../images/icon-last.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-up-hover -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down-hover -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-left-hover -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right-hover -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} - -.MLjqui-icon-arrow-up-selected -{ - background-image: url('../images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-down-selected -{ - background-image: url('../images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-left-selected -{ - background-image: url('../images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-arrow-right-selected -{ - background-image: url('../images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close -{ - cursor: pointer; - background-image: url(../images/btn_hd_close.png); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close-MLkey -{ - cursor: pointer; - background-image: url(../images/key/close_nor.gif); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-close-white { - background-image: url(../images/close_white.png); - } -.MLjqui-icon-close-hover -{ - cursor: pointer; - background-image: url(../images/close.png); - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-icon-search -{ - cursor: pointer; - background-image: url(../images/search.png); - background-repeat: no-repeat; - background-position: center; - margin-top: 1px; - background-size: 13px; - width: 13px; - height: 13px; -} -.MLjqui-icon-plus -{ - background-image: url(../images/plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.MLjqui-icon-plus-alt, .MLjqui-icon-plus-alt-white -{ - background-image: url(../images/icon-plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.MLjqui-icon-plus-alt-white { - background-image: url(../images/icon-plus-white.png); -} -/* MLjquiScrollView */ -.MLjqui-scrollview-button -{ - width: 10px; - height: 10px; - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - display: inline-block; - margin: 2px; - cursor: pointer; - background-color: #aaaeaf; -} -.MLjqui-scrollview -{ - background-color: #000; - -ms-touch-action: auto !important; -} -.MLjqui-icon-calendar, .MLjqui-icon-calendar-hover, .MLjqui-icon-calendar-pressed -{ - background-image: url('../images/icon-calendar.png'); - background-repeat: no-repeat; - background-position: left top; - position: relative; - width: 15px !important; - height: 15px !important; - margin-top: -7.5px !important; -} -/*applied to Inputs*/ -.MLjqui-input{overflow: hidden; background-color: inherit; border-color: #c7c7c7;} -.MLjqui-input-invalid { - color: red !important; -} -.MLjqui-input-group {overflow: hidden;} -.MLjqui-input-group-addon {border: 1px solid transparent; position: relative; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important; padding: 2px 8px !important; float: left; white-space: nowrap; vertical-align: middle; } -.MLjqui-input-group-addon:first-child { - border-right-width: 0px; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; -} -.MLjqui-input-group-addon:last-child { - border-left-width: 0px; - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; -} -.MLjqui-input-group-addon:not(:last-child):not(:first-child) { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; - border-left-width: 0px; -} -.MLjqui-input-group .MLjqui-input { - padding: 2px 1px !important; - border-left-width: 1px !important; - border-right-width: 1px !important; -} -.MLjqui-editor { - border-style: solid; - border-width: 1px; - border-color: transparent; - overflow: hidden; - box-sizing: border-box !important; -} -.MLjqui-editor-window { - overflow: hidden; -} -.MLjqui-editor-inline { - padding: 0px; - border-width: 1px; - border-style: solid; - border-color: transparent; -} -.MLjqui-editor-inline p { - margin: 0px;padding:0 .2em; -} -.MLjqui-editor-inline-focus { - border-width: 1px; - border-style: solid; - overflow: auto; -} -.MLjqui-editor iframe { - border: 0; - margin: 0; - padding: 0; - background: #fff; - display: inline; - vertical-align: top; - width: 100%; - height: 100%; -} -.MLjqui-editor-color-bar { - height: 3px; -} -.MLjqui-editor-color-picker table { - margin: 0; - padding: 0 4px 4px; - empty-cells: show; - border-collapse: separate; -} -.MLjqui-editor-color-picker td { - border-collapse: separate; - border: 1px solid transparent; - cursor: pointer; - margin: 0; - position: relative; -} -.MLjqui-editor-color-picker td:hover { - border: 1px solid #000; -} -.MLjqui-editor-color-picker-selected-cell { - outline: 1px solid #000; -} -.MLjqui-editor-color-picker td div{ - width: 16px; - height: 16px; -} -.MLjqui-editor-content { - width: 100%; - border-style: solid; - border-width: 1px; - outline: 0; - left: 0px; - position: relative; - box-sizing: border-box !important; -} -.MLjqui-editor-container { - position: relative; - padding: 4px; - padding-top: 0px; - width: 100%; - height: 100%; - box-sizing: border-box !important; -} -.MLjqui-editor-toolbar-container { - top: 0px; left: 0px; - box-sizing: border-box !important; -} -.MLjqui-editor-toolbar-inline { - padding: 0px 4px; - border-width: 1px; - border-style: solid; -} -.MLjqui-editor-toolbar { - margin: 0; - padding: 0px; - padding-bottom: 4px; -} -.MLjqui-editor-toolbar-icon { - height: 21px; - width: 21px; - vertical-align: middle; - opacity: .667; - margin: 2px 0; - background: url('../images/html_editor.png') no-repeat; -} -.MLjqui-editor-toolbar-icon-bold { - background-position: 0px 0px !important; -} -.MLjqui-editor-toolbar-icon-italic { - background-position: -21px 0px !important; -} -.MLjqui-editor-toolbar-icon-underline { - background-position: -42px 0px !important; -} -.MLjqui-editor-toolbar-icon-fontname { - background-position: -63px 0px !important; -} -.MLjqui-editor-toolbar-icon-fontsize { - background-position: -84px 0px !important; -} -.MLjqui-editor-toolbar-icon-createlink { - background-position: -147px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertorderedlist { - background-position: -168px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertunorderedlist { - background-position: -189px 0px !important; -} -.MLjqui-editor-toolbar-icon-outdent { - background-position: -210px 0px !important; -} -.MLjqui-editor-toolbar-icon-indent { - background-position: -231px 0px !important; -} -.MLjqui-editor-toolbar-icon-insertimage { - background-position: -337px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifyleft { - background-position: -252px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifycenter { - background-position: -273px 0px !important; -} -.MLjqui-editor-toolbar-icon-justifyright { - background-position: -294px 0px !important; -} -.MLjqui-editor-toolbar-icon-removeformat { - background-position: -316px 0px !important; -} -.MLjqui-editor-toolbar-icon-viewsource { - background-position: -359px 0px !important; -} -.MLjqui-editor-toolbar-icon-forecolor { - background-position: -105px 0px !important; - height: 15px; -} -.MLjqui-editor-toolbar-icon-backcolor { - background-position: -380px 0px !important; - height: 15px; -} - -.MLjqui-editor-toolbar-icon:hover { - opacity: 1; -} -.MLjqui-fill-state-disabled .MLjqui-editor-toolbar-icon { - opacity: .667; -} -.MLjqui-editor-toolbar-item { - display: inline-block; - margin-left: 2px; - vertical-align: middle; -} -.MLjqui-editor-toolbar-separator { - border-left: 1px solid #ccc; - margin: 0 2px; - outline: none; - overflow: hidden; - padding: 0; - text-decoration: none; - vertical-align: middle; - width: 0; - display: inline-block; -} -.MLjqui-editor-toolbar-group { - display: inline-block; - margin-right: 4px; - margin-top: 4px; - white-space: nowrap; -} -.MLjqui-editor-toolbar-button { - text-decoration: none; - vertical-align: middle; - cursor: default; - display: inline-block; - padding: 0px !important; - margin-right: 2px; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button { - margin-right: -1px; - box-shadow: none; - position: relative; - margin-left: 0px !important; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button:hover, .MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button:active { - z-index: 55; -} -.MLjqui-editor-toolbar-group .MLjqui-editor-toolbar-button.MLjqui-fill-state-normal { - background: transparent !important; -} - -.MLjqui-date-time-input-popup table td a -{ - border: 1px transparent solid; - width: 100%; - display: inline-block; - margin: 0; - padding: 0; - outline: 0; - color: #333; -} -.MLjqui-date-time-input-popup table td input { - width: 25px; - margin: 0; - text-align: center; - padding: 4px 6px; - height:20px; - line-height: 20px; - vertical-align: middle; -} - -.MLjqui-scheduler .MLjqui-cell { - padding: 0px !important; - cursor: default; -} -.MLjqui-scheduler .MLjqui-widget-header.MLjqui-grid-header -{ - border-bottom-color: transparent; - border-bottom-width: 0px; -} -.MLjqui-scheduler .MLjqui-grid-column-header, .MLjqui-scheduler.MLjqui-widget .MLjqui-grid-column-header -{ - border-bottom: 1px solid #c5c5c5; -} - -.MLjqui-scheduler-all-day-cell -{ - text-align: left; -} -.MLjqui-scheduler-all-day-cell span -{ - margin-left:3px; -} - -.MLjqui-scheduler-month-cell { - background: #f2f2f2; - color: #000; - opacity: 0.8; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: inherit; - vertical-align: top; - text-align: left; -} -.MLjqui-scheduler-month-cell-touch { - background: transparent; - border:none; - vertical-align:middle; - text-align:center; -} -.MLjqui-scheduler-month-cell-popup { - border: 1px solid #333; - background: #f2f2f2; - box-shadow: 0 5px 0px rgba(0,0,0,.15)!important; -} -.MLjqui-widget .MLjqui-scheduler-middle-cell, .MLjqui-scheduler-middle-cell { - border-bottom-color: #ddd !important; -} -.MLjqui-scheduler-cell-selected.MLjqui-scheduler-middle-cell -{ - border-bottom-style:dotted; -} -.MLjqui-scheduler-work-time-cell -{ - background: #fff; -} -.MLjqui-scheduler-not-work-time-cell -{ - background: #eee; -} -.MLjqui-scheduler-month-outer-cell -{ - color: #555; -} -.MLjqui-scheduler-month-weekend-cell -{ - background: #eee; -} -.MLjqui-scheduler-disabled-cell { - background: #e9edf1; -} -.MLjqui-scheduler-toolbar -{ - font-size: 14px; -} -.MLjqui-scheduler-time-column, .MLjqui-scheduler-toolbar { - background-image: none !important; - background: #fff !important; - color: #333 !important; -} -.MLjqui-scheduler-week-number-column { - background: #e8e8e8 !important; - color: #333; -} -.MLjqui-scheduler-time-column-header-cell -{ - border-left-color:transparent !important; -} -.MLjqui-scheduler-time-column-header-cell-rtl -{ - border-right-color:transparent !important; -} -.MLjqui-scheduler-appointment { - overflow: visible; - border: 1px solid #555; - white-space:pre-line; - cursor:pointer; - vertical-align: middle; - text-overflow:ellipsis; - user-select: none; -} -.MLjqui-scheduler-appointment-rtl { - direction: rtl; - text-align: right; -} - -.MLjqui-scheduler-appointment-content { - overflow: hidden; - text-overflow:ellipsis; - height:100%; - padding-left:5px; - padding-right:5px; -} -.MLjqui-scheduler-appointment-inner-content { - overflow:hidden; - width:100%; - text-overflow: ellipsis; - padding-bottom: 3px; -} -.MLjqui-scheduler-appointment-duration-status { - height: 0px; - border-bottom-width: 2px; - border-bottom-style: dotted; - border-color: #f05c2d; - background: #f05c2d; - position:absolute; - bottom: -1px; left: 0px; - border-radius: 5px; -} -.MLjqui-scheduler-appointment-status { - width: 4px; - height: 100%; - border-right-width: 1px; - border-right-style:solid; - position:absolute; - top: 0px; left: 0px; -} -.MLjqui-scheduler-appointment-status-rtl { - width: 4px; - height: 100%; - border-right-width: 0px; - border-right-style:none; - border-left-width: 1px; - border-left-style:solid; - position:absolute; - top: 0px; right:0px; -} -.MLjqui-scheduler-appointment-status-stripes { - background-image: url('../images/stripes.png'); - background-repeat:repeat-y; - background-position: left top; -} -.MLjqui-scheduler-appointment-resize-indicator { - width: 4px; - height: 4px; - position: absolute; - border: 1px solid black; - background: white; - display: none; -} -.MLjqui-scheduler-appointment-top-resize-indicator { - top: -3px; - left: 50%; - margin-left:-2px; - cursor: row-resize; -} -.MLjqui-scheduler-appointment-bottom-resize-indicator { - cursor: row-resize; - bottom: -3px; - left: 50%; - margin-left:-2px; -} -.MLjqui-scheduler-appointment-left-resize-indicator { - cursor: col-resize; - top: 50%; - left: -3px; - margin-top: -2px; -} -.MLjqui-scheduler-appointment-right-resize-indicator { - cursor: col-resize; - top: 50%; - margin-top: -2px; - right: -3px; -} - -.MLjqui-scheduler-appointment span { - vertical-align: middle; - text-overflow:ellipsis; - position: relative; - top: -1px; -} -.MLjqui-scheduler-feedback-appointment { - opacity: 0.7; - position:absolute; - z-index:99999; -} -.MLjqui-scheduler-selected-appointment { - border: 1px solid #316293 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - white-space:pre-line; -} -.MLjqui-scheduler-appointment:hover { - border: 1px solid #3f7ebe !important; - } -.MLjqui-scheduler-feedback-drag-appointment { - background: #aaa !important; -} -.MLjqui-icon-recurrence, .MLjqui-icon-recurrence-exception,.MLjqui-icon-recurrence-white, .MLjqui-icon-recurrence-exception-white, .MLjqui-icon-time -{ - background-image: url('../images/icon-recurrence.png'); - background-repeat: no-repeat; - background-position: center; - width: 16px; - height: 16px; - float: left; - margin:3px; - margin-left:5px; -} -.MLjqui-icon-time -{ - background-image: url('../images/icon-time.png'); - margin:0px; - position: relative; - left: 1px; - margin-top:-8px; -} -.MLjqui-icon-time-white -{ - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-icon-recurrence-exception -{ - background-image: url('../images/icon-recurrence-exception.png'); -} -.MLjqui-icon-recurrence-exception-white { - background-image: url('../images/icon-recurrence-exception-white.png'); -} -.MLjqui-icon-recurrence-white { - background-image: url('../images/icon-recurrence-white.png'); - } -.MLjqui-scheduler-cell-hover { - border-color: #3f7ebe !important; - background: #a2c0df !important; -} -.MLjqui-scheduler-cell-selected { - border-color: #316293 !important; - background: #2f7eb6 !important; -} -.MLjqui-scheduler-edit-dialog-label { - clear: both; - float: left; - margin-left: 2%; - padding: 4px; - text-align: right; - width: 18%; - line-height: 25px; -} -.MLjqui-scheduler-edit-dialog-field { - clear: right; - float: right; - margin-right: 2%; - padding: 4px; - width: 72%; -} -.MLjqui-scheduler-edit-dialog-label-rtl { - clear: both; - float: right; - margin-left: 0px; - margin-right: 2%; - padding: 4px; - text-align: left; - width: 18%; - line-height: 25px; -} -.MLjqui-scheduler-edit-dialog-field-rtl { - clear: left; - float: left; - margin-right: 0px; - margin-left: 2%; - padding: 4px; - width: 72%; -} -.MLjqui-scheduler-legend-bar -{ - overflow:hidden; - border-color:inherit; - border: none; -} -.MLjqui-scheduler-legend-bar-bottom -{ - border-top-width: 1px; - border-top-style:solid; -} -.MLjqui-scheduler-legend-bar-top -{ - border-bottom-width: 1px; - border-bottom-style:solid; -} -.MLjqui-scheduler-legend { - width:14px; - height:14px; - float: left; - margin-right: 3px; - border-style:solid; - border-width:1px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.MLjqui-scheduler-legend-label { - float: left; - margin-right: 12px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-date { - color: #fff; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-time { - color: #fff; -} -.MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-appointment, .MLjqui-scheduler-cell-selected .MLjqui-scheduler-agenda-appointment-rtl { - color: #fff; -} - -.MLjqui-scheduler-agenda-date { - padding-top:5px; - padding-bottom:5px; -} -.MLjqui-scheduler-agenda-time { - padding: 5px; -} -.MLjqui-scheduler-agenda-appointment, .MLjqui-scheduler-agenda-appointment-rtl { - cursor: pointer; -} -.MLjqui-scheduler-agenda-appointment-resource, .MLjqui-scheduler-agenda-appointment-resource-rtl { - margin: 5px; - cursor: pointer; -} -.MLjqui-scheduler-agenda-appointment-resource-rtl, .MLjqui-scheduler-agenda-appointment-rtl { - float: right; -} -.MLjqui-scheduler-agenda-day { - margin: 3px; - font-size: 33px; - font-weight: normal; -} -.MLjqui-scheduler-agenda-week { - font-style: normal; - font-size:13px; -} -.MLjqui-scheduler-agenda-date { - font-size: 10px; -} -.MLjqui-scheduler-cell-focus -{ - border-style:dotted; - border-color: #59a0d5 !important; - background: #59a0d5 !important; -} -/*applied to all widgets*/ -.MLjqui-widget{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; zoom: 1 !important; color: #000000; -moz-background-clip: padding; background-clip: padding-box; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-appearance: none; -webkit-background-clip: padding-box; direction: ltr !important; -webkit-tap-highlight-color: rgba(0,0,0,0);} - -.MLjqui-item{-ms-touch-action: none; -moz-box-sizing: content-box; box-sizing: content-box; color: inherit; -webkit-text-size-adjust: none;} - -/*applied to containers to set a background and border color. Tabs, NavigationBar, Calendar content.*/ -.MLjqui-widget-content {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; -moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); color:#34373b; border-color: #a8a8a8; background: #fff;} -/*applied to header areas. Tabs, Menu, Window, Calendar.*/ -.MLjqui-widget-header {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;-moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); border-color: #a8a8a8; font-weight:bold;} - -.MLjqui-tb-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 11px; border-color:#aaa; background: #efefef; } -.MLjqui-tb-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:; background: #e5f1ff;} -.MLjqui-tb-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:; background: #1672e4; color:#ffffff;} -.MLjqui-tb-fill-state-focus {border-color: #555; } -.MLjqui-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 13px; border-color:#aaa; background: #efefef; } -.MLjqui-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #e8e8e8;} -.MLjqui-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #d1d1d1;} -.MLjqui-fill-state-focus {border-color: #555; } -.MLjqui-fill-state-disabled {cursor: default; color: #000; opacity: .55; filter:Alpha(Opacity=45);} -.MLjqui-fill-state-normal td, .MLjqui-fill-state-hover td, .MLjqui-fill-state-pressed td, .MLjqui-fill-state-disabled td, .MLjqui-fill-state-focus td, .MLjqui-widget td, .MLjqui-widget-content td, .MLjqui-widget-header td { - box-sizing: border-box; -moz-box-sizing: border-box; -} -.MLjqui-widget .MLjqui-grid-cell, .MLjqui-widget .MLjqui-grid-column-header, .MLjqui-widget .MLjqui-grid-group-cell {border-color:;} -.MLjqui-widget .MLjqui-grid-column-menubutton, .MLjqui-widget .MLjqui-grid-column-sortascbutton, .MLjqui-widget .MLjqui-grid-column-sortdescbutton, .MLjqui-widget .MLjqui-grid-column-filterbutton -{ - background-color: transparent; - border-color: #aaa; -} -.MLjqui-grid-column-header a:link, .MLjqui-grid-column-header a:visited -{ - *color: expression(this.parentNode.currentStyle['color']); -} -.MLjqui-grid-bottomright, .MLjqui-panel-bottomright, .MLjqui-listbox-bottomright -{ - background-color: #e5e5e5; -} - -.MLjqui-tabs-title-selected-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's title when the tab is selected and the MLjquiTab's position property is set to 'bottom' .*/ -.MLjqui-tabs-title-selected-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'top'.*/ -.MLjqui-tabs-selection-tracker-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; -} -/*applied to the tab's selection tracker when the MLjquiTab's position property is set to 'bottom'.*/ -.MLjqui-tabs-selection-tracker-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; -} -/*MLjquiMaskedInput and MLjquiNumberInput Styles*/ -.MLjqui-input -{ - -webkit-appearance: none; - padding: 0 0 0 0; - outline: none; - border-width: 1px; - border-style: solid; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -input[type=text].MLjqui-input, input[type=password].MLjqui-input { - min-height: 16px; - min-width: 16px; - margin: 0px; - border-width: 1px; - border-style: solid; - padding: 0px; - padding-left:3px; - padding-right: 3px; -} -.MLjqui-input::-ms-reveal { - display: none; -} -.MLjqui-input::-ms-clear { - display: none; -} -.MLjqui-input-content::-ms-clear { - display: none; -} -.MLjqui-input::-ms-value { - margin: 0px; - padding: 0px; - min-height: 13px; - line-height: 13px; -} - -/*applied to the input when the validation fails.*/ -.MLjqui-input-invalid -{ - border-color: #dd4b39 !important; -} - -/*applied to the input's content.*/ -.MLjqui-input-content -{ - -webkit-appearance: none; - padding: 1px; - resize: none; - outline: none; - outline-width: 0px; - -webkit-user-modify:inherit; -moz-user-modify:inherit; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the input when it is disabled.*/ -.MLjqui-input-disabled -{ - -webkit-appearance: none; - resize: none; - outline: none; - outline-width: 0px; -} -/*applied to the list menu.*/ -.MLjqui-listmenu-widget { - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget .MLjqui-widget-content{ - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget .MLjqui-widget-header{ - -ms-touch-action: auto; -} -.MLjqui-listmenu-widget li{ - -ms-touch-action: auto; -} -.MLjqui-menu-popup { - -} -.MLjqui-menu-vertical -{ - background-color: #efefef; -} -.MLjqui-color-picker -{ - -} -.MLjqui-color-picker-panel -{ -} -.MLjqui-color-picker-map -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/map-saturation.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.MLjqui-color-picker-map-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/map-hue.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.MLjqui-color-picker-map-overlay -{ - background-color: transparent; - background-image: url('../images/colorpicker/map-saturation-overlay.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-bar -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/bar-saturation.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-bar-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('../images/colorpicker/bar-hue.png'); - background-repeat: no-repeat; - background-position: left top; -} -.MLjqui-color-picker-preview -{ - border: 1px solid #A0A0A0; -} -.MLjqui-color-picker-pointer -{ - background-image: url('../images/crosshair.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.MLjqui-color-picker-pointer-alt -{ - background-image: url('../images/crosshair-white.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.MLjqui-color-picker-bar-pointer -{ - background-image: url('../images/pointer.png'); - background-repeat: no-repeat; - height: 15px; - margin-left: 6px; - background-position: right top; -} -.MLjqui-icon -{ - width: 16px; - height: 16px; - margin: 0 auto; - position: relative; - top: 50%; - margin-top: -8px; -} -.MLjqui-input-icon -{ - width: 13px; - height: 13px; - margin: 0 auto; -} -.MLjqui-scrollbar-thumb-state-normal-touch -{ - border-color:#c3c3c3; background: #c3c3c3; -} -.MLjqui-touch, .MLjqui-touch .MLjqui-fill-state-normal, .MLjqui-touch .MLjqui-widget-content, .MLjqui-touch .MLjqui-widget-header, .MLjqui-touch a:link{} -.MLjqui-scrollbar .MLjqui-icon-arrow-up{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-down{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-left{width: 100%; height: 100%;} -.MLjqui-scrollbar .MLjqui-icon-arrow-right{width: 100%; height: 100%;} -/*MLjqui-listmenu*/ -.MLjqui-listmenu-widget -{ - border-width: 1px; - border-style: solid; -} -ol.MLjqui-listmenu, ul.MLjqui-listmenu -{ - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - line-height: 1; - counter-reset: section; -} -.MLjqui-listmenu li -{ - margin-left: 0px; - list-style: none; - line-height: 1; -} -.MLjqui-listmenu -{ - width: 100%; -} -.MLjqui-listmenu-header -{ - padding: 15px; -} -.MLjqui-listmenu-item -{ - cursor: pointer; - padding: 15px; - float: none; - overflow: hidden; - text-align: left; - position: relative; -} - -.MLjqui-listmenu-separator -{ - padding: 10px; - counter-reset: section; -} -.MLjqui-listmenu-header-label -{ - margin-left: 30px; -} -.MLjqui-listmenu-arrow-right -{ - width: 16px; - height: 16px; - position: absolute; - top: 50%; - margin-top: -7px; - right: 7px; -} -.MLjqui-listmenu-arrow-rtl { - right: 0px; - left: 7px; -} -.MLjqui-listmenu-arrow-right-pressed -{ - width: 16px; - height: 16px; -} -.MLjqui-listmenu-header .MLjqui-button -{ - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -o-border-radius: 10px; - border-radius: 10px; - padding: 6px 10px; -} -.MLjqui-listmenu-filter-input -{ - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - border: 1px solid; - outline: none; - width: 97%; - padding: 3px; - padding-left: 10px; - padding-right: 10px; - border-color: #c7c7c7; - background-color: #fff; - font-size: 20px; - min-height: 25px !important; - height: 25px; -} -.MLjqui-listmenu-filter -{ - text-align: center; - padding: 4px; -} -ol li .MLjqui-listmenu-item-label:before -{ - content: counter(section) ". "; - counter-increment: section; -} -.MLjqui-listmenu div -{ - clear: both; -} -.MLjqui-listmenu-auto-separator -{ -} -.MLjqui-listmenu-item-readonly -{ - cursor: default; -} -.MLjqui-tooltip -{ - position: absolute; - width: auto; - height: auto; -} -.MLjqui-tooltip-main -{ - position: relative; - width: 100%; - height: 100%; - text-align: center; - filter: inherit; - border-style: solid; - border-width: 1px; -} -.MLjqui-tooltip-text -{ - padding: 5px 8px; - overflow: hidden; - filter: inherit; -} -.MLjqui-tooltip, .MLjqui-tooltip-text, .MLjqui-tooltip-main { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.MLjqui-tooltip-arrow -{ - position: absolute; - width: 0px; - height: 0px; - display: block; - border-style: solid; - margin: -6px 0 0 -7px; - background: transparent !important; - filter: inherit; -} -.MLjqui-tooltip-arrow-t-b -{ - border-left-color: transparent !important; - border-right-color: transparent !important; -} -.MLjqui-tooltip-arrow-l-r -{ - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} -/*Sets the text-alignment to right.*/ -.MLjqui-rtl{text-align: right !important;} -.MLjqui-shadow{ - -webkit-box-shadow: 0 2px 3px rgba(0,0,0,.15)!important; - -moz-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - -o-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; -} -.MLjqui-noshadow { - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.MLjqui-passwordinput-password-icon, .MLjqui-passwordinput-password-icon-rtl -{ - background-image: url(../images/icon-showpassword.png) !important; - background-repeat: no-repeat !important; - width: 14px; - height: 9px; -} -.MLjqui-passwordinput-password-icon-ltr -{ - background-position: right !important; -} -.MLjqui-passwordinput-password-icon-rtl -{ - background-position: left !important; -} -.MLjqui-passwordinput-password-strength-inicator -{ - width: 20%; - height: 5px; - margin-top: 5px; -} -/*top rounded Corners*/ -.MLjqui-rc-t-expanded -{ - -moz-border-radius-topleft: 0px !important; - -webkit-border-top-left-radius: 0px !important; - border-top-left-radius: 0px !important; - -moz-border-radius-topright: 0px !important; - -webkit-border-top-right-radius: 0px !important; - border-top-right-radius: 0px !important; -} -/*bottom rounded Corners*/ -.MLjqui-rc-b-expanded -{ - -moz-border-radius-bottomleft: 0px !important; - -webkit-border-bottom-left-radius: 0px !important; - border-bottom-left-radius: 0px !important; - -moz-border-radius-bottomright: 0px !important; - -webkit-border-bottom-right-radius: 0px !important; - border-bottom-right-radius: 0px !important; -} -.MLjqui-treemap-rectangle { - font-size: 13px; - font-weight: normal; - border: 1px solid #555; - color: #222; - text-shadow: 0px 0px 0px; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-treemap-label { - text-overflow: ellipsis; - overflow: hidden; -} -.MLjqui-treemap-rectangle-parent { - color: #222; - font-size: 15px; - font-family: Verdana; - font-weight: bold; -} -.MLjqui-treemap-legend-label { - color: #fff; -} -.MLjqui-treemap-legend { - width: 350px; - background-color: rgba(0, 0, 0, 0.1); - z-index: 41; - overflow: hidden; -} -.MLjqui-treemap-legend-table { - table-layout: fixed; - width: 100%; -} -.MLjqui-treemap-legend-color { - height: 3px; -} -.MLjqui-treemap-legend-values { - height: 12px; - width: 100%; -} -.MLjqui-treemap-legend-value { - font-size: 9px; - position: absolute; - color: #fff; -} -.MLjqui-treemap-rectangle-hover { - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - z-index: 40; -} -/*MLjquiRangeSelector*/ -.MLjqui-rangeselector, .MLjqui-rangeselector-content, .MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers, -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-shutter -{ - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-sizing: content-box !important; -} -.MLjqui-rangeselector-markers { - -} -.MLjqui-rangeselector-content, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-labels, .MLjqui-rangeselector-shutter, .MLjqui-rangeselector-markers, .MLjqui-rangeselector-marker-arrow -{ - position: absolute; -} -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-ticks, .MLjqui-rangeselector-shutter, .MLjqui-rangeselector-slider -{ - height: 100%; -} -.MLjqui-rangeselector-ticks-container, .MLjqui-rangeselector-slider -{ - width: 100%; - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} -.MLjqui-rangeselector-group-labels-rtl, .MLjqui-rangeselector-group-labels-ticks, .MLjqui-rangeselector-slider -{ - float: left; -} -.MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers, .MLjqui-rangeselector-marker-arrow -{ - border-style: solid; -} -.MLjqui-rangeselector-ticks, .MLjqui-rangeselector-group-labels-ticks -{ - width: 1px; - background: #aaa; -} -.MLjqui-rangeselector-labels, .MLjqui-rangeselector-markers -{ - white-space: nowrap; - width: auto; -} -.MLjqui-rangeselector-slider, .MLjqui-rangeselector-markers -{ - border-width: 1px !important; -} -.MLjqui-rangeselector-ticks-container -{ - background-color: transparent; - position: relative; -} -.MLjqui-rangeselector-shutter -{ - opacity: 0.75; - background: #efefef; - border-width: 0px !important; -} -.MLjqui-rangeselector-slider -{ - background-color: transparent !important; - border-top: none !important; - background-image: none !important; - border-bottom: none !important; - border-color: #aaa; - border-right-color: transparent !important; - position: relative; - overflow: hidden; -} -.MLjqui-rangeselector-inner-slider -{ - position: absolute; - right: 0; - background: #aaa; - width: 1px; - height: 100%; -} -.MLjqui-rangeselector-ticks -{ - margin-top: 0px; -} -.MLjqui-rangeselector-labels, .MLjqui-rangeselector-group-labels -{ - margin-top: 4px; -} -.MLjqui-rangeselector-markers -{ - height: 20px; - padding: 5px; - opacity: 0.75; -} -.MLjqui-rangeselector-marker-arrow -{ - width: 0px; - height: 0px; - display: block; - margin: -6px 0 0 -7px; - background-color: transparent !important; - filter: inherit; - border-top-width: 5px; - border-bottom-width: 5px; - border-right-color: transparent !important; - border-left-color: transparent !important; - background-clip: border-box; - background-repeat: repeat; - box-shadow: none !important; - -webkit-box-shadow: none !important; - background-image: none !important; -} -.MLjqui-rangeselector-marker-arrow-top { - border-bottom-color: transparent !important; -} -.MLjqui-rangeselector-marker-arrow-bottom { - border-top-color: transparent !important; -} -.MLjqui-rangeselector-marker-left-arrow -{ - border-right-width: 0px; - border-left-width: 5px; -} -.MLjqui-rangeselector-marker-right-arrow -{ - border-right-width: 5px; - border-left-width: 0px; -} -.MLjqui-rangeselector-markers-value -{ - overflow: hidden; - white-space: nowrap; -} -.MLjqui-rangeselector-group-labels-rtl -{ - margin-right: 10px; - direction: rtl; -} -.MLjqui-rangeselector-group-labels-ticks -{ - height: 17px; -} -.MLjqui-rangeselector-group-labels-ticks-rtl -{ - margin-left: 5px; -} -.MLjqui-action-button { - border: none; - border-left: 1px solid #c7c7c7; -} -.MLjqui-action-button-rtl { - border: none; - border-right: 1px solid #c7c7c7; - cursor: pointer; -} -/*MLjquiBulletChart*/ -.MLjqui-bulletchart -{ -} -.MLjqui-bulletchart, .MLjqui-bulletchart-title-container-horizontal, .MLjqui-bulletchart-title-container-vertical, .MLjqui-bulletchart-chart-container-horizontal, .MLjqui-bulletchart-chart-container-vertical -{ - position: relative; -} -.MLjqui-bulletchart-title-inner-container, .MLjqui-bulletchart-range, .MLjqui-bulletchart-pointer, .MLjqui-bulletchart-target, .MLjqui-bulletchart-ticks, .MLjqui-bulletchart-labels -{ - position: absolute; -} -.MLjqui-bulletchart-title-container-vertical, .MLjqui-bulletchart-title, .MLjqui-bulletchart-description, .MLjqui-bulletchart-range-vertical -{ - width: 100%; -} -.MLjqui-bulletchart-title-container-horizontal, .MLjqui-bulletchart-chart-container-horizontal -{ - float: left; - overflow: hidden; -} -.MLjqui-bulletchart-title, .MLjqui-bulletchart-description -{ - text-align: center; -} -.MLjqui-bulletchart-title-inner-container -{ - margin: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.MLjqui-bulletchart-title-inner-container-ltr -{ - padding-right: 5px; -} -.MLjqui-bulletchart-title-inner-container-rtl -{ - padding-left: 5px; -} -.MLjqui-bulletchart-title-description-ltr -{ - text-align: right; -} -.MLjqui-bulletchart-title-description-rtl -{ - text-align: left; -} -.MLjqui-bulletchart-title-description-vertical -{ - text-align: center; -} -.MLjqui-bulletchart-title -{ - font-size: 110%; - font-weight: bold; -} -.MLjqui-bulletchart-description -{ - font-size: 90%; -} -.MLjqui-bulletchart-range-horizontal -{ - height: 100%; -} -.MLjqui-bulletchart-target-horizontal -{ - top: 10%; - height: 80%; -} -.MLjqui-bulletchart-target-vertical -{ - left: 10%; - width: 80%; -} -.MLjqui-bulletchart-ticks -{ - background-color: #AAAAAA; -} -.MLjqui-bulletchart-ticks-horizontal -{ - width: 1px; -} -.MLjqui-bulletchart-ticks-vertical -{ - height: 1px; -} -.MLjqui-bulletchart-zero-tick -{ -} -.MLjqui-bulletchart-labels -{ -} -/*MLjquiNotification*/ -.MLjqui-notification -{ - padding: 10px; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - pointer-events: auto; -} -.MLjqui-notification-table -{ - width: 100%; - font-size: inherit; - font-weight: inherit; - font-style: inherit; - color:inherit; -} -.MLjqui-notification-container -{ - position: fixed; - height: auto; - width: auto; - pointer-events: none; -} -.MLjqui-notification-container-full-width -{ - width: 100%; -} -.MLjqui-notification-container-full-height -{ - height: 100%; -} -#MLjquiNotificationDefaultContainer-top-right, #MLjquiNotificationDefaultContainer-bottom-left -{ - direction: rtl; -} -.MLjqui-notification-icon, .MLjqui-notification-content -{ - vertical-align: middle; -} -.MLjqui-notification-content -{ -} -.MLjqui-notification-content-rtl -{ - direction: rtl; -} -.MLjqui-link, .MLjqui-inverse, .MLjqui-primary, .MLjqui-warning, .MLjqui-danger, .MLjqui-success, .MLjqui-info { - background: none !important; - box-shadow: none !important; - text-shadow: none !important; -} - -.MLjqui-primary .MLjqui-icon-calendar, .MLjqui-primary .MLjqui-icon-calendar-hover, .MLjqui-primary .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-primary .MLjqui-icon-time, .MLjqui-primary .MLjqui-icon-time-hover, .MLjqui-primary .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-success .MLjqui-icon-calendar, .MLjqui-success .MLjqui-icon-calendar-hover, .MLjqui-success .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-success .MLjqui-icon-time, .MLjqui-success .MLjqui-icon-time-hover, .MLjqui-success .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} -.MLjqui-warning .MLjqui-icon-calendar, .MLjqui-warning .MLjqui-icon-calendar-hover, .MLjqui-warning .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-warning .MLjqui-icon-time, .MLjqui-warning .MLjqui-icon-time-hover, .MLjqui-warning .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-danger .MLjqui-icon-calendar, .MLjqui-danger .MLjqui-icon-calendar-hover, .MLjqui-danger .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-danger .MLjqui-icon-time, .MLjqui-danger .MLjqui-icon-time-hover, .MLjqui-danger .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-info .MLjqui-icon-calendar, .MLjqui-info .MLjqui-icon-calendar-hover, .MLjqui-info .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-info .MLjqui-icon-time, .MLjqui-info .MLjqui-icon-time-hover, .MLjqui-info .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - -.MLjqui-inverse .MLjqui-icon-calendar, .MLjqui-inverse .MLjqui-icon-calendar-hover, .MLjqui-inverse .MLjqui-icon-calendar-pressed { - background-image: url('../images/icon-calendar-white.png'); -} -.MLjqui-inverse .MLjqui-icon-time, .MLjqui-inverse .MLjqui-icon-time-hover, .MLjqui-inverse .MLjqui-icon-time-pressed { - background-image: url('../images/icon-time-white.png'); -} - - -.MLjqui-notification-info, .MLjqui-info -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5bc0de !important; - *background-color: #5bc0de !important; - border-left-color: #46b8da !important; - border-right-color: #46b8da !important; - border-top-color: #46b8da !important; - border-bottom-color: #46b8da !important; -} -.MLjqui-info:hover, -.MLjqui-info:focus, -.MLjqui-info:active, -.MLjqui-info.active, -.MLjqui-info.disabled, -.MLjqui-info[disabled] { - color: #ffffff !important; - background-color: #31b0d5 !important; - *background-color: #31b0d5 !important; - border-color: #269abc !important; -} - -.MLjqui-fill-state-pressed.MLjqui-info, -.MLjqui-info:active, -.MLjqui-info.active { - background-color: #269abc \9 !important; -} -.MLjqui-notification-warning, .MLjqui-warning -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #f0ad4e !important; - *background-color: #f0ad4e !important; - border-left-color: #eea236 !important; - border-right-color: #eea236 !important; - border-top-color: #eea236 !important; - border-bottom-color: #eea236 !important; -} -.MLjqui-warning:hover, -.MLjqui-warning:focus, -.MLjqui-warning:active, -.MLjqui-warning.active, -.MLjqui-warning.disabled, -.MLjqui-warning[disabled] { - color: #ffffff !important; - background-color: #ec971f !important; - *background-color: #ec971f !important; - border-color: #d58512 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-warning, -.MLjqui-warning:active, -.MLjqui-warning.active { - background-color: #d58512 \9 !important; - border-color: #985f0d !important; -} -.MLjqui-notification-success, .MLjqui-success -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5cb85c !important; - *background-color: #5cb85c !important; - border-left-color: #4cae4c !important; - border-right-color: #4cae4c !important; - border-top-color: #4cae4c !important; - border-bottom-color: #4cae4c !important; -} -.MLjqui-success:hover, -.MLjqui-success:focus, -.MLjqui-success:active, -.MLjqui-success.active, -.MLjqui-success.disabled, -.MLjqui-success[disabled] { - color: #ffffff !important; - background-color: #449d44 !important; - *background-color: #449d44 !important; - border-color: #398439 !important; -} -.MLjqui-fill-state-pressed.MLjqui-success, -.MLjqui-success:active, -.MLjqui-success.active { - background-color: #398439 !important; - border-color: #255625 !important; -} -.MLjqui-notification-error, .MLjqui-danger -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #d9534f !important; - *background-color: #d9534f !important; - border-left-color: #d43f3a !important; - border-right-color: #d43f3a !important; - border-top-color: #d43f3a !important; - border-bottom-color: #d43f3a !important; -} -.MLjqui-danger:hover, -.MLjqui-danger:focus, -.MLjqui-danger:active, -.MLjqui-danger.active, -.MLjqui-danger.disabled, -.MLjqui-danger[disabled] { - color: #ffffff !important; - background-color: #c9302c !important; - *background-color: #c9302c !important; - border-color: #ac2925 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-danger, .MLjqui-danger:active, -.MLjqui-danger.active { - background-color: #ac2925 !important; - border-color: #761c19 !important; -} -.MLjqui-notification-mail, .MLjqui-primary -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #337ab7 !important; - *background-color: #337ab7 !important; - border-left-color: #2e6da4 !important; - border-right-color: #2e6da4 !important; - border-top-color: #2e6da4 !important; - border-bottom-color: #2e6da4 !important; -} -.MLjqui-primary:hover, -.MLjqui-primary:focus, -.MLjqui-primary:active, -.MLjqui-primary.active, -.MLjqui-primary.disabled, -.MLjqui-primary[disabled] { - color: #ffffff !important; - background-color: #286090 !important; - *background-color: #286090 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-primary, -.MLjqui-primary:active, -.MLjqui-primary.active { - background-color: #204d74 !important; -} -.MLjqui-notification-time, .MLjqui-inverse -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #363636 !important; - *background-color: #222222 !important; - border-left-color: #222222 !important; - border-right-color: #222222 !important; - border-top-color: #222222 !important; - border-bottom-color: #000000 !important; -} -.MLjqui-inverse:hover, -.MLjqui-inverse:focus, -.MLjqui-inverse:active, -.MLjqui-inverse.active, -.MLjqui-inverse.disabled, -.MLjqui-inverse[disabled] { - color: #ffffff !important; - background-color: #222222 !important; - *background-color: #151515 !important; -} - -.MLjqui-fill-state-pressed.MLjqui-inverse, -.MLjqui-inverse:active, -.MLjqui-inverse.active { - background-color: #080808 !important; - background-image: linear-gradient(to bottom, #444444, #444444) !important; -} -.MLjqui-link, -.MLjqui-link:active, -.MLjqui-link[disabled] { - background-color: transparent !important; - background-image: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; -} - -.MLjqui-link { - color: #0088cc !important; - cursor: pointer !important; - border-color: transparent !important; - -webkit-border-radius: 0 !important; - -moz-border-radius: 0 !important; - border-radius: 0 !important; -} - -.MLjqui-link:hover, -.MLjqui-link:focus { - color: #005580 !important; - text-decoration: underline !important; - background-color: transparent !important; -} - -.MLjqui-link[disabled]:hover, -.MLjqui-link[disabled]:focus { - color: #333333 !important; - text-decoration: none !important; -} -.MLjqui-link:focus, .MLjqui-inverse:focus, .MLjqui-primary:focus, .MLjqui-warning:focus, .MLjqui-danger:focus, .MLjqui-success:focus, .MLjqui-info:focus, -.MLjqui-link:hover, .MLjqui-inverse:hover, .MLjqui-primary:hover, .MLjqui-warning:hover, .MLjqui-danger:hover, .MLjqui-success:hover, .MLjqui-info:hover { - background-position: 0 -15px !important; - -webkit-transition: background-position 0.1s linear !important; - -moz-transition: background-position 0.1s linear !important; - -o-transition: background-position 0.1s linear !important; - transition: background-position 0.1s linear !important; -} -.MLjqui-link:active, .MLjqui-inverse:active, .MLjqui-primary:active, .MLjqui-warning:active, .MLjqui-danger:active, .MLjqui-success:active, .MLjqui-info:active { - background-image: none !important; - outline: 0 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; -} -.MLjqui-notification-icon -{ - background-repeat: no-repeat; -} -.MLjqui-notification-icon-ltr -{ - background-position: left center; -} -.MLjqui-notification-icon-rtl -{ - background-position: right center; -} -.MLjqui-notification-icon-info, .MLjqui-notification-icon-warning, .MLjqui-notification-icon-success, .MLjqui-notification-icon-error, .MLjqui-notification-icon-mail, .MLjqui-notification-icon-time -{ - width: 30px; - height: 25px; -} -.MLjqui-notification-icon-info -{ - background-image: url('../images/info.png'); -} -.MLjqui-notification-icon-warning -{ - background-image: url('../images/warning.png'); -} -.MLjqui-notification-icon-success -{ - background-image: url('../images/success.png'); -} -.MLjqui-notification-icon-error -{ - background-image: url('../images/error.png'); -} -.MLjqui-notification-icon-mail -{ - background-image: url('../images/mail.png'); -} -.MLjqui-notification-icon-time -{ - background-image: url('../images/time.png'); -} -.MLjqui-notification-close-button-info, .MLjqui-notification-close-button-success, .MLjqui-notification-close-button-mail, .MLjqui-notification-close-button-time, .MLjqui-notification-close-button-error -{ - background-image: url('../images/close_white.png'); -} -.MLjqui-notification-close-button-warning -{ - background-image: url('../images/close_black.png'); -} -.MLjqui-notification-close-button-container, .MLjqui-notification-close-button -{ - width: 16px; - height: 16px; -} -.MLjqui-notification-close-button-container -{ - vertical-align: top; -} -.MLjqui-notification-close-button -{ - position: relative; - top: -11px; - background-repeat: no-repeat; - cursor: pointer; -} -.MLjqui-notification-close-button-ltr -{ - right: -11px; - background-position: right top; -} -.MLjqui-notification-close-button-rtl -{ - left: -11px; - background-position: left top; -} -.MLjqui-navbar { - width: 100%; - border-style: solid; - border-width: 1px; -} -.MLjqui-navbar ul:before, -.MLjqui-navbar ul:after { - content: ""; - display: table; -} -.MLjqui-navbar ul:after { - clear: both; -} -.MLjqui-navbar ul { - list-style: none; - margin: 0; - padding: 0; - position: relative; - display: block; - border: 0; - max-width: 100%; - overflow: visible; -} -.MLjqui-navbar-block { - margin: 0; - overflow:hidden; - padding: 0px 12px; - border-width:0px; - float: left; - min-height: 1px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - box-shadow: none !important; - border-radius: 0px !important; -} -.MLjqui-navbar-block-rtl { - float:right; -} -.MLjqui-ribbon -{ - position: relative; - overflow: hidden; -} -.MLjqui-ribbon-auto -{ - display: inline-block; -} -.MLjqui-ribbon-popup -{ - overflow: visible; -} -.MLjqui-ribbon-header -{ - position: absolute; - margin: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - overflow: hidden; - float: left; - display: block; - box-shadow: none !important; -} -.MLjqui-ribbon-header-auto -{ - position: relative; -} -.MLjqui-ribbon-header-horizontal -{ - width: 100%; - min-height: 30px; - padding: 0px; - white-space: nowrap; -} -.MLjqui-ribbon-header-bottom -{ - bottom: 0; -} -.MLjqui-ribbon-header-vertical -{ - min-width: 75px; - height: 100%; - float: left; - padding: 0px; -} -.MLjqui-ribbon-header-right -{ - right: 0; -} -.MLjqui-ribbon-header-horizontal-popup, .MLjqui-ribbon-header-vertical-popup -{ - position: relative; -} -.MLjqui-ribbon-header-horizontal-popup -{ - height:100%; -} -.MLjqui-ribbon-header-vertical-popup -{ - width: 100%; -} -.MLjqui-ribbon-item -{ - position: relative; - list-style-type: none; - padding: 5px; - border: 1px solid transparent; - box-sizing: border-box; - text-overflow: ellipsis; - cursor: default; - min-width: 10px; - vertical-align: top; -} -.MLjqui-ribbon-item-top, .MLjqui-ribbon-item-bottom -{ - height: 100%; - display: inline-block; - margin-left: 1px; - margin-right: 1px; -} -.MLjqui-ribbon-item-top -{ - margin-top: 1px; -} -.MLjqui-ribbon-item-bottom -{ - margin-top: -1px; -} -.MLjqui-ribbon-item-left, .MLjqui-ribbon-item-right -{ - width: 100%; - margin-top: 2px; -} -.MLjqui-ribbon-item-left -{ - margin-left: 1px; -} -.MLjqui-ribbon-item-right -{ - margin-left: -1px; -} -.MLjqui-ribbon-item-hover -{ - border-color: inherit; -} -.MLjqui-ribbon-item-top.MLjqui-ribbon-item-hover -{ - border-bottom-color: inherit !important; -} -.MLjqui-ribbon-item-bottom.MLjqui-ribbon-item-hover -{ - border-top-color: inherit !important; -} -.MLjqui-ribbon-item-left.MLjqui-ribbon-item-hover -{ - border-right-color: inherit !important; -} -.MLjqui-ribbon-item-right.MLjqui-ribbon-item-hover -{ - border-left-color: inherit !important; -} -.MLjqui-ribbon-item-selected -{ - border-color: inherit; -} -.MLjqui-ribbon-item-top.MLjqui-ribbon-item-selected -{ - border-bottom-color: transparent; -} -.MLjqui-ribbon-item-bottom.MLjqui-ribbon-item-selected -{ - border-top-color: transparent; -} -.MLjqui-ribbon-item-left.MLjqui-ribbon-item-selected -{ - border-right-color: transparent; -} -.MLjqui-ribbon-item-right.MLjqui-ribbon-item-selected -{ - border-left-color:transparent; -} -.MLjqui-ribbon-content -{ - background-image: none !important; - background-color: transparent !important; - box-sizing: border-box; -} -.MLjqui-ribbon-content-horizontal -{ - clear: both; - height: 100%; -} -.MLjqui-ribbon-content-vertical -{ - height: 100%; - width: 100%; - float: left; - border-width: 1px; -} -.MLjqui-ribbon-content-popup -{ - z-index:99999; - position: absolute; - border-left: none; -} -.MLjqui-ribbon-content-popup.MLjqui-ribbon-content-horizontal -{ - width: 100%; - height: auto; -} -.MLjqui-ribbon-content-popup.MLjqui-ribbon-content-vertical -{ - width: auto; - height: 100%; -} -.MLjqui-ribbon-content-popup-top { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-bottom { - -webkit-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-left { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.MLjqui-ribbon-content-popup-right { - -webkit-box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); - box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); -} - -.MLjqui-ribbon-content-auto-width -{ - width: auto; -} -.MLjqui-ribbon-content-section -{ - width: 100%; - height: 100%; - display: none; - border-width: 1px; - border-style: solid; - box-sizing: inherit; - overflow: auto; -} -.MLjqui-ribbon-content-section-top -{ - border-top: none; -} -.MLjqui-ribbon-content-section-bottom -{ - bottom: 0; - border-bottom: none; -} -.MLjqui-ribbon-content-section-left -{ - border-left: none; -} -.MLjqui-ribbon-content-section-right -{ - border-right: none; - right: 0; -} -.MLjqui-ribbon-content-section-popup -{ - position: relative; -} -.MLjqui-ribbon-content-section-horizontal-popup -{ - height: auto; -} -.MLjqui-ribbon-content-section-vertical-popup -{ - width: auto; -} -.MLjqui-ribbon-header-rtl -{ - text-align: right; -} -.MLjqui-ribbon-header-horizontal.MLjqui-ribbon-header-rtl -{ - direction: rtl; -} -.MLjqui-ribbon-item-rtl -{ - direction: rtl; -} -.MLjqui-ribbon-scrollbutton -{ - position: absolute; - display: none; - box-sizing: border-box; - cursor: pointer; - background-repeat: no-repeat !important; - background-position: center !important; - z-index: 1000; -} -.MLjqui-ribbon-scrollbutton-top, .MLjqui-ribbon-scrollbutton-bottom -{ - width: 17px; -} -.MLjqui-ribbon-scrollbutton-left, .MLjqui-ribbon-scrollbutton-right -{ - height: 17px; -} -.MLjqui-ribbon-scrollbutton-top -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-bottom -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-right -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far -{ - right: 18px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-ribbon-scrollbutton-top.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-bottom.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near -{ - left: 18px; - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-near -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-lt.MLjqui-ribbon-scrollbutton-far -{ - bottom: 18px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-both, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-far -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-ribbon-scrollbutton-left.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near, .MLjqui-ribbon-scrollbutton-right.MLjqui-ribbon-scrollbutton-rb.MLjqui-ribbon-scrollbutton-near -{ - top: 18px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-ribbon-scrollbutton-inner -{ - width: 100%; - height: 100%; - background-repeat: no-repeat; - background-position: center; -} -.MLjqui-ribbon-selection-token -{ - position: absolute; - z-index: 1000; -} -.MLjqui-ribbon-selection-token-top, .MLjqui-ribbon-selection-token-bottom -{ - height: 1px; -} -.MLjqui-ribbon-selection-token-left, .MLjqui-ribbon-selection-token-right -{ - width: 1px; -} -.MLjqui-ribbon-auto, .MLjqui-ribbon-item-top, .MLjqui-ribbon-item-bottom, .MLjqui-ribbon-content -{ - *display: inline; -} -.MLjqui-ribbon-content-left -{ - *float: none; -} -.MLjqui-ribbon-content-right -{ - *float: left; -} -.MLjqui-ribbon-content.MLjqui-ribbon-content-popup -{ - *left: 0; -} -.MLjqui-ribbon-content-popup .MLjqui-ribbon-content-section -{ - *overflow: visible; -} -.MLjqui-ribbon-content-section-popup -{ - *position: absolute; -} -.MLjqui-toolbar, .MLjqui-toolbar-minimized-popup-separator -{ - box-sizing: border-box; -} -.MLjqui-toolbar, .MLjqui-toolbar-minimized-popup -{ - padding: 5px; -} -.MLjqui-toolbar -{ - position: relative; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.MLjqui-toolbar-tool -{ - float: left; - margin-top: 0; - margin-bottom: 0; -} -.MLjqui-toolbar-tool-rtl -{ - float: right; -} -.MLjqui-toolbar-tool-no-separator-ltr -{ - margin-right: 2px !important; -} -.MLjqui-toolbar-tool-no-separator-rtl -{ - margin-left: 2px !important; -} -.MLjqui-toolbar-tool-separator-ltr -{ - margin-right: 6px !important; -} -.MLjqui-toolbar-tool-separator-rtl -{ - margin-left: 6px !important; -} -.MLjqui-toolbar-tool-inner-button -{ - margin-right: 0; - margin-left: 0; - border-radius: 0 !important; -} -.MLjqui-toolbar-minimized-button, .MLjqui-toolbar-minimized-popup -{ - position: absolute; -} -.MLjqui-toolbar-minimized-button -{ - height: 100%; - right: 0; - cursor: pointer; - margin-top: -5px; - margin-right: 5px; - display: none; -} -.MLjqui-toolbar-minimized-button-rtl -{ - left: 0; - margin-left: 5px; - margin-right: 0; -} -.MLjqui-toolbar-minimized-popup -{ - border-width: 1px; - border-top-width: 0; - border-style: solid; - visibility: hidden; - z-index: 99999; -} -.MLjqui-toolbar-tool-minimized -{ - margin: 1px 0 !important; -} -.MLjqui-toolbar-minimized-popup-separator -{ - width: 100%; - height: 2px; - margin: 5px 0; - display: none; -} -.MLjqui-complex-input-spin-buttons-container -{ - border-width: 1px; - border-style: solid; - position: relative; - -webkit-box-sizing: border-box !important; - -moz-box-sizing: border-box !important; - box-sizing: border-box !important; - padding: 2px 8px !important; - white-space: nowrap; - vertical-align: middle; -} -.MLjqui-formatted-input, .MLjqui-complex-input -{ - padding-right: 2px !important; - text-align: right; -} -.MLjqui-formatted-input-lower-case, .MLjqui-complex-input -{ - text-transform: lowercase; -} -.MLjqui-formatted-input-upper-case -{ - text-transform: uppercase; -} -.MLjqui-formatted-input-item -{ - word-wrap: break-word; -} -.MLjqui-formatted-input-item-rtl, .MLjqui-complex-input-rtl -{ - direction: rtl !important; -} -.MLjqui-formatted-input-spin-buttons-container, .MLjqui-formatted-input-addon -{ - height: 100%; -} -.MLjqui-formatted-input-spin-buttons-container -{ - width: 18px; - padding: 0 0 0 1px !important; - overflow: hidden; -} -.MLjqui-formatted-input-spin-buttons-container-rtl -{ - border-right-width: 0px; - padding: 0 0 0 2px !important; -} -.MLjqui-formatted-input-spin-buttons-container-rtl-border -{ - border-left-width: 1px !important; -} -.MLjqui-formatted-input-spin-button -{ - position: relative; - width: 17px; - height: 50%; - margin-left: -1px; - border-width: 0px; - padding: 0px; - overflow: hidden; - cursor: pointer; -} -.MLjqui-formatted-input-addon -{ - width: 19px; - padding: 0 !important; - cursor: pointer; -} -.MLjqui-formatted-input-addon-rtl -{ - border-right-width: 1px !important; -} -.MLjqui-complex-input-parent -{ - overflow: hidden; -} -.MLjqui-complex-input-child -{ - height: 100%; - float: left; - box-sizing: border-box; -} -.MLjqui-complex-input-child-rtl -{ - float: right; -} -.MLjqui-complex-input-spin-buttons-container-ltr -{ - border-left-width: 0; -} -.MLjqui-complex-input-spin-buttons-container-rtl -{ - border-left-width: 1px !important; - border-right-width: 0; -} -.MLjqui-file-upload -{ - position: relative; - overflow: auto; -} -.MLjqui-file-upload, .MLjqui-file-upload-file-row, .MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; -} -.MLjqui-file-upload-buttons-container, .MLjqui-file-upload-iframe, .MLjqui-file-upload-loading-element -{ - display: none; -} -.MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-buttons-container, .MLjqui-file-upload-file-row, .MLjqui-file-upload-icon -{ - width: 100%; -} -.MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-icon, .MLjqui-file-upload-loading-element -{ - height: 100%; -} -.MLjqui-file-input-iframe, .MLjqui-file-upload-form-ie9 -{ - position: absolute; -} -.MLjqui-file-input-iframe -{ - width: 0; - height: 0; - border: none; -} -.MLjqui-file-upload-form, .MLjqui-file-upload-file-input -{ - visibility: hidden; - display: none; -} -.MLjqui-file-upload-form-ie9, .MLjqui-file-upload-file-input-ie9 -{ - display: block; - visibility: visible; -} -.MLjqui-file-upload-form-ie9 -{ - z-index: 10000; - opacity: 0; - filter: alpha(opacity=0); -} -.MLjqui-file-upload-file-name -{ - width: auto; - padding: 0 2px 0 2px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - *float: left; -} -.MLjqui-file-upload-button-browse-rtl, .MLjqui-file-upload-button-upload-rtl, .MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-file-name-rtl, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-loading-element -{ - float: right; -} -.MLjqui-file-upload, .MLjqui-file-upload-file-row -{ - padding: 5px; -} -.MLjqui-file-upload-button-browse -{ - display: block; -} -.MLjqui-file-upload-buttons-container -{ - height: auto; - margin-top: 10px; -} -.MLjqui-file-upload-button-browse-rtl, .MLjqui-file-upload-button-upload-rtl, .MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-file-name-rtl, .MLjqui-file-upload-file-cancel-rtl, .MLjqui-file-upload-file-upload-rtl -{ - direction: rtl !important; -} -.MLjqui-file-upload-button-cancel, .MLjqui-file-upload-button-upload-rtl -{ - margin-left: 5px; -} -.MLjqui-file-upload-button-upload-rtl-ie -{ - margin-right: 5px; -} -.MLjqui-file-upload-button-cancel-rtl, .MLjqui-file-upload-button-upload-rtl-ie -{ - margin-left: 0; -} -.MLjqui-file-upload-file-row -{ - height: 30px; - margin-bottom: 3px; - clear: both; -} -.MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload, .MLjqui-file-upload-loading-element -{ - width: 17px; - margin: 0 1px 0 1px; -} -.MLjqui-file-upload-file-cancel-rtl, .MLjqui-file-upload-file-upload-rtl, .MLjqui-file-upload-loading-element-rtl -{ - float: none; - *float: left; -} -.MLjqui-file-upload-button-browse, .MLjqui-file-upload-button-upload, .MLjqui-file-upload-button-cancel, .MLjqui-file-upload-form-ie9, .MLjqui-file-upload-file-input-ie9, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - cursor: pointer; - white-space:nowrap; -} -.MLjqui-file-upload-file-name, .MLjqui-file-upload-file-cancel, .MLjqui-file-upload-file-upload -{ - display: inline-block; -} -.MLjqui-file-upload-icon-upload, .MLjqui-file-upload-loading-element -{ - margin-top: 1px; -} -.MLjqui-file-upload-loading-element -{ - background-image: url('../images/loader-small.gif'); - background-repeat: no-repeat; -} - -.MLjqui-date-time-input-popup .MLjqui-icon { - margin-top:0px; -} - - -.MLjqui-text-area-element -{ - height: 100%; - width: 100%; - overflow: hidden; - border: none; - outline: none; - left: 0px; - top: 0px; - margin: 0px; - position: absolute; - resize: none; -} -.MLjqui-text-area-element-rtl -{ - direction: rtl !important; -} -.MLjqui-responsive-panel -{ - overflow: auto; -} -.MLjqui-responsive-panel, .MLjqui-responsive-panel-button -{ - border-width: 1px; - border-style: solid; -} -.MLjqui-responsive-panel-button -{ - display: none; - cursor: pointer; -} -.MLjqui-responsive-panel-button-inner -{ - margin: 0; - width: 100%; - height: 100%; - background-position: center; -} -.MLjqui-loader -{ - margin: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background-color: rgba(255,255,255,0.5); - z-index: 999; - border-style: solid; - border-width: 1px; -} -.MLjqui-loader-ie-transparency -{ - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff)"; /*For IE 8*/ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff); /*For IE 7*/ -} -.MLjqui-loader-modal -{ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - position: fixed; - height: 100%; - width: 100%; - z-index: 99; - cursor: default; - top: 0; - left: 0; - background-color: black; - opacity: 0.6; -} -.MLjqui-loader-icon -{ - background-image: url("../images/loader.gif"); - background-repeat: no-repeat; - background-position: center; - width: 100%; - height: 100%; - position: absolute; - z-index: 999; -} -.MLjqui-loader-text -{ - z-index: 999; - position: relative; -} -.MLjqui-loader-text-left -{ - margin-left: 5px; - position: absolute; - top: 50%; -} -.MLjqui-loader-text-right -{ - margin-right: 5px; - position: absolute; - top: 50%; - right: 0px; -} -.MLjqui-loader-text-top -{ - text-align: center; - margin-top: 5px; -} -.MLjqui-loader-text-bottom -{ - bottom: 0px; - position: absolute; - text-align: center; - margin: 0 auto; - width: 100%; - margin-bottom: 5px; -} -.MLjqui-loader-rtl -{ - direction: rtl; -} -/* MLjquiLayout and MLjquiDockingLayout */ -.MLjqui-layout, .MLjqui-layout-group-root, .MLjqui-layout-pseudo-window-header, .MLjqui-docking-layout-overlay-inner-square-content -{ - position: relative; -} -.MLjqui-layout-pseudo-window-pin-background, .MLjqui-layout-pseudo-window-close-background, .MLjqui-layout-resize-feedback, .MLjqui-layout-overlay, .MLjqui-docking-layout-overlay, .MLjqui-docking-layout-overlay-highlight-right, .MLjqui-docking-layout-overlay-highlight-bottom, .MLjqui-docking-layout-overlay-square-edge, .MLjqui-docking-layout-drop-overlay -{ - position: absolute; -} -.MLjqui-layout -{ - background-color: #c5c5c5; -} -.MLjqui-layout-group-root, .MLjqui-layout-pseudo-window-pin-icon, .MLjqui-layout-pseudo-window-pinned-icon, .MLjqui-layout-pseudo-window-close-icon, .MLjqui-layout-overlay -{ - width: 100%; - height: 100%; -} -.MLjqui-layout-group-default-horizontal > div, .MLjqui-layout-pseudo-window-title-ltr, .MLjqui-docking-layout-overlay-square, .MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-square-edge-arrow-container-horizontal -{ - float: left; -} -.MLjqui-layout-group-tabbed -{ - position: static; - box-sizing: border-box; - min-height: 0 !important; -} -.MLjqui-layout-group-tabbed .MLjqui-window-content, .MLjqui-docking-layout-group-floating .MLjqui-window-content -{ - padding: 0; -} -.MLjqui-layout-group-tabbed .MLjqui-ribbon-content-section, .MLjqui-layout-window, .MLjqui-docking-layout-group-floating .MLjqui-ribbon-content-section -{ - border: none; -} -.MLjqui-layout-window -{ - position: static; -} -.MLjqui-layout-group-auto-hide-content-vertical, .MLjqui-layout-group-auto-hide-content-horizontal -{ - overflow: auto; -} -.MLjqui-layout-group-auto-hide-content-vertical -{ - width: 150px; -} -.MLjqui-layout-group-auto-hide-content-horizontal -{ - width: 100%; - height: 150px; -} -.MLjqui-layout-pseudo-window -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; - box-shadow: none !important; -} -.MLjqui-layout-pseudo-window-header, .MLjqui-layout-pseudo-window-content -{ - width: 100%; - box-sizing: border-box; -} -.MLjqui-layout-pseudo-window-header -{ - height: 30px; -} -.MLjqui-layout-pseudo-window-pin-background, .MLjqui-layout-pseudo-window-close-background -{ - width: 16px; - height: 16px; - top: 5px; -} -.MLjqui-layout-pseudo-window-pin-background-ltr -{ - right: 15px; -} -.MLjqui-layout-pseudo-window-close-background-ltr -{ - right: 0; -} -.MLjqui-layout-pseudo-window-pin-background-rtl -{ - left: 15px; -} -.MLjqui-layout-pseudo-window-close-background-rtl -{ - left: 0; -} -.MLjqui-layout-pseudo-window-pin-icon, .MLjqui-layout-pseudo-window-pinned-icon, .MLjqui-layout-pseudo-window-close-icon -{ - cursor: pointer; -} -.MLjqui-layout-pseudo-window-title -{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.MLjqui-layout-pseudo-window-pin-icon -{ - background-image: url("../images/pin.png"); -} -.MLjqui-layout-pseudo-window-pinned-icon -{ - background-image: url("../images/pinned.png"); -} -.MLjqui-layout-pseudo-window-title-rtl -{ - float: right; -} -.MLjqui-layout-resize-feedback -{ - z-index: 9999; - top: 0; - left: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - opacity: 0.6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - *filter: alpha(opacity=60); - display: none; -} -.MLjqui-layout-resize-feedback-horizontal -{ - width: 100%; - height: 4px; - cursor: row-resize; -} -.MLjqui-layout-resize-feedback-vertical -{ - width: 4px; - height: 100%; - cursor: col-resize; -} -.MLjqui-layout-resize-feedback-warning -{ - border-color: #800000 !important; - background-color: Red !important; -} -.MLjqui-layout-overlay -{ - top: 0; - left: 0; - display: none; - background-color: transparent; - z-index: 8999; -} -.MLjqui-layout-ribbon-header-ltr -{ - padding-left: 20px; -} -.MLjqui-layout-ribbon-header-rtl -{ - padding-right: 20px; -} - -/* MLjquiDockingLayout-specific */ -.MLjqui-docking-layout-group-floating -{ - border-color: #FFD280 !important; -} -.MLjqui-docking-layout-group-floating .MLjqui-window-header -{ - border-color: #FFD280; - background-color: #FFD280 !important; - background: -webkit-linear-gradient(#FFE4B5, #FFD280) !important; - background: -o-linear-gradient(#FFE4B5, #FFD280) !important; - background: -moz-linear-gradient(#FFE4B5, #FFD280) !important; - background: linear-gradient(#FFE4B5, #FFD280 ) !important; -} -.MLjqui-docking-layout-overlay, .MLjqui-docking-layout-overlay-square-edge -{ - display: none; - z-index: 99999; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - *filter: alpha(opacity=90); -} -.MLjqui-docking-layout-overlay -{ - width: 100px; - height: 100px; - left: 100px; - top: 70px; -} -.MLjqui-docking-layout-overlay-section -{ - height: 33px; - width: 100px; -} -.MLjqui-docking-layout-overlay-square -{ - width: 26px; - height: 26px; - padding: 3px; -} -.MLjqui-docking-layout-overlay-square-invisible -{ - background-color: transparent !important; - background-image: none !important; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-center, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-highlight-bottom -{ - border-top-width: 1px; - border-top-style: solid; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-highlight-right -{ - border-left-width: 1px; - border-left-style: solid; -} -.MLjqui-docking-layout-overlay-square-top, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-highlight-left -{ - border-right-width: 1px; - border-right-style: solid; -} -.MLjqui-docking-layout-overlay-square-left, .MLjqui-docking-layout-overlay-square-center, .MLjqui-docking-layout-overlay-square-right, .MLjqui-docking-layout-overlay-square-bottom, .MLjqui-docking-layout-overlay-inner-square-header, .MLjqui-docking-layout-overlay-highlight-top -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -.MLjqui-docking-layout-overlay-square-center -{ - border-color: transparent !important; -} -.MLjqui-docking-layout-overlay-inner-square, .MLjqui-docking-layout-overlay-inner-square-header, .MLjqui-docking-layout-overlay-inner-square-content, .MLjqui-docking-layout-overlay-highlight-top, .MLjqui-docking-layout-overlay-highlight-bottom, .MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - width: 24px; -} -.MLjqui-docking-layout-overlay-inner-square -{ - border-width: 1px; - border-style: solid; - height: 24px; -} -.MLjqui-docking-layout-overlay-inner-square-header -{ - height: 5px; -} -.MLjqui-docking-layout-overlay-inner-square-content -{ - height: 18px; -} -.MLjqui-docking-layout-overlay-highlight -{ -} -.MLjqui-docking-layout-overlay-highlight-top -{ - height: 9px; - border-bottom-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-left, .MLjqui-docking-layout-overlay-highlight-right -{ - width: 12px; - height: 18px; -} -.MLjqui-docking-layout-overlay-highlight-left -{ - border-right-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-right -{ - right: 0; - border-left-style: dashed; -} -.MLjqui-docking-layout-overlay-highlight-bottom -{ - bottom: 0; - height: 9px; - border-top-style: dashed; -} -.MLjqui-docking-layout-drop-overlay -{ - display: none; - background-color: #6495ED; - opacity: 0.5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - *filter: alpha(opacity=50); - z-index: 10000; -} -.MLjqui-docking-layout-square-disabled -{ - visibility: hidden; -} -.MLjqui-docking-layout-overlay-square-edge, .MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - border-style: solid; - border-width: 1px; -} -.MLjqui-docking-layout-overlay-inner-square-edge -{ - width: 26px; - height: 26px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-horizontal -{ - height: 24px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-vertical -{ - height: 13px; -} -.MLjqui-docking-layout-overlay-mini-window-edge-horizontal, .MLjqui-docking-layout-overlay-inner-square-header-horizontal, .MLjqui-docking-layout-overlay-inner-square-content-horizontal -{ - width: 13px; -} -.MLjqui-docking-layout-overlay-inner-square-content-vertical -{ - height: 7px; -} -.MLjqui-docking-layout-overlay-square-edge-arrow -{ - border-style: solid; - border-width: 5px; - width: 0px; - height: 0px; - display: block; - background: transparent !important; - *filter: inherit; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-top -{ - border-top-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-bottom-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-left-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-right, .MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - border-right-color: transparent !important; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-left, .MLjqui-docking-layout-overlay-square-edge-arrow-right -{ - margin-top: 8px; -} -.MLjqui-docking-layout-overlay-square-edge-arrow-top, .MLjqui-docking-layout-overlay-square-edge-arrow-bottom -{ - margin-left: 8px; -} - -.MLjqui-tag-cloud ul { - padding-left: 5px; -} - -.MLjqui-tag-cloud-item{ - padding: 3px; - display:inline-block; -} - -.MLjqui-tag-cloud-item a { - text-decoration: initial; -} - -.MLjqui-tag-cloud-item a:hover { - text-decoration: underline; -} -.MLjqui-popover { - position: absolute; - top: 0; - left: 0; - z-index: 9999; - background-color: #ffffff; - border: 1px solid #aaa; - border: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); -} -.MLjqui-popover-modal-background -{ - position:fixed; - left:0px; - top:0px; - width:100%; - height:100%; - z-index:999; - /* Fallback for web browsers that don't support RGBa */ - background-color: rgb(0, 0, 0); - /* RGBa with 0.6 opacity */ - background-color: rgba(0, 0, 0, 0.6); - /* For IE 5.5 - 7*/ - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - /* For IE 8*/ - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -.MLjqui-popover-close-button { - width:16px; - height:16px; - float:right; -} -.MLjqui-popover-close-button-rtl { - float:left; -} -.MLjqui-popover.top { - margin-top: -10px; -} - -.MLjqui-popover.right { - margin-left: 10px; -} - -.MLjqui-popover.bottom { - margin-top: 10px; -} - -.MLjqui-popover.left { - margin-left: -10px; -} - -.MLjqui-popover-title { - padding: 8px 14px; - margin: 0; - border-bottom: 1px solid inherit; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} - -.MLjqui-popover-title:empty { - display: none; -} - -.MLjqui-popover-content { - padding: 9px 14px; -} - -.MLjqui-popover .MLjqui-popover-arrow, -.MLjqui-popover .MLjqui-popover-arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.MLjqui-popover .MLjqui-popover-arrow { - border-width: 11px; -} - -.MLjqui-popover .MLjqui-popover-arrow:after { - border-width: 10px; - content: ""; -} - -.MLjqui-popover.top .MLjqui-popover-arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: inherit; - border-bottom-width: 0; -} - -.MLjqui-popover.top .MLjqui-popover-arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #ffffff; - border-bottom-width: 0; -} - -.MLjqui-popover.right .MLjqui-popover-arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: inherit; - border-left-width: 0; -} - -.MLjqui-popover.right .MLjqui-popover-arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; -} - -.MLjqui-popover.bottom .MLjqui-popover-arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color:inherit; - border-top-width: 0; -} - -.MLjqui-popover.bottom .MLjqui-popover-arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #ffffff; - border-top-width: 0; -} - -.MLjqui-popover.left .MLjqui-popover-arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; border-left-color: inherit; -} - -.MLjqui-popover.left .MLjqui-popover-arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #ffffff; - border-right-width: 0; -} - - -.MLjqui-kanban-full-frame { - width: 100vw; - height: 100vh; -} - -.MLjqui-kanban-in-frame { - width: 100%; - height: 100%; - box-sizing: border-box; -} - -.MLjqui-kanban-rtl { - direction: rtl; - text-align: right; -} - -.MLjqui-kanban-column { - box-sizing: border-box; - border-style: solid; - border-width: 1px 1px 1px 0px; - float: left; -} - -.MLjqui-kanban-column-collapsed { - width: 50px; -} - -.MLjqui-kanban-column-first { - border-width: 1px; -} - -.MLjqui-kanban-column:first-of-type { - border-width: 1px 1px 1px 1px; -} - -.MLjqui-kanban-column-selected { - /* background-color: blue;*/ -} - -.MLjqui-kanban-column-header-collapsed { /*vertical column invisible*/ - display: none; - box-sizing: border-box; - height: 0px; - width: 0px; - position: relative; - cursor: pointer; -} - -.MLjqui-kanban-column-header-collapsed-show { /*vertical column visible*/ - display: block !important; - height: 100%; - box-sizing: border-box; - width: 100%; - position: relative; - cursor: pointer; -} - -.MLjqui-kanban-column-vertical-container { - padding-top: 0px; - padding-left: 0px; - transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - white-space: nowrap; -} - -.MLjqui-kanban-column-vertical-container-inverse { - padding-top: 0px; - padding-left: 20px; - transform: rotate(90deg); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -o-transform: rotate(90deg); - white-space: nowrap; -} -.MLjqui-kanban-column-vertical-container .MLjqui-kanban-column-header-title, .MLjqui-kanban-column-vertical-container .MLjqui-kanban-column-header-status{ - position:relative; -} - -.MLjqui-kanban-column-hide { /*colapsed*/ - display: none !important; -} - -.MLjqui-kanban-column-header { - border-width: 1px; - border-style: solid; - margin: 1px; - white-space: nowrap; - padding-left: 5px; - padding-right: 5px; - cursor: pointer; - overflow:hidden; - position: relative; -} -.MLjqui-kanban-column-header-button { - position: absolute; - right: 0px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.MLjqui-kanban-column-header .MLjqui-window-collapse-button { - margin-top:1px !important; -} -.MLjqui-kanban-column-header-custom-button { - position: absolute; - right: 20px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.MLjqui-kanban-column-header-custom-button-rtl { - left: 20px; -} -.MLjqui-kanban-column-header-button-rtl { - left: 0px; -} -.MLjqui-kanban-column-header-collapsed .MLjqui-kanban-column-header-button { - top: 100%; - right: 50%; - margin-top: -21px; - left: 50%; - margin-left:-8px; -} -.MLjqui-kanban-column-header-collapsed .MLjqui-kanban-column-header-custom-button { - top: 100%; - right: 50%; - margin-top: -41px; - left: 50%; - margin-left:-8px; -} - -.MLjqui-kanban-column-container { - margin: 1px; - overflow-y: auto; -} - -.MLjqui-kanban-item-placeholder { - height: 100px; - border: gray dotted 1px; - border-radius: 3px; - margin: 5px; -} - -.MLjqui-kanban-column-vertical-container-inverse-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.MLjqui-kanban-column-vertical-container-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.MLjqui-kanban-item { - margin: 2px; - padding-top: 5px; - padding-bottom: 5px; - border-width: 1px; - border-style: solid; - border-color: inherit; - position: relative; - box-shadow: #ddd 2px 2px 3px; - cursor: pointer; - touch-action: none; - -ms-touch-action: none; -} - -.MLjqui-kanban-item-selected { -} - -.MLjqui-kanban-item-color-status { - background-color: #6bbd49; - width: 3px; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} -.MLjqui-kanban-item-color-status-rtl { - right:0px; - left:100%; -} -.MLjqui-kanban-item-text { - padding-left:6px; - padding-right:23px; - font-size: 14px; - padding-bottom:5px; - overflow:hidden; - text-overflow: ellipsis; -} -.MLjqui-kanban-rtl .MLjqui-kanban-item-text { - padding-right:6px; - padding-left:23px; -} -.MLjqui-kanban-column-header-title { -} - -.MLjqui-kanban-column-header-status { -} - -.MLjqui-kanban-item-content { - -} - -.MLjqui-kanban-item-avatar { - width: 22px; - height: 22px; - position: absolute; - right: 3px; - top: 3px; - background: #eee; - text-align: center; - overflow: hidden; -} -.MLjqui-kanban-item-avatar-rtl { - left: 3px; -} -.MLjqui-kanban-item-avatar-image { - width: 20px; - height: 20px; -} - -.MLjqui-kanban-item-avatar-image:hover { -} - -.MLjqui-kanban-item-footer { - border-top: 1px solid transparent; - border-color: inherit; - overflow: hidden; - padding-top: 5px; - margin-top: 5px; - padding-bottom:1px; - padding-left:6px; - padding-right:6px; -} - - -.MLjqui-kanban-item-keyword { - float: left; - margin:2px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-color:inherit; - padding-left:2px; - padding-right: 2px; - cursor: pointer; -} - -.MLjqui-kanban-item-keyword-rtl { - direction: rtl; - text-align: right; - float: right; -} - -.MLjqui-kanban-item-keyword:hover { -} - -.MLjqui-kanban-item-avatar { - height: 20px; -} - -.MLjqui-kanban-handle { - cursor: move; -} - -.MLjqui-kanban-clearing { - clear: both; -} -.MLjqui-sortable { - touch-action: none; - -ms-touch-action: none; -} - -.MLjqui-bar-gauge-tooltip { - position:absolute; - left:20px; - top:20px; - display:none; - padding: 6px 12px; - border:black solid 1px; - background-color: white; - color: #333333; - font-size: 11px; - font-weight:100; - font-family: Verdana; - border:black solid 1px; - border-radius:3px; - opacity: 1; - white-space: nowrap; - z-index:5; -} - -.MLjqui-bar-gauge-measure-text { - position: absolute; - top: 0; - right: 0; - visibility: hidden; - z-index:-99999; - margin:0px; - padding:0px; - border-width:0px; -} -.MLjqui-scrollbar-mobile { - background: transparent !important; -} - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-state-normal { - background: transparent !important; - border-color: transparent !important; - } -.MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal-horizontal, .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal{ - background: #808080 ! important; - border-color: #808080 !important; - border-width: 1px; - z-index:99999; - border-radius: 0px !important; -} - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal { - width: 4px ! important; - } - .MLjqui-scrollbar-mobile .MLjqui-scrollbar-thumb-state-normal-horizontal { - height: 4px !important; - } - - -.MLjqui-primary .MLjqui-icon-arrow-down, .MLjqui-warning .MLjqui-icon-arrow-down, .MLjqui-danger .MLjqui-icon-arrow-down, .MLjqui-success .MLjqui-icon-arrow-down, .MLjqui-info .MLjqui-icon-arrow-down { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-down-selected, .MLjqui-warning .MLjqui-icon-arrow-down-selected, .MLjqui-danger .MLjqui-icon-arrow-down-selected, .MLjqui-success .MLjqui-icon-arrow-down-selected, .MLjqui-info .MLjqui-icon-arrow-down-selected { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-down-hover, .MLjqui-warning .MLjqui-icon-arrow-down-hover, .MLjqui-danger .MLjqui-icon-arrow-down-hover, .MLjqui-success .MLjqui-icon-arrow-down-hover, .MLjqui-info .MLjqui-icon-arrow-down-hover { - background-image: url('../images/icon-down-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up, .MLjqui-warning .MLjqui-icon-arrow-up, .MLjqui-danger .MLjqui-icon-arrow-up, .MLjqui-success .MLjqui-icon-arrow-up, .MLjqui-info .MLjqui-icon-arrow-up { - background-image: url('../images/icon-up-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up-selected, .MLjqui-warning .MLjqui-icon-arrow-up-selected, .MLjqui-danger .MLjqui-icon-arrow-up-selected, .MLjqui-success .MLjqui-icon-arrow-up-selected, .MLjqui-info .MLjqui-icon-arrow-up-selected { - background-image: url('../images/icon-up-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-up-hover, .MLjqui-warning .MLjqui-icon-arrow-up-hover, .MLjqui-danger .MLjqui-icon-arrow-up-hover, .MLjqui-success .MLjqui-icon-arrow-up-hover, .MLjqui-info .MLjqui-icon-arrow-up-hover { - background-image: url('../images/icon-up-white.png'); -} - -.MLjqui-primary .MLjqui-icon-arrow-right, .MLjqui-warning .MLjqui-icon-arrow-right, .MLjqui-danger .MLjqui-icon-arrow-right, .MLjqui-success .MLjqui-icon-arrow-right, .MLjqui-info .MLjqui-icon-arrow-right { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-right-selected, .MLjqui-warning .MLjqui-icon-arrow-right-selected, .MLjqui-danger .MLjqui-icon-arrow-right-selected, .MLjqui-success .MLjqui-icon-arrow-right-selected, .MLjqui-info .MLjqui-icon-arrow-right-selected { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-right-hover, .MLjqui-warning .MLjqui-icon-arrow-right-hover, .MLjqui-danger .MLjqui-icon-arrow-right-hover, .MLjqui-success .MLjqui-icon-arrow-right-hover, .MLjqui-info .MLjqui-icon-arrow-right-hover { - background-image: url('../images/icon-right-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left, .MLjqui-warning .MLjqui-icon-arrow-left, .MLjqui-danger .MLjqui-icon-arrow-left, .MLjqui-success .MLjqui-icon-arrow-left, .MLjqui-info .MLjqui-icon-arrow-left { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left-selected, .MLjqui-warning .MLjqui-icon-arrow-left-selected, .MLjqui-danger .MLjqui-icon-arrow-left-selected, .MLjqui-success .MLjqui-icon-arrow-left-selected, .MLjqui-info .MLjqui-icon-arrow-left-selected { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary .MLjqui-icon-arrow-left-hover, .MLjqui-warning .MLjqui-icon-arrow-left-hover, .MLjqui-danger .MLjqui-icon-arrow-left-hover, .MLjqui-success .MLjqui-icon-arrow-left-hover, .MLjqui-info .MLjqui-icon-arrow-left-hover { - background-image: url('../images/icon-left-white.png'); -} -.MLjqui-primary-item .MLjqui-listitem-state-hover, .MLjqui-primary-item .MLjqui-menu-item-hover, .MLjqui-primary-item .MLjqui-tree-item-hover, .MLjqui-primary-item .MLjqui-calendar-cell-hover, .MLjqui-primary-item .MLjqui-grid-cell-hover, -.MLjqui-primary-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-primary-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-primary-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-primary-item .MLjqui-listitem-state-selected, .MLjqui-primary-item .MLjqui-menu-item-selected, .MLjqui-primary-item .MLjqui-tree-item-selected, .MLjqui-primary-item .MLjqui-calendar-cell-selected, .MLjqui-primary-item .MLjqui-grid-cell-selected, -.MLjqui-primary-item .MLjqui-menu-vertical .MLjqui-primary-item .MLjqui-menu-item-top-selected, .MLjqui-primary-item .MLjqui-grid-selectionarea, .MLjqui-primary-item .MLjqui-input-button-header, .MLjqui-primary-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-warning-item .MLjqui-listitem-state-hover, .MLjqui-warning-item .MLjqui-menu-item-hover, .MLjqui-warning-item .MLjqui-tree-item-hover, .MLjqui-warning-item .MLjqui-calendar-cell-hover, .MLjqui-warning-item .MLjqui-grid-cell-hover, -.MLjqui-warning-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-warning-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-warning-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-warning-item .MLjqui-listitem-state-selected, .MLjqui-warning-item .MLjqui-menu-item-selected, .MLjqui-warning-item .MLjqui-tree-item-selected, .MLjqui-warning-item .MLjqui-calendar-cell-selected, .MLjqui-warning-item .MLjqui-grid-cell-selected, -.MLjqui-warning-item .MLjqui-menu-vertical .MLjqui-warning-item .MLjqui-menu-item-top-selected, .MLjqui-warning-item .MLjqui-grid-selectionarea, .MLjqui-warning-item .MLjqui-input-button-header, .MLjqui-warning-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-danger-item .MLjqui-listitem-state-hover, .MLjqui-danger-item .MLjqui-menu-item-hover, .MLjqui-danger-item .MLjqui-tree-item-hover, .MLjqui-danger-item .MLjqui-calendar-cell-hover, .MLjqui-danger-item .MLjqui-grid-cell-hover, -.MLjqui-danger-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-danger-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-danger-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-danger-item .MLjqui-listitem-state-selected, .MLjqui-danger-item .MLjqui-menu-item-selected, .MLjqui-danger-item .MLjqui-tree-item-selected, .MLjqui-danger-item .MLjqui-calendar-cell-selected, .MLjqui-danger-item .MLjqui-grid-cell-selected, -.MLjqui-danger-item .MLjqui-menu-vertical .MLjqui-danger-item .MLjqui-menu-item-top-selected, .MLjqui-danger-item .MLjqui-grid-selectionarea, .MLjqui-danger-item .MLjqui-input-button-header, .MLjqui-danger-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-success-item .MLjqui-listitem-state-hover, .MLjqui-success-item .MLjqui-menu-item-hover, .MLjqui-success-item .MLjqui-tree-item-hover, .MLjqui-success-item .MLjqui-calendar-cell-hover, .MLjqui-success-item .MLjqui-grid-cell-hover, -.MLjqui-success-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-success-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-success-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-success-item .MLjqui-listitem-state-selected, .MLjqui-success-item .MLjqui-menu-item-selected, .MLjqui-success-item .MLjqui-tree-item-selected, .MLjqui-success-item .MLjqui-calendar-cell-selected, .MLjqui-success-item .MLjqui-grid-cell-selected, -.MLjqui-success-item .MLjqui-menu-vertical .MLjqui-success-item .MLjqui-menu-item-top-selected, .MLjqui-success-item .MLjqui-grid-selectionarea, .MLjqui-success-item .MLjqui-input-button-header, .MLjqui-success-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-info-item .MLjqui-listitem-state-hover, .MLjqui-info-item .MLjqui-menu-item-hover, .MLjqui-info-item .MLjqui-tree-item-hover, .MLjqui-info-item .MLjqui-calendar-cell-hover, .MLjqui-info-item .MLjqui-grid-cell-hover, -.MLjqui-info-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-info-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-info-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-info-item .MLjqui-listitem-state-selected, .MLjqui-info-item .MLjqui-menu-item-selected, .MLjqui-info-item .MLjqui-tree-item-selected, .MLjqui-info-item .MLjqui-calendar-cell-selected, .MLjqui-info-item .MLjqui-grid-cell-selected, -.MLjqui-info-item .MLjqui-menu-vertical .MLjqui-info-item .MLjqui-menu-item-top-selected, .MLjqui-info-item .MLjqui-grid-selectionarea, .MLjqui-info-item .MLjqui-input-button-header, .MLjqui-info-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-inverse-item .MLjqui-listitem-state-hover, .MLjqui-inverse-item .MLjqui-menu-item-hover, .MLjqui-inverse-item .MLjqui-tree-item-hover, .MLjqui-inverse-item .MLjqui-calendar-cell-hover, .MLjqui-inverse-item .MLjqui-grid-cell-hover, -.MLjqui-inverse-item .MLjqui-menu-vertical .MLjqui-menu-item-top-hover, .MLjqui-inverse-item .MLjqui-input-popup .MLjqui-fill-state-hover, -.MLjqui-inverse-item .MLjqui-input-popup .MLjqui-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.MLjqui-inverse-item .MLjqui-listitem-state-selected, .MLjqui-inverse-item .MLjqui-menu-item-selected, .MLjqui-inverse-item .MLjqui-tree-item-selected, .MLjqui-inverse-item .MLjqui-calendar-cell-selected, .MLjqui-inverse-item .MLjqui-grid-cell-selected, -.MLjqui-inverse-item .MLjqui-menu-vertical .MLjqui-inverse-item .MLjqui-menu-item-top-selected, .MLjqui-inverse-item .MLjqui-grid-selectionarea, .MLjqui-inverse-item .MLjqui-input-button-header, .MLjqui-inverse-item .MLjqui-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquislide.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquislide.css deleted file mode 100644 index 5f88fe8a..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/css/MLjquislide.css +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Core Owl Carousel CSS File - * v1.3.2 - */ - -/* clearfix */ -.owl-carousel .owl-wrapper:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} -/* display none until init */ -.owl-carousel{ - display: none; - position: relative; - -ms-touch-action: pan-y; -} -.owl-carousel .owl-wrapper{ - display: none; - position: relative; - width: 100%; - -webkit-transform: translate3d(0px, 0px, 0px); -} -.owl-carousel .owl-wrapper-outer{ - overflow: hidden; - position: relative; - width: 100%; -} -.owl-carousel .owl-wrapper-outer.autoHeight{ - -webkit-transition: height 500ms ease-in-out; - -moz-transition: height 500ms ease-in-out; - -ms-transition: height 500ms ease-in-out; - -o-transition: height 500ms ease-in-out; - transition: height 500ms ease-in-out; -} - -.owl-carousel .owl-item{ - float: left; -} -.owl-controls .owl-page, -.owl-controls .owl-buttons div{ - cursor: pointer; -} -.owl-controls { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -/* mouse grab icon */ -.grabbing { - cursor:url(../images/grabbing.png) 8 8, move; -} - -/* fix */ -.owl-carousel .owl-wrapper, -.owl-carousel .owl-item{ - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - -webkit-transform: translate3d(0,0,0); - -moz-transform: translate3d(0,0,0); - -ms-transform: translate3d(0,0,0); -} - -/* -* Owl Carousel Owl Demo Theme -* v1.3.2 -*/ - -.owl-theme .owl-controls{ - position: absolute; - left: 308px; - margin-top: -35px; - text-align: center; -} - -/* Styling Next and Prev buttons */ - -.owl-theme .owl-controls .owl-buttons div{ - color: #FFF; - display: inline-block; - zoom: 1; - *display: inline;/*IE7 life-saver */ - margin: 5px; - padding: 3px 10px; - font-size: 12px; - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - background: #869791; - filter: Alpha(Opacity=50);/*IE7 fix*/ - opacity: 0.5; -} -/* Clickable class fix problem with hover on touch devices */ -/* Use it for non-touch hover action */ -.owl-theme .owl-controls.clickable .owl-buttons div:hover{ - filter: Alpha(Opacity=100);/*IE7 fix*/ - opacity: 1; - text-decoration: none; -} - -/*ư ̹ ü*/ -.owl-theme .owl-controls .owl-buttons_img div{ - color: #FFF; - display: inline-block; - zoom: 1; - *display: inline;/*IE7 life-saver */ - margin: 5px; - padding: 3px 10px; - -} - - - -/* Styling Pagination*/ - -.owl-theme .owl-controls .owl-page{ - display: inline-block; - zoom: 1; - *display: inline;/*IE7 life-saver */ -} -.owl-theme .owl-controls .owl-page span{ - display: block; - width: 10px; - height: 10px; - margin: 5px 7px; - filter: Alpha(Opacity=100);/*IE7 fix*/ - opacity: 1; - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; - background: #404654; -} - -.owl-theme .owl-controls .owl-page.active span, -.owl-theme .owl-controls.clickable .owl-page:hover span{ - background: #2a9eff; - filter: Alpha(Opacity=100);/*IE7 fix*/ - opacity: 1; -} - -/* If PaginationNumbers is true */ - -.owl-theme .owl-controls .owl-page span.owl-numbers{ - height: auto; - width: auto; - color: #FFF; - padding: 2px 10px; - font-size: 12px; - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; -} - -/* preloading images */ -.owl-item.loading{ - min-height: 150px; - background: url(AjaxLoader.gif) no-repeat center center -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML5_banner.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML5_banner.png deleted file mode 100644 index bfc74074..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML5_banner.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML5_banner_bak.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML5_banner_bak.png deleted file mode 100644 index 1405e326..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML5_banner_bak.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_expire.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_expire.png deleted file mode 100644 index 5e8cca14..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_expire.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_expire_mobile.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_expire_mobile.png deleted file mode 100644 index 7d568c84..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_expire_mobile.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_no.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_no.png deleted file mode 100644 index 504e50a8..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_no.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_no_mobile.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_no_mobile.png deleted file mode 100644 index c11a4994..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_no_mobile.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_normalcy.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_normalcy.png deleted file mode 100644 index 6d40e68b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_normalcy.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_normalcy_mobile.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_normalcy_mobile.png deleted file mode 100644 index caaf49cd..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ML_cert_normalcy_mobile.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/admin_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/admin_icon.png deleted file mode 100644 index ddaefe0b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/admin_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_menual.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_menual.png deleted file mode 100644 index bc7ac5a2..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_menual.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_menual3.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_menual3.png deleted file mode 100644 index ec494731..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_menual3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_user_method.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_user_method.png deleted file mode 100644 index adca96dc..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/browser_user_method.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_check.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_check.png deleted file mode 100644 index 45bfe860..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_check.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_folder.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_folder.png deleted file mode 100644 index 4df176a6..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_folder.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_folder_ovr.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_folder_ovr.png deleted file mode 100644 index d119a270..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_folder_ovr.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_hd_close.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_hd_close.png deleted file mode 100644 index f896757c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_hd_close.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_key.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_key.png deleted file mode 100644 index 02bb315a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/btn_key.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/busy.gif b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/busy.gif deleted file mode 100644 index c480dd0e..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/busy.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/call.gif b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/call.gif deleted file mode 100644 index 9a55b4e9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/call.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/cert_selected_in_cloud.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/cert_selected_in_cloud.png deleted file mode 100644 index f3c05561..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/cert_selected_in_cloud.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/certlist_menu_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/certlist_menu_icon.png deleted file mode 100644 index ecfa6ff8..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/certlist_menu_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/certlist_wht_menu_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/certlist_wht_menu_icon.png deleted file mode 100644 index 2948638b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/certlist_wht_menu_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/draganddrop_area.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/draganddrop_area.png deleted file mode 100644 index 89374f0f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/draganddrop_area.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-down.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-down.png deleted file mode 100644 index 499a73dd..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-down.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-left.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-left.png deleted file mode 100644 index 90a52818..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-left.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-right.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-right.png deleted file mode 100644 index 83ae38f3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-right.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-up.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-up.png deleted file mode 100644 index febcb36a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon-up.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_alert.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_alert.png deleted file mode 100644 index c6c706c5..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_alert.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_default.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_default.png deleted file mode 100644 index 65dff74a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_default.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_expire.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_expire.png deleted file mode 100644 index 29dbf2a9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_expire.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_expiring.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_expiring.png deleted file mode 100644 index 01b530c5..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_cert_expiring.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_del.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_del.png deleted file mode 100644 index e010d193..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_del.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_detail.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_detail.png deleted file mode 100644 index af709775..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_detail.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_help.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_help.png deleted file mode 100644 index 8ef14610..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_help.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_next.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_next.png deleted file mode 100644 index 69d597df..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_next.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_next_dis.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_next_dis.png deleted file mode 100644 index 41afdf57..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_next_dis.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_prev.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_prev.png deleted file mode 100644 index bda00545..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_prev.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_pw_chg.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_pw_chg.png deleted file mode 100644 index b838da2e..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_pw_chg.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_search.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_search.png deleted file mode 100644 index fcbf289b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_search.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_verify.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_verify.png deleted file mode 100644 index 5a720c8d..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/icon_verify.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/iestorage_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/iestorage_icon.png deleted file mode 100644 index 3a7ec8e1..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/iestorage_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/loader.gif b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/loader.gif deleted file mode 100644 index 2d390e45..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/loader.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/nts_icon_01.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/nts_icon_01.png deleted file mode 100644 index acb44857..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/nts_icon_01.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/option_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/option_icon.png deleted file mode 100644 index ef1d6d42..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/option_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_content.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_content.png deleted file mode 100644 index 6d05c3cc..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_content.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_content2.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_content2.png deleted file mode 100644 index 072340d1..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_content2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_loadbar.gif b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_loadbar.gif deleted file mode 100644 index ed373e89..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/setup_loadbar.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/sortascbutton.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/sortascbutton.png deleted file mode 100644 index 9c9d5c24..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/sortascbutton.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/sortdescbutton.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/sortdescbutton.png deleted file mode 100644 index 045b7e49..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/sortdescbutton.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_ad_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_ad_icon.png deleted file mode 100644 index cb56d843..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_ad_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_ad_icon_ie6.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_ad_icon_ie6.png deleted file mode 100644 index 2f2fef3b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_ad_icon_ie6.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon.png deleted file mode 100644 index 644abdb9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon.png_bak b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon.png_bak deleted file mode 100644 index b9b0e0b4..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon.png_bak and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_6by.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_6by.png deleted file mode 100644 index 50fbc24b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_6by.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_dis.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_dis.png deleted file mode 100644 index e866b20f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_dis.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_nor.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_nor.png deleted file mode 100644 index b524c224..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_nor.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_ovr.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_ovr.png deleted file mode 100644 index 4a8ee9c4..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_browser_ovr.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_dis.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_dis.png deleted file mode 100644 index 17c6081f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_dis.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_nor.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_nor.png deleted file mode 100644 index dae45218..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_nor.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_ovr.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_ovr.png deleted file mode 100644 index a49b027c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_copy_ovr.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_org.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_org.png deleted file mode 100644 index b9b0e0b4..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_org.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_dis.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_dis.png deleted file mode 100644 index 9b047ccc..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_dis.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_nor.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_nor.png deleted file mode 100644 index 2d221a8c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_nor.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_ovr.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_ovr.png deleted file mode 100644 index 57e29eb9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_search_ovr.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_dis.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_dis.png deleted file mode 100644 index ec401177..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_dis.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_nor.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_nor.png deleted file mode 100644 index 3f373551..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_nor.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_ovr.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_ovr.png deleted file mode 100644 index 4afa9ef6..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/storage_icon_smartcert_ovr.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ui-icons_222222_256x240.png b/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ui-icons_222222_256x240.png deleted file mode 100644 index b273ff11..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Draw.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Draw.js deleted file mode 100644 index 6e5828e2..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Draw.js +++ /dev/null @@ -1,2242 +0,0 @@ -var ML4WebDraw = { - selectMedia : "", -/* 휴대전화 인증서 목록 이름 정의(인증서 선택창에서 휴대전화 선택시 노출되는 목록) - */ -//-------------------------- - TITLE_MOB_SVC_UBIKEY : $.i18n.prop("TS064"), - TITLE_MOB_SVC_UBIKEYNX : $.i18n.prop("TS096"), - TITLE_MOB_SVC_MOBSIGN : $.i18n.prop("TS065"), - TITLE_MOB_SVC_DREAMCS : $.i18n.prop("TS066"), -//-------------------------- -/* 각 스토리지별 CS 설치 진행 메시지 정의 - */ -//------------------------- - MSG_MOB_INSTALL : $.i18n.prop("ES033"), - MSG_MOB_CANCEL : $.i18n.prop("ES034"), - MSG_MOB_UPDATE : $.i18n.prop("ES035"), - - MSG_SMT_INSTALL : $.i18n.prop("ES036"), - MSG_SMT_FAIL : $.i18n.prop("ES037"), - - MSG_MOB_SIGN_INSTALL : $.i18n.prop("ES038"), - MSG_MOB_SIGN_CANCEL : $.i18n.prop("ES039"), - MSG_MOB_SIGN_UPDATE : $.i18n.prop("ES040"), -//------------------------- -/* 경고 메시지 정의 - */ -//------------------------- - MSG_ALERT_LOWER_IE9 : $.i18n.prop("ES041"), -//------------------------- - -/* 스토리지 선책창을 만드는 HTML 태그들을 정의 - * '.value.' 부분은 스크립트에서 동적으로 처리 - * */ -//------------------------ - // web - STG_HTML_WEB : "
  • ", - //pfx - STG_HTML_PFX : "
  • ", - STG_HTML_PFX_IE : "
  • ", - STG_HTML_PFX_INS : "
  • ", - //hdd - STG_HTML_HDD : "
  • ", - STG_HTML_HDD_INS : "
  • ", - //shdd - STG_HTML_SDD : "
  • ", - STG_HTML_SDD_INS : "
  • ", - //token - STG_HTML_TKN : "
  • ", - STG_HTML_TKN_INS : "
  • ", - //mobile - STG_HTML_MOB : "
  • ", - STG_HTML_MOB_INS : "
  • ", - //smartcert - STG_HTML_SMC : "
  • ", - STG_HTML_SMC_INS : "
  • ", - STG_HTML_SMC_MGMT : "
  • ", - //smartcertnx - STG_HTML_SMCNX : "
  • ", - //cloud - STG_HTML_CLD : "
  • ", - STG_HTML_CLD_INS : "
  • ", - //unisign - STG_HTML_UNI : "
  • ", - STG_HTML_UNI_INS : "
  • ", -//-------------------------- - - -/* UI 스크립트를 여기서 일괄 호출 - * 기존 InitEventHadnler() 는 ML4Web_Main.js 에서 처리 - * */ - initDraw : function() { - - // 인증서 선택 창 그리기 - ML4WebDraw._createWindow(); - - // 메시지 초기화 - MessageVO.applyMessage($('[id^="MSG_"]')); - - //key event - $(this).keydown(function(e){ - if(e.keyCode == "9"){ - var targetElement = $(document.activeElement).attr("id"); - var parentElement = $(document.activeElement).parent().attr("id"); - //console.log("targetElement.id === " + targetElement); - //console.log("parentElement.id === " + parentElement); - - if(targetElement == "stg_smartcert" ){ - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - if(selection && selection.length>0){ - - }else{ - - } - } else if(targetElement == "btn_cancel" ){ - $(".ML_storage_area>ul>li:first-child").focus(); - } else if(targetElement == "btn_file_cs" ){ - $("#import_pfx_password").focus(); - } else if(targetElement == "file_route" ){ - - } else if(targetElement == null || targetElement == 'undefined'){ - - } - }else if (e.keyCode == "27"){ - console.log("Esc keydown Esc keydown Esc keydown Esc keydown"); - } - }); - - // Slide L&R Button - $(".customNavigation").click(function(){ - var X=$(this).attr('id'); - if(X==1){ - $(this).children(".str_add_li").removeClass('pr'); - $(this).children(".str_add_li").addClass('ne'); - $(this).attr('id', '0'); - - $("#wrap_stg_01").animate({left:"0px"}, 250); - $("#wrap_stg_02").animate({left:"375px"}, 250); - }else{ - $(".str_add_li").attr('class', 'str_add_li pr'); - $(this).children(".str_add_li").removeClass('ne'); - $(this).children(".str_add_li").addClass('pr'); - $(".customNavigation").attr('id', '0'); - $(this).attr('id', '1'); - - $("#wrap_stg_01").animate({left:"-375px"}, 250); - $("#wrap_stg_02").animate({left:"0px"}, 250); - } - }); - - $(".stg_01").focus(function(){ - $("#wrap_stg_01").animate({left:"0px"}, 250); - $("#wrap_stg_02").animate({left:"375px"}, 250); - $(".customNavigation").children(".str_add_li").removeClass('pr'); - $(".customNavigation").children(".str_add_li").addClass('ne'); - $(".customNavigation").attr('id', '0') - }); - - $(".stg_02").focus(function(){ - $("#wrap_stg_01").animate({left:"-375px"}, 250); - $("#wrap_stg_02").animate({left:"0px"}, 250); - $(".customNavigation").children(".str_add_li").removeClass('ne'); - $(".customNavigation").children(".str_add_li").addClass('pr'); - $(".customNavigation").attr('id', '1') - }); - }, - loadCSS : function(){ - var unisign = false; - var os_ver = ML4WebApi.getProperty("os"); - var dt_height = ""; - var isMobile = false; - var currentOS = magiclineUtil.getOS(); - if(os_ver=="Android" || os_ver=="IPHONE" || os_ver=="BlackBerry" || os_ver=="IPAD"){ - isMobile = true; - - if(ML4WebApi.getProperty("storageList_m").indexOf("smartcertnx") > -1){ - if(!document.getElementById('smartcertnx')){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type= 'text/javascript'; - script.id = "smartcertnx"; - var webSmartCertURL = ML4WebApi.getProperty("web_smartcert_url"); - if(webSmartCertURL == null || typeof(webSmartCertURL) == 'undefined' || webSmartCertURL == ""){ - script.src = "https://cdn.smartcert.kr/SmartCertWeb/API/js/jSmartCertNP2.js"; - }else{ - script.src = webSmartCertURL; - } - head.appendChild(script); - } - } - } - for( var i = 0; i < ML4WebApi.webConfig.storageList.length; i++){ - if( ML4WebApi.webConfig.storageList[i] === "unisign" ){ - unisign = true; - if (document.createStyleSheet) - { - document.createStyleSheet(contextPath + '/MagicLine4Web/ML4Web/UI/css/ML_common_nts.css?v=1'); - document.createStyleSheet(contextPath + '/PFH/css/comm/cloudsign/certcommon.css?v=1'); - }else{ - if( isMobile ){ - $("#ML_common_css").attr("href", "UI/css/ML_common_mobile.css"); - $("#MLjquibase_css").attr("href", "UI/css/MLjquibase_mobile.css"); - }else{ - $('head').append( $('').attr('href', contextPath + '/MagicLine4Web/ML4Web/UI/css/ML_common_nts.css?v=1' ) ); - } - - $('head').append( $('').attr('href', contextPath + '/PFH/css/comm/cloudsign/certcommon.css?v=1' ) ); - } - - $.cachedScript( contextPath + "/PFH/js/comm/cloudsign/unisignweb/js/unisignwebclient.js?v=1" ).done(function(){ - $.cachedScript( contextPath + "/PFH/unisignweb_document/UniSignWeb_Multi_Init_PluginFree.js?v=1" ).done(function(){ - $.cachedScript( contextPath + "/PFH/js/comm/cloudsign/unisignweb/js/functions.js?v=1" ).done(function(){ - - }); - }); - }); - }else if( ML4WebApi.webConfig.storageList[i] === "smartcertnx" ) { - if(!document.getElementById('smartcertnx')){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type= 'text/javascript'; - script.id = "smartcertnx"; - var webSmartCertURL = ML4WebApi.getProperty("web_smartcert_url"); - if(webSmartCertURL == null || typeof(webSmartCertURL) == 'undefined' || webSmartCertURL == ""){ - script.src = "https://cdn.smartcert.kr/SmartCertWeb/API/js/jSmartCertNP2.js"; - }else{ - script.src = webSmartCertURL; - } - head.appendChild(script); - } - } else if( ML4WebApi.webConfig.storageList[i] === "mobile" ) { - if(ML4WebApi.MobileOption.indexOf("ubikeynx") > -1){ - if(!document.getElementById("ubikeynx")){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type= 'text/javascript'; - script.id = "ubikeynx"; - var csUbikeyURL = ML4WebApi.getProperty("cs_ubikey_url"); - if(csUbikeyURL == null || typeof(csUbikeyURL) == 'undefined' || csUbikeyURL == ""){ - script.src = "/UBikeyWeb/js/infovineHTML.js"; - }else{ - script.src = csUbikeyURL; - } - head.appendChild(script); - } - } - } - } - if( unisign == false ){ - if (document.createStyleSheet){ - document.createStyleSheet( contextPath + '/MagicLine4Web/ML4Web/UI/css/ML_common.css?v=1' ); - }else{ - if( isMobile ){ - $("#ML_common_css").attr("href", "UI/css/ML_common_mobile.css"); - $("#MLjquibase_css").attr("href", "UI/css/MLjquibase_mobile.css"); - }else{ - $('head').append( $('').attr('href', contextPath + '/MagicLine4Web/ML4Web/UI/css/ML_common.css?v=1' ) ); - } - } - } - - if(ML4WebApi.getProperty("storageList").indexOf("web_kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("web") > -1){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if (document.createStyleSheet){ - document.createStyleSheet(contextPath + '/raonsecure/transkey/transkey.css'); - }else{ - $('head').append( $('').attr('href', contextPath + '/raonsecure/transkey/transkey.css' ) ); - } - $.cachedScript( contextPath + "/raonsecure/transkey/rsa_oaep_files/rsa_oaep-min.js" ).done(function(){ - $.cachedScript( contextPath + "/raonsecure/transkey/jsbn/jsbn-min.js" ).done(function(){ - $.cachedScript( contextPath + "/raonsecure/transkey/TranskeyLibPack_op.js" ).done(function(){ - $.cachedScript( contextPath + "/raonsecure/transkey/transkey.js" ).done(function(){ - if(typeof initTranskey=="function") initTranskey(); - }); - }); - }); - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - $.cachedScript( contextPath + "/nfilter/js/include_open_nFilter.js" ).done(function(){ - initializedNFilter(); - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - if(!magiclineUtil.isMobile(magiclineUtil.getOS())){ - $.cachedScript( contextPath + "/pluginfree/js/nppfs-1.11.0.js" ).done(function(){ - npPfsCtrl.hideLoading(); - npPfsStartup(null, false, false, false, true, "npkencrypt", "on"); - }); - } - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM" ){ - if (document.createStyleSheet){ - document.createStyleSheet(contextPath + '/magicVKeypad/magicVKeypad.css'); - }else{ - $('head').append( $('').attr('href', contextPath + '/magicVKeypad/magicVKeypad.css' ) ); - } - - $.cachedScript( contextPath + "/magicVKeypad/magicVKeypad.js" ).done(function(){ - ML4WebVKey.init(); - }); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if (document.createStyleSheet){ - document.createStyleSheet(contextPath + '/raonsecure/transkey/transkey.css'); - }else{ - $('head').append( $('').attr('href', contextPath + '/raonsecure/transkey/transkey.css' ) ); - } - $.cachedScript( contextPath + "/raonsecure/transkey/rsa_oaep_files/rsa_oaep-min.js" ).done(function(){ - $.cachedScript( contextPath + "/raonsecure/transkey/jsbn/jsbn-min.js" ).done(function(){ - $.cachedScript( contextPath + "/raonsecure/transkey/TranskeyLibPack_op.js" ).done(function(){ - $.cachedScript( contextPath + "/raonsecure/transkey/transkey.js" ).done(function(){ - if(typeof initTranskey=="function") initTranskey(); - }); - }); - }); - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - $.cachedScript( contextPath + "/nfilter/js/include_open_nFilter.js" ).done(function(){ - initializedNFilter(); - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $.cachedScript( contextPath + "/pluginfree/js/nppfs-1.11.0.js" ).done(function(){ - npPfsCtrl.hideLoading(); - npPfsStartup(null, false, false, false, true, "npkencrypt", "on"); - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM" ){ - if (document.createStyleSheet){ - document.createStyleSheet(contextPath + '/magicVKeypad/magicVKeypad.css'); - }else{ - $('head').append( $('').attr('href', contextPath + '/magicVKeypad/magicVKeypad.css' ) ); - } - $.cachedScript( contextPath + "/magicVKeypad/magicVKeypad.js" ).done(function(){ - ML4WebVKey.init(); - }); - } - } - } - }, - /* - * 인증서 선택창을 그리는 함수 - */ - _createWindow : function() { - - if( ! ML4WebApi.getProperty("banner") ){ - $(".ML_cp_AD").remove(); - } - - var window_height = 558; - var window_width = 418; - var popupWidth = document.body.clientWidth; - var os_ver = ML4WebApi.getProperty("os"); - var jqxWidget = $('#ML_window'); - var offset = jqxWidget.offset(); - var xValue = offset.left + (($(window).width()/2)-(window_width/2)); - var position = { x: xValue, y: offset.top + 50}; - var popupPosition = {x: offset.left + ($(window).width()/2) - 200, y: offset.top + 200}; - - if((os_ver=="Android" && navigator.userAgent.toUpperCase().indexOf("MOBILE") >-1)|| os_ver=="IPHONE" || os_ver=="BlackBerry" ){ - isBanner = false; - position = 'center'; - popupPosition = 'center'; - popupWidth = 350; - }else if( os_ver=="IPAD" || os_ver=="Android" ){ - isBanner = false; - position = 'center'; - popupWidth = 398; - - }else{ - popupWidth = 398; - } - - //-00. Main - $("#ML_window").MLjquiWindow({ - title: $.i18n.prop("TS000"), - resizable: false, - position: position, - showCloseButton:false, - isModal: true, - modalOpacity: 0.3, - modalZIndex: 9995, - modalBackgroundZIndex: 9995, - showCollapseButton: false, - keyboardCloseKey: 0, - maxHeight: 600, maxWidth:720, - minHeight: 200, minWidth: 200, - height: window_height, width: window_width, - initContent: function () { - $('#ML_window').MLjquiWindow('focus'); - if( os_ver === "IPHONE" ){ - var orientation = window.orientation; - if( orientation == 0 ){ - var iWidth = screen.width; - var iHeight = screen.height; - - if(iHeight >= 800){ - iHeight = 170; - }else if(iHeight >= 600){ - iHeight = 150; - }else if(iHeight >= 500){ - iHeight = 140; - } - - iWidth = iWidth + "px"; - iHeight = iHeight + "vw"; - - window.parent.document.getElementById('dscert').style.width = iWidth; - window.parent.document.getElementById('dscert').style.height = iHeight; - }else if(orientation == 90){ - iHeight = (screen.width) - 323; - iHeight = iHeight + 'vw'; - - window.parent.document.getElementById('dscert').style.height = iHeight; - }else if(orientation == -90){ - iHeight = (screen.width) - 323; - iHeight = iHeight + 'vw'; - - window.parent.document.getElementById('dscert').style.height = iHeight; - } - } - } - }); - - $('#popup_alert').MLjquiWindow({ - title: $.i18n.prop("TS042"), - resizable: false, - position: popupPosition, - showCloseButton:false, - zIndex:9999, - showCollapseButton: false, - keyboardCloseKey: 0, - isModal: true, - maxHeight: 600, maxWidth:420, - minHeight: 200, minWidth: 200, - height: 148, width: popupWidth, - initContent: function () { - $('#popup_alert').MLjquiWindow('close'); - } - }); - - //-02. Common - //$('#ML_Dialog_common').show(); - $('#ML_Dialog_common').MLjquiWindow({ - // autoOpen: false, - // title:'비밀번호변경', - resizable: false, - //position: 'center', - position: popupPosition, - showCloseButton:false, - // closeButtonSize: 35, - // closeButtonAction:'close', - // draggable:false, - isModal: true, - modalOpacity: 0.3, - modalZIndex: 9996, - keyboardCloseKey: 0, - modalBackgroundZIndex: 9996, - showCollapseButton: false, - width: popupWidth, - initContent: function () { - $('#ML_Dialog_common').MLjquiWindow('close'); - } - }); - - //-03. Cs install dialog - $('#ML_dialog_cs_install').MLjquiWindow({ - resizable: false, - //position: 'center', - position: popupPosition, - showCloseButton:false, - isModal: false, - modalOpacity: 0.3, - modalZIndex: 9996, - keyboardCloseKey: 0, - modalBackgroundZIndex: 9996, - showCollapseButton: false, - width: popupWidth, - initContent: function () { - $('#ML_dialog_cs_install').MLjquiWindow('close'); - } - }); - }, - - initWebMainEvent : function() { - ML4WebLog.log("ML4Web_Draw.js - initWebMainEvent() called..."); - - //인증서 선택창 스토리지 선택 - $('[id^="stg_"]').click(function () { - var stg_id = this.id.split("stg_")[1]; - //ML4WebLog.log("storage selected.... storageId = "+stg_id) - selectMedia = stg_id; - - if(stg_id == "web" || stg_id == "kftc" || stg_id == "web_kftc"){ - // 브라우저 안내 옵션 처리 - if(ML4WebApi.getProperty('browserNoticeShow')){ - $("#ML_window").css('width', '668px'); - }else{ - $("#ML_window").css('width', '418px'); - } - $("#get_cert").html(""+$.i18n.prop("TS035")); - $("#in_browser").css('width', '190px'); - - if(stg_id == "web_kftc"){ - $("#btn_deleteCert").show(); - $("#btn_CopyCert").show(); - - var kftcRelayURL = ML4WebApi.getProperty("kftc_script_url_relay"); - var kftcOpenCertURL = ML4WebApi.getProperty("kftc_script_url_opencert"); - var kftcCorpCode = ML4WebApi.getProperty("kftc_corp_code"); - - var opencertURL = ""; - var relayURL = ""; - var today = new Date(); - today = ML4WebUtil.yyyymmdd(today); - - if( kftcRelayURL != "" && kftcOpenCertURL != "" && kftcCorpCode != ""){ - opencertURL = kftcOpenCertURL + "?dt=" + today + "&corp=" + kftcCorpCode; - relayURL = kftcRelayURL + "?dt=" + today + "&corp=" + kftcCorpCode; - }else{ - opencertURL = "https://fidoweb.yessign.or.kr:3100/v2/opencert.js?dt=" + today + "&corp=099"; - relayURL = "https://fidoweb.yessign.or.kr:3100/v2/relay.js?dt=" + today + "&corp=099"; - } - - if(!document.getElementById('opencerturl') || !document.getElementById('relayurl')){ - var head = document.getElementsByTagName('head')[0]; - var scriptOpenCert = document.createElement('script'); - scriptOpenCert.type= 'text/javascript'; - scriptOpenCert.id = "opencerturl"; - scriptOpenCert.src = opencertURL; - head.appendChild(scriptOpenCert); - - var scriptRelay = document.createElement('script'); - scriptRelay.type= 'text/javascript'; - scriptRelay.id = "relayurl"; - scriptRelay.src = relayURL; - head.appendChild(scriptRelay); - } - - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var npLength = npVCtrl.keypadObject.length; - if(npLength > 1){ - for (var i=0; i 1){ - for (var i=0; i"+$.i18n.prop("TS036")); - $("#in_browser").css('width', '150px'); - - $("#btn_deleteCert").hide(); - $("#btn_CopyCert").hide(); - - if( !ML4WebApi.webConfig.useVirtualKeyboard && (ML4WebApi.webConfig.virtualKeyboardType === "INCA" || ML4WebApi.webConfig.virtualKeyboardType === "DREAM") ){ - $('#input_cert_pw').hide(); - $('#keyboardOn').hide(); - if(!document.getElementById('input_cert_pw_new')){ - $('#input_cert_pw').after(""); - }else{ - $('#input_cert_pw_new').show(); - } - - // CapsLock - var browser = ML4WebApi.getProperty('browser'); - if((browser != 'MSIE 8') && (browser != 'MSIE 7') && (browser != 'MSIE 6')) { - document.querySelector('#input_cert_pw_new').addEventListener('keyup', checkCapsLock); - document.querySelector('#input_cert_pw_new').addEventListener('mousedown', checkCapsLock); - } - - $('#input_cert_pw_new').blur(function(e){ - $("#capslock").hide(); - }); - } - - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var npLength = npVCtrl.keypadObject.length; - if(npLength > 1){ - for (var i=0; i 0){ - closeDriverDialog(); - } - //20200310 mj - if(targetId.substring(0,4) == "stg_"){ - $('#stg_'+selectMedia).focus(); - } - - if(targetId == "manual_close"){ - $("#manual_img").removeAttr("tabindex"); - $("#manual_close").removeAttr("tabindex"); - $("#browser_manual").attr("style", "display:none"); - $("#ML_window").css('width', '418px'); - }else{ - if($("#sub_drv_list").length > 0){ - if(targetId == "MSG_TS701" || targetId == "stg_web"){ - $("#browser_manual").attr("style", "display:inline"); - if(ML4WebApi.getProperty('browserNoticeShow')){ - $("#ML_window").css('width', '668px'); - }else{ - $("#ML_window").css('width', '418px'); - } - }else if(targetId == "MSG_TS703" || targetId == "MSG_TS705" || targetId == "MSG_TS706" || targetId == "MSG_TS707" || targetId == "stg_hdd" || targetId == "stg_token" || targetId == "stg_mobile" || targetId == "stg_smartcert"){ - $("#manual_img").removeAttr("tabindex"); - $("#manual_close").removeAttr("tabindex"); - $("#manual_close").attr("style", "display:none"); - $("#ML_window").css('width', '418px'); - } - /*if(targetId == "MSG_TS703" || targetId == "MSG_TS705"|| targetId == "MSG_TS706" || targetId == "MSG_TS707"){ - $("#manual_close").attr("style", "display:none"); - $("#ML_window").css('width', '418px'); - }else if(targetId == "MSG_TS701"|| targetId == "stg_web"){ - $("#browser_manual").attr("style", "display:inline"); - $("#ML_window").css('width', '668px'); - }*/ - } - } - }); - - }, - // 모바일전용 - initWebMainEvent_M : function(){ - ML4WebLog.log("ML4Web_Draw.js - initWebMainEvent_M() called..."); - - $('[id^="stg_"]').click(function () { - var stg_id = this.id.split("stg_")[1]; - selectMedia = stg_id; - - if(stg_id == "web_kftc"){ - var kftcRelayURL = ML4WebApi.getProperty("kftc_script_url_relay"); - var kftcOpenCertURL = ML4WebApi.getProperty("kftc_script_url_opencert"); - var kftcCorpCode = ML4WebApi.getProperty("kftc_corp_code"); - - var opencertURL = ""; - var relayURL = ""; - var today = new Date(); - today = ML4WebUtil.yyyymmdd(today); - - if( kftcRelayURL != "" && kftcOpenCertURL != "" && kftcCorpCode != ""){ - opencertURL = kftcOpenCertURL + "?dt=" + today + "&corp=" + kftcCorpCode; - relayURL = kftcRelayURL + "?dt=" + today + "&corp=" + kftcCorpCode; - }else{ - opencertURL = "https://fidoweb.yessign.or.kr:3100/v2/opencert.js?dt=" + today + "&corp=099"; - relayURL = "https://fidoweb.yessign.or.kr:3100/v2/relay.js?dt=" + today + "&corp=099"; - } - - if(!document.getElementById('opencerturl') || !document.getElementById('relayurl')){ - var head = document.getElementsByTagName('head')[0]; - var scriptOpenCert = document.createElement('script'); - scriptOpenCert.type= 'text/javascript'; - scriptOpenCert.id = "opencerturl"; - scriptOpenCert.src = opencertURL; - head.appendChild(scriptOpenCert); - - var scriptRelay = document.createElement('script'); - scriptRelay.type= 'text/javascript'; - scriptRelay.id = "relayurl"; - scriptRelay.src = relayURL; - head.appendChild(scriptRelay); - } - } - - //UI driver 선택창 위치 조정 - var stg_idx = $(this).attr("stgIdx"); - $('#driver_div').removeClass("pos_01").removeClass("pos_02").removeClass("pos_03").removeClass("pos_04").removeClass("pos_05"); - $('#driver_div').addClass("pos_0"+stg_idx); - - //UI css selection 처리 - $('[class^="ML_storage_"]').removeClass("on"); - $(this).parent().addClass("on"); - - //인증서 목록 무조건 초기화 - ML4WebDraw.MakeCertiListDiv(null); - - // 드라이버 선택창 닫기 - closeDriverDialog(); - - //스토리지 정보 조회 - setTimeout(function(){ - ML4WebUI.selectStorageInfo(stg_id, function(resultCode, jsonObj){ - //ML4WebLog.log("[Callback]selectStorage() .... resultCode === "+resultCode); - if( resultCode == 0) { - if(jsonObj == null || $.isEmptyObject(jsonObj)){ - //ML4WebLog.log( "[click]옵션없음 인증서 목록 조회해라...."); - var certOpt = {"storageName":stg_id}; - - if(stg_id=="smartcert" && ML4WebApi.getProperty("smartcert_type")!='C'){ - // WEB SmartCert 구동 - $('#btn_confirm').onclick(); - return; - }else{ - ML4WebUI.getStorageCertList(certOpt, function(resultCode, jsonObj) { - if( resultCode == 0) {//성공 - //ML4WebLog.log("[getStorageCertList() callback === " + JSON.stringify(jsonObj)); - - ML4WebDraw.MakeCertiListDiv(jsonObj.cert_list); - }else{ //실패 - //ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode); - - ML4WebDraw.MakeCertiListDiv(null); - } - }); - } - } else { - ML4WebLog.log("[SUCCESS!!!] Select Drive. === " + stg_id); - //ML4WebLog.log( "[click]옵션있으니 드라이브 선택처리해라... drivers.length === " + jsonObj.drivers.length); - - openDriverDialog(stg_id, stg_idx, jsonObj); - } - } else{ - - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - EmptyCertDiv(); - } - }); - },200); - - }); - - var pixel_width = "418px"; - - $(document).on("click", function(event){ - var targetId = event.target.id; - if($("#sub_drv_list").length > 0){ - closeDriverDialog(); - } - - //20200324 - if(targetId.substring(0,4) == "stg_" || targetId == ""){ - $('#stg_'+selectMedia).focus(); - } - - if(targetId == "manual_close"){ - $("#manual_img").removeAttr("tabindex"); - $("#manual_close").removeAttr("tabindex"); - $("#browser_manual").attr("style", "display:none"); - $("#ML_window").css('width', '418px'); - }else{ - if($("#sub_drv_list").length > 0){ - if(targetId == "MSG_TS701" || targetId == "stg_web"){ - //$("#browser_manual").attr("style", "display:inline"); - //$("#ML_window").css('width', '668px'); - }else if(targetId == "MSG_TS703" || targetId == "MSG_TS705" || targetId == "MSG_TS706" || targetId == "MSG_TS707" || targetId == "stg_hdd" || targetId == "stg_token" || targetId == "stg_mobile" || targetId == "stg_smartcert"){ - //$("#manual_close").attr("style", "display:none"); - //$("#ML_window").css('width', '418px'); - } - /*if(targetId == "MSG_TS703" || targetId == "MSG_TS705"|| targetId == "MSG_TS706" || targetId == "MSG_TS707"){ - $("#manual_close").attr("style", "display:none"); - $("#ML_window").css('width', '418px'); - }else if(targetId == "MSG_TS701"|| targetId == "stg_web"){ - $("#browser_manual").attr("style", "display:inline"); - $("#ML_window").css('width', '668px'); - }*/ - } - } - }); - }, - -/* - * 브라우저 인증서 선택시 선택창 옆에 나오는 안내 이미지 출력 함수 - */ - browser_menu : function() { - var child =''; - child += '
    '; - if(selectMedia == "web" || selectMedia == "web_kftc" ){ - child += ' 0 ) { - //$('#ML_Dialog_common').MLjquiWindow('destroy'); - var select = document.getElementById('ML_container'); - select.removeChild(select.lastChild); - } - - var node = document.createElement("div"); - node.innerHTML=child; - document.getElementById('ML_container').appendChild(node); - /*$('#driver_div').empty().html(child); - $('#driver_div').show();*/ - - }, - -/* - * 기존 Main.js 에 있던 인증서 선택창에서 스토리지 목록을 만드는 함수 - */ -/* -viewoptObj.defaultStorage; -viewoptObj.storageList; //[] -viewoptObj.installcheck; -viewoptObj.updatecheck; -viewoptObj.browserInfo; -*/ - MakeStorageListDiv : function(obj) { - var default_stg = obj.defaultStorage; - var isCsInstall = obj.installcheck; - var isCsUpdate = obj.updatecheck; - var stgArr = obj.storageList; - var browser = obj.browserInfo; - - stgHtml = '
    '; - stgHtml += '
      '; - - if(stgArr != null && stgArr.length > 0){ - - //목록그리기 - var stg_length = stgArr.length < 5 ? stgArr.length : 5; - var id_key = "stg_"; - var mode = "main"; - - if(stgArr.length < 6){ - $(".ML_storage_box_sub").css("margin-left","11px"); - $(".customNavigation").css("display","none"); - } - - for(var i=0; i 5){ - //stgHtml += '
    '; - //stgHtml += '
    '; - //stgHtml += '
    '; - //stgHtml += '
    '; - //stgHtml += '
      '; - - for(var idx=5; idx5)\ - - }else{ - // 목록 없음 - stgHtml += '
    • '+$.i18n.prop("TS084")+'
    • '; - } - - stgHtml += '
    '; - stgHtml += '
    '; - stgHtml += ''; - document.getElementById('MLstrSlide').innerHTML = stgHtml; - - $("#dataTable").MLjquiDataTable({ - theme:"DSdatatable", - width: "398", - height: "150", - columnsHeight:25, - altRows: true, // 행 백그라운드 교차 // - autoRowHeight: false, - sortable: true, - pageable: false, - enableHover: true, - columnsResize: true, - selectionMode: "singleRow", - columns: [ - { text: $.i18n.prop("TS059"), dataField: 'Cn', width: 140, align: 'center' }, - { text: $.i18n.prop("TS060"), dataField: 'Policy', width: 100, align: 'center' }, - { text: $.i18n.prop("TS061"), dataField: 'Issuer', cellsAlign: 'left', align: 'center', cellsFormat: 'c2' }, - { text: $.i18n.prop("TS062"), dataField: 'enddate', width: 78, cellsAlign: 'left', align: 'center', cellsFormat: 'd'} - ], - ready:function(){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - }); - - //메세지 처리 적용. - MessageVO.applyMessage($('[id^="MSG_"]')); - }, - MakeStorageListDiv_M : function(obj){ - - var default_stg = obj.defaultStorage; - var stgArr = obj.storageList; - var browser = obj.browserInfo; - - stgHtml = '
    '; - stgHtml += '
      '; - - if(stgArr != null && stgArr.length > 0){ - - var stg_length = stgArr.length < 5 ? stgArr.length : 5; - var id_key = "stg_"; - var mode = "main"; - - for(var i=0; i'; - } - - stgHtml += '
    '; - stgHtml += '
    '; - stgHtml += ''; - document.getElementById('MLstrSlide').innerHTML = stgHtml; - - $("#dataTable").MLjquiDataTable({ - theme:"DSdatatable", - width: "398", - height: "150", - columnsHeight:25, - altRows: true, // 행 백그라운드 교차 // - autoRowHeight: false, - sortable: true, - pageable: false, - enableHover: true, - columnsResize: true, - selectionMode: "singleRow", - columns: [ - { text: $.i18n.prop("TS059"), dataField: 'Cn', width: 140, align: 'center' }, - { text: $.i18n.prop("TS060"), dataField: 'Policy', width: 100, align: 'center' }, - { text: $.i18n.prop("TS061"), dataField: 'Issuer', cellsAlign: 'left', align: 'center', cellsFormat: 'c2' }, - { text: $.i18n.prop("TS062"), dataField: 'enddate', width: 78, cellsAlign: 'left', align: 'center', cellsFormat: 'd'} - ], - ready:function(){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - }); - - //메세지 처리 적용. - MessageVO.applyMessage($('[id^="MSG_"]')); - - }, - MakeStorageListDiv_old : function(mode) { - ML4WebLog.log("ML4Web_Draw.js - MakeStroageListDiv() called...."); - - var isCsInstall = ML4WebApi.getProperty("is_cs_install"); - var isCsUpdate = ML4WebApi.getProperty("is_cs_update"); - var smartcertType = ML4WebApi.getProperty("smartcert_type"); - var libType = ML4WebApi.getProperty("libType"); - - var os_ver = ML4WebApi.getProperty("os"); // windows x, MAC, UBUNTU64, UBUNTU32, FEDORA64, FEDORA32 - - var stgArr = []; - - if(os_ver=="Android" || os_ver=="IPHONE" || os_ver=="IPAD" || os_ver=="BlackBerry"){ - stgArr = ML4WebApi.getProperty("storageList_m"); - }else{ - if(os_ver.indexOf('windows') == -1){ - ML4WebApi.setProperty("storageList",["web","hdd"]); - } - if(mode == "mgmt"){ - stgArr = ML4WebApi.getProperty("storageListMgmt"); - }else{ - stgArr = ML4WebApi.getProperty("storageList"); - } - } - - stgHtml = '
    '; - stgHtml += '
      '; - - - if(stgArr != null && stgArr.length > 0){ - - //목록그리기 - var stg_length = stgArr.length < 5 ? stgArr.length : 5; - var id_key = (mode=="main") ? "stg_" : "stg_admin_"; - var browser = ML4WebApi.getProperty('browser'); - - if(stgArr.length < 6){ - $(".ML_storage_box_sub").css("margin-left","11px"); - $(".customNavigation").css("display","none"); - } - - for(var i=0; i 5){ - stgHtml += '
    '; - stgHtml += '
    '; - stgHtml += ''; - //stgHtml += '
    '; - stgHtml += '
    '; - stgHtml += '
      '; - - for(var idx=5; idx5)\ - - }else{ - // 목록 없음 - stgHtml += '
    • '+$.i18n.prop("TS084")+'
    • '; - } - - stgHtml += '
    '; - stgHtml += '
    '; - stgHtml += '
    '; - document.getElementById('MLstrSlide').innerHTML = stgHtml; - - //메세지 처리 적용. - MessageVO.applyMessage($('[id^="MSG_"]')); - - }, - - -/* - * ML4Web_Main.js 에서 옮겨옴. 인증서 목록을 출력하는 함수 - */ - MakeCertiListDiv : function(listObj) { - //ML4WebLog.log("MakeCertiListDiv() called... listObj === " + JSON.stringify(listObj)); - - //비번입력창 활성화/비활성화 - if(listObj != null && listObj.length > 0){ - $("#input_cert_pw").val('').prop("disabled",false); - $("#input_cert_pw").css({ 'pointer-events': 'auto' }); - $("#keyboardOn").css({ 'pointer-events': 'auto' }); - if(document.getElementById('input_cert_pw_new')){ - $("#input_cert_pw_new").val('').prop("disabled",false); - $("#input_cert_pw_new").css({ 'pointer-events': 'auto' }); - $("#keyboardOn").css({ 'pointer-events': 'auto' }); - } - } else { - $("#input_cert_pw").val('').prop("disabled",true); - $("#input_cert_pw").css({ 'pointer-events': 'none' }); - $("#keyboardOn").css({ 'pointer-events': 'none' }); - if(document.getElementById('input_cert_pw_new')){ - $("#input_cert_pw_new").val('').prop("disabled",true); - $("#input_cert_pw_new").css({ 'pointer-events': 'none' }); - $("#keyboardOn").css({ 'pointer-events': 'none' }); - } - } - - var source = makeSourceData(listObj); - var dataAdapter = new $.MLjqui.dataAdapter(source); - - //모바일 화면 적용 패치 - var os_ver = ML4WebApi.getProperty("os"); - var dt_height = ""; - if(os_ver=="Android" || os_ver=="IPHONE" || os_ver=="BlackBerry" || os_ver=="IPAD"){ - if(os_ver=="IPAD" || (os_ver=="Android" && navigator.userAgent.toUpperCase().indexOf("MOBILE") == -1)){ - dt_height = 350; - }else{ - dt_height = (($(window).height()) - 238); - } - - $("#dataTable").MLjquiDataTable({ - theme:"DSdatatable", - width: "100%", - height: dt_height, - columnsHeight:25, - altRows: false, // 행 백그라운드 교차 // - autoRowHeight: false, - sortable: true, - pageable: false, - source: dataAdapter, - enableHover: true, - columnsResize: true, - selectionMode: "singleRow", - columns: [ - { text: $.i18n.prop("TS063"), dataField: 'sectionValues', cellsAlign: 'left', align: 'center', cellsFormat: 'c2', - cellsRenderer: function (row, column, value, rowData) { - var container = '
    ' - var leftcolumn = '"; - container += leftcolumn; - container += rightcolumn; - container += "
    "; - - return container; - } - } - ], - ready:function(){ - if(listObj != null && listObj.length > 0){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - } - }); - }else{ - $("#dataTable").MLjquiDataTable({ - theme:"DSdatatable", - width: "398", - height: "150", - columnsHeight:25, - altRows: true, // 행 백그라운드 교차 // - autoRowHeight: false, - sortable: true, - pageable: false, - source: dataAdapter, - enableHover: true, - columnsResize: true, - selectionMode: "singleRow", - columns: [ - { text: $.i18n.prop("TS059"), dataField: 'Cn', width: 140, align: 'center', - cellsRenderer: function (row, column, value, rowData) { - var image = "
    "; - - var imgurl = ''; - var isExpired = ML4WebUtil.isDateExpired(rowData.enddatetime); - if(isExpired){ - imgurl = 'UI/images/icon_cert_expire.png'; - }else{ - var rowEndDate = rowData.enddatetime; - var a = rowEndDate.split(" "); - var d = a[0].split("-"); - var t = a[1].split(":"); - var endDate = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]); - var today = new Date(); - if (today < endDate) { - diff = Math.floor(( Date.parse(endDate) - Date.parse(today) ) / 86400000); - if(diff < 31){ - //시계 이미지 - imgurl = 'UI/images/icon_cert_expiring.png'; - }else{ - imgurl = 'UI/images/icon_cert_default.png'; - } - } - } - if(typeof(rowData.cloud) != "undefined"){ - if(rowData.cloud){ - imgurl = 'UI/images/cert_selected_in_cloud.png'; - } - } - - var img = ''; - image += img; - var tooltip = "
    " + rowData.Cn + ""; - return image+=tooltip; - } - }, - { text: $.i18n.prop("TS060"), dataField: 'Policy', width: 100, align: 'center', - cellsRenderer: function (row, column, value, rowData) { - - var image = "
    "; - - var imgurl = ''; - var isExpired = ML4WebUtil.isDateExpired(rowData.enddatetime); - if(isExpired){ - imgurl = 'UI/images/icon_cert_expire.png'; - }else{ - imgurl = 'UI/images/icon_cert_default.png'; - } - image += "
    " + rowData.Policy + ""; - //var img = ''; - //image += img; - //image += "" + rowData.Policy + ""; - //image += "" + rowData.Policy + ""; - return image; - } - }, - { text: $.i18n.prop("TS061"), dataField: 'Issuer', cellsAlign: 'left', align: 'center', cellsFormat: 'c2' }, - { text: $.i18n.prop("TS062"), dataField: 'enddate', width: 78, cellsAlign: 'left', align: 'center', cellsFormat: 'd', - cellsrenderer : function(row, column, value, rowData) { - var enddateSpan = ""; - enddateSpan = "" + rowData.enddate + ""; - enddateSpan += ""; - return enddateSpan; - } - } - ], - ready:function(){ - if(listObj != null && listObj.length > 0){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - } - }); - } - - if (listObj!=null && $.isEmptyObject($("#dataTable").MLjquiDataTable('selectRow')) && listObj.length>0){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - - // 인증서 만료일 한달전에 해당 인증서 마우스 오버시 유효기간 공지 - $("#dataTable tbody").on("mouseover", "tr", function(event){ - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - var selectionCnt = selection.length; - - if( selection && selectionCnt > 0 ){ - var diff = ''; - //선택한 row의 enddate 갖고오기 - var rowEndDate = $(this).find('input[type="hidden"]').val(); - var a = rowEndDate.split(" "); - var d = a[0].split("-"); - var t = a[1].split(":"); - var endDate = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]); - var today = new Date(); - if (today < endDate) { - diff = Math.floor(( Date.parse(endDate) - Date.parse(today) ) / 86400000); - //alert(diff + "일 남았습니다."); - if(diff < 31){ - // 마우스오버된 - var rowID = $(this).context.getAttribute("id"); - rowID = "#" + rowID; -// var strAlert = "선택하신 인증서는 " -// + rowEndDate + "(남은 기간 " + diff + "일)에 만료 예정입니다.\n" -// + "인증서를 발급받은 기관의 공동인증센터에서 인증서를 갱신하시기 바랍니다."; -// $(rowID).attr("title", strAlert); - - var strAlert = "
    선택하신 인증서는 " - + rowEndDate + "(남은 기간 " + diff + "일)에 만료 예정입니다.
    " - + "
    인증서를 발급받은 기관의 공동인증센터에서 인증서를 갱신하시기 바랍니다.
    "; - var thisIsTop = $(this).offset().top + 25; - var thisIsLeft = $(this).offset().left; - var divArea = $("
    "+strAlert+"
    "); - divArea.css("top",thisIsTop+"px"); - divArea.css("left",thisIsLeft+"px"); - $("body").append(divArea); - } - } else { - // 만료된 인증서 마우스 오버시 만료안내 공지 - var rowID = $(this).context.getAttribute("id"); - rowID = "#" + rowID; - var strAlert = "
    선택하신 인증서는 만료되었습니다.
    "; - var thisIsTop = $(this).offset().top + 25; - var thisIsLeft = $(this).offset().left; - var divArea = $("
    "+strAlert+"
    "); - divArea.css("top",thisIsTop+"px"); - divArea.css("left",thisIsLeft+"px"); - $("body").append(divArea); - } - } - }); - - $("#dataTable tbody").on("mouseout", "tr", function(event){ - $("body").find("div[name='speechBubbleArea']").remove(); - }); - - //table row(인증서) 선택 event catch - $("#dataTable").on('rowSelect', function(e){ - var args = e.args; - var index = args.index; - var rowData = args.row; - var rowKey = args.key; - // ML4WebLog.log("dataTable.rowSelect.args === " +args); - // ML4WebLog.log("dataTable.rowSelect.index === " +index); - // ML4WebLog.log("dataTable.rowSelect.rowData === " + JSON.stringify(rowData)); - // ML4WebLog.log("dataTable.rowSelect.rowKey === " +rowKey); - }); - - //웹접근성 포커스 유지를 위한 아래 내용 주석처리 - //$("#dataTable").focus(); - }, - openCSInstallDialog : function(mode){ - - var browser = ML4WebApi.getProperty('browser'); - var os_ver = ML4WebApi.getProperty("os"); - - if(os_ver == ""){ - os_ver = getOS(); - } - - if(os_ver.indexOf("LINUX") > -1){ - $("#csContainer").load("UI/ML4Web_Cs_Linux_Install.html?random=" + Math.random() * 99999, function(){ - $('#ML_install').MLjquiWindow('open', function(e){}); - - }); - }else{ - var popOption = { - mode: mode, - title:$.i18n.prop("TS039"), - showCert:false, - certData:null, - onclick:"installProgram", - contentKey:"install_cs", - dialogHeight:"180px" - }; - } - - //20200313 mj - DSDialog.openDialog(popOption, null, function(code,jsonObj){}); - }, - openCSUpdateDialog : function(mode){ - - var browser = ML4WebApi.getProperty('browser'); - var os_ver = ML4WebApi.getProperty("os"); - - if(os_ver == ""){ - os_ver = getOS(); - } - - if(os_ver.indexOf("LINUX") > -1){ - $("#csContainer").load("UI/ML4Web_Cs_Linux_Install.html?random=" + Math.random() * 99999, function(){ - $('#ML_install').MLjquiWindow('open', function(e){}); - }); - }else{ - var popOption = { - mode: mode, - title:$.i18n.prop("TS040"), - showCert:false, - certData:null, - onclick:"installProgram", - contentKey:"install_update", - dialogHeight:"225px" - }; - } - - //20200313 mj - DSDialog.openDialog(popOption, null, function(code,jsonObj){}); - }, - -// 에러 alert dialog 처리 - errorHandler : function(mode, errCode, obj, callback) { - - // TODO : 에러 코드별로 분기 처리 - /* - * switch(errCode){ - * case 1: - * case 2: - * // - * case 3: - * // - * default : - * // - * } - * - */ - - // alert 호출 - if(typeof(errCode) != "undefined"){ - DSAlert.openAlert(mode, errCode, obj); - } - - - // 함수 처리 - if(typeof(callback) === "function"){ - // TODO - callback(); - } - }, - confirm : function( message, callback ){ - - var popOption = { - mode:"main", - title:$.i18n.prop("TS014"), - showCert:false, - certData:{}, - contentKey:"confirm", - dialogHeight:190, - message:message - }; - //20200310 mj - var btnObj = $("#stg_"+ selectMedia); - - DSDialog.openConfirm(popOption, btnObj, function(code,jsonObj){ - $("#btn_common_confirm").unbind().click( function(){ - callback(0,true); - //20200310 mj - btnObj.focus(); - return; - }); - $("#btn_common_cancle").unbind().click( function(){ - callback(1,false); - return; - }); - }); - } -}; - - -var ML4WebSaveCertDraw = { - - hddOptionMap : { - // HDD 스토리지 선택 정보 저장을 위해 사용 - }, - initDraw : function(){ - - // 인증서 저장 창 그리기 - this._createWindow(); - - // 메시지 초기화 - MessageVO.applyMessage($('[id^="MSG_"]')); - - //key event - $(this).keydown(function(e){ - if(e.keyCode == "9"){ - var targetElement = $(document.activeElement).attr("id"); - var parentElement = $(document.activeElement).parent().attr("id"); - //console.log("targetElement.id === " + targetElement); - //console.log("parentElement.id === " + parentElement); - - if(targetElement == "stg_smartcert" ){ - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - if(selection && selection.length>0){ - - }else{ - - } - } else if(targetElement == "btn_cancel" ){ - $(".ML_storage_area>ul>li:first-child").focus(); - } else if(targetElement == "btn_file_cs" ){ - $("#import_pfx_password").focus(); - } else if(targetElement == "file_route" ){ - - } else if(targetElement == null || targetElement == 'undefined'){ - - } - }else if (e.keyCode == "27"){ - console.log("Esc keydown Esc keydown Esc keydown Esc keydown"); - } - }); - - // Slide L&R Button - $(".customNavigation").click(function(){ - var X=$(this).attr('id'); - if(X==1){ - $(this).children(".str_add_li").removeClass('pr'); - $(this).children(".str_add_li").addClass('ne'); - $(this).attr('id', '0'); - - $("#wrap_stg_01").animate({left:"0px"}, 250); - $("#wrap_stg_02").animate({left:"375px"}, 250); - }else{ - $(".str_add_li").attr('class', 'str_add_li pr'); - $(this).children(".str_add_li").removeClass('ne'); - $(this).children(".str_add_li").addClass('pr'); - $(".customNavigation").attr('id', '0'); - $(this).attr('id', '1'); - - $("#wrap_stg_01").animate({left:"-375px"}, 250); - $("#wrap_stg_02").animate({left:"0px"}, 250); - } - }); - - $(".stg_01").focus(function(){ - $("#wrap_stg_01").animate({left:"0px"}, 250); - $("#wrap_stg_02").animate({left:"375px"}, 250); - $(".customNavigation").children(".str_add_li").removeClass('pr'); - $(".customNavigation").children(".str_add_li").addClass('ne'); - $(".customNavigation").attr('id', '0') - }); - - $(".stg_02").focus(function(){ - $("#wrap_stg_01").animate({left:"-375px"}, 250); - $("#wrap_stg_02").animate({left:"0px"}, 250); - $(".customNavigation").children(".str_add_li").removeClass('ne'); - $(".customNavigation").children(".str_add_li").addClass('pr'); - $(".customNavigation").attr('id', '1') - }); - - }, - _createWindow : function() { - - if( ! ML4WebApi.getProperty("banner") ){ - $(".ML_cp_AD").remove(); - } - - var window_height = 558; - var window_width = 418; - var popupWidth = document.body.clientWidth; - - var os_ver = ML4WebApi.getProperty("os"); - var jqxWidget = $('#ML_window'); - var offset = jqxWidget.offset(); - var xValue = offset.left + (($(window).width()/2)-(window_width/2)); - var position = { x: xValue, y: offset.top + 50}; - var popupPosition = {x: offset.left + ($(window).width()/2) - 200, y: offset.top + 200}; - - if((os_ver=="Android" && navigator.userAgent.toUpperCase().indexOf("MOBILE") >-1)|| os_ver=="IPHONE" || os_ver=="BlackBerry" || os_ver=="IPAD" || os_ver=="Android"){ - isBanner = false; - position = 'center'; - popupPosition = 'center'; - popupWidth = 300; - }else{ - popupWidth = 398; - } - - //-00. Main - $("#ML_window").MLjquiWindow({ - title: $.i18n.prop("TS085"), - resizable: false, - position:position, - showCloseButton:false, - isModal: true, - modalOpacity: 0.3, - modalZIndex: 9995, - modalBackgroundZIndex: 9995, - showCollapseButton: false, - draggable: false, - keyboardCloseKey: 0, - maxHeight: 600, maxWidth:720, - minHeight: 200, minWidth: 200, - height: window_height, width: window_width, - initContent: function () { - $('#ML_window').MLjquiWindow('focus'); - if( os_ver === "IPHONE" ){ - var orientation = window.orientation; - if( orientation == 0 ){ - var iWidth = screen.width; - var iHeight = screen.height; - - if(iHeight >= 800){ - iHeight = 170; - }else if(iHeight >= 600){ - iHeight = 150; - }else if(iHeight >= 500){ - iHeight = 140; - } - - iWidth = iWidth + "px"; - iHeight = iHeight + "vw"; - - window.parent.document.getElementById('dscert').style.width = iWidth; - window.parent.document.getElementById('dscert').style.height = iHeight; - }else if(orientation == 90){ - iHeight = (screen.width) - 323; - iHeight = iHeight + 'vw'; - - window.parent.document.getElementById('dscert').style.height = iHeight; - }else if(orientation == -90){ - iHeight = (screen.width) - 323; - iHeight = iHeight + 'vw'; - - window.parent.document.getElementById('dscert').style.height = iHeight; - } - } - } - }); - - $('#popup_alert').MLjquiWindow({ - title: $.i18n.prop("TS042"), - resizable: false, - position: popupPosition, - showCloseButton:false, - zIndex:9990, - showCollapseButton: false, - keyboardCloseKey: 0, - maxHeight: 600, maxWidth:420, - minHeight: 200, minWidth: 200, - height: 148, width: popupWidth, - isModal: true, - modalOpacity: 0.3, - modalZIndex: 9995, - draggable: false, - modalBackgroundZIndex: 9995, - initContent: function () { - $('#popup_alert').MLjquiWindow('close'); - } - }); - - //-02. Common - //$('#ML_Dialog_common').show(); - $('#ML_Dialog_common').MLjquiWindow({ - // autoOpen: false, - // title:'비밀번호변경', - resizable: false, - //position: 'center', - position:popupPosition, - showCloseButton:false, - // closeButtonSize: 35, - // closeButtonAction:'close', - // draggable:false, - isModal: true, - modalOpacity: 0.3, - modalZIndex: 9996, - keyboardCloseKey: 0, - modalBackgroundZIndex: 9996, - showCollapseButton: false, - width: popupWidth, - initContent: function () { - $('#ML_Dialog_common').MLjquiWindow('close'); - } - }); - - //-03. Cs install dialog - $('#ML_dialog_cs_install').MLjquiWindow({ - resizable: false, - //position: 'center', - position: popupPosition, - showCloseButton:false, - isModal: false, - modalOpacity: 0.3, - modalZIndex: 9996, - keyboardCloseKey: 0, - modalBackgroundZIndex: 9996, - showCollapseButton: false, - width: popupWidth, - initContent: function () { - $('#ML_dialog_cs_install').MLjquiWindow('close'); - } - }); - }, - MakeSaveCertDiv : function(certInfo) { - - // 인증서 목록에 해당 정보 출력 - var listObj = new Array(); - listObj.push(certInfo); - var source = makeSourceData(listObj); - var dataAdapter = new $.MLjqui.dataAdapter(source); - var certOpt = new Object(); - certOpt.storageName = ""; - - $("#dataTable").MLjquiDataTable({ - theme:"DSdatatable", - width: "398", - height: "150", - columnsHeight:25, - altRows: true, // 행 백그라운드 교차 // - autoRowHeight: false, - sortable: true, - pageable: false, - source: dataAdapter, - enableHover: true, - columnsResize: true, - selectionMode: "singleRow", - columns: [ - { text: $.i18n.prop("TS059"), dataField: 'Cn', width: 140, align: 'center', - cellsRenderer: function (row, column, value, rowData) { - var image = "
    "; - - var imgurl = ''; - var isExpired = ML4WebUtil.isDateExpired(rowData.enddatetime); - if(isExpired){ - imgurl = 'UI/images/icon_cert_expire.png'; - }else{ - imgurl = 'UI/images/icon_cert_default.png'; - } - - //20200324 - var img = ''; - image += img; - var tooltip = "
    " + rowData.Cn + ""; - return image+=tooltip; - } - }, - { text: $.i18n.prop("TS060"), dataField: 'Policy', width: 100, align: 'center', - cellsRenderer: function (row, column, value, rowData) { - - var image = "
    "; - - var imgurl = ''; - var isExpired = ML4WebUtil.isDateExpired(rowData.enddatetime); - if(isExpired){ - imgurl = 'UI/images/icon_cert_expire.png'; - }else{ - imgurl = 'UI/images/icon_cert_default.png'; - } - image += "
    " + rowData.Policy + ""; - //var img = ''; - //image += img; - //image += "" + rowData.Policy + ""; - //image += "" + rowData.Policy + ""; - return image; - } - }, - { text: $.i18n.prop("TS061"), dataField: 'Issuer', cellsAlign: 'left', align: 'center', cellsFormat: 'c2' }, - { text: $.i18n.prop("TS062"), dataField: 'enddate', width: 78, cellsAlign: 'left', align: 'center', cellsFormat: 'd'} - ], ready:function(){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - }); - - // 선택 강제 - if(listObj != null && listObj.length > 0){ - $("#dataTable").MLjquiDataTable('selectRow', 0); - } - - - $('[id^="stg_"]').click(function () { - - //UI driver 선택창 위치 조정 - var stg_idx = $(this).attr("stgIdx"); - var selectedStorage = this.id.split("stg_")[1]; - - selectMedia = selectedStorage; - - // btn_confirm 참조 값인 storage 명 셋팅 - certOpt.storageName = selectedStorage; - ML4WebUI.selectedStorage.current_option = certOpt; - - $('#driver_div').removeClass("pos_01").removeClass("pos_02").removeClass("pos_03").removeClass("pos_04").removeClass("pos_05"); - $('#driver_div').addClass("pos_0"+stg_idx); - - //UI css selection 처리 - $('[class^="ML_storage_"]').removeClass("on"); - $(this).parent().addClass("on"); - - // 드라이버 선택창 닫기 - closeDriverDialog(); - - if(!magiclineUtil.isMobile(magiclineUtil.getOS())){ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var npLength = npVCtrl.keypadObject.length; - if(npLength > 1){ - for (var i=0; i 0 && ML4WebSaveCertDraw.hddOptionMap[currentText]){ - ML4WebUI.selectedStorage.current_option.storageOpt = currentText; - ML4WebSaveCertDraw.showSelectedStorageName(); - closeDriverDialog(); - }else if(ML4WebUI.selectedStorage.current_option.storageName == "hdd" && event.target.id.indexOf("stg_") == 0 && ML4WebUI.selectedStorage.option != null){ - ML4WebSaveCertDraw.openDriverDialog(selectedStorage, ML4WebUI.selectedStorage.option); - } - }); - - }); - - //메세지 처리 적용. - MessageVO.applyMessage($('[id^="MSG_"]')); - - }, - showSelectedStorageName : function(){ - - var htmlStream = "인증서 저장 위치 : "; - - switch(ML4WebUI.selectedStorage.current_option.storageName){ - case "web" : - htmlStream += "브라우저"; - break; - case "hdd" : - htmlStream += ML4WebUI.selectedStorage.current_option.storageOpt; - break; - default : - break; - } - $("#ML_dp_03").empty().html(htmlStream); - - }, - openDriverDialog : function(id, obj){ - var htmlStream = ""; - - if(id == "mobile"){ - htmlStream += '
      '; - }else if(id == "hdd"){ - htmlStream += '
        '; - }else{ - htmlStream += '"; - - $('#driver_div').empty().html(htmlStream); - $('#driver_div').show(); - - $('#sub_drv_list>li:first-child>a').focus(); - - } - -}; -window.onorientationchange = function() { - var jqxwidget2 = $('#ML_window'); - var offset2 = jqxwidget2.offset(); - - var os_ver = ML4WebApi.getProperty("os"); - if(os_ver == "IPHONE"){ - var orientation = window.orientation; - if(orientation == 0){ - var iWidth = screen.width; - var iHeight = screen.height; - - if(iHeight >= 800){ - iHeight = 170; - }else if(iHeight >= 600){ - iHeight = 150; - }else if(iHeight >= 500){ - iHeight = 140; - } - - iWidth = iWidth + "px"; - iHeight = iHeight + "vw"; - - window.parent.document.getElementById('dscert').style.width = iWidth; - window.parent.document.getElementById('dscert').style.height = iHeight; - - detailWidth = screen.width; - detailHeight = screen.height; - - }else{ - if(screen.width <= 323){ - iHeight = (screen.width) - 265; - }else{ - iHeight = (screen.width) - 323; - } - iHeight = iHeight + 'vw'; - - window.parent.document.getElementById('dscert').style.width = screen.height + 'px'; - window.parent.document.getElementById('dscert').style.height = iHeight; - - if(screen.height >= 800){ - detailWidth = screen.height - 100 - }else{ - detailWidth = screen.height; - } - detailHeight = screen.width; - } - }else if(os_ver == "IPAD"){ - var orientation = window.orientation; - if(orientation == 0){ - var iWidth = screen.width; - var iHeight = screen.height; - - iWidth = iWidth + "px"; - iHeight = iHeight-100 + "px"; - - window.parent.document.getElementById('dscert').style.width = iWidth; - window.parent.document.getElementById('dscert').style.height = iHeight; - }else{ - iHeight = screen.width-100 + 'px'; - - window.parent.document.getElementById('dscert').style.width = screen.height + 'px'; - window.parent.document.getElementById('dscert').style.height = iHeight; - } - }else{ - detailWidth = screen.width; - detailHeight = screen.height; - } - $('#ML_window_detail').MLjquiWindow({ - position:{x: offset2.left, y: offset2.top}, - width:detailWidth,height:detailHeight - }); -} diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Main.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Main.js deleted file mode 100644 index 3364420d..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Main.js +++ /dev/null @@ -1,2715 +0,0 @@ - -var keyboardCheck = false; -var keyPair = ""; - -$(document).ready(function(){ - var browser = ML4WebApi.getProperty('browser'); - - // IE 8,7,6일 때 CapsLock 작동 안함 - if((browser != 'MSIE 8') && (browser != 'MSIE 7') && (browser != 'MSIE 6') && (browser.toLowerCase().indexOf("safari") < 0)) { - if(document.getElementById('input_cert_pw')){ - document.querySelector('#input_cert_pw').addEventListener('keyup', checkCapsLock); - document.querySelector('#input_cert_pw').addEventListener('mousedown', checkCapsLock); - }else if(document.getElementById('input_cert_pw_save')){ - document.querySelector('#input_cert_pw_save').addEventListener('keyup', checkCapsLock); - document.querySelector('#input_cert_pw_save').addEventListener('mousedown', checkCapsLock); - } - } - - $('#input_cert_pw').blur(function(e){ - $("#capslock").hide(); - }); - - $('#input_cert_pw_save').blur(function(e){ - $("#capslock").hide(); - }); - -}); - -//tab으로 이동시 포커스 함께 이동 -var rowIndexCheck = 0; -function tabFocus(e){ - //재정렬된 리스트 첫번째 행 클릭 - if(e.parentNode.rowIndex == 0 && e.cellIndex == 0){ - //$("#dataTable").MLjquiDataTable('_handleKey', e); - rowIndexCheck = e.parentNode.rowIndex; - } else if(rowIndexCheck < e.parentNode.rowIndex){ - // 다음줄 이동 - if(e.cellIndex == 0){ - //e.keyCode = 40; - //$("#dataTable").MLjquiDataTable('_handleKey', e); - rowIndexCheck = e.parentNode.rowIndex; - } - } else if(rowIndexCheck > e.parentNode.rowIndex){ - // 이전줄 이동 - if(e.cellIndex == 3){ - //e.keyCode = 38; - //$("#dataTable").MLjquiDataTable('_handleKey', e); - rowIndexCheck = e.parentNode.rowIndex; - } - } -} - -//인증서 리스트 셀 클릭 시 포커스 효과 -function certListClick(e){ - rowIndexCheck = e.parentNode.rowIndex; - //$(e).focus(); - //$(e).css("outline", "none"); -} - -// CapsLock 상태 알림 -function checkCapsLock(e) { - var caps_lock_on = e.getModifierState('CapsLock'); - - if(caps_lock_on == true){ - if(((ML4WebUI.selectedStorage.key == 'web_kftc' || ML4WebUI.selectedStorage.key == 'web') - && !ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType != "") - || (ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType != "")) - $("#capslock").hide(); - else if ((!ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType != "") - || (ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType === "") - || (!ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType === "")) - $("#capslock").show(); - } else - $("#capslock").hide(); -} - -function add_checkCapsLock(e) { - var caps_lock_on = e.getModifierState('CapsLock'); - - if(caps_lock_on == true && !ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType === "") - $("#add_capslock").show(); - else - $("#add_capslock").hide(); -} - -function keypadOn(){ - if($("#file_route2").val() != ""){ - $('#add_browser_password').attr("style","ime-mode:active;"); - - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - keyboardCheck = true; - if(typeof initTranskey=="function") { - transkey["add_browser_password"] = null; - initTranskey(); - } - //raon keypad 위치 가운데로 수정 - var addPwdTop = $("#add_browser_password").offset().top; - var addPwdLeft = $("#add_browser_password").offset().left; - addPwdTop = addPwdTop + 30; - addPwdLeft = addPwdLeft - 205; - $('#add_browser_password').attr("data-tk-kbdxy", addPwdLeft + " " + addPwdTop); - - tk.onKeyboard(document.getElementById('add_browser_password')); - } - } -} - -function initKeyPad(){ - $('#add_browser_password').removeAttr("style"); - keyboardCheck = false; - if(!keyboardCheck){ - if(ML4WebApi.getProperty("storageList").indexOf("web_kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("web") > -1){ - if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - $('#add_browser_password').val(""); - keyboardCheck = true; - } - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - $("#add_browser_password").val('').prop("disabled",true); - $('#add_browser_password').val(""); - } - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#add_browser_password').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-add_browser_password").css("z-index", 111111); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - $('#add_browser_password').val(""); - keyboardCheck = true; - } - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - $("#add_browser_password").val('').prop("disabled",true); - $('#add_browser_password').val(""); - } - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#add_browser_password').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-add_browser_password").css("z-index", 111111); - } - } - } - } -} - -/* - * ML4Web_Main.jsp 처리하는 이벤트 핸들러 정의 - */ -// 가상키보드 활성화 -$('#keyboardOn').click(function(){ - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - var selectionCnt = selection.length; - - var pw_id = 'input_cert_pw'; - - if(selectionCnt > 0){ - if(document.getElementById('input_cert_pw_save') != null){ - pw_id = 'input_cert_pw_save'; - } - - $('#'+pw_id).attr("style","ime-mode:active;"); - keyboardCheck = true; - if(selectMedia === "web_kftc" || selectMedia === "web"){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - tk.onKeyboard(document.getElementById(pw_id)); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - tk.onKeyboard(document.getElementById(pw_id)); - } - } - } -}); - -// 가상키보드로 입력 한 경우 value 초기화 -$('#input_cert_pw').click(function(){ - - $('#input_cert_pw').removeAttr("style"); - keyboardCheck = false; - if(!magiclineUtil.isMobile(magiclineUtil.getOS())){ - if(!keyboardCheck){ - if(selectMedia === "web_kftc" || selectMedia === "web"){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - $("#input_cert_pw").val('').prop("disabled",true); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#input_cert_pw').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-input_cert_pw").css("z-index", 111111); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM" ){ - //ML4WebVKey.showKeyboard(); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - $("#input_cert_pw").val('').prop("disabled",true); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#input_cert_pw').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-input_cert_pw").css("z-index", 111111); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM" ){ - //ML4WebVKey.showKeyboard(); - } - } - } - } - } - $('#input_cert_pw').val(""); - -}); -// 엔터키 처리 -function signEnterKeyEvent(e) { - if (e.keyCode == 13) { - $('#btn_confirm_iframe').click(); - } else { - e.keyCode == 0; - return; - } -} - -function manualClose(e){ - if(e.keyCode == 13){ - $("#manual_close").removeAttr("tabindex"); - $("#manual_img").removeAttr("tabindex"); - $("#browser_manual").attr("style", "display:none"); - $("#ML_window").css('width', '418px'); - } -} - -window.ondragstart = function() { return false; } -/* - * 기존 InitEventHandler - */ -//인증서 보기 -$('#btn_viewCert').click(function () { - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - var selectionCnt = selection.length; - if(selection && selectionCnt>0){ - for(var i=0 ; i 0 ){ - for(var i=0 ; i -1 || ML4WebApi.getProperty("storageList").indexOf("kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("web") > -1){ - if(ML4WebApi.webConfig.virtualKeyboardType === "INCA"){ - // 키패드 계속 생성되는 문제로 인한 초기화 패치(2019/06/14) - var npLength = npVCtrl.keypadObject.length; - for (var i=0; i -1){ - $("#stg_web_kftc").click(); - }else{ - $("#stg_web").click(); - } - - //브라우저인증서저장 버튼 활성화/비활성화 flag - openImportCertDialog(select_stg); - - // CapsLock 상태 알림 - document.querySelector('#add_browser_password').addEventListener('keyup', add_checkCapsLock); - document.querySelector('#add_browser_password').addEventListener('mousedown', add_checkCapsLock); - - $('#add_browser_password').blur(function(e){ - $("#add_capslock").hide(); - }); - } -}); - -$('#btn_browser_manual').click(function(){ - alert('browser manual button click'); -}); - -// -----> -function setMobile(id){ - var resultobj = {}; - var storageRawCertIdx = {}; - - if(id == "smartcert"){ - storageRawCertIdx.storageName = 'smartcert'; - storageRawCertIdx.storageOpt = {}; - storageRawCertIdx.storageOpt.smartCertOpt = {}; - storageRawCertIdx.storageCertIdx = ''; - - storageRawCertIdx.storageOpt.smartCertOpt.servicename = 'dreamCS'; - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt = {}; - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.USIMServerIP = ML4WebApi.getProperty('cs_smartcert_serverip'); - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.USIMServerPort = ML4WebApi.getProperty('cs_smartcert_serverport'); - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.USIMSiteDomain = ML4WebApi.getProperty('cs_smartcert_sitedomain'); - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.USIMInstallURL = ML4WebApi.getProperty('cs_smartcert_installurl'); - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.USIMRaonSiteCode = ML4WebApi.getProperty('cs_smartcert_raonsitecode'); - - resultobj.pw = '11111'; - - }else if(id == "smartcertnx"){ - storageRawCertIdx.storageName = 'smartcertnx'; - storageRawCertIdx.storageOpt = {}; - storageRawCertIdx.storageOpt.smartCertOpt = {}; - storageRawCertIdx.storageCertIdx = ''; - - storageRawCertIdx.storageOpt.smartCertOpt.servicename = 'dreamWEB'; - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt = {}; - - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.subject = ML4WebApi.getProperty("web_smartcert_subject"); - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.issuer = ML4WebApi.getProperty("web_smartcert_issuer"); - storageRawCertIdx.storageOpt.smartCertOpt.serviceOpt.serial = ML4WebApi.getProperty("web_smartcert_serial"); - - resultobj.pw = '11111'; - - }else if(id == "mobisign"){ - storageRawCertIdx.storageName = 'mobile'; - storageRawCertIdx.storageCertIdx = "0"; - - resultobj.pw = 'mobisign'; - id = 'mobile'; - - }else if(id == "unisign"){ - storageRawCertIdx.storageName = 'unisign'; - storageRawCertIdx.storageOpt = {}; - storageRawCertIdx.storageOpt.smartCertOpt = {}; - storageRawCertIdx.storageCertIdx = ''; - resultobj.pw = '11111'; - } - - resultobj.rowData = {}; - resultobj.rowData.storageRawCertIdx = storageRawCertIdx; - resultobj.selectedStg = id; - - return resultobj; -} - -function openDriverDialog(id, idx, obj){ - var str = ''; - - //console.info('id======='+id+(id=="smartcert")); - if(id == "mobile"){ - str += '
          '; - }else if(id == "hdd"){ - str += '
            '; - }else{ - str += '
              '; - } - - if(id=="pfx"){ - var libType = obj.pfxOpt[0].libType; - var browser = ML4WebApi.getProperty('browser'); - - if(libType=='javascript' && browser!='MSIE 8'){ - openSearchPfxDialog();//인증서찾기창 - }else{ - var certOpt = {"storageName":"pfx","pfxOpt":{"libType":"c"}}; - ML4WebUI.getStorageCertList(certOpt, function(resultCode, jsonObj) { - //ML4WebLog.log("getStorageCertList() PFX callback === " + JSON.stringify(jsonObj)); - if( resultCode == 0) { - ML4WebDraw.MakeCertiListDiv(jsonObj.cert_list); - }else{ - ML4WebDraw.MakeCertiListDiv(null); - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER110"), $("#stg_"+id), null); - } - }); - } - }else if( id=="hdd" ){ - var hddOptCnt = obj.hddOpt.length; - for(var i=0; i"+result.hddOpt[i].diskname+":"); - if(i==(obj.hddOpt.length-1)){ - str += '
            • '+obj.hddOpt[i].diskname+'
            • '; - }else{ - str += '
            • '+obj.hddOpt[i].diskname+'
            • '; - } - - } - }else if( id=="token" ){ - //{"tokenOpt":[{"tokenname":"A-Token","driver":"C","driverPath":"C:/", "tokenpasswd":""},{"tokenname":"B-Token","driver":"D","driverPath":"D:/", "tokenpasswd":""}]} - var tokenOptCnt = obj.tokenOpt.length; - - obj.tokenOpt.sort(function(a, b){ - if (b.driver == 'USIM_0002') { - return true; - } - }); - - for(var i=0; i'+obj.tokenOpt[i].tokenname+''; - }else{ - str += '
            • '+obj.tokenOpt[i].tokenname+'
            • '; - } - } - }else if( id=="mobile" ){ - //{"phoneOpt":[{"servicename":"ubikey","serviceOpt":{"version":"V2.0.1","popupURL":"http://aaa.co.kr","UbikeyWParam":"aaa1","UbikeylParam":"aaa2"}},{"servicename":"mobiSign","serviceOpt":{"mobileKeyURL":"http://bbb.co.kr"}}]} - var phoneOptCnt = obj.phoneOpt.length; - var servicename = ""; - - for (var i=obj.phoneOpt.length-1; i>=0; i--) { - var find = 0; - for (var j=0; j -1){ - obj.phoneOpt[i].servicename = ML4WebDraw.TITLE_MOB_SVC_UBIKEYNX; - }else if(obj.phoneOpt[i].servicename.indexOf("ubikey") > -1){ - obj.phoneOpt[i].servicename = ML4WebDraw.TITLE_MOB_SVC_UBIKEY; - } else if(obj.phoneOpt[i].servicename.indexOf("mobisign") > -1){ - obj.phoneOpt[i].servicename = ML4WebDraw.TITLE_MOB_SVC_MOBSIGN; - }else if(obj.phoneOpt[i].servicename.indexOf("dreamCS") > -1){ - obj.phoneOpt[i].servicename = ML4WebDraw.TITLE_MOB_SVC_DREAMCS; - } - - str += '
            • '+obj.phoneOpt[i].servicename+'
            • '; - } - }else if( id=="smartcert" ){ - //{"smartCertOpt":{"servicename":"dreamCS","serviceOpt":{"USIMServerIP":"","USIMServerPort":"","USIMSiteDomain":"","USIMRaonSiteCode":"","USIMInstallURL":"","USIMTokenInstallURL":""}}} - //api.js에서 셋팅하던 부분 main.js로 이동 - resultobj = setMobile(id); - ML4WebUI.callback(0, resultobj); - }else if( id=="smartcertnx" ){ - //{"smartCertOpt":{"servicename":"dreamCS","serviceOpt":{"USIMServerIP":"","USIMServerPort":"","USIMSiteDomain":"","USIMRaonSiteCode":"","USIMInstallURL":"","USIMTokenInstallURL":""}}} - //api.js에서 셋팅하던 부분 main.js로 이동 - resultobj = setMobile(id); - ML4WebUI.callback(0, resultobj); - }else if( id=="cloud" ){ - //{"cloudOpt":[{"servicename":"Dropbox","id":"dreamuser","passwd":"dreampw"},{"servicename":"google","id":"dreamuser","passwd":"dreampw"}]} - var cloudOptCnt = obj.cloudOpt.length; - for(var i=0; i'+obj.cloudOpt[i].servicename+''; - }else{ - str += '
            • '+obj.cloudOpt[i].servicename+'
            • '; - } - } - }else if( id=="unisign" ){ - //{"smartCertOpt":{"servicename":"dreamCS","serviceOpt":{"USIMServerIP":"","USIMServerPort":"","USIMSiteDomain":"","USIMRaonSiteCode":"","USIMInstallURL":"","USIMTokenInstallURL":""}}} - //api.js에서 셋팅하던 부분 main.js로 이동 - resultobj = setMobile(id); - resultobj.certObj = obj; - ML4WebUI.callback(0, resultobj); - - } - str += '
            '; - - $('#driver_div').empty().html(str); - $('#driver_div').show(); - - // 수정 : 팝업 접속시 처음 접속 구분위한 flag,temp값 설정 (ML4Web_Main.html에 hidden필드값 - var flag = $('#flagInit').val(); - var temp = $('#temp').val(); - - //event binding - //ML4WebLog.log("[driver select storage option]event binding prepared... "+id+" === " + JSON.stringify(obj)); - ML4WebLog.log("[driver select storage option]event binding prepared... "+id); - if( id=="hdd" ){ - var hddOptCnt = obj.hddOpt.length; - for(var i=0; i -1){ - disk = disk.replace("&", "&"); - } - var strVal = '{"diskname":"'+disk+'"}'; - selectDriver(id, strVal); - }); - } - if(flag == 0 && (temp == '' || temp == 0)){ - var strDisk = JSON.stringify(obj.hddOpt[0]); - selectDriver(id, strDisk); - } - $('#temp').val(flag); - $('#flagInit').val("1"); -// checkCount++; -// console.log("flag : " + flag + ", temp : " + temp + ", checkCount : " + checkCount); - }else if( id=="token" ){ - var tokenOptCnt = obj.tokenOpt.length; - for(var i=0; ili:first-child>a').focus(); -} - -//드라이버 선택창 닫기 -function closeDriverDialog(){ - ML4WebLog.log("closeDriverDialog() called... "); - - $('#driver_div').hide(); -} - -// 스토리지 드라이버 고른 후 -function selectDriver(key, optVal){ - - ML4WebLog.log("selectDriver() called... "+key+" === " + optVal); - - var temp = $('#temp').val(); - if(temp != '' && temp != 0){ - ML4WebUI.blockUI(); - } - - var certOpt = {"storageName":key}; - - switch(key){ - case 'pfx' : - certOpt.pfxOpt = optVal; - break; - case 'hdd' : - certOpt.hddOpt = JSON.parse(optVal); - break; - case 'shdd' : - certOpt.shddOpt = JSON.parse(optVal); - break; - case 'token' : - certOpt.tokenOpt = JSON.parse(optVal); - break; - case 'mobile' : - certOpt.phoneOpt = JSON.parse(optVal); - break; - case 'smartcert' : - certOpt.smartCertOpt = JSON.parse(optVal); - break; - case 'cloud' : - certOpt.cloudOpt = JSON.parse(optVal); - break; - case 'unisign': - certOpt.unisignOpt = JSON.parse(optVal); - break; - } - - if(key == 'mobile' && certOpt.phoneOpt.serviceOpt.popupURL == "https://mobi.yessign.or.kr/mobisignInstall.htm" ){ - certOpt.phoneOpt.servicename = 'mobisign'; - - resultobj = setMobile('mobisign'); - resultobj.rowData.storageRawCertIdx.storageOpt = certOpt; - ML4WebUI.callback(0, resultobj); - ML4WebUI.unblockUI(); - - }else if(key == 'smartcert'){ - resultobj = setMobile(key); - ML4WebUI.callback(0, resultobj); - ML4WebUI.unblockUI(); - }else if(key == 'web'){ - ML4WebUI.unblockUI(); - ML4WebUI.callback(0, resultobj); - }else{ - - setTimeout(function(){ - ML4WebUI.getStorageCertList(certOpt, function(resultCode, jsonObj) { - ML4WebUI.unblockUI(); - if( resultCode == 0) { - //ML4WebLog.log("selectDriver.getStorageCertList() Result === " + JSON.stringify(jsonObj)); - if(key == 'pfx'){ - DSDialog.closeDialog(function(code, obj){}); - } - - ML4WebDraw.MakeCertiListDiv(jsonObj.cert_list); - }else if(jsonObj.errCode == 30070){ - ML4WebDraw.confirm( ML4WebDraw.MSG_MOB_INSTALL, function( code, boolean ){ - $("#btn_common_confirm").unbind(); - $("#btn_common_cancle").unbind(); - if( code == 0 ){ - var ubikeyURL = ML4WebApi.getProperty('cs_ubikey_popupurl'); - var width = 500; - var height = 380; - var top = (screen.availHeight/2) - (height/2); - var left =(screen.availWidth/2) - (width/2); - - window.open(ubikeyURL,'_blank','scrollbars=no,toolbar=no,resizable=no, width='+ width +', height='+ height +', top=' + top + ', left=' + left); - } - }); - }else if(jsonObj.errCode == 30071){// ubikey - //20200310 mj - ML4WebDraw.errorHandler("main",ML4WebDraw.MSG_MOB_CANCEL,$("#stg_mobile"),null); - }else if(jsonObj.errCode == 30072){ - ML4WebDraw.confirm( ML4WebDraw.MSG_MOB_UPDATE, function( code, boolean ){ - $("#btn_common_confirm").unbind(); - $("#btn_common_cancle").unbind(); - if( code == 0){ - var ubikeyURL = ML4WebApi.getProperty('cs_ubikey_popupurl'); - var width = 500; - var height = 380; - var top = (screen.availHeight/2) - (height/2); - var left =(screen.availWidth/2) - (width/2); - - window.open(ubikeyURL,'_blank','scrollbars=no,toolbar=no,resizable=no, width='+ width +', height='+ height +', top=' + top + ', left=' + left); - } - }); - }else if(jsonObj.errCode == 30006 || jsonObj.errCode == 202){ - ML4WebDraw.MakeCertiListDiv(null); - EmptyCertDiv(); - }else{ //실패 - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - ML4WebDraw.MakeCertiListDiv(null); - EmptyCertDiv(); - - //alert - //openAlertDialog(jsonObj.errMsg); - if(key == 'pfx' && jsonObj.errCode == 42101){ - //openAlertDialog("PFX 인증서 비밀번호가 틀렸습니다."); - ML4WebDraw.errorHandler("main", $.i18n.prop("ER106"), $("#import_pfx_password"), null); - //DSAlert.openAlert("main", $.i18n.prop("ER106"), $("#import_pfx_password")); - }else{ - //openAlertDialog("해당 인증서 목록 조회에 실패하였습니다."); - ML4WebDraw.errorHandler("main", $.i18n.prop("ER107"), $("#stg_"+key), null); - //DSAlert.openAlert("main", $.i18n.prop("ER107"), null); - } - } - }); - },200); - } - - $('#driver_div').hide(); -} - -function closeSubDriverList(){ - closeDriverDialog(); -} - -function EmptyCertDiv() { - $("#dataTable").MLjquiDataTable('clear'); -} - - -function getFormatDate(paramDate, type){ - var date, year, month, day, hour, minute, second = ''; - - if(type == '1'){ - date = paramDate.split("-"); - year = date[0]; - month = date[1]; - day = date[2]; - - if(month < 10 && month.length < 2){ - month = '0' + month; - } - if(day < 10 && day.length < 2){ - day = '0' + day; - } - - return year + '-' + month + '-' + day; - }else{ - var today = new Date(); - year = today.getFullYear(); - month = today.getMonth()+1; - day = today.getDate(); - hour = today.getHours(); - minute = today.getMinutes(); - second = today.getSeconds(); - - if((month+"").length < 2){ - month = '0' + month; - } - - if((day+"").length < 2){ - day = '0' + day; - } - - if((hour+"").length < 2){ - hour = '0' + hour; - } - - if((minute+"").length < 2){ - minute = '0' + minute; - } - - if((second+"").length < 2){ - second = '0' + second; - } - - return year +''+ month +''+ day +''+ hour +''+ minute +''+ second; - } - -} -function makeSourceData(listObj){ - var data = new Array(); - if(listObj != null && listObj.length > 0){ - for (var i = 0; i < listObj.length; i++) { - var row = {}; - var filter_or_operator = 1; // 상단고정 // - - //var someDate = listObj[i].enddate; - var dateFormated = getFormatDate(listObj[i].enddate, '1'); - - row[DS_CERT_INFO.AIA] = listObj[i].aia; - row[DS_CERT_INFO.AUTHKEYID] = listObj[i].authkeyid; - row[DS_CERT_INFO.CERTPOLICY] = listObj[i].certpolicy; - row[DS_CERT_INFO.CRLDP] = listObj[i].crldp; - //row[DS_CERT_INFO.ENDDATE] = listObj[i].enddate; - row[DS_CERT_INFO.ENDDATE] = dateFormated; - row[DS_CERT_INFO.ENDDATETIME] = listObj[i].enddatetime; - row[DS_CERT_INFO.ISSUERNAME] = listObj[i].issuername; - row[DS_CERT_INFO.KEYUSAGE] = listObj[i].keyusage; - row[DS_CERT_INFO.POLICYID] = listObj[i].policyid; - row[DS_CERT_INFO.POLICYNOTICE] = listObj[i].policynotice; - row[DS_CERT_INFO.PUBKEY] = listObj[i].pubkey; - row[DS_CERT_INFO.PUBKEYALGORITHM] = listObj[i].pubkeyalgorithm; - row[DS_CERT_INFO.REALNAME] = listObj[i].realname; - row[DS_CERT_INFO.SERIALNUM] = listObj[i].serialnum; - row[DS_CERT_INFO.SIGNATUREALGORITHM] = listObj[i].signaturealgorithm; - row[DS_CERT_INFO.STARTDATE] = listObj[i].startdate; - row[DS_CERT_INFO.STARTDATETIME] = listObj[i].startdatetime; - row[DS_CERT_INFO.SUBJECTALTNAME] = listObj[i].subjectaltname; - row[DS_CERT_INFO.SUBJECTNAME] = listObj[i].subjectname; - row[DS_CERT_INFO.SUBKEYID] = listObj[i].subkeyid; - row[DS_CERT_INFO.VERSION] = listObj[i].version; - row["storageEncCertIdx"] = listObj[i].storageEncCertIdx; - // - var tempSubjectname = listObj[i].subjectname.split(","); - var realSubjectname = ""; - $.each(tempSubjectname, function() { - var tempVal1 = this.split("="); - if( tempVal1[0].toLowerCase() == "ou" ){ - var tempVal2 = tempVal1[1].toLowerCase(); - if( tempVal2.toLowerCase() == "personal" ){ - realSubjectname = $.i18n.prop("OID_personal"); - }else if( tempVal2.toLowerCase() == "personalb" ){ - realSubjectname = $.i18n.prop("OID_personalb"); - }else if( tempVal2.toLowerCase() == "corporation4ec" ){ - realSubjectname = $.i18n.prop("OID_corporation4ec"); - }else if( tempVal2.toLowerCase() == "corporation4ecb" ){ - realSubjectname = $.i18n.prop("OID_corporation4ecb"); - } - } - }); - - //row["Policy"] = $.i18n.prop("OID_"+ listObj[i].PolicyIdentifier.split(".").join("_")); - if(realSubjectname.length == 0) { - row["Policy"] = $.i18n.prop("OID_"+ listObj[i].policyid.split(".").join("_")); - }else{ - row["Policy"] = realSubjectname; - } - - if(typeof(listObj[i].source) != 'undefined'){ - row["source"] = listObj[i].source; - } - if(typeof(listObj[i].cloud) != 'undefined'){ - row["cloud"] = listObj[i].cloud; - } - - var tempArr = listObj[i].issuername.split(","); - var tempIssuer = ""; - $.each(tempArr, function() { - var tempArr11 = this.split("="); - if( tempArr11[0].toLowerCase() == "cn" ){ - tempIssuer = tempArr11[1]; - } - }); - row["Issuer"] = tempIssuer; - - //cn=조성아()0020049200510177057911,ou=WOORI,ou=personal4IB,o=yessign,c=kr - //cn=gpkiuser01,ou=GPKI,o=Government of Korea,c=KR - var fullsubjectname = listObj[i].subjectname.toLowerCase(); - var tempArr2 = listObj[i].subjectname.split(","); - var tempCn = ""; - if( fullsubjectname.indexOf("cn") >=0 ){ - $.each(tempArr2, function() { - var tempArr22 = this.split("="); - if( tempArr22[0].toLowerCase() == "cn" ){ - tempCn = tempArr22[1]; - } - }); - }else{ - /*$.each(tempArr2, function() { - var tempArr22 = this.split("="); - if( tempArr22[0].toLowerCase() == "ou" ){ - tempCn = tempArr22[1]; - } - });*/ - tempCn = listObj[i].realname; - } - row["Cn"] = tempCn; - - //unused path - if(typeof(listObj[i].certpath) != 'undefined'){ - row["certpath"] = listObj[i].certpath; - } - - data[i] = row; - } - } - - var source = { - localData: data, - dataType: "array", - dataFields: - [ - { name: DS_CERT_INFO.VERSION, type: 'string' }, - { name: DS_CERT_INFO.SERIALNUM, type: 'string' }, - { name: DS_CERT_INFO.SIGNATUREALGORITHM, type: 'string' }, - { name: DS_CERT_INFO.ISSUERNAME, type: 'string' }, - { name: DS_CERT_INFO.STARTDATE, type: 'string' }, - { name: DS_CERT_INFO.STARTDATETIME, type: 'string' }, - { name: DS_CERT_INFO.ENDDATE, type: 'string' }, - { name: DS_CERT_INFO.ENDDATETIME, type: 'string' }, - { name: DS_CERT_INFO.SUBJECTALTNAME, type: 'string' }, - { name: DS_CERT_INFO.SUBJECTNAME, type: 'string' }, - { name: DS_CERT_INFO.PUBKEY, type: 'string' }, - { name: DS_CERT_INFO.PUBKEYALGORITHM, type: 'string' }, - { name: DS_CERT_INFO.KEYUSAGE, type: 'string' }, - { name: DS_CERT_INFO.CERTPOLICY, type: 'string' }, - { name: DS_CERT_INFO.POLICYID, type: 'string' }, - { name: DS_CERT_INFO.POLICYNOTICE, type: 'string' }, - { name: DS_CERT_INFO.AUTHKEYID, type: 'string' }, - { name: DS_CERT_INFO.SUBKEYID, type: 'string' }, - { name: DS_CERT_INFO.CRLDP, type: 'string' }, - { name: DS_CERT_INFO.AIA, type: 'string' }, - { name: DS_CERT_INFO.REALNAME, type: 'string' }, - { name: 'storageRawCertIdx', type: 'string' }, - { name: 'storageEncCertIdx', type: 'string' }, - { name: 'Policy', type: 'string' }, - { name: 'Cn', type: 'string' }, - { name: 'Issuer', type: 'string' }, - { name: 'source', type: 'string' }, - { name: 'cloud', type: 'string' }, - { name: 'certpath', type: 'string' } //unused path - ] - }; - - return source; -} - -//인증서 선택 -function SelectCert(index){ - - for(var i=0 ; i 0 ) { - $('#ML_Dialog_common').MLjquiWindow('destroy'); - } - if ( $("#ML_dialog_cs_install").length > 0 ) { - $('#ML_dialog_cs_install').MLjquiWindow('destroy'); - } - if ( $("#popup_alert").length > 0 ) { - $('#popup_alert').MLjquiWindow('destroy'); - } - if ( $("#ML_window").length > 0 ) { - $('#ML_window').MLjquiWindow('destroy'); - } - if ( $("#browser_manual").length > 0 ) { - $('#browser_manual').MLjquiWindow('destroy'); - } - }else if(mode=="mgmt"){ - if ( $("#ML_Dialog_mgmt_common").length > 0 ) { - $('#ML_Dialog_mgmt_common').MLjquiWindow('destroy'); - } - if ( $("#popup_mgmt_alert").length > 0 ) { - $('#popup_mgmt_alert').MLjquiWindow('destroy'); - } - if ( $("#ML_window_admin").length > 0 ) { - $('#ML_window_admin').MLjquiWindow('destroy'); - } - }else if(mode=="cs"){ - if ( $("#popup_alert").length > 0 ) { - $('#popup_alert').MLjquiWindow('destroy'); - } - if ( $("#ML_cert_sign_window").length > 0 ) { - $('#ML_cert_sign_window').MLjquiWindow('destroy'); - } - } - - ML4WebUI.closeMainDialog(mode); - }catch(ex){ - ML4WebLog.log(ex.message); - } -} - - -//스마트 인증 WEB 호출 함수 -function OnSmartCertComplete(trID, returnCode, telco, phonenumber, signedData,subjectDN){ - // 서명 결과 처리 페이지 - DS_SmartCert_Dialog.closeWindow(); - - var dsOption = ML4WebUI.getDSOption(); - //console.info('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'); - - // 임시 - if(signedData!=null && signedData!='' && signedData!='null'){ - var storageRawIdxObj = {}; - - storageRawIdxObj.storageName = "smartcert"; - storageRawIdxObj.storageCertIdx = subjectDN; - storageRawIdxObj.storageOpt = {}; - - storageRawIdxObj.storageOpt.servicename='smartcertWEB'; - storageRawIdxObj.storageOpt.serviceOpt={}; - - // 예비 - storageRawIdxObj.storageOpt.serviceOpt.mobileConnURL=''; - storageRawIdxObj.storageOpt.serviceOpt.cryptoAPI=''; - storageRawIdxObj.storageOpt.serviceOpt.signScheme=''; - storageRawIdxObj.storageOpt.serviceOpt.encScheme=''; - storageRawIdxObj.storageOpt.serviceOpt.mdAlg=''; - - - var rawCertIdxStr = JSON.stringify(storageRawIdxObj); - //console.info(">>>>>>>>>>>>>>>>>>>>>>>>"+rawCertIdxStr); -// var rawUECertIdxStr = encodeURIComponent(rawCertIdxStr); - - dsOption.callback(0, {storageCertIdx:ML4WebApi.makeEncMssage(rawCertIdxStr), encMsg: signedData}); - }else{ - - //dsOption.callback(ML4WebLog.getErrCode("Storage_smartcert_Sign"), {"errCode": "888", "errMsg": '취소 되었습니다.'}); - } - -} - -//************************ [START] sub dialog event **********************************/ -function getOS(){ - try{ - var OsVersion = navigator.userAgent; - OsVersion = OsVersion.toUpperCase(); - if( OsVersion.indexOf("NT 5.1") != -1 ) return "windows XP"; - else if( OsVersion.indexOf("NT 6.0") != -1 ) return "windows vista"; - else if( OsVersion.indexOf("NT 6.1") != -1 ) return "windows 7"; - else if( OsVersion.indexOf("NT 6.2") != -1 ) return "windows 8"; - else if( OsVersion.indexOf("NT 6.3") != -1 ) return "windows 8.1"; - else if( OsVersion.indexOf("NT 10.0") != -1 ) return "windows 10"; - else if( OsVersion.indexOf("IPAD") != -1 ) return "IOS"; - else if( OsVersion.indexOf("ANDROID") != -1 ) return "Android"; - else if( OsVersion.indexOf("BLACKBERRY") != -1 ) return "BlackBerry"; - else if( OsVersion.indexOf("MAC") != -1 ) return "MAC"; - else if( OsVersion.indexOf("SYMBIAN") != -1 ) return "Symbian"; - else if( OsVersion.indexOf("UBUNTU") != -1 ){ - if( OsVersion.indexOf("86_64") != -1 ){ - return "LINUX64_UBUNTU64"; - }else{ - return "LINUX32_UBUNTU32"; - } - }else if( OsVersion.indexOf("FEDORA") != -1 ){ - if( OsVersion.indexOf("86_64") != -1 ){ - return "LINUX64_FEDORA64"; - }else{ - return "LINUX32_FEDORA32"; - } - } - else if( OsVersion.indexOf("LINUX") != -1 ){ - if( OsVersion.indexOf("86_64") != -1 ){ - return "LINUX64"; - }else{ - return "LINUX32"; - } - } - else return "Unknown"; - }catch( ex ) { - return "Unknown"; - } -} - -function installCheck(mode){ - var os_ver = ML4WebApi.getProperty("os"); - if(os_ver=="Android" || os_ver=="IPHONE" || os_ver=="IPAD" || os_ver=="BlackBerry"){ - ML4WebDraw.errorHandler("main", "해당 사이트 스마트 인증은
            모바일 기기를 지원하지 않습니다.", $("#stg_web"), null); - //DSAlert.openAlert("main", "해당 사이트 스마트 인증은
            모바일 기기를 지원하지 않습니다.", null); - return; - }else { - var default_stg = ML4WebApi.getProperty("defaultStorage"); - var stgArr = ML4WebApi.getProperty("storageList"); - var browser = ML4WebApi.get_browser_info(); - - var checkobj = {}; - checkobj.defaultStorage = default_stg; - checkobj.storageList = stgArr; - checkobj.browserInfo = browser; - - ML4WebApi.getCsManager().sendURLScheme(function(){ - - }); - - ML4WebCS.installCheck(mode, function(code, obj){ - if(code == 0){ - ML4WebCS.updateCheck(mode, function(code, updateObj){ - if(updateObj.is_cs_update == true){ - openCSUpdateDialog(mode); - }else{ - checkobj.installcheck = updateObj.is_cs_install; - checkobj.updatecheck = updateObj.is_cs_update; - - ML4WebDraw.MakeStorageListDiv(checkobj); - ML4WebDraw.initWebMainEvent(); - if(default_stg != null && default_stg != ""){ - $("#stg_" + default_stg).click(); - }else{ - ML4WebDraw.MakeCertiListDiv(null); - } - } - }); - }else{ - if(obj.csUpdateChk == "upgrade"){ // update - openCSUpdateDialog(mode); - }else{ - openCSInstallDialog(mode); - } - } - }); - } -} - -//CS Update 팝업 -function openCSUpdateDialog(mode){ - var browser = ML4WebApi.getProperty('browser'); - var os_ver = ML4WebApi.getProperty("os"); - - if(os_ver == ""){ - os_ver = getOS(); - } - - if(os_ver.indexOf("LINUX") > -1){ - $("#csContainer").load("UI/ML4Web_Cs_Linux_Install.html?random=" + Math.random() * 99999, function(){ - $('#ML_install').MLjquiWindow('open', function(e){}); - }); - }else{ - var popOption = { - mode: mode, - title: $.i18n.prop("TS040"), - showCert:false, - certData:null, - onclick:"installProgram", - contentKey:"install_update", - dialogHeight:"225px" - }; - } - //새로 - var btnObj = $("#stg_" + ML4WebApi.webConfig.storageList[0]); - DSDialog.openDialog(popOption, btnObj, function(code,jsonObj){}); -} - -//CS 설치유도 팝업 -function openCSInstallDialog(mode){ - var browser = ML4WebApi.getProperty('browser'); - var os_ver = ML4WebApi.getProperty("os"); - - if(os_ver == ""){ - os_ver = getOS(); - } - - if(os_ver.indexOf("LINUX") > -1){ - $("#csContainer").load("UI/ML4Web_Cs_Linux_Install.html?random=" + Math.random() * 99999, function(){ - $('#ML_install').MLjquiWindow('open', function(e){}); - }); - }else{ - var popOption = { - mode: mode, - title: $.i18n.prop("TS039"), - showCert:false, - certData:null, - onclick:"installProgram", - contentKey:"install_cs", - dialogHeight:"180px" - }; - } - //20200310 mj - var btnObj = $("#stg_" + ML4WebApi.webConfig.storageList[0]); - DSDialog.openDialog(popOption, btnObj, function(code,jsonObj){}); -} - -function installProgram(){ - //alert("installProgram....."); - $("#jqxLoader").MLjquiLoader({ width: 100, height: 60, imagePosition: 'top' }); - $('#jqxLoader').MLjquiLoader('open'); - - var installPageUrl = ML4WebApi.getProperty("cs_install_page_url"); - - var downloadCount = 0; - - try{ - if( downloadCount < 2 ){ - downloadCount++; - var os_ver = ML4WebApi.getProperty("os"); - var installType = ML4WebApi.getProperty("cs_install_type"); - - if(installType == "download"){ - if( os_ver.indexOf("MAC")> -1 ){ - document.location.href = ML4WebApi.getProperty("cs_download_mac"); - }else if( os_ver.indexOf("UBUNTU64")> -1 ){ - document.location.href = ML4WebApi.getProperty("cs_download_linux_ubuntu64"); - }else if( os_ver.indexOf("UBUNTU32")> -1 ){ - document.location.href = ML4WebApi.getProperty("cs_download_linux_ubuntu32"); - }else if( os_ver.indexOf("FEDORA64")> -1 ){ - document.location.href = ML4WebApi.getProperty("cs_download_linux_fedora64"); - }else if( os_ver.indexOf("FEDORA32")> -1 ){ - document.location.href = ML4WebApi.getProperty("cs_download_linux_fedora32"); - }else { - document.location.href = ML4WebApi.getProperty("cs_download_win"); - } - DSDialog.closeDialog(function(code, obj){}); - }else{ - window.top.location.href = installPageUrl; - } - }else{ - return; - } - }catch(e){ - if(installType == "download"){ - document.location.href = downloadURL + downloadWinFileName; - DSDialog.closeDialog(function(code, obj){}); - }else{ - window.top.location.href = installPageUrl; - } - } -} - -//인증서 상세보기 -function openCertViewDialog(data){ - var jqxwidget2 = $('#ML_window'); - var offset2 = jqxwidget2.offset(); - - if ( $("#ML_window_detail").length > 0 ) { - $('#ML_window_detail').MLjquiWindow('title', $.i18n.prop("TS006")); - - $('#ML_window_detail').MLjquiWindow('open', function(e){ - refreshCertView(data); - }); - }else{ - //$("#certDetailContainer").load("../ML4Web/UI/ML4Web_Cert_View.html", function(){ - $("#certDetailContainer").load("../ML4Web/UI/ML4Web_Cert_View.html?random="+Math.random() * 99999, function(){ - if(!magiclineUtil.isMobile(magiclineUtil.getOS())){ - $('#ML_window_detail').MLjquiWindow({position:{x: offset2.left + 15, y: offset2.top + 50}}); - }else{ - var os_ver = ML4WebApi.getProperty("os"); - var detailWidth; - var detailHeight; - var orientation = window.orientation; - if( orientation == 0 ){ - detailWidth = screen.width; - if(os_ver == "IPHONE" || os_ver == "IPAD" ){ - if(screen.height >= 500){ - detailHeight = screen.height-50; - } - }else{ - detailHeight = screen.height; - } - }else{ - if(os_ver == "IPHONE" || os_ver == "IPAD" ){ - if(screen.height >= 800){ - detailWidth = screen.height - 100 - }else{ - detailWidth = screen.height; - } - detailHeight = screen.width; - }else{ - detailWidth = screen.width; - detailHeight = screen.height; - } - } - $('#ML_window_detail').MLjquiWindow({ - position:{x: offset2.left, y: offset2.top}, - width:detailWidth,height:detailHeight - }); - - } - $('#ML_window_detail').MLjquiWindow('open', function(e){ - initDetailEventHandler(); - refreshCertView(data); - }); - }); - } -} - -//인증서 삭제(비번확인 없는 경우) -function deleteCertNonePwd(mode, key, data){ - //ML4WebLog.log("[ML4Web_Main.js]deleteCertNonePwd() data === " + JSON.stringify(data)); - var confirm_txt = ""; - - if(key == "token"){ - confirm_txt = "confirm_txt_token"; - }else{ - confirm_txt = "confirm_txt"; - } - - var popOption = { - mode: mode, - title:"인증서 삭제", - showCert:true, - certData:data, - onclick:"procDeleteCertNonePwd", - contentKey:confirm_txt, - dialogHeight:"200px" - }; - - //20200310 mj - var btnObj = $('#btn_deleteCert'); - DSDialog.openDialog(popOption, btnObj, function(code,jsonObj){}); -} - -//인증서 삭제(비번확인 없는 경우) -function procDeleteCertNonePwd(data) { - var mode = DSDialog.getProperty("mode"); - var storageCertIdx = data.storageEncCertIdx; - var stgKey = ML4WebUI.selectedStorage.key; - var passwd = ""; - if(stgKey == "token"){ - var passwd = $('#input_token_pw_confirm').val(); - - if(passwd==null || passwd==""){ - if(mode=='main') { - //openAlertDialog("인증서 비밀번호를 입력하세요."); - ML4WebDraw.errorHandler("main", $.i18n.prop("ES026"), $("#input_token_pw_confirm"), null); - } else if(mode=='mgmt') { - //openMgmtAlertDialog("인증서 비밀번호를 입력하세요."); - ML4WebDraw.errorHandler("mgmt", $.i18n.prop("ES026"), $("#input_token_pw_confirm"), null); - } - return false; - } - } - - ML4WebUI.deleteStorageCert( storageCertIdx, passwd, function(code, obj){ - if( code == 0) { - //ML4WebLog.log("[deleteCertNonePwd success!!!] Result === " + JSON.stringify(obj)); - if(obj.result == true){ - DSDialog.closeDialog(function(code, obj){ - //목록 초기화 - ML4WebUI.getStorageCertList(null, function(resultCode, jsonObj) { - if( resultCode == 0) {//성공 - if(mode=='main'){ - ML4WebDraw.MakeCertiListDiv(jsonObj.cert_list); - //20200310 mj - DSAlert.openAlert("main", $.i18n.prop("ES009"), $('#btn_deleteCert')); - - }else if(mode=='mgmt'){ - ML4WebDraw.makeAdminCertiListDiv(jsonObj.cert_list); - //20200310 mj - DSAlert.openAlert("mgmt", $.i18n.prop("ES009"), $('#btn_deleteCert')); - } - }else{ //실패 - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - if(mode=='main'){ - ML4WebDraw.MakeCertiListDiv(null); - //20200310 mj - DSAlert.openAlert("main", $.i18n.prop("ES009"), $('#btn_deleteCert')); - }else if(mode=='mgmt'){ - ML4WebDraw.makeAdminCertiListDiv(null); - //20200310 mj - DSAlert.openAlert("mgmt", $.i18n.prop("ES009"), $('#btn_deleteCert')); - } - } - }); - }); - - //backup localStorage - ML4WebUtil.setBackupCertList(null); - }else{ - if(mode=='main') { - //openAlertDialog("삭제에 실패하였습니다."); - DSAlert.openAlert("main", $.i18n.prop("ES017"), null); - } else if(mode=='mgmt') { - //openMgmtAlertDialog("삭제에 실패하였습니다."); - DSAlert.openAlert("mgmt", $.i18n.prop("ES017"), null); - } - } - }else{ //실패 - ML4WebLog.log("[ERROR!!! - "+code+" ] errCode === " + obj.errCode + ", errMsg === " + obj.errMsg); - } - }); -} - - -//TODO 브라우저 인증서 -//브라우저인증서저장 버튼 활성화/비활성화 flag - -function openImportCertDialog(select_stg){ - var os_ver = ML4WebApi.getProperty("os"); - var keyName = ""; - var dialogHeight = ""; - - var popOption = { - mode:"main", - title: $.i18n.prop("TS036"), - showCert:false, - certData:{}, - onclick:"importCertToBrowser", - contentKey:"add_browser", - dialogHeight:"430px", - selectStg:select_stg - }; - - //20200310 mj - var btnObj = $('#in_browser'); - DSDialog.openDialog(popOption, btnObj, function(code,jsonObj){ - - if(ML4WebApi.getProperty("storageList").indexOf("web_kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("web") > -1){ - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - npPfsCtrl.RegistDynamicField("form1", "add_browser_password"); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM"){ - ML4WebVKey.init(1); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType === "INCA"){ - npPfsCtrl.RegistDynamicField("form1", "add_browser_password"); - }else if( ML4WebApi.webConfig.useVirtualKeyboard && ML4WebApi.webConfig.virtualKeyboardType === "DREAM"){ - ML4WebVKey.init(1); - } - } - - if($("#filefile2").val() == ""){ - $("#add_browser_password").val('').prop("disabled",true); - $("#add_browser_password").css({ 'pointer-events': 'none' }); - } - - //filePicker 선택시 처리 - $('#filefile2').change(function(evt){ - if( evt.target.files.length > 0 ){ - $("#add_browser_password").val('').prop("disabled",false); - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - initializedNFilter(); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - //npPfsCtrl.RegistDynamicField("form1", "add_browser_password"); - } - } - certFileProcess( evt.target.files ); - } - }); - }); -} - -// 만료된 인증서 안내 팝업 띄우기 함수 -function certExpirePopup(obj, cert_datetime, callback){ - var isExpired = ML4WebUtil.isDateExpired(cert_datetime); - if(isExpired){ - var popOption = { - mode:"main", - title: $.i18n.prop("TS042"), - message: $.i18n.prop("TS095"), - showCert:false, - certData:{obj:obj, callback:callback}, - onclick:"confirmExpiredPopup", - contentKey:"check_cert_expire", - dialogHeight:"200px" - }; - //20200310 mj - var btnObj = $("#btn_confirm_iframe"); - DSDialog.openDialog(popOption, btnObj, function(){}); - } else { - callback(0, obj); - } -} - -function confirmExpiredPopup(data){ - data.callback(0, data.obj); -} - - -/* - * 가상키패드 입력에 따른 비밀번호 처리 함수 - */ -function vpad( tag, callback ){ - if(ML4WebApi.getProperty("storageList").indexOf("web_kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("kftc") > -1 || ML4WebApi.getProperty("storageList").indexOf("web") > -1){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if(keyboardCheck){ - var eleName = tag; - var pubkey = "-----BEGIN CERTIFICATE-----MIIBCgKCAQEAwWmijy+IsrsM34E6ixbRWZln7ZEnsIFg7ey9wjBlXwn816iKXHVhdr6LIkl4Ks/FY2T/DFJ+Kltw7AICsBTNDLnNZz7nWWVQlq86IJq5ejkrZR88BtQ4aPRshkL8l+DH1Qf4a1A7r/HbGfo/Ad80ns4Z9Z4T5oywX9YMsF2QBAMh+ORE04nwWzkFhrjPkYUiM2sJpWrvJO6FOoidLkCMq8jVu+axhsx6LAraO13F67Ui9NlAydCHtBybZavcfnbhJSUs4QwVfeks58o1+QHLA/hZG4/XbUKWyVmZBK7tt/ZeZuXOtvZVljU3rmjvEb4+FON2kwoplq8iM7hRxFLbFQIDAQAB-----END CERTIFICATE-----"; - var r = transkey_GetEncDream(pubkey,eleName); - //alert("base64 인코딩 값 : " + r); - //base64 Decode 적용 - var data = ML4WebApi.base64Decode(r); - browserPasswd = data; - callback( 0, browserPasswd ); - }else{ - browserPasswd = $('#'+tag).val(); - callback( 0, browserPasswd ); - } - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - var encData = nFilterEncrypted(); - nFilterJSProcess( encData, "", function(code, data){ - if( code == 0){ - browserPasswd = data; - callback( 0, browserPasswd ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var reEncryptValue = npPfsCtrl.GetEncryptResult(document.body, tag); - reEncryptValue = reEncryptValue.trim(); - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - ml4web_crypto_api.incaDecrypt(reEncryptValue, function(code, obj){ - if(code == 0){ - callback( 0, obj.stringResult ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM"){ - var result = ML4WebVKey.getDecryptedPassword(tag, function(message){ - callback( 0, message ); - }); - }else{ - browserPasswd = $('#'+tag).val(); - callback( 0, browserPasswd ); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if(keyboardCheck){ - var eleName = tag; - var pubkey = "-----BEGIN CERTIFICATE-----MIIBCgKCAQEAwWmijy+IsrsM34E6ixbRWZln7ZEnsIFg7ey9wjBlXwn816iKXHVhdr6LIkl4Ks/FY2T/DFJ+Kltw7AICsBTNDLnNZz7nWWVQlq86IJq5ejkrZR88BtQ4aPRshkL8l+DH1Qf4a1A7r/HbGfo/Ad80ns4Z9Z4T5oywX9YMsF2QBAMh+ORE04nwWzkFhrjPkYUiM2sJpWrvJO6FOoidLkCMq8jVu+axhsx6LAraO13F67Ui9NlAydCHtBybZavcfnbhJSUs4QwVfeks58o1+QHLA/hZG4/XbUKWyVmZBK7tt/ZeZuXOtvZVljU3rmjvEb4+FON2kwoplq8iM7hRxFLbFQIDAQAB-----END CERTIFICATE-----"; - var r = transkey_GetEncDream(pubkey,eleName); - //alert("base64 인코딩 값 : " + r); - //base64 Decode 적용 - var data = ML4WebApi.base64Decode(r); - browserPasswd = data; - callback( 0, browserPasswd ); - }else{ - browserPasswd = $('#'+tag).val(); - callback( 0, browserPasswd ); - } - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - var encData = nFilterEncrypted(); - nFilterJSProcess( encData, "", function(code, data){ - if( code == 0){ - browserPasswd = data; - callback( 0, browserPasswd ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var reEncryptValue = npPfsCtrl.GetEncryptResult(document.body, tag); - reEncryptValue = reEncryptValue.trim(); - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - ml4web_crypto_api.incaDecrypt(reEncryptValue, function(code, obj){ - if(code == 0){ - callback( 0, obj.stringResult ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "DREAM"){ - var result = ML4WebVKey.getDecryptedPassword(tag, function(message){ - callback( 0, message ); - }); - } - }else{ - browserPasswd = $('#'+tag).val(); - callback( 0, browserPasswd ); - } - } -} - -// 인증서 가져오기 확인버튼 동작 -function importCertToBrowser(){ - - $("#form1").attr("style", "display:none;"); - - // 열기버튼(파일탐색기) - var CheckPfx = $('#pfx_file').text().indexOf(".pfx"); - var CheckP12 = $('#pfx_file').text().indexOf(".p12"); - - var b64Cert = $('#file_route').attr("b64Cert"); - var b64CertKey = $('#file_route').attr("b64CertKey"); - var kmCert = $('#file_route').attr("kmCert"); - var kmPri = $('#file_route').attr("kmPri"); - - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - - var browserPasswd = ""; - // 가상키패드 추가 - vpad("add_browser_password", function( code, browserPasswd ){ - if( code == 0 ){ - var bPW = ml4web_crypto_api.HD_api( browserPasswd ); - - var targetFields = []; - var storageRawCertIdx = {}; - storageRawCertIdx.storageName = 'web'; - storageRawCertIdx.storageOpt = {}; - - if(( CheckPfx > -1) || ( CheckP12 > -1) || ($('#file_route2').val().indexOf(".pfx") > -1) || ($('#file_route2').val().indexOf(".p12") > -1)){ - ml4web_crypto_api.pfxImport( b64Cert, bPW, function( code, data ){ - if( code === 0 ){ - if(data.result.kmcert != ""){ - storageRawCertIdx.kmcert = data.result.kmcert; - } - if(data.result.kmpri != ""){ - storageRawCertIdx.kmpri = data.result.kmpri; - } - storageRawCertIdx.signcert = data.result.signcert; - storageRawCertIdx.signpri = data.result.signpri; - importCertDoAction( bPW, targetFields, storageRawCertIdx ); - return; - }else if( code === 42101){ - $("#add_browser_password").val('').prop("disabled",true); - convertFilesToBase64StringErrorDialog( 106 ); - }else{ - $("#add_browser_password").val('').prop("disabled",true); - convertFilesToBase64StringErrorDialog( 108 ); - } - }); - }else{ - storageRawCertIdx.signcert = b64Cert; - storageRawCertIdx.signpri = b64CertKey; - if(kmCert != ""){ - storageRawCertIdx.kmcert = kmCert; - } - if(kmPri != ""){ - storageRawCertIdx.kmpri = kmPri; - } - - importCertDoAction( bPW, targetFields, storageRawCertIdx ); - return; - } - } - }); -} - -//filePicker or dragAndDrop 기능처리 -function importCertDoAction( bPW, targetFields, storageRawCertIdx ){ - var resultobj = {}; - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - - if(storageRawCertIdx.signcert==null || storageRawCertIdx.signcert==""){ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER111"), $("#in_browser"), null); - return false; - }else if(storageRawCertIdx.signpri==null || storageRawCertIdx.signpri==""){ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER112"), $("#in_browser"), null); - return false; - }else if(bPW==null || bPW==""){ - ML4WebDraw.errorHandler("main", $.i18n.prop("ES006"), $("#add_browser_password"), null); - return false; - } - - ml4web_crypto_api.getcertInfo( storageRawCertIdx.signcert, targetFields, function( code, obj ){ - if(code == 0){ - var certbag = {}; - var targetStorageOpt = '{}'; - var storageList = ML4WebApi.getProperty("storageList"); - var targetStorage = ""; - - if(storageList.indexOf("web_kftc") >= 0){ - targetStorage = "web_kftc"; - } else{ - targetStorage = "web"; - } - - storageRawCertIdx.storageCertIdx = obj.result.subkeyid; - obj.result.storageEncCertIdx = ML4WebApi.makeEncMssage(JSON.stringify(storageRawCertIdx)); - - resultobj.rowData = obj.result; - if(storageRawCertIdx.kmcert != ""){ - resultobj.kmcert = storageRawCertIdx.kmcert; - } - if(storageRawCertIdx.kmpri != ""){ - resultobj.kmpri = storageRawCertIdx.kmpri; - } - resultobj.signcert = storageRawCertIdx.signcert; - resultobj.signpri = storageRawCertIdx.signpri; - resultobj.pw = bPW; - resultobj.selectedStg = targetStorage; - - var isExpired = ML4WebUtil.isDateExpired(resultobj.rowData.enddatetime); - if(isExpired){ - $("#add_browser_password").val('').prop("disabled",true); - convertFilesToBase64StringErrorDialog( 119 ); - return; - } - - //certbag kmcert, signcert - resultobj.certbag = {}; - if(storageRawCertIdx.kmcert != "" ){ - resultobj.certbag.kmcert = storageRawCertIdx.kmcert; - } - if(storageRawCertIdx.kmpri != ""){ - resultobj.certbag.kmpri = storageRawCertIdx.kmpri; - } - resultobj.certbag.signcert = storageRawCertIdx.signcert; - resultobj.certbag.signpri = storageRawCertIdx.signpri; - - var certList = [obj.result]; - Storage_API_filter.selectfilteredCertList(certList, function(code2, obj2){ - if(code2==0 && obj2.filtered_list.length == 0){ - //지원안함 - convertFilesToBase64StringErrorDialog( 31 ); - return; - }else{ - if($('#browser_save_yn') && $('#browser_save_yn').is(':checked')){ - //certbag kmcert, signcert - if(storageRawCertIdx.kmcert != ""){ - certbag.kmcert = storageRawCertIdx.kmcert; - } - if(storageRawCertIdx.kmpri != ""){ - certbag.kmpri = storageRawCertIdx.kmpri; - } - certbag.signcert = storageRawCertIdx.signcert; - certbag.signpri = storageRawCertIdx.signpri; - - ML4WebUI.selectStorageInfo(targetStorage, function(resultCode, jsonObj){ - if( resultCode == 0) { - ML4WebUI.saveCertToStorage( certbag, bPW, targetStorage, targetStorageOpt, function( code, obj ){ - if(code == 0){ - ML4WebUtil.setBackupCertList(null); - - // oid 필터 구분하여 callback code 정의 - var policyID = resultobj.rowData.policyid + ","; - var policyIDList = ML4WebApi.getProperty("cert_filter_oid"); - var policyIDList_new = ""; - - var filter_arr = policyIDList.split(","); - var filterArrCnt = filter_arr.length; - for(var i=0; i -1){ - if(isExpired){ - resultobj.errCode = 32; - resultobj.errMsg = $.i18n.prop("ER119"); - ML4WebUI.callback(ML4WebLog.getErrCode("ML4Web_UI_saveCertToStorage"), resultobj); - }else{ - ML4WebUI.callback(code, resultobj); - } - }else{ - resultobj.errCode = 31; - resultobj.errMsg = $.i18n.prop("ES031"); - ML4WebUI.callback(ML4WebLog.getErrCode("ML4Web_UI_saveCertToStorage"), resultobj); - } - }else{ - ML4WebUI.callback(code, resultobj); - } - - }else if(code == 2423){ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER300"), $("#in_browser"), null); - }else if(code == 2424){ - //20200310 mj - ML4WebDraw.errorHandler("main", obj, $("#in_browser"), null); - }else{ - if(obj.errCode == 30009){ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER101"), $("#in_browser"), null); - }else if(obj.errCode == 41401){ - ML4WebCert.certErrorHandler(40701, obj); - }else{ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER113"), $("#in_browser"), null); - } - } - }); - } else{ - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - EmptyCertDiv(); - } - }); - }else{ - ML4WebUI.callback(0, resultobj); - } - } - }); - } - }); -} - -function handleDragOver(evt) { - evt.stopPropagation(); - evt.preventDefault(); -} - - - -//인증서 찾기창 Open -function openSearchPfxDialog(){ - var os_ver = ML4WebApi.getProperty("os"); - var keyName = ""; - var dialogHeight = ""; - - if(os_ver=="Android" || os_ver=="IPHONE" || os_ver=="BlackBerry"){ - keyName = "import_pfx_m"; - dialogHeight = "215px" - }else if(os_ver=="IPAD"){ - dialogHeight = "215px" - }else{ - keyName = "import_pfx"; - dialogHeight = "295px" - } - - var popOption = { - mode:"main", - title:$.i18n.prop("TS090"), - showCert:false, - certData:{}, - onclick:"importPfx", - contentKey:keyName, - dialogHeight:dialogHeight - }; - //20200313 mj - DSDialog.openDialog(popOption, null, $("#stg_pfx")); -} - -//input file focus -function focusPfxFileObj(param){ - if(param=="open"){ - $("#span_filefile").removeClass("ML_cert_file_btn"); - $("#span_filefile").addClass("ML_cert_file_btn_fcs"); - }else if(param=="close"){ - $("#span_filefile").removeClass("ML_cert_file_btn_fcs"); - $("#span_filefile").addClass("ML_cert_file_btn"); - } -} - -//TODO PFX 변환 프로그램 윈도우에서만 다운받도록 수정 -function pfxExportdownload(){ - var os_ver = ML4WebApi.getProperty("os"); - - if(os_ver =="windows 7" || os_ver == "windows 8" || os_ver == "windows 8.1" || os_ver == "windows 10"){ - document.location.href = ML4WebApi.getProperty("PfxExportDownloadUrl"); - }else{ - DSAlert.openAlert("main", "PFX 인증서 변환 프로그램은 Windows 계열만 지원합니다.",null) - } -} - - -function pad(n, width) { - n = n + ''; - return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n; -} - -//certFile -> base64 에러처리 공통 -function convertFilesToBase64StringErrorDialog( code ){ - if(code == 31){ - code = pad(code, 3); - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ES"+code), $("#in_browser"), null); - }else{ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER"+code), $("#in_browser"), null); - } - - $('.ML_cert_orgtext_area2').attr('style','display:none;'); - $('#drag_info_img').show(); - initTable(); - return; -} - -// drag and drop 이벤트 처리 -function DragAndDropCert(evt) { - evt.stopPropagation(); // Do not allow the drop event to bubble. - evt.preventDefault(); // Prevent default drop event behavior. - initTable(); - $("#add_browser_password").val('').prop("disabled",false); - certFileProcess( evt.dataTransfer.files ); -} - -//인증서 테이블 초기화 -function initTable(){ - $('#file_route').text(""); - $('#file_route_issuer').text(""); - $('#file_route_enddate').text(""); - $('#pfx_type').text(""); - $('#pfx_file').text(""); - $('#filefile2').val(""); - $('#file_route2').val(""); -} - - -//certfile처리 공통 -function certFileProcess( files ){ - - var today = new Date(); - var yyyy = today.getFullYear(); // 2017 - var mm = today.getMonth()+1; // 11 - var dd = today.getDate(); // 29 - - var b64Cert=''; - var b64CertKey=''; - var kmCert=''; - var kmPri=''; - var targetFields = []; - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - - $('#file_route2').val(''); - $('#file_route2').removeAttr("b64Cert"); - $('#file_route2').removeAttr("b64CertKey"); - $('#file_route2').removeAttr("kmCert"); - $('#file_route2').removeAttr("kmPri"); - - ML4WebApi.convertFilesToBase64String( files , function( code, data ){ - - if( code == 0 ){ - $('#file_route2').val( data.fileName ); - if( data.type === "cert" ){ - - $('.ML_cert_orgtext_area2').attr('style','display:"";'); - $('#drag_info_img').hide(); - $('#cert_der').attr('style','display:"";'); - $('#cert_pfx').attr('style','display:none;'); - - $('#file_route').attr( "b64Cert", data.cert ); - $('#file_route').attr( "b64CertKey", data.key ); - $('#file_route').attr( "kmCert", data.kmCert ); - $('#file_route').attr( "kmPri", data.kmPri ); - - ml4web_crypto_api.getcertInfo( data.cert, targetFields, function( code, obj ){ - - if(code == 0){ - - var issurname = (obj.result.issuername).split(','); - var issuerOrganization=(issurname[1].split('='))[1]; - var issuerName = ""; - var EndDate = ""; - var enddate_split = (obj.result.enddate).split('-'); - var certName = ""; - var CN = (obj.result.subjectname).split(','); - var CN_Name = (CN[0].split('='))[1]; - var use_Name = obj.result.policyid; - - // 인증서명 길이 체크 길이24 가 마지노선 - if(CN_Name.length > 24){ - certName = CN_Name.substring(0,18) + "..."; - }else{ - certName = CN_Name; - } - - // 만료된 인증서 - var isExpired = ML4WebUtil.isDateExpired(obj.result.enddatetime); - - if(isExpired){ - $("#add_browser_password").val('').prop("disabled",true); - convertFilesToBase64StringErrorDialog( 119 ); - return; - } - - var certList = [obj.result]; - Storage_API_filter.selectfilteredCertList(certList, function(code2, obj2){ - if(code2==0 && obj2.filtered_list.length == 0){ - //지원안함 - convertFilesToBase64StringErrorDialog( 31 ); - return; - }else{ - // 날짜 형식 맞춤 - if(enddate_split[1] < 10){ - enddate_split[1] = "0" + enddate_split[1]; - } - if(enddate_split[2] < 10){ - enddate_split[2] = "0" + enddate_split[2]; - } - EndDate = enddate_split[0] + "-" + enddate_split[1] + "-" + enddate_split[2]; - - // 발급기관 - if(issuerOrganization.toUpperCase() == "GPKI"){ - issuerName = issuerOrganization; - }else{ - issuerName = (issurname[2].split('='))[1]; - } - - $('#sub_title').text($.i18n.prop("ES045")); - // 마우스 가져갔을때 가져온 여러 인증서 내용 풀네임 출력 - $('#file_route').attr("title",CN_Name); - $('#file_route').text(certName); - $('#file_route_issuer').text(issuerName); - $('#file_route_enddate').text(EndDate); - - //pfx_file init - $('#pfx_file').text(""); - } - }); - - }else{ - $("#add_browser_password").val('').prop("disabled",true); - convertFilesToBase64StringErrorDialog( 120 ); - return; - } - }); - }else{ - // pfx - $('.ML_cert_orgtext_area2').attr('style','display:"";'); - $('#drag_info_img').hide(); - $('#cert_der').attr('style','display:none;'); - $('#cert_pfx').attr('style','display:"";'); - - $('#file_route').attr( "b64Cert", data.pfx ); - - if( data.type == "pfx"){ - $('#sub_title').text($.i18n.prop("TS088")); - }else{ - $('#sub_title').text($.i18n.prop("TS089")); - } - - $('#pfx_type').text( data.type ); - var pfxPath = 'C:/fakepath/' + data.fileName; - $('#pfx_file').text(pfxPath); - } - }else{ - $("#add_browser_password").val('').prop("disabled",true); - convertFilesToBase64StringErrorDialog( code ); - return; - } - }); -} - - -//drag한 인증서 파일에 따라 테이블 형태를 변경 -function tableState(files){ - if((files[0].name.indexOf(".cer") > -1) || (files[0].name.indexOf(".der") > -1) || (files[0].name.indexOf(".key") > -1)){ - $('.ML_cert_orgtext_area2').attr('style','display:"";'); - $('#drag_info_img').hide(); - $('#cert_der').attr('style','display:"";'); - $('#cert_pfx').attr('style','display:none;'); - }else{ - $('.ML_cert_orgtext_area2').attr('style','display:"";'); - $('#drag_info_img').hide(); - $('#cert_der').attr('style','display:none;'); - $('#cert_pfx').attr('style','display:"";'); - } -} - -//************************ [END] sub dialog event **********************************/ - -/** - * CS 인스톨, 업데이트 체크 함수 -*/ -var ML4WebCS = { - - installCheck : function(mode, callback){ - - if(magiclineUtil.isMobile(magiclineUtil.getOS())){ - - //errorHandler("main", "해당 사이트 스마트 인증은
            모바일 기기를 지원하지 않습니다.", null, null); - callback(10001,"Mobile"); - return; - } - - var callbackObj = {}; - - ML4WebApi.getCsManager().checkinstall(function(code, obj){ - - if(code == 0){ - - ML4WebApi.setProperty("is_cs_install", true); - ML4WebCS.updateCheck(mode, callback); - return; - }else{ - - if(obj.csUpdateChk == "upgrade"){ - //ML4WebDraw.openCSUpdateDialog(mode); - - ML4WebApi.setProperty("is_cs_install", false); - ML4WebApi.setProperty("is_cs_update", true); - - callbackObj.is_cs_install = false; - callbackObj.is_cs_update = true; - - - }else{ - //ML4WebDraw.openCSInstallDialog(mode); - - ML4WebApi.setProperty("is_cs_install", false); - ML4WebApi.setProperty("is_cs_update", false); - - callbackObj.is_cs_install = false; - callbackObj.is_cs_update = false; - - } - callback(code, callbackObj); - } // end of else - }); - - }, - updateCheck : function(mode, callback){ - - ML4WebApi.getCsManager().checkupdate(function(code, obj){ - //true : upgrade 필요, false : 최신버전 - ML4WebLog.log("[main]ML4WebApi.getCsManager().checkupdate callback code === "+code + " / obj === " + JSON.stringify(obj)); - - var callbackObj = { - is_cs_install : true - }; - - if(code == 0){ - if(obj.msg == "upgrade"){ - - //ML4WebDraw.openCSUpdateDialog(mode); - ML4WebApi.setProperty("is_cs_install", true); - ML4WebApi.setProperty("is_cs_update", true); - - callbackObj.is_cs_update = true; - - }else{ - - ML4WebApi.setProperty("is_cs_install", true); - ML4WebApi.setProperty("is_cs_update", false); - - callbackObj.is_cs_update = false; - - } - }else{ // end if(code == 0) - - ML4WebApi.setProperty("is_cs_update", false); - callbackObj.is_cs_update = false; - } - - callback(code, callbackObj); - - }); - } -} - -$('#input_cert_pw_save').click(function(){ - $('#input_cert_pw_save').removeAttr("style"); - keyboardCheck = false; - if(!keyboardCheck){ - if(!magiclineUtil.isMobile(magiclineUtil.getOS())){ - if(selectMedia === "web_kftc" || selectMedia === "web"){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - $("#input_cert_pw_save").val('').prop("disabled",true); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#input_cert_pw_save').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-input_cert_pw_save").css("z-index", 111111); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - $("#input_cert_pw_save").val('').prop("disabled",true); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#input_cert_pw_save').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-input_cert_pw_save").css("z-index", 111111); - } - } - } - } - } - $('#input_cert_pw_save').val(""); -}); - -//인증서 저장 엔터키 이벤트 리스너 -function saveCertEnterKeyEvent(e){ - if (e.keyCode == 13) { - $('#btn_confirm_saveCert').click(); - } else { - e.keyCode == 0; - return; - } -} - -// 인증서 저장 버튼 클릭 이벤트 -$('#btn_confirm_saveCert').click(function () { - clickSaveConfirmBtn(); -}); - -function clickSaveConfirmBtn(){ - if(magiclineUtil.isMobile(magiclineUtil.getOS())){ - var data = $('#input_cert_pw_save').val(); - saveCertconfirmProcess( data ); - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if(keyboardCheck){ - var eleName = "input_cert_pw_save"; - var pubkey = "-----BEGIN CERTIFICATE-----MIIBCgKCAQEAwWmijy+IsrsM34E6ixbRWZln7ZEnsIFg7ey9wjBlXwn816iKXHVhdr6LIkl4Ks/FY2T/DFJ+Kltw7AICsBTNDLnNZz7nWWVQlq86IJq5ejkrZR88BtQ4aPRshkL8l+DH1Qf4a1A7r/HbGfo/Ad80ns4Z9Z4T5oywX9YMsF2QBAMh+ORE04nwWzkFhrjPkYUiM2sJpWrvJO6FOoidLkCMq8jVu+axhsx6LAraO13F67Ui9NlAydCHtBybZavcfnbhJSUs4QwVfeks58o1+QHLA/hZG4/XbUKWyVmZBK7tt/ZeZuXOtvZVljU3rmjvEb4+FON2kwoplq8iM7hRxFLbFQIDAQAB-----END CERTIFICATE-----"; - var r = transkey_GetEncDream(pubkey,eleName); - //alert("base64 인코딩 값 : " + r); - //base64 Decode 적용 - var data = ML4WebApi.base64Decode(r); - saveCertconfirmProcess( data ); - }else{ - var data = $('#input_cert_pw_save').val(); - saveCertconfirmProcess( data ); - } - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - var encData = nFilterEncrypted(); - nFilterJSProcess( encData, "", function(code, data){ - if( code == 0){ - saveCertconfirmProcess( data ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var reEncryptValue = npPfsCtrl.GetEncryptResult(document.body, "input_cert_pw_save"); - reEncryptValue = reEncryptValue.trim(); - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - ml4web_crypto_api.incaDecrypt(reEncryptValue, function(code, obj){ - if(code == 0){ - saveCertconfirmProcess( obj.stringResult ); - } - }); - } - }else{ - var data = $('#input_cert_pw_save').val(); - saveCertconfirmProcess( data ); - } - } -} - -/** - * 입력받은 비번과 스토리지 정보를 ML4WebUI 로 callback - * @param data - * @returns - */ -function saveCertconfirmProcess( data ){ - - var cryptoApi = ML4WebApi.getCryptoApi(); - var certPw = cryptoApi.HD_api(data); - - if(certPw == null || certPw == ""){ - ML4WebLog.log("비밀번호를 입력하세요."); - ML4WebDraw.errorHandler("main", $.i18n.prop("ES006"), $("#input_cert_pw_save"), null); - return; - } - - // Return Object Mapping - var resultObj = new Object(); - resultObj.certPw = certPw; - resultObj.selectedStorage = ML4WebUI.selectedStorage.current_option.storageName; - resultObj.storageOpt = ML4WebUI.selectedStorage.current_option.storageOpt; - - ML4WebUI.callback(0, resultObj); - -} - -function clickConfirmBtn(){ - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - var selectionCnt = selection.length; - - $('#btn_confirm_iframe').attr('disabled', true); - - if( selection && selectionCnt > 0 ){ - var pwdData = ''; - if( !ML4WebApi.webConfig.useVirtualKeyboard && (ML4WebApi.webConfig.virtualKeyboardType === "INCA" || ML4WebApi.webConfig.virtualKeyboardType === "DREAM") ){ - if(selectMedia != 'web_kftc' && selectMedia != 'web'){ - pwdData = $('#input_cert_pw_new').val(); - }else{ - pwdData = $('#input_cert_pw').val(); - } - }else{ - pwdData = $('#input_cert_pw').val(); - } - - if(pwdData == null || pwdData == ""){ - ML4WebLog.log("비밀번호를 입력하세요."); - ML4WebDraw.errorHandler("main", $.i18n.prop("ES006"), $("#input_cert_pw"), null); - return; - } - - if(magiclineUtil.isMobile(magiclineUtil.getOS())){ - confirmProcess( pwdData ); - }else{ - if(selectMedia === "web_kftc" || selectMedia === "web"){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if(keyboardCheck){ - var eleName = "input_cert_pw"; - var pubkey = "-----BEGIN CERTIFICATE-----MIIBCgKCAQEAwWmijy+IsrsM34E6ixbRWZln7ZEnsIFg7ey9wjBlXwn816iKXHVhdr6LIkl4Ks/FY2T/DFJ+Kltw7AICsBTNDLnNZz7nWWVQlq86IJq5ejkrZR88BtQ4aPRshkL8l+DH1Qf4a1A7r/HbGfo/Ad80ns4Z9Z4T5oywX9YMsF2QBAMh+ORE04nwWzkFhrjPkYUiM2sJpWrvJO6FOoidLkCMq8jVu+axhsx6LAraO13F67Ui9NlAydCHtBybZavcfnbhJSUs4QwVfeks58o1+QHLA/hZG4/XbUKWyVmZBK7tt/ZeZuXOtvZVljU3rmjvEb4+FON2kwoplq8iM7hRxFLbFQIDAQAB-----END CERTIFICATE-----"; - var r = transkey_GetEncDream(pubkey,eleName); - //alert("base64 인코딩 값 : " + r); - //base64 Decode 적용 - pwdData = ML4WebApi.base64Decode(r); - confirmProcess( pwdData ); - }else{ - confirmProcess( pwdData ); - } - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - var encData = nFilterEncrypted(); - nFilterJSProcess( encData, "", function(code, data){ - if( code == 0){ - confirmProcess( data ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var reEncryptValue = npPfsCtrl.GetEncryptResult(document.body, "input_cert_pw"); - reEncryptValue = reEncryptValue.trim(); - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - ml4web_crypto_api.incaDecrypt(reEncryptValue, function(code, obj){ - if(code == 0){ - confirmProcess( obj.stringResult ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType ==="DREAM" ){ - //pwdData = ML4WebVKey.getDecryptedPassword(); - var elementId = "input_cert_pw"; - var result = ML4WebVKey.getDecryptedPassword(elementId, function(message){ - confirmProcess( message ); - }); - }else{ - confirmProcess( pwdData ); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - if(keyboardCheck){ - var eleName = "input_cert_pw"; - var pubkey = "-----BEGIN CERTIFICATE-----MIIBCgKCAQEAwWmijy+IsrsM34E6ixbRWZln7ZEnsIFg7ey9wjBlXwn816iKXHVhdr6LIkl4Ks/FY2T/DFJ+Kltw7AICsBTNDLnNZz7nWWVQlq86IJq5ejkrZR88BtQ4aPRshkL8l+DH1Qf4a1A7r/HbGfo/Ad80ns4Z9Z4T5oywX9YMsF2QBAMh+ORE04nwWzkFhrjPkYUiM2sJpWrvJO6FOoidLkCMq8jVu+axhsx6LAraO13F67Ui9NlAydCHtBybZavcfnbhJSUs4QwVfeks58o1+QHLA/hZG4/XbUKWyVmZBK7tt/ZeZuXOtvZVljU3rmjvEb4+FON2kwoplq8iM7hRxFLbFQIDAQAB-----END CERTIFICATE-----"; - var r = transkey_GetEncDream(pubkey,eleName); - //alert("base64 인코딩 값 : " + r); - //base64 Decode 적용 - pwdData = ML4WebApi.base64Decode(r); - confirmProcess( pwdData ); - }else{ - confirmProcess( pwdData ); - } - }else if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - var encData = nFilterEncrypted(); - nFilterJSProcess( encData, "", function(code, data){ - if( code == 0){ - confirmProcess( data ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - var reEncryptValue = npPfsCtrl.GetEncryptResult(document.body, "input_cert_pw"); - reEncryptValue = reEncryptValue.trim(); - var ml4web_crypto_api = ML4WebApi.getCryptoApi(); - ml4web_crypto_api.incaDecrypt(reEncryptValue, function(code, obj){ - if(code == 0){ - confirmProcess( obj.stringResult ); - } - }); - }else if( ML4WebApi.webConfig.virtualKeyboardType ==="DREAM" ){ - var elementId = "input_cert_pw"; - var result = ML4WebVKey.getDecryptedPassword(elementId, function(message){ - confirmProcess( message ); - }); - } - }else{ - confirmProcess( pwdData ); - } - } - } - }else{ - ML4WebLog.log("선택된 인증서가 없습니다."); - //openAlertDialog($.i18n.prop("ES021")); - - ML4WebDraw.errorHandler("main", $.i18n.prop("ES021"), null, null); - //DSAlert.openAlert("main", $.i18n.prop("ES021"), null); - return; - } -} - -jQuery(document).on("nppfs-npv-after-enter", function(event){ - if(event.name === "add_browser_password"){ - importCertToBrowser(); - }else if(event.name === "input_pw_confirm"){ - processCopyCert(); - }else if(event.name === "input_cert_pw_save"){ - clickSaveConfirmBtn(); - }else{ - clickConfirmBtn(); - } -}); - -//인증서 복사 -$('#btn_CopyCert').click(function () { - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - - if(selection && selection.length > 0){ - if (typeof(selection[0]) =="object" && typeof(selection[0].source) != "undefined" && typeof(selection[0].cloud) != "undefined" && selection[0].cloud == "true") { - if(ML4WebApi.webConfig.virtualKeyboardType === "INCA"){ - // 키패드 계속 생성되는 문제로 인한 초기화 패치(2019/06/14) - var npLength = npVCtrl.keypadObject.length; - for (var i=0; i -1 || ML4WebApi.getProperty("storageList").indexOf("kftc") > -1){ - if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - $('#input_pw_confirm').val(""); - keyboardCheck = true; - } - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - keyboardCheck = true; - if(typeof initTranskey=="function") { - transkey["input_pw_confirm"] = null; - initTranskey(); - } - //raon keypad 위치 가운데로 수정 - var copyPwdTop = $("#input_pw_confirm").offset().top; - var copyPwdLeft = $("#input_pw_confirm").offset().left; - copyPwdTop = copyPwdTop + 30; - copyPwdLeft = copyPwdLeft - 185; - $('#input_pw_confirm').attr("data-tk-kbdxy", copyPwdLeft + " " + copyPwdTop); - - tk.onKeyboard(document.getElementById('input_pw_confirm')); - } - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#input_pw_confirm').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-input_pw_confirm").css("z-index", 111111); - } - }else{ - if( ML4WebApi.webConfig.useVirtualKeyboard ){ - if( ML4WebApi.webConfig.virtualKeyboardType === "NSHC" ){ - $('#input_pw_confirm').val(""); - keyboardCheck = true; - } - if( ML4WebApi.webConfig.virtualKeyboardType === "RAON" ){ - keyboardCheck = true; - if(typeof initTranskey=="function") { - transkey["input_pw_confirm"] = null; - initTranskey(); - } - //raon keypad 위치 가운데로 수정 - var copyPwdTop = $("#input_pw_confirm").offset().top; - var copyPwdLeft = $("#input_pw_confirm").offset().left; - copyPwdTop = copyPwdTop + 30; - copyPwdLeft = copyPwdLeft - 185; - $('#input_pw_confirm').attr("data-tk-kbdxy", copyPwdLeft + " " + copyPwdTop); - - tk.onKeyboard(document.getElementById('input_pw_confirm')); - } - if( ML4WebApi.webConfig.virtualKeyboardType === "INCA" ){ - $('#input_pw_confirm').val(""); - $("#form1").attr("style", "display:block;"); - $("#nppfs-keypad-input_pw_confirm").css("z-index", 111111); - } - } - } - } -} - -//인증서 삭제 -$('#btn_deleteCert').click(function () { - ML4WebLog.log("deleteCertificate..."); - var selection = $("#dataTable").MLjquiDataTable('getSelection'); - var htmlTxt =''; - if(selection && selection.length > 0){ - var stgKey = ML4WebUI.selectedStorage.key; - if(stgKey=='smart' || stgKey=='mobile' || stgKey=='pfx'){ - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ER101"), $('#btn_deleteCert'), null); - }else if(stgKey=='web' || stgKey=='hdd' || stgKey=='token' || stgKey=='web_kftc'){ - deleteCertNonePwd('main', stgKey, selection[0]); - } - - }else{ - ML4WebLog.log($.i18n.prop("ES021")); - //20200310 mj - ML4WebDraw.errorHandler("main", $.i18n.prop("ES021"), $('#btn_deleteCert'), null); - } -}); - -//인증서 복사 안내 -$("#btn_CopyCert").on("mouseover", function(event){ - var thisIsTop = $(this).offset().top + 30; - var thisIsLeft = $(this).offset().left; - var divArea = $("
            클라우드에서 브라우저로 인증서 복사
            "); - divArea.css("top",thisIsTop+"px"); - divArea.css("left",thisIsLeft+"px"); - $("body").append(divArea); -}); - -$("#btn_CopyCert").on("mouseout", function(event){ - $("body").find("div[id='copyCert_box']").remove(); -}); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Mgmt.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Mgmt.js deleted file mode 100644 index ee00f6b8..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/ML4Web_Mgmt.js +++ /dev/null @@ -1,977 +0,0 @@ -function initAdminMainEvent(){ - ML4WebLog.log("ML4Web_Mgmt.js - initAdminMainEvent() called..."); - - //인증서 관리창 스토리지 선택 - $('[id^="stg_admin_"]').click(function () { - var stg_id = this.id.split("stg_admin_")[1]; - ML4WebLog.log("admin storage selected.... storageId = "+stg_id) - - //UI driver 선택창 위치 조정 - var stg_idx = $(this).attr("stgIdx"); - $('#driver_admin_div').removeClass("pos_01").removeClass("pos_02").removeClass("pos_03").removeClass("pos_04").removeClass("pos_05"); - $('#driver_admin_div').addClass("pos_0"+stg_idx); - - //UI css selection 처리.... - $('[class^="ML_storage_"]').removeClass("on"); - $(this).parent().addClass("on"); - - //인증서 목록 무조건 초기화 - makeAdminCertiListDiv(null); - - // 드라이버 선택창 닫기 - closeAdminDriverDialog(); - - //UI 관리 기능 셋팅 - setMgmtFuncBtn(stg_id); - -// if(stg_id=="pfx"){ - //파일탐색기 열기... -// openSearchPfxMgmtDialog();//인증서찾기창 -// }else { - ML4WebUI.selectStorageInfo(stg_id, function(resultCode, jsonObj){ -// ML4WebApi.selectStorageInfo(stg_id, function(resultCode, jsonObj){ - ML4WebLog.log("[Callback]selectStorage() .... resultCode === "+resultCode); - - if( resultCode == 0) { - if(jsonObj == null || $.isEmptyObject(jsonObj)){ - ML4WebLog.log( "[click]옵션없음 인증서 목록 조회해라...."); - var certOpt = {"storageName":stg_id}; - - ML4WebUI.getStorageCertList(certOpt, function(resultCode, jsonObj) { -// ML4WebApi.getStorageCertList(certOpt, function(resultCode, jsonObj) { - if( resultCode == 0) {//성공 -// ML4WebLog.log("[SUCCESS!!!] Result === " + JSON.stringify(jsonObj)); - makeAdminCertiListDiv(jsonObj.cert_list); - }else{ //실패 - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - makeAdminCertiListDiv(null); - //EmptyCertDiv(); - } - }); - } else { - ML4WebLog.log("[SUCCESS!!!] Select Drive. Result === " + JSON.stringify(jsonObj)); -// ML4WebLog.log( "[click]옵션있으니 드라이브 선택처리해라... drivers.length === " + jsonObj.drivers.length); - openAdminDriverDialog(stg_id, jsonObj); - } - } else{ - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + jsonObj.errCode + ", errMsg === " + jsonObj.errMsg); - EmptyCertDiv(); - } - }); -// } - }); -} - -function setMgmtFuncBtn(stgId){ - //mgmtAll, copy, delete, import, export, changePw - var dialogName = ML4WebUI.getDialogName(); - ML4WebLog.log("ML4Web_Mgmt.js - setMgmtFuncBtn() dialogName ===" + dialogName); - - $(".ad_cert_copy").addClass("off"); - $(".ad_cert_del").addClass("off"); - $(".ad_cert_pass_change").addClass("off"); - $(".ad_cert_import").addClass("off"); - $(".ad_cert_send").addClass("off"); - - var classArr = [$(".ad_cert_copy"), $(".ad_cert_view"), $(".ad_cert_del"), $(".ad_cert_pass_change"), $(".ad_cert_import"), $(".ad_cert_send")]; - - if(dialogName=="copy"){ - classArr = [$(".ad_cert_view"), $(".ad_cert_copy")]; - }else if(dialogName=="delete"){ - classArr = [$(".ad_cert_view"), $(".ad_cert_del")]; - }else if(dialogName=="import"){ - classArr = [$(".ad_cert_view"), $(".ad_cert_import")]; - }else if(dialogName=="export"){ - classArr = [$(".ad_cert_view"), $(".ad_cert_send")]; - }else if(dialogName=="changePw"){ - classArr = [$(".ad_cert_view"), $(".ad_cert_pass_change")]; - } - - if(stgId=="token"){ - for(var i=0;i'; - image += img; - //image += "" + rowData.Policy + ""; - image += "" + rowData.Policy + ""; - return image; - } - }, - { text: '사용자', dataField: 'Cn', width: 160, align: 'center', - cellsRenderer: function (row, column, value, rowData) { - var tooltip = "" + rowData.Cn + ""; - return tooltip; - } - }, - { text: '만료일', dataField: 'enddate', width: 78, cellsAlign: 'center', align: 'center', cellsFormat: 'd' }, - { text: '발급자', dataField: 'Issuer', cellsAlign: 'left', align: 'center', cellsFormat: 'c2' } - ], - ready:function(){ - if(listObj!=null && listObj.length>0){ - $("#dataTable_admin").MLjquiDataTable('selectRow', 0); - } - } - }); - - if (listObj!=null && $.isEmptyObject($("#dataTable_admin").MLjquiDataTable('selectRow')) && listObj.length>0){ - $("#dataTable_admin").MLjquiDataTable('selectRow', 0); - } - - //table row(인증서) 선택 event catch - $("#dataTable_admin").on('rowSelect', function(e){ - var args = e.args; - var index = args.index; - var rowData = args.row; - var rowKey = args.key; -// ML4WebLog.log("dataTable.rowSelect.args === " +args); -// ML4WebLog.log("dataTable.rowSelect.index === " +index); -// ML4WebLog.log("dataTable.rowSelect.rowData === " + JSON.stringify(rowData)); -// ML4WebLog.log("dataTable.rowSelect.rowKey === " +rowKey); - }); -} - -function openAdminDriverDialog(id, obj){ - var str = ''; - str += '
              '; - if( id=="pfx" ){ - - }else if( id=="hdd" ){ - for(var i=0; i'+obj.hddOpt[i].diskname+''; - } - }else if( id=="token" ){ - //{"tokenOpt":[{"tokenname":"A-Token","driver":"C","driverPath":"C:/", "tokenpasswd":""},{"tokenname":"B-Token","driver":"D","driverPath":"D:/", "tokenpasswd":""}]} - for(var i=0; i'+obj.tokenOpt[i].tokenname+''; - } - }else if( id=="mobile" ){ - //{"phoneOpt":[{"servicename":"ubikey","serviceOpt":{"version":"V2.0.1","popupURL":"http://aaa.co.kr","UbikeyWParam":"aaa1","UbikeylParam":"aaa2"}},{"servicename":"mobiSign","serviceOpt":{"mobileKeyURL":"http://bbb.co.kr"}}]} - for(var i=0; i'+obj.phoneOpt[i].servicename+''; - } - }else if( id=="smartcert" ){ - //{"smartCertOpt":{"servicename":"dreamCS","serviceOpt":{"USIMServerIP":"","USIMServerPort":"","USIMSiteDomain":"","USIMRaonSiteCode":"","USIMInstallURL":"","USIMTokenInstallURL":""}}} - for(var i=0; i'+obj.smartCertOpt[i].servicename+''; - } - }else if( id=="cloud" ){ - //{"cloudOpt":[{"servicename":"Dropbox","id":"dreamuser","passwd":"dreampw"},{"servicename":"google","id":"dreamuser","passwd":"dreampw"}]} - for(var i=0; i'+obj.cloudOpt[i].servicename+''; - } - } - str += '
            '; - - $('#driver_admin_div').empty().html(str); - $('#driver_admin_div').show(); - - //event binding - ML4WebLog.log("[driver select storage option]event binding prepared... "+id+" === " + JSON.stringify(obj)) - if( id=="pfx" ){ - - }else if( id=="hdd" ){ - for(var i=0; i'+obj.hddOpt[i].diskname+''; - } - break; - case 'token' : - certData.certOpt = {"storageName":"token"}; - certData.certOpt.storageOpt = obj; - - $("#subStorageDriver").addClass("iepos_03"); - - for(var i=0; i'+obj.tokenOpt[i].tokenname+''; - } - break; - case 'mobile' : - break; - case 'smartcert' : - break; - case 'cloud' : - break; - } - str += '
          '; - - $('#subStorageDriver').empty().html(str); - $("#subStorageDriver").show(); - - //event binding - if( key=="hdd" ){ - for(var i=0; i 0 ) { - $('#ML_Dialog_common').MLjquiWindow({ title: dialog_title }); - $('#ML_Dialog_common').MLjquiWindow({height:dialogHeight}); - $('#ML_Dialog_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_Dialog_common').MLjquiWindow('open',callback); - $('#ML_Dialog_common').find('#btn_common_confirm').find('span').text($.i18n.prop("TS014")); - //20200310 mj - $('#ML_Dialog_common').focus(); - } - }, - openDialog : function(opt, obj, callback) { - //20200310 mj - focusObj = obj; - this.setOptions(opt); - if(opt.contentKey == "install_cs"){ - if(mode=='main'){ - //client 서비스로 변경하면서 '실행' 버튼을 없애기 위해 ie만 다르게 작동하던 것을 다 똑같은 alert이 나오도록 수정 - /*if(chkBrowser.indexOf("Firefox") > -1 || chkBrowser.indexOf("Chrome") > -1 || chkBrowser.indexOf("Opera") > -1 || os === "MAC"){*/ - $('#ML_content_area').empty().html(content); - - if ( $("#ML_Dialog_common").length > 0 ) { - $('#ML_Dialog_common').MLjquiWindow({ title: dialog_title }); - $('#ML_Dialog_common').MLjquiWindow({height:dialogHeight}); - //$('#ML_Dialog_common').MLjquiWindow({position:'center'}); - $('#ML_Dialog_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_Dialog_common').MLjquiWindow('open',callback); - $('#ML_Dialog_common').find('#btn_common_confirm').find('span').text($.i18n.prop("TS014")); - //20200310 mj - $('#ML_Dialog_common').focus(); - } - /*}else{ - $('#ML_content_area_cs').empty().html(content); - - if ( $("#ML_dialog_cs_install").length > 0 ) { - $('#ML_dialog_cs_install').MLjquiWindow({ title: dialog_title }); - $('#ML_dialog_cs_install').MLjquiWindow({height:dialogHeight}); - //$('#ML_dialog_cs_install').MLjquiWindow({position:'center'}); - $('#ML_dialog_cs_install').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_dialog_cs_install').MLjquiWindow('open',callback); - } - }*/ - }else if(mode=='mgmt'){ - $('#ML_mgmt_content_area').empty().html(content); - - $('#ML_Dialog_mgmt_common').MLjquiWindow({title: dialog_title}); - $('#ML_Dialog_mgmt_common').MLjquiWindow({height:dialogHeight}); - //$('#ML_Dialog_mgmt_common').MLjquiWindow({position:'center'}); - $('#ML_Dialog_mgmt_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_Dialog_mgmt_common').MLjquiWindow('open',callback); - //20200310 mj - $('#ML_Dialog_mgmt_common').focus(); - return; - }else{ - - } - }else if(opt.contentKey == "install_update"){ - $('#ML_content_area').empty().html(content); - if ( $("#ML_Dialog_common").length > 0 ) { - $('#ML_Dialog_common').MLjquiWindow({ title: dialog_title }); - $('#ML_Dialog_common').MLjquiWindow({height:dialogHeight}); - //$('#ML_Dialog_common').MLjquiWindow({position:'center'}); - $('#ML_Dialog_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_Dialog_common').MLjquiWindow('open',callback); - $('#ML_Dialog_common').find('#btn_common_confirm').find('span').text($.i18n.prop("TS070")); - //20200310 mj - $('#ML_Dialog_common').focus(); - return; - } - }else if(opt.contentKey == "check_cert_expire"){ - $('#ML_content_area').empty().html(content); - - $('#ML_Dialog_common').MLjquiWindow({ title: dialog_title }); - $('#ML_Dialog_common').MLjquiWindow({height:dialogHeight}); - $('#ML_Dialog_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 170}}); - $('#ML_Dialog_common').MLjquiWindow('open',callback); - //20200310 mj - $('#ML_Dialog_common').focus(); - return; - }else{ - if(mode=='main'){ - $('#ML_content_area').empty().html(content); - - $('#ML_Dialog_common').MLjquiWindow({ title: dialog_title }); - $('#ML_Dialog_common').MLjquiWindow({height:dialogHeight}); - //$('#ML_Dialog_common').MLjquiWindow({position:'center'}); - $('#ML_Dialog_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_Dialog_common').MLjquiWindow('open',callback); - $('#ML_Dialog_common').find('#btn_common_confirm').find('span').text($.i18n.prop("TS014")); - //20200310 mj - $('#ML_Dialog_common').focus(); - return; - }else if(mode=='mgmt'){ - $('#ML_mgmt_content_area').empty().html(content); - - $('#ML_Dialog_mgmt_common').MLjquiWindow({title: dialog_title}); - $('#ML_Dialog_mgmt_common').MLjquiWindow({height:dialogHeight}); - //$('#ML_Dialog_mgmt_common').MLjquiWindow({position:'center'}); - $('#ML_Dialog_mgmt_common').MLjquiWindow({position:{x: offset1.left + ($(window).width()/2) - 200, y: offset1.top + 120}}); - $('#ML_Dialog_mgmt_common').MLjquiWindow('open',callback); - //20200310 mj - $('#ML_Dialog_mgmt_common').focus(); - return; - }else{ - - } - } - }, - closeDialog : function(callback) { - //document.getElementById('dialog_wrap').style.display='none'; - if(mode=='main'){ - $('#ML_Dialog_common').MLjquiWindow('close'); - $('#ML_dialog_cs_install').MLjquiWindow('close'); - //$('#browser_manual').MLjquiWindow('close'); - }else if(mode=='mgmt'){ - $('#ML_Dialog_mgmt_common').MLjquiWindow('close'); - }else { - - } - - //20200310 mj - if(!$.isEmptyObject(focusObj)){ - focusObj.focus(); - } - - callback(0,{"mode" : mode}); - }, - runDialog : function(callback) { - $('#ML_dialog_cs_install').MLjquiWindow('close'); - - ML4WebApi.getCsManager().sendURLScheme(function(code, obj){ - var installType = obj.type; - if(code == 0){ - if(obj.csUpdateChk == "upgrade"){ // update - openCSUpdateDialog(mode); - }else{ - var timer = setInterval(function(){ - if(code==0){ - //스토리지 목록 재로드. - ML4WebApi.setProperty("is_cs_install", true); - var default_stg = ML4WebApi.getProperty("defaultStorage"); - var dialogMode = mode; - - ML4WebDraw.MakeStorageListDiv(dialogMode); - - if(dialogMode == "main"){ - ML4WebDraw.initWebMainEvent(); - - if(default_stg!=null && default_stg != ""){ - $("#stg_"+default_stg).click(); - }else{ - ML4WebDraw.MakeCertiListDiv(null); - } - }else if(dialogMode == "mgmt"){ - initAdminMainEvent(); - - if(default_stg!=null && default_stg != ""){ - $("#stg_admin_"+default_stg).click(); - }else{ - makeAdminCertiListDiv(null); - } - } - - clearInterval(timer); - } - }, 1000); - } - }else{ - openCSInstallDialog(mode); - } - }); - }, - releaseDialog : function(callback) { - //TODO - try{ - $('#ML_Dialog_common').MLjquiWindow('close'); - - if (typeof(onclick) == "function") { - onclick(certData); - } else { - eval(onclick+"(certData)"); - } - }catch(e){ - console.log("releaseDialog error..."+e.message); - } - - }, - setOptions: function(obj) { - mode = obj.mode; - dialog_title = (obj.title == undefined ? "" : obj.title); - showCert = obj.showCert; - certData = obj.certData; - onclick = obj.onclick; - contentKey = obj.contentKey; - selectStg = obj.selectStg; - message = (obj.message == undefined ? "" : obj.message); - content = getContentHtml(obj.contentKey); - dialogHeight = obj.dialogHeight; - }, - enterKeyEvent: function(e) { - if(e.keyCode == 13){ - this.releaseDialog(); - }else{ - e.keyCode == 0; - return; - } - } - }; - - function getContentHtml(key) { - var htmlTxt = ''; - switch(key){ - case 'confirm' : - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          ' + message + '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'confirm_pw' : - htmlTxt += '
          선택한 인증서
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - - var isExpired = ML4WebUtil.isDateExpired(certData.enddatetime); - if(isExpired){ - htmlTxt += '
          '; - }else{ - htmlTxt += '
          '; - } - - if(showCert){ - htmlTxt += '
          '; - htmlTxt += ' '+certData.realname+''; - htmlTxt += ' '+certData.Policy+' | '+certData.Issuer+''; - htmlTxt += ' 만료일 : '+certData.enddate+''; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 비밀번호:'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'change_pw' : - htmlTxt += '
          선택한 인증서
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - var isExpired = ML4WebUtil.isDateExpired(certData.enddatetime); - if(isExpired){ - htmlTxt += '
          '; - }else{ - htmlTxt += '
          '; - } - if(showCert){ - htmlTxt += '
          '; - htmlTxt += ' '+certData.realname+''; - htmlTxt += ' '+certData.Policy+' | '+certData.Issuer+''; - htmlTxt += ' 만료일 : '+certData.enddate+''; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 이전 비밀번호 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 새 비밀번호 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 새 비밀번호 확인 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'select_storage' : - htmlTxt += '
          선택한 인증서
          '; - //htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - var isExpired = ML4WebUtil.isDateExpired(certData.enddatetime); - if(isExpired){ - htmlTxt += '
          '; - }else{ - htmlTxt += '
          '; - } - if(showCert){ - htmlTxt += '
          '; - htmlTxt += ' '+certData.Cn+''; - htmlTxt += ' '+certData.Policy+' | '+certData.Issuer+''; - htmlTxt += ' 만료일 : '+certData.enddate+''; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 비밀번호'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'import_pfx' : - if(mode=='main'){ - htmlTxt += '
          '; - }else{ - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' ※ 인증서 파일(*.pfx, *.p12)을 선택해야 브라우저 인증서를'; - htmlTxt += '
          사용할 수 있습니다.
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서파일 경로'; -// htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; -// htmlTxt += ' '; -// htmlTxt += ' '; -// htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서 비밀번호'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - if(mode=='main'){ - /*htmlTxt += '
          '; - htmlTxt += ' ※ PFX 파일이 없을 경우 인증서 변환 프로그램을 이용해 주십시오.'; - htmlTxt += ' PFX 인증서 변환 프로그램은 Windows 계열만 지원합니다.'; - htmlTxt += ' '; - htmlTxt += '

          '; - htmlTxt += ' '; - htmlTxt += '

          '; - htmlTxt += '
          '; - htmlTxt += '
          ';*/ - htmlTxt += '
          '; - htmlTxt += ' '; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'import_pfx_m' : - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 파일선택 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - //htmlTxt += '

          '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서 비밀번호 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - if(mode=='main'){ - htmlTxt += '
          '; - htmlTxt += ' 브라우저에 인증서 저장'; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'import_pfx_t' : - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 파일선택 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서 비밀번호 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - if(mode=='main'){ - htmlTxt += '
          '; - htmlTxt += ' 브라우저에 인증서 저장'; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'import_pfx_c' : - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 파일선택 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - //htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서 비밀번호 :'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'copy_token' : - htmlTxt += '
          선택한 인증서
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - var isExpired = ML4WebUtil.isDateExpired(certData.enddatetime); - if(isExpired){ - htmlTxt += '
          '; - }else{ - htmlTxt += '
          '; - } - if(showCert){ - htmlTxt += '
          '; - htmlTxt += ' '+certData.realname+''; - htmlTxt += ' '+certData.Policy+' | '+certData.Issuer+''; - htmlTxt += ' 만료일 : '+certData.enddate+''; - htmlTxt += '
          '; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 보안토큰 비밀번호:'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서 비밀번호:'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'install_cs' : - var installType = ML4WebApi.getProperty("cs_install_type") - - htmlTxt += '
          '; - htmlTxt += ' 아이콘'; - //client 서비스로 변경하면서 '실행' 버튼을 없애기 위해 ie만 다르게 작동하던 것을 다 똑같은 alert이 나오도록 수정 - //if(chkBrowser.indexOf("Firefox") > -1 || chkBrowser.indexOf("Chrome") > -1 || chkBrowser.indexOf("Opera") > -1){ - if(installType == "download"){ - htmlTxt += ' '+$.i18n.prop("ES046")+''; - }else{ - htmlTxt += ' '+$.i18n.prop("ES047")+''; - } - /*}else{ - htmlTxt += ' MagicLine 프로그램이 설치되어 있지 않은 경우 \'설치\' 버튼을 눌러 주시고,
          설치가 되어있을 경우 \'실행\' 버튼을 눌러주세요.
          '; - }*/ - /*if(installType == "download"){ - htmlTxt += ' MagicLine 프로그램을 설치합니다.'; - }else{ - htmlTxt += ' MagicLine 설치 페이지로 이동합니다.'; - }*/ - htmlTxt += '
          '; - htmlTxt += '
          '; - -/* htmlTxt += '
          MagicLine NPIZ 프로그램을 설치하시겠습니까?
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - //htmlTxt += ' 비밀번호:'; - //htmlTxt += ' '; - //htmlTxt += ' '; - //htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          ';*/ - break; - case 'install_update' : - htmlTxt += '
          '; - htmlTxt += ' 아이콘'; - if(ML4WebApi.getProperty("libType") == "0"){ - htmlTxt += ' ' + $.i18n.prop("ES048") + ''; - }else{ - htmlTxt += ' ' + $.i18n.prop("ES048") + $.i18n.prop("ES049") + ''; - } - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'confirm_txt' : - var confirm_txt = '선택된 인증서를 삭제하시겠습니까?'; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          ' +confirm_txt+ '
          '; -/* htmlTxt += ' '; - htmlTxt += '

          '; - htmlTxt += ' '; - htmlTxt += '

          '; - htmlTxt += '
          ';*/ - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'confirm_txt_token' : - var confirm_txt = '선택된 인증서를 삭제하시겠습니까?'; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          ' +confirm_txt+ '
          '; - htmlTxt += '
          '; - htmlTxt += ' 보안토큰 비밀번호:'; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += ' '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - case 'add_browser' : - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += ' 인증서파일, 키파일 선택 안내'; -// htmlTxt += ' ※ 인증서 파일(*.pfx, *.p12, signCert.cer/signPri.key)을
          '; -// htmlTxt += ' 선택해야 브라우저 인증서를 사용할 수 있습니다.
          '; -// htmlTxt += ' ※ 아래 2가지 방법 중 한 가지를 이용하여 인증서를 선택
          '; -// htmlTxt += ' 한 후 비밀번호를 입력하시기 바랍니다.
          '; -// htmlTxt += ' ①인증서 파일을 끌어다 놓거나
          '; -// htmlTxt += ' ②열기버튼으로 인증서 파일을 직접 선택
          '; -// htmlTxt += ' ※ 인증서 파일을 끌어다 놓으면 브라우저에 인증서 저장
          '; -// htmlTxt += ' 및 사용이 가능합니다.
          '; - htmlTxt += '
          '; -// htmlTxt += ' 선택된 인증서'; - htmlTxt += '
          '; - htmlTxt += ' 인증서파일 끌어놓기 안내'; - htmlTxt += '
          '; - htmlTxt += ' '; - htmlTxt += '
          '; - break; - case 'check_cert_expire' : - htmlTxt += '
          '; - htmlTxt += '
          '; - htmlTxt += '
          ' + message + '
          '; - htmlTxt += '
          '; - htmlTxt += '
          '; - break; - - } - return htmlTxt; - } - - function DS_setModule(e) { - //console.log( "DS_setModule called...for ML4Web_Popup init." ); - return window.DSDialog = HandlePopup; - } - - window.DS_setModule = DS_setModule(); - })(jQuery) - } - function alertModule() { - (function(jQuery) { - var alertMode = ""; - var focusObj = {}; - var callbackEvent = null; - - var HandleAlert = { - init: function(e) { -// console.log( "The public can see me!" ); - }, - openAlert : function(mode, msg, obj){ - alertMode = mode; - focusObj = obj; - - $('#btn_confirm_iframe').attr('disabled', false); - - if(mode=='main'){ - $('#alert_msg').html(msg); - if( msg.indexOf("<Caps Lock>") <= -1 ){ - if(msg.indexOf("클라우드") > -1){ - $('#popup_alert').MLjquiWindow({height:230}); - }else{ - $('#popup_alert').MLjquiWindow({height:200}); - } - }else{ - $('#popup_alert').MLjquiWindow({height:240}); - } - - if(magiclineUtil.isMobile(magiclineUtil.getOS())){ - $('#popup_alert').MLjquiWindow({ - position: 'center' - }); - } - - $('#popup_alert').MLjquiWindow('open'); - - $('#popup_alert').focus(); //for WCA, 20200413 - //$('#btn_alert_confirm').focus(); //for WCA - } else if(mode=='mgmt'){ - $('#mgmt_alert_msg').html(msg); - $('#popup_mgmt_alert').MLjquiWindow('open'); - - $('#popup_alert').focus(); //for WCA, 20200413 - //$('#btn_alert_confirm').focus(); //for WCA - } - }, - callbackAlert : function(mode, msg, obj){ - alertMode = mode; - callbackEvent = obj; - - if(mode=='main'){ - $('#alert_msg').html(msg); - if( msg.indexOf("<Caps Lock>") <= -1 ){ - if(msg.indexOf("클라우드") > -1){ - $('#popup_alert').MLjquiWindow({height:230}); - }else{ - $('#popup_alert').MLjquiWindow({height:200}); - } - }else{ - $('#popup_alert').MLjquiWindow({height:240}); - } - - $('#popup_alert').MLjquiWindow('open'); - - $('#popup_alert').focus(); //for WCA, 20200413 - //$('#btn_alert_confirm').focus(); //for WCA - } else if(mode=='mgmt'){ - $('#mgmt_alert_msg').html(msg); - $('#popup_mgmt_alert').MLjquiWindow('open'); - - $('#popup_alert').focus(); //for WCA, 20200413 - //$('#btn_alert_confirm').focus(); //for WCA - } - }, - closeAlert : function (){ - if(alertMode=='main'){ - $('#popup_alert').MLjquiWindow('close'); - } else if(alertMode=='mgmt'){ - $('#popup_mgmt_alert').MLjquiWindow('close'); - } - - if(!$.isEmptyObject(focusObj)){ - focusObj.val(''); - focusObj.focus(); - } - - if (callbackEvent != null){ - callbackEvent(""); - callbackEvent = null; - } - } - } - - function DS_setAlertModule(e) { -// console.log( "DS_setAlertModule called...for ML4Web_Popup init." ); - return window.DSAlert = HandleAlert; - } - - window.DS_setAlertModule = DS_setAlertModule(); - })(jQuery) - } - - function initPopup() { -// console.log( "initPopup called..." ); - - if (typeof popupModule !== "function") return; - - if (typeof alertModule !== "function") return; - - var e = {}; - if (typeof window === "object") { - if (typeof window.ml4popup === "object") { - e = window.ml4popup - } else { - window.ml4popup = e - } - } -// e.kryptos = e.kryptos || {}; - popupModule(); - alertModule(); - - return e - } - - var ml4popup = initPopup(); -})(); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui.min.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui.min.js deleted file mode 100644 index b9325279..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/* 2017-05-24 */ var MLjquiBaseFramework=window.minQuery||window.jQuery;!function(a){a.MLjqui=a.MLjqui||{},a.MLjqui.define=function(a,b,c){a[b]=function(){this.baseType&&(this.base=new a[this.baseType],this.base.defineInstance()),this.defineInstance()},a[b].prototype.defineInstance=function(){},a[b].prototype.base=null,a[b].prototype.baseType=void 0,c&&a[c]&&(a[b].prototype.baseType=c)},a.MLjqui.invoke=function(b,c){if(0!=c.length){for(var d=typeof c==Array||c.length>0?c[0]:c,e=typeof c==Array||c.length>1?Array.prototype.slice.call(c,1):a({}).toArray();void 0==b[d]&&null!=b.base;){if(void 0!=b[d]&&a.isFunction(b[d]))return b[d].apply(b,e);if("string"==typeof d){var f=d.toLowerCase();if(void 0!=b[f]&&a.isFunction(b[f]))return b[f].apply(b,e)}b=b.base}if(void 0!=b[d]&&a.isFunction(b[d]))return b[d].apply(b,e);if("string"==typeof d){var f=d.toLowerCase();if(void 0!=b[f]&&a.isFunction(b[f]))return b[f].apply(b,e)}}},a.MLjqui.hasProperty=function(a,b){if("object"==typeof b)for(var c in b){for(var d=a;d;){if(d.hasOwnProperty(c))return!0;if(d.hasOwnProperty(c.toLowerCase()))return!0;d=d.base}return!1}else for(;a;){if(a.hasOwnProperty(b))return!0;if(a.hasOwnProperty(b.toLowerCase()))return!0;a=a.base}return!1},a.MLjqui.hasFunction=function(b,c){if(0==c.length)return!1;if(void 0==b)return!1;var d=typeof c==Array||c.length>0?c[0]:c;for(typeof c==Array||c.length>1?Array.prototype.slice.call(c,1):{};void 0==b[d]&&null!=b.base;){if(b[d]&&a.isFunction(b[d]))return!0;if("string"==typeof d){var e=d.toLowerCase();if(b[e]&&a.isFunction(b[e]))return!0}b=b.base}if(b[d]&&a.isFunction(b[d]))return!0;if("string"==typeof d){var e=d.toLowerCase();if(b[e]&&a.isFunction(b[e]))return!0}return!1},a.MLjqui.isPropertySetter=function(b,c){return 1==c.length&&"object"==typeof c[0]?!0:2==c.length&&"string"==typeof c[0]&&!a.MLjqui.hasFunction(b,c)},a.MLjqui.validatePropertySetter=function(b,c,d){if(!a.MLjqui.propertySetterValidation)return!0;if(1==c.length&&"object"==typeof c[0]){for(var e in c[0]){for(var f=b;!f.hasOwnProperty(e)&&f.base;)f=f.base;if(!f||!f.hasOwnProperty(e)){if(!d){var g=f.hasOwnProperty(e.toString().toLowerCase());if(g)return!0;throw"Invalid property: "+e}return!1}}return!0}if(2!=c.length){if(!d)throw"Invalid property: "+c.length>=0?c[0]:"";return!1}for(;!b.hasOwnProperty(c[0])&&b.base;)b=b.base;if(!b||!b.hasOwnProperty(c[0])){if(!d)throw"Invalid property: "+c[0];return!1}return!0},Object.keys||(Object.keys=function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],d=c.length;return function(e){if("object"!=typeof e&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var f,g,h=[];for(f in e)a.call(e,f)&&h.push(f);if(b)for(g=0;d>g;g++)a.call(e,c[g])&&h.push(c[g]);return h}}()),a.MLjqui.set=function(b,c){var d=0;if(1==c.length&&"object"==typeof c[0]){if(b.isInitialized&&Object.keys&&Object.keys(c[0]).length>1){var e=b.base?b.base.element:b.element,f=a.data(e,b.widgetName).initArgs;if(f&&JSON&&JSON.stringify&&c[0]&&f[0])try{if(JSON.stringify(c[0])==JSON.stringify(f[0])){var g=!0;if(a.each(c[0],function(a,c){return b[a]!=c?(g=!1,!1):void 0}),g)return}}catch(h){}b.batchUpdate=c[0];var i={},j={};a.each(c[0],function(a,c){for(var e=b;!e.hasOwnProperty(a)&&null!=e.base;)e=e.base;e.hasOwnProperty(a)?b[a]!=c&&(i[a]=b[a],j[a]=c,d++):e.hasOwnProperty(a.toLowerCase())&&b[a.toLowerCase()]!=c&&(i[a.toLowerCase()]=b[a.toLowerCase()],j[a.toLowerCase()]=c,d++)}),2>d&&(b.batchUpdate=null)}a.each(c[0],function(c,d){for(var e=b;!e.hasOwnProperty(c)&&null!=e.base;)e=e.base;if(e.hasOwnProperty(c))a.MLjqui.setvalueraiseevent(e,c,d);else if(e.hasOwnProperty(c.toLowerCase()))a.MLjqui.setvalueraiseevent(e,c.toLowerCase(),d);else if(a.MLjqui.propertySetterValidation)throw"MLjquiCore: invalid property '"+c+"'"}),null!=b.batchUpdate&&(b.batchUpdate=null,b.propertiesChangedHandler&&d>1&&b.propertiesChangedHandler(b,i,j))}else if(2==c.length){for(;!b.hasOwnProperty(c[0])&&b.base;)b=b.base;if(b.hasOwnProperty(c[0]))a.MLjqui.setvalueraiseevent(b,c[0],c[1]);else if(b.hasOwnProperty(c[0].toLowerCase()))a.MLjqui.setvalueraiseevent(b,c[0].toLowerCase(),c[1]);else if(a.MLjqui.propertySetterValidation)throw"MLjquiCore: invalid property '"+c[0]+"'"}},a.MLjqui.setvalueraiseevent=function(a,b,c){var d=a[b];a[b]=c,a.isInitialized&&(void 0!=a.propertyChangedHandler&&a.propertyChangedHandler(a,b,d,c),void 0!=a.propertyChangeMap&&void 0!=a.propertyChangeMap[b]&&a.propertyChangeMap[b](a,b,d,c))},a.MLjqui.get=function(a,b){if(void 0!=b&&null!=b){if(a.propertyMap){var c=a.propertyMap(b);if(null!=c)return c}if(a.hasOwnProperty(b))return a[b];if(a.hasOwnProperty(b.toLowerCase()))return a[b.toLowerCase()];var d=void 0;if(typeof b==Array){if(1!=b.length)return;d=b[0]}else"string"==typeof b&&(d=b);for(;!a.hasOwnProperty(d)&&a.base;)a=a.base;return a?a[d]:void 0}},a.MLjqui.serialize=function(b){var c="";if(a.isArray(b)){c="[";for(var d=0;d0&&(c+=", "),c+=a.MLjqui.serialize(b[d]);c+="]"}else if("object"==typeof b){c="{";var e=0;for(var d in b)e++>0&&(c+=", "),c+=d+": "+a.MLjqui.serialize(b[d]);c+="}"}else c=b.toString();return c},a.MLjqui.propertySetterValidation=!0,a.MLjqui.MLjquiWidgetProxy=function(b,c,d){var e=(a(c),a.data(c,b));if(void 0!=e){var f=e.instance;if(a.MLjqui.hasFunction(f,d))return a.MLjqui.invoke(f,d);if(a.MLjqui.isPropertySetter(f,d)){if(a.MLjqui.validatePropertySetter(f,d))return void a.MLjqui.set(f,d)}else{if("object"==typeof d&&0==d.length)return;if("object"==typeof d&&1==d.length&&a.MLjqui.hasProperty(f,d[0]))return a.MLjqui.get(f,d[0]);if("string"==typeof d&&a.MLjqui.hasProperty(f,d[0]))return a.MLjqui.get(f,d)}throw"MLjquiCore: Invalid parameter '"+a.MLjqui.serialize(d)+"' does not exist."}},a.MLjqui.applyWidget=function(b,c,d,e){var f=!1;try{f=void 0!=window.MSApp}catch(g){}var h=a(b);e?(e.host=h,e.element=b):e=new a.MLjqui["_"+c],""==b.id&&(b.id=a.MLjqui.utilities.createId());var i={host:h,element:b,instance:e,initArgs:d};e.widgetName=c,a.data(b,c,i),a.data(b,"MLjquiWidget",i.instance);for(var j=new Array,e=i.instance;e;)e.isInitialized=!1,j.push(e),e=e.base;j.reverse(),j[0].theme=a.MLjqui.theme||"",a.MLjqui.MLjquiWidgetProxy(c,b,d);for(var k in j)e=j[k],0==k&&(e.host=h,e.element=b,e.WinJS=f),void 0!=e&&(e.definedInstance&&e.definedInstance(),null!=e.createInstance&&(f?MSApp.execUnsafeLocalFunction(function(){e.createInstance(d)}):e.createInstance(d)));for(var k in j)void 0!=j[k]&&(j[k].isInitialized=!0);f?MSApp.execUnsafeLocalFunction(function(){i.instance.refresh(!0)}):i.instance.refresh(!0)},a.MLjqui.MLjquiWidget=function(b,c,d){var e=!1;try{MLjquiArgs=Array.prototype.slice.call(d,0)}catch(f){MLjquiArgs=""}try{e=void 0!=window.MSApp}catch(f){}var g=b,h="";c&&(h="_"+c),a.MLjqui.define(a.MLjqui,"_"+g,h);var i=new Array;if(!window[g]){var j=function(b){if(null==b)return"";var c=a.type(b);switch(c){case"string":case"number":case"date":case"boolean":case"bool":return null===b?"":b.toString()}var d="";return a.each(b,function(b){var c=this;b>0&&(d+=", "),d+="[";var e=0;if("object"==a.type(c))for(var f in c)e>0&&(d+=", "),d+="{"+f+":"+c[f]+"}",e++;else e>0&&(d+=", "),d+="{"+b+":"+c+"}",e++;d+="]"}),d};window[g]=function(b,c){var d=[];c||(c={}),d.push(c);var e=b;if("object"===a.type(e)&&b[0]&&(e=b[0].id,""===e&&(e=b[0].id=a.MLjqui.utilities.createId())),window.MLjquiWidgets&&window.MLjquiWidgets[e]){if(c&&a.each(window.MLjquiWidgets[e],function(b){var d=a(this.element).data();d&&d.MLjquiWidget&&a(this.element)[g](c)}),1==window.MLjquiWidgets[e].length){var f=a(window.MLjquiWidgets[e][0].widgetInstance.element).data();if(f&&f.MLjquiWidget)return window.MLjquiWidgets[e][0]}var f=a(window.MLjquiWidgets[e][0].widgetInstance.element).data();if(f&&f.MLjquiWidget)return window.MLjquiWidgets[e]}var h=a(b);if(0===h.length)throw new Error("Invalid Selector - "+b+"! Please, check whether the used ID or CSS Class name is correct.");var k=[];return a.each(h,function(b){var c=h[b],f=null;if(!i[g]){var l=c.id;c.id="",f=a(c).clone(),c.id=l}if(a.MLjqui.applyWidget(c,g,d,void 0),!i[g]){var m=a.data(c,"MLjquiWidget"),n=f[g]().data().MLjquiWidget.defineInstance(),o=function(b){var c=a.data(b,"MLjquiWidget");this.widgetInstance=c;var d=a.extend(this,c);return d.on=function(a,b){d.addHandler(d.host,a,b)},d.off=function(a){d.removeHandler(d.host,a)},d};i[g]=o,a.each(n,function(a,b){Object.defineProperty(o.prototype,a,{get:function(){return this.widgetInstance?this.widgetInstance[a]:b},set:function(b){if(this.widgetInstance&&this.widgetInstance[a]!=b&&this.widgetInstance[a]!=b&&j(this.widgetInstance[a])!=j(b)){var c={};c[a]=b,this.widgetInstance.host[g](c),this.widgetInstance[a]=b}}})})}var m=new i[g](c);k.push(m),window.MLjquiWidgets||(window.MLjquiWidgets=new Array),window.MLjquiWidgets[e]||(window.MLjquiWidgets[e]=new Array),window.MLjquiWidgets[e].push(m)}),1===k.length?k[0]:k}}a.fn[g]=function(){var b=Array.prototype.slice.call(arguments,0);if(0==b.length||1==b.length&&"object"==typeof b[0]){if(0==this.length)throw this.selector?new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct."):new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.");return this.each(function(){var c=(a(this),this),d=a.data(c,g);null==d?a.MLjqui.applyWidget(c,g,b,void 0):a.MLjqui.MLjquiWidgetProxy(g,this,b)})}if(0==this.length)throw this.selector?new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct."):new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.");var c=null,d=0;return this.each(function(){var e=a.MLjqui.MLjquiWidgetProxy(g,this,b);if(0==d)c=e,d++;else{if(1==d){var f=[];f.push(c),c=f}c.push(e)}}),c};try{a.extend(a.MLjqui["_"+g].prototype,Array.prototype.slice.call(d,0)[0])}catch(f){}a.extend(a.MLjqui["_"+g].prototype,{toThemeProperty:function(b,c){return a.MLjqui.toThemeProperty(this,b,c)}}),a.MLjqui["_"+g].prototype.refresh=function(){this.base&&this.base.refresh(!0)},a.MLjqui["_"+g].prototype.createInstance=function(){},a.MLjqui["_"+g].prototype.applyTo=function(b,c){if(!(c instanceof Array)){var d=[];d.push(c),c=d}a.MLjqui.applyWidget(b,g,c,this)},a.MLjqui["_"+g].prototype.getInstance=function(){return this},a.MLjqui["_"+g].prototype.propertyChangeMap={},a.MLjqui["_"+g].prototype.addHandler=function(b,c,d,e){a.MLjqui.addHandler(b,c,d,e)},a.MLjqui["_"+g].prototype.removeHandler=function(b,c,d){a.MLjqui.removeHandler(b,c,d)}},a.MLjqui.toThemeProperty=function(a,b,c){if(""==a.theme)return b;for(var d=b.split(" "),e="",f=0;f0&&(e+=" ");var g=d[f];e+=null!=c&&c?g+"-"+a.theme:g+" "+g+"-"+a.theme}return e},a.MLjqui.addHandler=function(b,c,d,e){for(var f=c.split(" "),g=0;g=0&&(b.length>0?(f.push(e[i]),g.push(e[i].replace(b,c))):g.push(e[i].replace("-"+c,"")+"-"+c));this._removeOldClasses(f,d),this._addNewClasses(g,d);for(var i=0;ic)return-1;if(c>e)return 1}catch(f){}return 0},f=function(b){if(g.hiddenWidgets.length>0){g.hiddenWidgets.sort(e);var d=function(){for(var b=!1,d=new Array,e=0;e0&&f(!1),g.hiddenWidgets=new Array,g.resizeHandlers.sort(e);for(var i=0;i=0&&g.hiddenWidgets.splice(g.hiddenWidgets.indexOf(j),1)),l.MLjquiWidget.element)){var p=l.MLjquiWidget.element.className;if((p.indexOf("dropdownlist")>=0||p.indexOf("datetimeinput")>=0||p.indexOf("combobox")>=0||p.indexOf("menu")>=0)&&l.MLjquiWidget.isOpened){var q=l.MLjquiWidget.isOpened();if(q){if(c&&"resize"==c&&a.MLjqui.mobile.isTouchDevice())continue;l.MLjquiWidget.close()}}}}}f()}};if(!this.resizeHandlers){this.resizeHandlers=new Array;var j=a(window);j.on?(this._resizeTimer=null,this._initResize=null,j.on("resize.MLjqui",function(b){void 0!=g._resizeTimer&&clearTimeout(g._resizeTimer),g._initResize?g._resizeTimer=setTimeout(function(){l(null,"resize")},a.MLjqui.resizeDelay):(g._initResize=!0,l(null,"resize"))}),j.on("orientationchange.MLjqui",function(a){l(null,"orientationchange")}),j.on("orientationchanged.MLjqui",function(a){l(null,"orientationchange")})):(j.bind("resize.MLjqui",function(a){l(null,"orientationchange")}),j.bind("orientationchange.MLjqui",function(a){l(null,"orientationchange")}),j.bind("orientationchanged.MLjqui",function(a){l(null,"orientationchange")}))}var m=b.data();e&&-1===f&&this.resizeHandlers.push({id:b[0].id,widget:b,callback:c,data:m});try{var n=m.MLjquiWidget.width,o=m.MLjquiWidget.height;m.MLjquiWidget.base&&(void 0==n&&(n=m.MLjquiWidget.base.width),void 0==o&&(o=m.MLjquiWidget.base.height)),void 0===n&&void 0===o&&(n=m.MLjquiWidget.element.style.width,o=m.MLjquiWidget.element.style.height);var p=!1;if(null!=n&&-1!=n.toString().indexOf("%")&&(p=!0),null!=o&&-1!=o.toString().indexOf("%")&&(p=!0),p){this.watchedElementData||(this.watchedElementData=[]);var g=this,q=function(b){g.watchedElementData.forEach&&g.watchedElementData.forEach(function(b){b.element.offsetWidth===b.offsetWidth&&b.element.offsetHeight===b.offsetHeight||(b.offsetWidth=b.element.offsetWidth,b.offsetHeight=b.element.offsetHeight,b.timer&&clearTimeout(b.timer),b.timer=setTimeout(function(){a.MLjqui.isHidden(a(b.element))||b.callback()}))})};g.watchedElementData.push({element:b[0],offsetWidth:b[0].offsetWidth,offsetHeight:b[0].offsetHeight,callback:c}),g.observer||(g.observer=new MutationObserver(q),g.observer.observe(document.body,{attributes:!0,childList:!0,characterData:!0}))}}catch(r){}a.MLjqui.isHidden(b)&&e===!0&&l(!0),a.MLjqui.resize=function(){l(null,"resize")}},html:function(b,c){if(!a(b).on)return a(b).html(c);try{return a.access(b,function(c){var d=b[0]||{},e=0,f=b.length;if(void 0===c)return 1===d.nodeType?d.innerHTML.replace(rinlinejQuery,""):void 0;var g=/<(?:script|style|link)/i,h="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",i=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,j=/<([\w:]+)/,k=new RegExp("<(?:"+h+")[\\s/>]","i"),l=/^\s+/,m={option:[1,""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]};if("string"==typeof c&&!g.test(c)&&(a.support.htmlSerialize||!k.test(c))&&(a.support.leadingWhitespace||!l.test(c))&&!m[(j.exec(c)||["",""])[1].toLowerCase()]){c=c.replace(i,"<$1>");try{for(;f>e;e++)d=this[e]||{},1===d.nodeType&&(a.cleanData(d.getElementsByTagName("*")),d.innerHTML=c);d=0}catch(n){}}d&&b.empty().append(c)},null,c,arguments.length)}catch(d){return a(b).html(c)}},hasTransform:function(b){var c="";if(c=b.css("transform"),""==c||"none"==c){if(c=b.parents().css("transform"),""!=c&&"none"!=c)return""!=c&&"none"!=c;var d=a.MLjqui.utilities.getBrowser();"msie"==d.browser?(c=b.css("-ms-transform"),""!=c&&"none"!=c||(c=b.parents().css("-ms-transform"))):"chrome"==d.browser?(c=b.css("-webkit-transform"),""!=c&&"none"!=c||(c=b.parents().css("-webkit-transform"))):"opera"==d.browser?(c=b.css("-o-transform"),""!=c&&"none"!=c||(c=b.parents().css("-o-transform"))):"mozilla"==d.browser&&(c=b.css("-moz-transform"),""!=c&&"none"!=c||(c=b.parents().css("-moz-transform")))}return""!=c&&"none"!=c||(c=a(document.body).css("transform")),""!=c&&"none"!=c&&null!=c},getBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[],c={browser:b[1]||"",version:b[2]||"0"};return a.indexOf("rv:11.0")>=0&&a.indexOf(".net4.0c")>=0&&(c.browser="msie",c.version="11",b[1]="msie"),a.indexOf("edge")>=0&&(c.browser="msie",c.version="12",b[1]="msie"),c[b[1]]=b[1],c}}),a.MLjqui.browser=a.MLjqui.utilities.getBrowser(),a.MLjqui.isHidden=function(a){if(!a||!a[0])return!1;var b=a[0].offsetWidth,c=a[0].offsetHeight;return 0===b||0===c},a.MLjqui.ariaEnabled=!0,a.MLjqui.aria=function(b,c,d){if(a.MLjqui.ariaEnabled)if(void 0==c)a.each(b.aria,function(c,d){var e=b.base?b.base.host.attr(c):b.host.attr(c);if(void 0==e||a.isFunction(e)){var e=b[d.name];a.isFunction(e)&&(e=b[d.name]()),void 0==e&&(e="");try{b.base?b.base.host.attr(c,e.toString()):b.host.attr(c,e.toString())}catch(f){}}else{var g=e;switch(d.type){case"number":g=new Number(e),isNaN(g)&&(g=e);break;case"boolean":g="true"==e;break;case"date":g=new Date(e),("Invalid Date"==g||isNaN(g))&&(g=e)}b[d.name]=g}});else try{b.host?b.base?b.base.host?b.base.host.attr(c,d.toString()):b.attr(c,d.toString()):b.host?b.element.setAttribute?b.element.setAttribute(c,d.toString()):b.host.attr(c,d.toString()):b.attr(c,d.toString()):b.setAttribute&&b.setAttribute(c,d.toString())}catch(e){}},Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=Number(arguments[1])||0;for(c=0>c?Math.ceil(c):Math.floor(c),0>c&&(c+=b);b>c;c++)if(c in this&&this[c]===a)return c;return-1}),a.MLjqui.mobile=a.MLjqui.mobile||{},a.MLjqui.position=function(b){var c=parseInt(b.pageX),d=parseInt(b.pageY);if(a.MLjqui.mobile.isTouchDevice()){var e=a.MLjqui.mobile.getTouches(b),f=e[0];c=parseInt(f.pageX),d=parseInt(f.pageY)}return{left:c,top:d}},a.extend(a.MLjqui.mobile,{_touchListener:function(a,b){var c=function(a,b){var c=document.createEvent("MouseEvents");return c.initMouseEvent(a,b.bubbles,b.cancelable,b.view,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget),c._pageX=b.pageX,c._pageY=b.pageY,c},d={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"},e=c(d[a.type],a);a.target.dispatchEvent(e);var f=a.target["on"+d[a.type]];"function"==typeof f&&f(a)},setMobileSimulator:function(b,c){if(!this.isTouchDevice()){this.simulatetouches=!0,0==c&&(this.simulatetouches=!1);var d={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"},e=this;if(window.addEventListener){var f=function(){for(var a in d)b.addEventListener&&(b.removeEventListener(a,e._touchListener),b.addEventListener(a,e._touchListener,!1))};a.MLjqui.browser.msie,f()}}},isTouchDevice:function(){if(void 0!=this.touchDevice)return this.touchDevice;var a="Browser CodeName: "+navigator.appCodeName;if(a+="Browser Name: "+navigator.appName,a+="Browser Version: "+navigator.appVersion,a+="Platform: "+navigator.platform,a+="User-agent header: "+navigator.userAgent,-1!=a.indexOf("Android"))return!0;if(-1!=a.indexOf("IEMobile"))return!0;if(-1!=a.indexOf("Windows Phone"))return!0;if(-1!=a.indexOf("WPDesktop"))return!0;if(-1!=a.indexOf("ZuneWP7"))return!0;if(-1!=a.indexOf("BlackBerry")&&-1!=a.indexOf("Mobile Safari"))return!0;if(-1!=a.indexOf("ipod"))return!0;if(-1!=a.indexOf("nokia")||-1!=a.indexOf("Nokia"))return!0;if(-1!=a.indexOf("Chrome/17"))return!1;if(-1!=a.indexOf("CrOS"))return!1;if(-1!=a.indexOf("Opera")&&-1==a.indexOf("Mobi")&&-1==a.indexOf("Mini")&&-1!=a.indexOf("Platform: Win"))return!1;if(-1!=a.indexOf("Opera")&&-1!=a.indexOf("Mobi")&&-1!=a.indexOf("Opera Mobi"))return!0;var b={ios:"i(?:Pad|Phone|Pod)(?:.*)CPU(?: iPhone)? OS ",android:"(Android |HTC_|Silk/)",blackberry:"BlackBerry(?:.*)Version/",rimTablet:"RIM Tablet OS ",webos:"(?:webOS|hpwOS)/",bada:"Bada/"};try{if(void 0!=this.touchDevice)return this.touchDevice;this.touchDevice=!1;for(i in b)if(b.hasOwnProperty(i)&&(prefix=b[i],match=a.match(new RegExp("(?:"+prefix+")([^\\s;]+)")),match))return"blackberry"==i.toString()?(this.touchDevice=!1,!1):(this.touchDevice=!0,!0);var c=navigator.userAgent;if(-1!=navigator.platform.toLowerCase().indexOf("win")){if(c.indexOf("Windows Phone")>=0||c.indexOf("WPDesktop")>=0||c.indexOf("IEMobile")>=0||c.indexOf("ZuneWP7")>=0)return this.touchDevice=!0,!0;if(c.indexOf("Touch")>=0){var d="MSPointerDown"in window||"pointerdown"in window;return d?(this.touchDevice=!0,!0):c.indexOf("ARM")>=0?(this.touchDevice=!0,!0):(this.touchDevice=!1,!1)}}return-1!=navigator.platform.toLowerCase().indexOf("win")?(this.touchDevice=!1,!1):(("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)&&(this.touchDevice=!0),this.touchDevice)}catch(e){return this.touchDevice=!1,!1}},getLeftPos:function(a){for(var b=a.offsetLeft;null!=(a=a.offsetParent);)"HTML"!=a.tagName&&(b+=a.offsetLeft,document.all&&(b+=a.clientLeft));return b},getTopPos:function(b){for(var c=b.offsetTop,d=a(b).coord();null!=(b=b.offsetParent);)"HTML"!=b.tagName&&(c+=b.offsetTop-b.scrollTop,document.all&&(c+=b.clientTop));var e=navigator.userAgent.toLowerCase(),f=(-1!=e.indexOf("windows phone")||-1!=e.indexOf("WPDesktop")||-1!=e.indexOf("ZuneWP7")||-1!=e.indexOf("msie 9")||-1!=e.indexOf("msie 11")||-1!=e.indexOf("msie 10"))&&-1!=e.indexOf("touch");return f?d.top:this.isSafariMobileBrowser()?this.isSafari4MobileBrowser()&&this.isIPadSafariMobileBrowser()?c:-1!=e.indexOf("version/7")?d.top:(-1==e.indexOf("version/6")&&-1==e.indexOf("version/5")||(c+=a(window).scrollTop()),/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)?c+a(window).scrollTop():/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)?c+a(window).scrollTop():d.top):c},isChromeMobileBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("android");return b},isOperaMiniMobileBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("opera mini")||-1!=a.indexOf("opera mobi");return b},isOperaMiniBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("opera mini");return b},isNewSafariMobileBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("ipad")||-1!=a.indexOf("iphone")||-1!=a.indexOf("ipod");return b=b&&-1!=a.indexOf("version/5")},isSafari4MobileBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("ipad")||-1!=a.indexOf("iphone")||-1!=a.indexOf("ipod");return b=b&&-1!=a.indexOf("version/4")},isWindowsPhone:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("windows phone")||-1!=a.indexOf("WPDesktop")||-1!=a.indexOf("ZuneWP7")||-1!=a.indexOf("msie 9")||-1!=a.indexOf("msie 11")||-1!=a.indexOf("msie 10")&&-1!=a.indexOf("touch");return b},isSafariMobileBrowser:function(){var a=navigator.userAgent.toLowerCase();if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent))return!0;if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent))return!0;var b=-1!=a.indexOf("ipad")||-1!=a.indexOf("iphone")||-1!=a.indexOf("ipod")||-1!=a.indexOf("mobile safari");return b},isIPadSafariMobileBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("ipad");return b},isMobileBrowser:function(){var a=navigator.userAgent.toLowerCase(),b=-1!=a.indexOf("ipad")||-1!=a.indexOf("iphone")||-1!=a.indexOf("android");return b},getTouches:function(a){if(a.originalEvent){if(a.originalEvent.touches&&a.originalEvent.touches.length)return a.originalEvent.touches;if(a.originalEvent.changedTouches&&a.originalEvent.changedTouches.length)return a.originalEvent.changedTouches}return a.touches||(a.touches=new Array,a.touches[0]=void 0!=a.originalEvent?a.originalEvent:a,void 0!=a.originalEvent&&a.pageX&&(a.touches[0]=a),"mousemove"==a.type&&(a.touches[0]=a)),a.touches},getTouchEventName:function(a){if(!this.isWindowsPhone())return a;var b=navigator.userAgent.toLowerCase();if(-1!=b.indexOf("windows phone 7")){if(-1!=a.toLowerCase().indexOf("start"))return"MSPointerDown";if(-1!=a.toLowerCase().indexOf("move"))return"MSPointerMove";if(-1!=a.toLowerCase().indexOf("end"))return"MSPointerUp"}return-1!=a.toLowerCase().indexOf("start")?"pointerdown":-1!=a.toLowerCase().indexOf("move")?"pointermove":-1!=a.toLowerCase().indexOf("end")?"pointerup":void 0},dispatchMouseEvent:function(a,b,c){if(!this.simulatetouches){var d=document.createEvent("MouseEvent");d.initMouseEvent(a,!0,!0,b.view,1,b.screenX,b.screenY,b.clientX,b.clientY,!1,!1,!1,!1,0,null),null!=c&&c.dispatchEvent(d)}},getRootNode:function(a){for(;1!==a.nodeType;)a=a.parentNode;return a},setTouchScroll:function(a,b){this.enableScrolling||(this.enableScrolling=[]),this.enableScrolling[b]=a},touchScroll:function(b,c,d,e,f,g){function h(a){if(a.targetTouches&&a.targetTouches.length>=1)return a.targetTouches[0].clientY;if(a.originalEvent&&void 0!==a.originalEvent.clientY)return a.originalEvent.clientY;var b=l.getTouches(a);return b[0].clientY}function i(a){if(a.targetTouches&&a.targetTouches.length>=1)return a.targetTouches[0].clientX;if(a.originalEvent&&void 0!==a.originalEvent.clientX)return a.originalEvent.clientX;var b=l.getTouches(a);return b[0].clientX}function j(){var a,b;K&&(a=Date.now()-I,b=-K*Math.exp(-a/O),b>.5||-.5>b?(Q(L+b,event),requestAnimationFrame(j)):(Q(L),g.fadeOut("fast")))}function k(){var a,b;K&&(a=Date.now()-I,b=-K*Math.exp(-a/O),b>.5||-.5>b?(R(M+b),requestAnimationFrame(k)):(R(M),f.fadeOut("fast")))}if(null!=b){var l=this,m=0,n=0,o=0,p=0,q=0,r=0;this.scrolling||(this.scrolling=[]),this.scrolling[e]=!1;var s=!1,t=a(b),u=["select","input","textarea"],v=0,w=0;this.enableScrolling||(this.enableScrolling=[]),this.enableScrolling[e]=!0;var e=e,x=this.getTouchEventName("touchstart")+".touchScroll",y=this.getTouchEventName("touchend")+".touchScroll",z=this.getTouchEventName("touchmove")+".touchScroll";f.fadeOut(0),g.fadeOut(0);var A,B,C,D,E,F,G,H,I,J,K,L,M,N,O;C=c,B=0,D=0,xoffset=0,A=f.MLjquiScrollBar("max"),O=325;var P=function(){var a,b,c,d;a=Date.now(),b=a-I,I=a,c=D-H,xdelta=xoffset-xframe,H=D,xframe=xoffset,F=!0,d=1e3*c/(1+b),xv=1e3*xdelta/(1+b),G=.8*d+.2*G,xvelocity=.8*xv+.2*xvelocity},v=function(b){function c(a){F=!0,E=h(a),N=i(a),G=K=xvelocity=0,H=D,xframe=xoffset,I=Date.now(),clearInterval(J),J=setInterval(P,100),a.preventDefault()}if(!l.enableScrolling[e])return!0;if(-1===a.inArray(b.target.tagName.toLowerCase(),u)){D=g.MLjquiScrollBar("value"),xoffset=f.MLjquiScrollBar("value");var d=l.getTouches(b),j=d[0];return 1==d.length&&l.dispatchMouseEvent("mousedown",j,l.getRootNode(j.target)),c(b),s=!1,n=j.pageY,q=j.pageX,l.simulatetouches&&void 0!=j._pageY&&(n=j._pageY,q=j._pageX),l.scrolling[e]=!0,A=f.MLjquiScrollBar("max"),C=g.MLjquiScrollBar("max"),m=0,p=0,!0}};t.on?t.on(x,v):t.bind(x,v);var Q=function(a,b){D=a>C?C:B>a?B:a,d(null,a,0,0,b)},R=function(a,b){xoffset=a>A?A:B>a?B:a,d(a,null,0,0,b)},S=function(a){function b(a){var b,c,d;if(F){if(b=h(a),d=i(a),c=E-b,xdelta=N-d,c>2||-2>c)return E=b,Q(D+c,a),P(),a.preventDefault(),a.stopPropagation(),!1;if(xdelta>2||xdelta<-2)return N=d,R(xoffset+xdelta,a),P(),a.preventDefault(),a.stopPropagation(),!1;a.preventDefault()}}if(!l.enableScrolling[e])return!0;if(!l.scrolling[e])return!0;var c=l.getTouches(a);if(c.length>1)return!0;var d=c[0].pageY,j=c[0].pageX;l.simulatetouches&&void 0!=c[0]._pageY&&(d=c[0]._pageY,j=c[0]._pageX);var k=d-n,t=j-q;w=d,touchHorizontalEnd=j,o=k-m,r=t-p,s=!0,m=k,p=t;var u=null!=f?"hidden"!=f[0].style.visibility:!0,v=null!=g?"hidden"!=g[0].style.visibility:!0;(u||v)&&(u||v)&&b(a)};t.on?t.on(z,S):t.bind(z,S);var T=function(a){if(!l.enableScrolling[e])return!0;var b=l.getTouches(a)[0];if(!l.scrolling[e])return!0;if(F=!1,clearInterval(J),G>10||-10>G?(K=.8*G,L=Math.round(D+K),I=Date.now(),requestAnimationFrame(j),g.fadeIn(100)):xvelocity>10||xvelocity<-10?(K=.8*xvelocity,M=Math.round(xoffset+K),I=Date.now(),requestAnimationFrame(k),f.fadeIn(100)):(f.fadeOut(100),g.fadeOut(100)),l.scrolling[e]=!1,!s){var b=l.getTouches(a)[0],c=l.getRootNode(b.target);return l.dispatchMouseEvent("mouseup",b,c),l.dispatchMouseEvent("click",b,c),!0}l.dispatchMouseEvent("mouseup",b,a.target)};if(this.simulatetouches){ -var U=(void 0!=a(window).on||a(window).bind,function(a){try{T(a)}catch(b){}l.scrolling[e]=!1});if(void 0!=a(window).on?a(document).on("mouseup.touchScroll",U):a(document).bind("mouseup.touchScroll",U),window.frameElement&&null!=window.top){var V=function(a){try{T(a)}catch(b){}l.scrolling[e]=!1};window.top.document&&(a(window.top.document).on?a(window.top.document).on("mouseup",V):a(window.top.document).bind("mouseup",V))}var W=(void 0!=a(document).on||a(document).bind,function(a){if(!l.scrolling[e])return!0;l.scrolling[e]=!1;var b=l.getTouches(a)[0],c=l.getRootNode(b.target);l.dispatchMouseEvent("mouseup",b,c),l.dispatchMouseEvent("click",b,c)});void 0!=a(document).on?a(document).on("touchend",W):a(document).bind("touchend",W)}t.on&&(t.on("dragstart",function(a){a.preventDefault()}),t.on("selectstart",function(a){a.preventDefault()})),t.on?t.on(y+" touchcancel.touchScroll",T):t.bind(y+" touchcancel.touchScroll",T)}}}),a.MLjqui.cookie=a.MLjqui.cookie||{},a.extend(a.MLjqui.cookie,{cookie:function(b,c,d){if(arguments.length>1&&"[object Object]"!==String(c)){if(d=a.extend({},d),null!==c&&void 0!==c||(d.expires=-1),"number"==typeof d.expires){var e=d.expires,f=d.expires=new Date;f.setDate(f.getDate()+e)}return c=String(c),document.cookie=[encodeURIComponent(b),"=",d.raw?c:encodeURIComponent(c),d.expires?"; expires="+d.expires.toUTCString():"",d.path?"; path="+d.path:"",d.domain?"; domain="+d.domain:"",d.secure?"; secure":""].join("")}d=c||{};var g,h=d.raw?function(a){return a}:decodeURIComponent;return(g=new RegExp("(?:^|; )"+encodeURIComponent(b)+"=([^;]*)").exec(document.cookie))?h(g[1]):null}}),a.MLjqui.string=a.MLjqui.string||{},a.extend(a.MLjqui.string,{replace:function(a,b,c){if(b===c)return this;for(var d=a,e=d.indexOf(b);-1!=e;)d=d.replace(b,c),e=d.indexOf(b);return d},contains:function(a,b){return null==a||null==b?!1:-1!=a.indexOf(b)},containsIgnoreCase:function(a,b){return null==a||null==b?!1:-1!=a.toString().toUpperCase().indexOf(b.toString().toUpperCase())},equals:function(a,b){return null==a||null==b?!1:(a=this.normalize(a),b.length==a.length?a.slice(0,b.length)==b:!1)},equalsIgnoreCase:function(a,b){return null==a||null==b?!1:(a=this.normalize(a),b.length==a.length?a.toUpperCase().slice(0,b.length)==b.toUpperCase():!1)},startsWith:function(a,b){return null==a||null==b?!1:a.slice(0,b.length)==b},startsWithIgnoreCase:function(a,b){return null==a||null==b?!1:a.toUpperCase().slice(0,b.length)==b.toUpperCase()},normalize:function(a){return 65279==a.charCodeAt(a.length-1)&&(a=a.substring(0,a.length-1)),a},endsWith:function(a,b){return null==a||null==b?!1:(a=this.normalize(a),a.slice(-b.length)==b)},endsWithIgnoreCase:function(a,b){return null==a||null==b?!1:(a=this.normalize(a),a.toUpperCase().slice(-b.length)==b.toUpperCase())}}),a.extend(a.easing,{easeOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c}})}(MLjquiBaseFramework),function(a){a.extend(a.event.special,{close:{noBubble:!0},open:{noBubble:!0},cellclick:{noBubble:!0},rowclick:{noBubble:!0},tabclick:{noBubble:!0},selected:{noBubble:!0},expanded:{noBubble:!0},collapsed:{noBubble:!0},valuechanged:{noBubble:!0},expandedItem:{noBubble:!0},collapsedItem:{noBubble:!0},expandingItem:{noBubble:!0},collapsingItem:{noBubble:!0}}),a.fn.extend({ischildof:function(b){for(var c=a(this).parents().get(),d=0;d0){var d=c.host.find("tbody tr"),e=c.host.find("th"),f=new Array;0===e.length&&(e=d[0],d.splice(0,1)),c.localizestrings&&(c.localizestrings(),null!=c.localization&&c.localizestrings(c.localization,!1));for(var g=[],h=0;h
          ");var r=c.host.parent(),s=c.host.data();s.MLjquiDataTable.host=r,s.MLjquiDataTable.element=r[0],c.host.parent()[0].id=c.element.id;try{c.host.parent()[0].style=c.element.style}catch(t){}c.element=r[0],c.host=r,c.host.data(s);var u={dataFields:f,localdata:g,datatype:"array"},v=new a.MLjqui.dataAdapter(u);c.source=v}c.source&&!c.source.dataBind&&(c.source=new a.MLjqui.dataAdapter(c.source));var w=c.source._source.datafields;w&&w.length>0&&(c._camelCase=void 0!==c.source._source.dataFields,c.selectionMode=c.selectionMode.toLowerCase()),null==c.host.attr("tabindex")&&c.host.attr("tabindex","0"),c.host.attr("role","grid"),c.host.attr("align","left"),c.host.addClass(c.toTP("MLjqui-grid")),c.host.addClass(c.toTP("MLjqui-reset")),c.host.addClass(c.toTP("MLjqui-rc-all")),c.host.addClass(c.toTP("MLjqui-widget")),c.host.addClass(c.toTP("MLjqui-widget-content")),c._testmodules()||(c.render(!0),a.MLjqui.utilities.resize(c.host,function(){var b=a(window).width(),d=a(window).height(),e=c.host.width(),f=c.host.height();c._lastHostWidth==e&&c._lastHostHeight==f||c._updatesize(c._lastHostWidth!=e,c._lastHostHeight!=f),c._lastWidth=b,c._lastHeight=d,c._lastHostWidth=e,c._lastHostHeight=f}))},getvaluebytype:function(b,c){var d=b;if(null==b)return b;if(","==this.gridlocalization.decimalseparator&&b.indexOf(this.gridlocalization.decimalseparator)>=0&&(b=b.replace(this.gridlocalization.decimalseparator,".")),b.indexOf(this.gridlocalization.currencysymbol)>=0&&(b=b.replace(this.gridlocalization.currencysymbol,"")),b.indexOf(this.gridlocalization.percentagesymbol)>=0&&(b=b.replace(this.gridlocalization.percentagesymbol,"")),a.isArray(b)&&"array"!=c.type){for(var e=0;e
          ');var b=a('
          '+this.gridlocalization.loadtext+"
          ");if(b.addClass(this.toTP("MLjqui-rc-all")),this.dataloadelement.addClass(this.toTP("MLjqui-rc-all")),b.addClass(this.toTP("MLjqui-tb-fill-state-normal")),this.dataloadelement.append(b),this.dataloadelement.width(this.width),this.dataloadelement.height(this.height),this.host.prepend(this.dataloadelement),""!=this.source._source.url){var c=!1;("auto"===this.height||null===this.height||this.autoheight)&&999999==this.maxHeight&&(c=!0),c?(this.host.height(100),this.dataloadelement.height(100)):(this.host.height(this.height),this.dataloadelement.height(this.height));var d=!1;("auto"===this.width||null===this.width||this.autoWidth)&&(d=!0),d?(this.host.width(300),this.dataloadelement.width(300)):(this.host.width(this.width),this.dataloadelement.width(this.width))}},_measureElement:function(b){var c=a("measure Text");c.addClass(this.toTP("MLjqui-widget")),a(document.body).append(c),"cell"==b?this._cellheight=c.height():this._columnheight=c.height(),c.remove()},_testmodules:function(){var b="",c=this,d=function(){""!=b.length&&(b+=",")};if(this.host.MLjquiScrollBar||(d(),b+=" MLjquiscrollbar.js"),this.host.MLjquiButton||(d(),b+=" MLjquibuttons.js"),a.MLjqui.dataAdapter||(d(),b+=" MLjquidata.js"),""!=b||this.editable||this.filterable||this.pageable){var e=[],f=function(a){switch(a){case"checkbox":c.host.MLjquiCheckBox||e.checkbox||(e.checkbox=!0,d(),b+=" MLjquicheckbox.js");break;case"dropdownlist":c.host.MLjquiDropDownList||e.dropdownlist?c.host.MLjquiListBox||e.listbox||(d(),e.listbox=!0,b+=" MLjquilistbox.js"):(d(),e.dropdownlist=!0,b+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)")}};if((this.filterable&&"simple"!=this.filterMode||"advanced"==this.pagerMode&&this.pageable)&&f("dropdownlist"),""!=b)throw new Error("MLjquiDataTable: Missing references to the following module(s): "+b)}return!1},focus:function(){try{this.wrapper.focus(),this.host.focus();var a=this;setTimeout(function(){a.wrapper.focus(),a.host.focus()},25),this.focused=!0}catch(b){}},hiddenParent:function(){return a.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return!this._loading},_updatesize:function(b,c){if(!this._loading){var d=this,e=d.host.width(),f=d.host.height();d._oldWidth||(d._oldWidth=e),d._oldHeight||(d._oldHeight=f),void 0!=d._resizeTimer&&(clearTimeout(d._resizeTimer),d._resizeTimer=null);var g=300,h=function(){d._resizeTimer&&clearTimeout(d._resizeTimer),d.resizingGrid=!0,a.MLjqui.isHidden(d.host)||(d._updatecolumnwidths(),d.refresh(),d._oldWidth=e,d._oldHeight=f,d.resizingGrid=!1)};h(),d._resizeTimer=setTimeout(function(){var a=d.host.width(),b=d.host.height();d._oldWidth==a&&d._oldHeight==b||h()},g)}},resize:function(a,b){void 0!=a&&(this.width=a),void 0!=b&&(this.height=b),this._updatecolumnwidths(),this.refresh()},isTouchDevice:function(){if(void 0!=this.touchDevice)return this.touchDevice;var b=a.MLjqui.mobile.isTouchDevice();return this.touchDevice=b,1==this.touchmode?(b=!0,a.MLjqui.mobile.setMobileSimulator(this.table[0]),this.touchDevice=b):0==this.touchmode&&(b=!1),b&&(this.touchDevice=!0,this.host.addClass(this.toThemeProperty("MLjqui-touch")),this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch")),this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch")),this.scrollBarSize=this.touchScrollBarSize),b},toTP:function(a){return this.toThemeProperty(a)},localizestrings:function(b,c){if(this._cellscache=new Array,a.MLjqui.dataFormat&&a.MLjqui.dataFormat.cleardatescache(),this._loading)throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);if(null!=b){for(var d in b)d.toLowerCase()!==d&&(b[d.toLowerCase()]=b[d]);for(var e=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"],f=this,g=0;gh&&(this.source.records.length>0||this.source.hierarchy&&this.source.hierarchy.length>0)?(this.vScrollBar[0].style.visibility=f,e=4+parseInt(c),this.vScrollBar.MLjquiScrollBar({max:d-h})):this.vScrollBar[0].style.visibility="hidden",g!=this.vScrollBar[0].style.visibility){this._updatecolumnwidths();var j=this.table.height();d!=j&&(d=j,!i&&d>h&&(this.source.records.length>0||this.source.hierarchy&&this.source.hierarchy.length>0)&&(this.vScrollBar[0].style.visibility=f,e=4+parseInt(c),this.vScrollBar.MLjquiScrollBar({max:d-h})))}0==this.scrollBarSize&&(e=0);var k=this.table?this.table.width():0;k>3&&(k-=3);var l=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width")),m=l+this.host.width()-e;if(k>m&&!b){if(this.hScrollBar[0].style.visibility=f,this.hScrollBar.MLjquiScrollBar({max:k-m}),e=4+parseInt(c),0==c&&(e=0),!i){if(d>h-e+4&&(this.source.records.length>0||this.source.hierarchy&&this.source.hierarchy.length>0)){this.hScrollBar.MLjquiScrollBar({max:l+k-m});var n="hidden"===this.vScrollBar[0].style.visibility;this.vScrollBar[0].style.visibility=f,this._updatecolumnwidths(),n&&this.hScrollBar.MLjquiScrollBar({max:k-m+e+l});var o=this.table?this.table.width():0;o>3&&(o-=3),o!=k&&m>o&&(this.hScrollBar.MLjquiScrollBar({max:l+o-m}),this.hScrollBar[0].style.visibility="hidden",e=0)}this.vScrollBar.MLjquiScrollBar({max:d-h+e})}}else this.hScrollBar[0].style.visibility="hidden";0===this.source.records.length&&this.source.hierarchy&&0===this.source.hierarchy.length&&(this.vScrollBar[0].style.visibility="hidden",this.bottomRight[0].style.visibility="hidden"),"hidden"==this.vScrollBar[0].style.visibility&&0!=this.vScrollInstance.value&&this.vScrollInstance.setPosition(0)},_measureElementWidth:function(b){var c=a(""+b+"");c.addClass(this.toTP("MLjqui-widget")),c.addClass(this.toTP("MLjqui-grid")),c.addClass(this.toTP("MLjqui-grid-column-header")),c.addClass(this.toTP("MLjqui-widget-header")),a(document.body).append(c);var d=c.outerWidth()+20;return c.remove(),d},_arrangeAutoHeight:function(a){if(a||(a=0),"auto"===this.height||null===this.height||this.autoheight){var b=this.table.height(),c=0;if(c+=this.columnGroups?this.showHeader?this.columnsheader.height():-1:this.showHeader?this.columnsHeight:-1,c+=this.showstatusbar?this.statusBarHeight:0,c+=this.showAggregates?this.aggregatesHeight:0,c+=this.showtoolbar?this.toolbarHeight:0,c+=this.pageable?this.pagerHeight:0,"both"===this.pagerPosition&&(c+=this.pageable?this.pagerHeight:0),c+=b,this.filterable){var d=this.filter.find(".filterrow"),e=this.filter.find(".filterrow-hidden"),f=1;e.length>0&&(f=0),c+=this.filterHeight-1+this.filterHeight*d.length*f}return c+a>this.maxHeight?this.host.height(this.maxHeight):this.host.height(c+a),!0}return!1},_arrangeAutoWidth:function(a){if(a||(a=0),"auto"===this.width||null===this.width||this.autowidth){for(var b=0,c=0;cthis.maxWidth?this.host.width(this.maxWidth):this.host.width(width+a),!0}return!1},_measureTopAndHeight:function(){var a=this.host.height(),b=0;if(this.showtoolbar&&(b+=this.toolbarHeight,a-=parseInt(this.toolbarHeight)),this.filterable){var c=this.filter.find(".filterrow"),d=this.filter.find(".filterrow-hidden"),e=1;d.length>0&&(e=0),b+=this.filterHeight,a-=parseInt(this.filterHeight);var f=1==e?c.length:0;b+=this.filterHeight*f,a-=this.filterHeight*f}return this.pageable&&"bottom"!=this.pagerPosition&&(b+=parseInt(this.pagerHeight)+1,a>this.pagerHeight&&"both"===this.pagerPosition&&(a-=parseInt(this.pagerHeight))),{top:b,height:a}},_arrange:function(){if(this.table){this._arrangeAutoHeight(),this._arrangeAutoWidth();var b=this.host.width(),c=this.host.height(),d=c;this.pageable?"bottom"===this.pagerPosition?(this.toppager[0].style.visibility="hidden",this.pager[0].style.visibility="inherit"):"both"===this.pagerPosition?(this.toppager[0].style.visibility="inherit",this.pager[0].style.visibility="inherit"):"top"===this.pagerPosition&&(this.toppager[0].style.visibility="inherit",this.pager[0].style.visibility="hidden"):(this.toppager[0].style.visibility="hidden",this.pager[0].style.visibility="hidden");var e=0;if(this.showtoolbar?(this.toolbar.width(b),this.toolbar.height(this.toolbarHeight-1),this.toolbar.css("top",0),e+=this.toolbarHeight,c-=parseInt(this.toolbarHeight)):this.toolbar[0].style.height="0px",this.filterable){this.filter.width(b),this.filter.css("top",e);var f=this.filter.find(".filterrow"),g=this.filter.find(".filterrow-hidden"),h=1;g.length>0&&(h=0),this.filter.height(this.filterHeight-1+this.filterHeight*f.length*h),e+=this.filterHeight,c-=parseInt(this.filterHeight);var i=1==h?f.length:0;e+=this.filterHeight*i,c-=this.filterHeight*i}if(this.showstatusbar?(this.statusbar.width(this.table?Math.max(b,this.table.width()):b),this.statusbar.height(this.statusBarHeight-1)):this.statusbar[0].style.height="0px",this.showAggregates?this.aggregates.height(this.aggregatesHeight-1):this.aggregates[0].style.height="0px",this.pageable&&"bottom"!=this.pagerPosition)this.toppager[0].style.width=b+"px",this.toppager[0].style.height=parseInt(this.pagerHeight)+"px",this.toppager[0].style.top=parseInt(e)+"px",e+=parseInt(this.pagerHeight)+1,c>this.pagerHeight&&(c-=parseInt(this.pagerHeight));else{this.toppager[0].style.width!=b+"px"&&(this.toppager[0].style.width=parseInt(b)+"px"),this.toppager[0].style.height!=this.pagerHeight+"px"&&(this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"),this.toppager[0].style.top!=e+"px"&&(this.toppager[0].style.top=e+"px");var j="bottom"!=this.pagerPosition?this.pagerHeight:0,k=e+j+"px";this.content[0].style.top!=k&&(this.content[0].style.top=e+this.pagerHeight+"px")}this._updateScrollbars(d);var l=parseInt(this.scrollBarSize),m=4,n=2,o=0;if("hidden"!=this.vScrollBar[0].style.visibility&&(o=l+m),"hidden"!=this.hScrollBar[0].style.visibility&&(n=l+m+2),0==l&&(o=0,n=0),this.showAggregates&&("hidden"===this.hScrollBar[0].style.visibility?this.aggregates.width(this.table?Math.max(b,this.table.width())+4:b):this.aggregates.width("auto")),"hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var p=this._arrangeAutoHeight(n-2),q=this._arrangeAutoWidth(o+1);if(p||q){var b=this.host.width();this.toppager[0].style.width=parseInt(b)+"px",this.toolbar[0].style.width=parseInt(b)+"px",this.statusbar[0].style.width=parseInt(b)+"px",this.filter[0].style.width=parseInt(b)+"px"}if(p){var r=this._measureTopAndHeight(); -e=r.top,c=r.height}}var s=0;this.pageable&&(s=this.pagerHeight,"top"!=this.pagerPosition&&(n+=this.pagerHeight)),this.showAggregates&&(n+=this.aggregatesHeight,s+=this.aggregatesHeight),this.showstatusbar&&(n+=this.statusBarHeight,s+=this.statusBarHeight),this.hScrollBar[0].style.height!=l+"px"&&(this.hScrollBar[0].style.height=parseInt(l)+"px"),this.hScrollBar[0].style.top==e+c-m-l-s+"px"&&"0px"==this.hScrollBar[0].style.left||(this.hScrollBar[0].style.top=e+c-m-l-s-1+"px",this.hScrollBar[0].style.left="0px");var t=this.hScrollBar[0].style.width,u=!1,v=!1;0==o?t!=b-2+"px"&&(this.hScrollBar[0].style.width=b-2+"px",u=!0):t!=b-l-m+"px"&&(this.hScrollBar[0].style.width=b-l-m+"px",u=!0),this.vScrollBar[0].style.width!=l+"px"&&(this.vScrollBar[0].style.width=l+"px",v=!0),this.vScrollBar[0].style.height!=parseInt(c)-n+"px"&&(this.vScrollBar[0].style.height=parseInt(c)-n+"px",v=!0),this.vScrollBar[0].style.left==parseInt(b)-parseInt(l)-m+"px"&&this.vScrollBar[0].style.top==e+"px"||(this.vScrollBar[0].style.top=e+"px",this.vScrollBar[0].style.left=parseInt(b)-parseInt(l)-m+"px"),this.rtl&&(this.vScrollBar.css({left:"0px",top:e}),"hidden"!=this.vScrollBar.css("visibility")&&this.hScrollBar.css({left:l+2}));var w=this.vScrollInstance;w.disabled=this.disabled;var x=this.hScrollInstance;x.disabled=this.disabled,u&&x.refresh(),v&&w.refresh();var y=function(a){"hidden"!=a.vScrollBar[0].style.visibility&&"hidden"!=a.hScrollBar[0].style.visibility?(a.bottomRight[0].style.visibility="inherit",a.bottomRight[0].style.left=1+parseInt(a.vScrollBar.css("left"))+"px",a.bottomRight[0].style.top=parseInt(a.hScrollBar.css("top"))+"px",a.rtl&&a.bottomRight.css("left","0px"),a.bottomRight[0].style.width=parseInt(l)+3+"px",a.bottomRight[0].style.height=parseInt(l)+4+"px",a.showAggregates&&(a.bottomRight.css("z-index",99),a.bottomRight.height(parseInt(l)+4+a.aggregatesHeight),a.bottomRight.css({top:parseInt(a.hScrollBar.css("top"))-a.aggregatesHeight}))):a.bottomRight[0].style.visibility="hidden"};if(y(this),this.content[0].style.width!=b-o+"px"&&(this.content[0].style.width=b-o+"px"),this.content[0].style.height!=c-n+3+"px"&&(this.content[0].style.height=c-n+3+"px"),this.content[0].style.top!=e+"px"&&(this.content[0].style.top=parseInt(e)+"px"),this.rtl&&(this.content.css("left",o),this.filter&&this.filter.children().length>0&&a(this.filter.children()).css("left",o),this.table)){var z=this.table.width();b-o>z&&(this.content.css("left",b-z+2),this.filter&&this.filter.children().length>0&&a(this.filter.children()).css("left",b-z+2))}this.showAggregates&&(this.aggregates.css("top",e+c-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?this.statusBarHeight+1:0)),this.rtl&&this.aggregates.css("left","0px"),"hidden"!=this.hScrollBar.css("visibility")&&(this.hScrollBar.css({top:e+c-m-l-s+this.aggregatesHeight+"px"}),this.aggregates.css("top",1+e+c-l-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?this.statusBarHeight+1:0))),y(this)),this.showstatusbar&&(this.statusbar.css("top",e+c-this.statusBarHeight-(this.pageable?this.pagerHeight:0)),this.rtl&&("hidden"==this.hScrollBar.css("visibility")?this.statusbar.css("left",this.content.css("left")):this.statusbar.css("left","0px"))),this.pageable?(this.pager[0].style.width=b+"px",this.pager[0].style.height=this.pagerHeight+"px",this.pager[0].style.top=parseInt(e)+parseInt(c)-parseInt(this.pagerHeight)-1+"px"):this.pager[0].style.height="0px",this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length,this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length,b!=parseInt(this.dataloadelement[0].style.width)&&(this.dataloadelement[0].style.width=this.element.style.width),c!=parseInt(this.dataloadelement[0].style.height)&&(this.dataloadelement[0].style.height=this.element.style.height),this._hostwidth=b}},scrollOffset:function(a,b){if(0==arguments.length||null!=a&&"object"==typeof a&&!a.top)return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")};if(null!=a&&"object"==typeof a)var b=a.left,c=a.top,a=c;null!=a&&null!=b&&void 0!=a&&void 0!=b&&(this.vScrollBar.MLjquiScrollBar("setPosition",a),this.hScrollBar.MLjquiScrollBar("setPosition",b))},scrollleft:function(a){null!=a&&void 0!=a&&"hidden"!=this.hScrollBar.css("visibility")&&this.hScrollBar.MLjquiScrollBar("setPosition",a)},scrolltop:function(a){null!=a&&void 0!=a&&"hidden"!=this.vScrollBar.css("visibility")&&this.vScrollBar.MLjquiScrollBar("setPosition",a)},beginUpdate:function(){this._updating=!0,this._datachanged=!1},endUpdate:function(a){this._updating=!1,a!==!1&&(this._rendercolumnheaders(),this.refresh())},updating:function(){return this._updating},databind:function(b,c,d){if(this.loadingstate!==!0){"block"==this.host.css("display")&&(this.autoShowLoadElement?(a(this.dataloadelement).css("visibility","visible"),a(this.dataloadelement).css("display","block"),this.dataloadelement.width(this.host.width()),this.dataloadelement.height(this.host.height())):(a(this.dataloadelement).css("visibility","hidden"),a(this.dataloadelement).css("display","none")));var e=this;null==b&&(b={}),void 0!=b.sortcomparer&&null!=b.sortcomparer||(b.sortcomparer=null),void 0!=b.filter&&null!=b.filter||(b.filter=null),void 0!=b.sort&&null!=b.sort||(b.sort=null),void 0!=b.data&&null!=b.data||(b.data=null);var f=null;if(null!=b&&(f=void 0!=b._source?b._source.url:b.url),this.dataview=this.dataview||new a.MLjqui.dataView,this.dataview.pageable=this.pageable,this.dataview.grid=this,!e.initializedcall){if(b._source&&this.sortable&&(void 0!=b._source.sortcolumn&&(this.sortcolumn=b._source.sortcolumn,this.source.sortcolumn=this.sortcolumn,this.dataview.sortfield=b._source.sortcolumn,b._source.sortcolumn=null),void 0!=b._source.sortdirection)){this.dataview.sortfielddirection=b._source.sortdirection;var g=b._source.sortdirection;if("a"==g||"asc"==g||"ascending"==g||1==g)var h=!0;else var h=!1;null!=g?this.sortdirection={ascending:h,descending:!h}:this.sortdirection={ascending:!1,descending:!1}}this.pageable&&b._source&&(void 0!=b._source.pagenum&&(this.dataview.pagenum=b._source.pagenum),void 0!=b._source.pagesize?(this.pageSize=b._source.pagesize,this.dataview.pagesize=b._source.pagesize):(this.dataview.pagesize=b._source.pagesize,void 0==this.dataview.pagesize&&(this.dataview.pagesize=this.pageSize))),this.sortable&&(b.sortcolumn&&(this.dataview.sortfield=b.sortcolumn),b.sortdirection&&(this.dataview.sortfielddirection=b.sortdirection))}this._loading=!0,this.dataview.update=function(b){e._loading=!1,e.rowsByKey=new Array;var f=e.source._source.datafields;if(e.groups&&e.groups.length>0){var g=Object.prototype.toString,h=e.groups[0];if(Object.prototype.toString="function"==typeof h?h:function(){return this[h]},!e.source.records.sort){var i=new Array,j=0;a.each(data,function(){i[startindex+j++]=this}),data=i}e.source.records.sort(function(b,c){if(void 0===b&&(b=null),void 0===c&&(c=null),null===b&&null===c)return 0;if(null===b&&null!==c)return-1;if(null!==b&&null===c)return 1;var d=0,e=0;if(b&&b.uid&&(d=b.uid),c&&c.uid&&(e=c.uid),b=b.toString(),c=c.toString(),a.MLjqui.dataFormat.isNumber(b)&&a.MLjqui.dataFormat.isNumber(c))return c>b?-1:b>c?1:0;if(a.MLjqui.dataFormat.isDate(b)&&a.MLjqui.dataFormat.isDate(c))return c>b?-1:b>c?1:0;a.MLjqui.dataFormat.isNumber(b)||a.MLjqui.dataFormat.isNumber(c)||(b=String(b).toLowerCase(),c=String(c).toLowerCase());try{if(c>b)return-1;if(b>c)return 1}catch(f){}if("number"==typeof d){if(e>d)return-1;if(d>e)return 1}return 0}),Object.prototype.toString=g}for(var k=0;k0){var m=function(a){for(var b=0;b0&&m(a[b].records))};m(l.records)}if(0===k){var n=!1;if(f)for(var o=0;o-1||p.toString().indexOf(e.gridlocalization.percentsymbol)>-1){var q=p.toString().split(" ").length,r=new Number(e._toNumber(p.toString()));isNaN(r)||1!=q||(f[o].type="number")}(a.MLjqui.dataFormat.isNumber(p)||!isNaN(parseFloat(p))&&isFinite(p))&&(f[o].type="number"),a.MLjqui.dataFormat.isDate(p)&&(f[o].type="date")}if(n)for(var o=0;ob-c?this.hScrollBar.MLjquiScrollBar("setPosition",b-c):b>f&&this.hScrollBar.MLjquiScrollBar("setPosition",e+b-f)}},ensurerowvisiblebykey:function(b){if("hidden"===this.vScrollBar[0].style.visibility)return!1;var c=this._getuirow(b);if(c){var d=this.vScrollBar.MLjquiScrollBar("value"),e=this.host.height(),f=0;f+=this.columnGroups?this.showHeader?this.columnsheader.height():0:this.showHeader?this.columnsHeight:0,this.filterable&&(f+=this.filter.height()),this.pageable&&"top"===this.pagerPosition&&(f+=this.pagerHeight),this.showtoolbar&&(f+=this.toolbarHeight),e-=f,this.pageable&&"top"!==this.pagerPosition&&(e-=this.pagerHeight),this.showstatusbar&&(e-=this.statusBarHeightt),this.showAggregates&&(e-=this.aggregatesHeight),"hidden"!=this.hScrollBar.css("visibility")&&(e-=20);var g=this.host.coord().top+f,h=d,i=e+h,j=c.coord().top+d-g;j=Math.round(j);var k=j+c.outerHeight();if(k=Math.round(k),0===Math.round(c.position().top))return this.vScrollBar.MLjquiScrollBar("setPosition",0);var l=a(this._table.children()[1]).children().length-1,m=this._getuikey(l),n=this._getuirow(m);if(n&&n[0]===c[0])return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"));if(h>j){var o=j-c.height();return 0>o&&(o=0),this.vScrollBar.MLjquiScrollBar("setPosition",o)}return k>i?this.vScrollBar.MLjquiScrollBar("setPosition",4+k-e-d):void 0}},ensureRowVisible:function(a){var b=this._getkey(a);this.ensurerowvisiblebykey(b)},getColumn:function(b){var c=null;return this.columns.records&&a.each(this.columns.records,function(){return this.datafield==b||this.displayfield==b?(c=this,!1):void 0}),c},_setcolumnproperty:function(a,b,c){if(null==a||null==b||null==c)return null;var d=b;b=b.toLowerCase();var e=this.getColumn(a);if(null!=e){e[b];e[b]=c,e[d]=c;var f=this.getColumn(a);switch(null!=f&&(f[b]=c),b){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":"align"==b?(this._rendercolumnheaders(),this.refresh()):"text"==b||"class"==b||"hidden"==b||"pinned"==b||"resizable"==b||"renderer"==b?(this._rendercolumnheaders(),this.refresh()):"width"==b||"maxwidth"==b||"minwidth"==b?(e._width=null,e._percentagewidth=null,this._updatecolumnwidths(),this.refresh()):this.refresh()}}},getColumnProperty:function(a,b){if(null==a||null==b)return null;b=b.toLowerCase();var c=this.getColumn(a);return c[b]},setColumnProperty:function(a,b,c){this._setcolumnproperty(a,b,c)},hideColumn:function(a){this._setcolumnproperty(a,"hidden",!0)},showColumn:function(a){this._setcolumnproperty(a,"hidden",!1)},updateBoundData:function(a,b){this.databind(this.source,a,b)},refresh:function(b){if(1!=b){if(a.MLjqui.isHidden(this.host))return;this.vScrollInstance.setPosition(0),this._renderrows(),this.updatepagerdetails(),this._arrange(),this._arrangeFilterRow&&this._arrangeFilterRow(),this._renderhorizontalscroll(),this._showicons(),this.showAggregates&&this._updateaggregates(),this._updateTouchScrolling()}},_updateTouchScrolling:function(){var b=this.that;if(b.isTouchDevice()){var c=a.MLjqui.mobile.getTouchEventName("touchstart"),d=a.MLjqui.mobile.getTouchEventName("touchend"),e=a.MLjqui.mobile.getTouchEventName("touchmove");b.table&&(b.removeHandler(b.table,c+".touchScroll"),b.removeHandler(b.table,e+".touchScroll"),b.removeHandler(b.table,d+".touchScroll"),b.removeHandler(b.table,"touchcancel.touchScroll"),a.MLjqui.mobile.touchScroll(b.table[0],Math.max(b.vScrollInstance.max,b.hScrollInstance.max),function(a,c){if(null!=c&&"hidden"!=b.vScrollBar.css("visibility")){b.vScrollInstance.value;b.vScrollInstance.setPosition(c)}if(null!=a&&"hidden"!=b.hScrollBar.css("visibility")){b.hScrollInstance.value;b.hScrollInstance.setPosition(a)}b.scrolled=new Date,b.vScrollInstance.thumbCapture=!0},this.element.id,this.hScrollBar,this.vScrollBar))}},_showicons:function(){if(this.table)for(var b=0;b0?g.css("margin-left",4+f+"px"):g.css("margin-left","4px"):f>0?g.css("margin-right",4+f+"px"):g.css("margin-right","4px")}}},render:function(b){var c="
          ";this.element.innerText="",this.element.innerHTML=c,this.wrapper=this.host.find("#wrapper"+this.element.id),this.content=this.host.find("#content"+this.element.id),this.content.addClass(this.toTP("MLjqui-reset"));var d=this.host.find("#verticalScrollBar"+this.element.id),e=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal")),this.vScrollBar&&this.vScrollBar.MLjquiScrollBar("destroy"),this.hScrollBar&&this.hScrollBar.MLjquiScrollBar("destroy"),this.vScrollBar=d.MLjquiScrollBar({vertical:!0,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:!1}),this.hScrollBar=e.MLjquiScrollBar({vertical:!1,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:!1}),this.vScrollBar.css("visibility","hidden"),this.hScrollBar.css("visibility","hidden"),this.vScrollInstance=a.data(this.vScrollBar[0],"MLjquiScrollBar").instance,this.hScrollInstance=a.data(this.hScrollBar[0],"MLjquiScrollBar").instance,this.filter=this.host.find("#filter"),this.filter[0].id="filter"+this.element.id,this.filter.addClass(this.toTP("MLjqui-widget-header")),this.filter.addClass(this.toTP("MLjqui-grid-toolbar")),this.pager=this.host.find("#pager"),this.pager[0].id="pager"+this.element.id,this.toolbar=this.host.find("#toolbar"),this.toolbar[0].id="toolbar"+this.element.id,this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar")),this.toolbar.addClass(this.toTP("MLjqui-widget-header")),this.aggregates=this.host.find("#aggregates"),this.aggregates[0].id="aggregates"+this.element.id,this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar")),this.aggregates.addClass(this.toTP("MLjqui-widget-header")),this.statusbar=this.host.find("#statusbar"),this.statusbar[0].id="statusbar"+this.element.id,this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar")),this.statusbar.addClass(this.toTP("MLjqui-widget-header")),this.pager.addClass(this.toTP("MLjqui-grid-pager")),this.pager.addClass(this.toTP("MLjqui-widget-header")),this.toppager=this.host.find("#toppager"),this.toppager.addClass(this.toTP("MLjqui-grid-pager-top")),this.toppager.addClass(this.toTP("MLjqui-widget-header")),this.gridtable=null,this.localizestrings&&(this.localizestrings(),null!=this.localization&&this.localizestrings(this.localization,!1)),this._builddataloadelement(),this._cachedcolumns=this.columns;var f=this.source.datafields;if(null==f&&this.source._source&&(f=this.source._source.datafields),f)for(var g=0;g2)for(var i=0;i
          '),this.columnsheader.remove(),this.columnsheader.addClass(this.toTP("MLjqui-widget-header")),this.columnsheader.addClass(this.toTP("MLjqui-grid-header")),this.showHeader?this.columnsheader&&this.columnsheader.css("display","block"):this.columnsheader.css("display","none"),this.gridcontent=this.gridcontent||a('
          '),this.gridcontent.remove();var b=this.columnsHeight;b=this._preparecolumnGroups(),this.columnsheader.height(b),this.content.append(this.columnsheader),this.content.append(this.gridcontent),this._rendercolumnheaders(),this.tableheight=null,this.gridcontent.find("#contenttable"+this.element.id).remove(),null!=this.table&&(this.table.remove(),this.table=null),this.table=a('
          '),this.gridcontent.addClass(this.toTP("MLjqui-grid-content")),this.gridcontent.addClass(this.toTP("MLjqui-widget-content")),this.gridcontent.append(this.table),this._renderrows(),this.filterable&&this._renderfilter(),this.pageable&&this._initpager(),this._arrange(),this.renderStatusBar&&this.renderStatusBar(this.statusbar),this.rendertoolbar&&this.rendertoolbar(this.toolbar),this.showAggregates&&this._updateaggregates(),this.disabled&&this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this._renderhorizontalscroll(),this._showicons(),this._addHandlers()}},clear:function(){this.source&&(this.source.records=new Array,this.source.hierarchy=new Array),this.dataview._filteredData=new Array,this.databind(null),this._render()},_initpager:function(){var b=this.gridlocalization.pagergotopagestring,c=(this.gridlocalization.pagerrangestring,this.gridlocalization.pagershowrowsstring),d=(this.pagerHeight-17)/2;if(this.pagerdiv=this.pagerdiv||a('
          '),this.toppagerdiv=this.toppagerdiv||a('
          '),!this.pageable)return this.pagerdiv.remove(),void this.toppagerdiv.remove();if(this.pagerRenderer){this.pagerdiv.children().remove(),this.toppager.children().remove();var e=this.pagerRenderer();null!=e&&this.pagerdiv.append(a(e)),this.pager.append(this.pagerdiv);var e=this.pagerRenderer();null!=e&&this.toppagerdiv.append(a(e)),this.toppager.append(this.toppagerdiv)}else{this.pagerdiv.css("top",d),this.toppagerdiv.css("top",d);var f=function(d,e){var f=this,g=a('
          '),h=a('
          '),i=a('
          '),j=a('
          '),k=a('
          '),l=a('
          '),m=a('
          '),n=a('
          '),o=a('
          ');g.attr("disabled",f.disabled);var p=a('
          ');if(p[0].id="gridpagerlist"+e+f.element.id,f.removeHandler(i,"mousedown"),f.removeHandler(i,"mouseup"),f.removeHandler(i,"click"),f.removeHandler(j,"mousedown"),f.removeHandler(j,"mouseup"),f.removeHandler(j,"click"),f.removeHandler(k,"mousedown"),f.removeHandler(k,"mouseup"),f.removeHandler(k,"click"),f.removeHandler(l,"mousedown"),f.removeHandler(l,"mouseup"),f.removeHandler(l,"click"),f.rtl?(i.attr("title",f.gridlocalization.pagerpreviousbuttonstring),j.attr("title",f.gridlocalization.pagernextbuttonstring)):(j.attr("title",f.gridlocalization.pagerpreviousbuttonstring),i.attr("title",f.gridlocalization.pagernextbuttonstring)),a.MLjqui.browser.msie&&a.MLjqui.browser.version<8&&o.css("padding-top","3px"),this["pagerfirst"+e]=k,this["pagerlast"+e]=l,this["pagernext"+e]=i,this["pagerprevious"+e]=j,this["pagergotoinput"+e]=g,this["pagerdetails"+e]=m,this["pagershowrows"+e]=n,this["pagergotolabel"+e]=h,this["pagershowrowscombo"+e]=p,this["pagerbuttons"+e]=o,"default"==f.pagerMode){f.rtl?(l.attr("title",f.gridlocalization.pagerfirstbuttonstring),k.attr("title",f.gridlocalization.pagerlastbuttonstring)):(k.attr("title",f.gridlocalization.pagerfirstbuttonstring),l.attr("title",f.gridlocalization.pagerlastbuttonstring));var q=a("
          ");q.addClass(f.toThemeProperty("MLjqui-icon-arrow-first")),k.wrapInner(q);var r=a("
          ");r.addClass(f.toThemeProperty("MLjqui-icon-arrow-last")),l.wrapInner(r),f.rtl?(d.append(l),d.append(i),d.append(o),d.append(j),d.append(k)):(d.append(k),d.append(j),d.append(o),d.append(i),d.append(l)),l.MLjquiButton({cursor:"pointer",disabled:f.disabled,theme:f.theme}),k.MLjquiButton({cursor:"pointer",disabled:f.disabled,theme:f.theme});var s=f.rtl?"right":"left";o.css("float",s),l.css("float",s),k.css("float",s),i.css("float",s),j.css("float",s),m.css("float",f.rtl?"left":"right"),f.rtl?(m.css("margin-left","7px"),m.css("margin-right","0px")):(m.css("margin-left","0px"),m.css("margin-right","7px"))}else f.rtl||(d.append(i),d.append(j));i.MLjquiButton({cursor:"pointer",disabled:f.disabled,theme:f.theme}),j.MLjquiButton({cursor:"pointer",disabled:f.disabled,theme:f.theme});var t=a("
          ");t.addClass(f.toThemeProperty("MLjqui-icon-arrow-left")),j.wrapInner(t);var u=a("
          ");if(u.addClass(f.toThemeProperty("MLjqui-icon-arrow-right")),i.wrapInner(u),f.rtl||d.append(m),"default"!=f.pagerMode){f.rtl?(d.append(h),d.append(g),d.append(n),d.append(p),d.append(m),d.append(i),d.append(j)):(d.append(p),d.append(n),d.append(g),d.append(h));var v=f.pageSizeOptions;p.MLjquiDropDownList({_checkForHiddenParent:!1,rtl:f.rtl,disabled:f.disabled,source:v,enableBrowserBoundsDetection:!0,keyboardSelection:!1,autoDropDownHeight:!0,width:44,height:16,theme:f.theme});for(var w=0,x=0;x=v[x]&&(w=x);h[0].innerHTML=b,p.MLjquiDropDownList({selectedIndex:w});var y=g.find("input");y.addClass(f.toThemeProperty("MLjqui-input")),y.addClass(f.toThemeProperty("MLjqui-widget-content")),this.rtl&&y.css("direction","rtl");var f=this;this.removeHandler(p,"select"),this.addHandler(p,"select",function(a){if(a.args){f.vScrollInstance&&f.vScrollInstance.setPosition(0);var b=a.args.index;f.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(b),f.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(b),f.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse"),f.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var c=f.dataview.pagenum*f.dataview.pagesize,d=v[b],e=f.pageSize;f.pageSize=parseInt(d),isNaN(f.pageSize)&&(f.pageSize=10),d>=100?(f.pagershowrowscombotop.MLjquiDropDownList({width:55}),f.pagershowrowscombobottom.MLjquiDropDownList({width:55})):(f.pagershowrowscombotop.MLjquiDropDownList({width:44}),f.pagershowrowscombobottom.MLjquiDropDownList({width:44})),f.dataview.pagesize=f.pageSize;var g=Math.floor(c/f.dataview.pagesize);if(g!==f.dataview.pagenum||parseInt(d)!==parseInt(e)){f._raiseEvent("pageSizeChanged",{pagenum:g,oldpageSize:e,pageSize:f.dataview.pagesize});var h=f.goToPage(g);h||(f.serverProcessing?f.updateBoundData("pager"):f.refresh())}}});var g=g.find("input");g.addClass(f.toThemeProperty("MLjqui-grid-pager-input")),g.addClass(f.toThemeProperty("MLjqui-rc-all")),this.removeHandler(g,"keydown"),this.removeHandler(g,"change"),f.addHandler(g,"keydown",function(a){if(a.keyCode>=65&&a.keyCode<=90)return!1;if("13"==a.keyCode){var b=g.val();return b=parseInt(b),isNaN(b)||f.goToPage(b-1),!1}}),f.addHandler(g,"change",function(){var a=g.val();a=parseInt(a),isNaN(a)||f.goToPage(a-1)})}n[0].innerHTML=c,f.addHandler(i,"mouseenter",function(){u.addClass(f.toThemeProperty("MLjqui-icon-arrow-right-hover"))}),f.addHandler(j,"mouseenter",function(){t.addClass(f.toThemeProperty("MLjqui-icon-arrow-left-hover"))}),f.addHandler(i,"mouseleave",function(){u.removeClass(f.toThemeProperty("MLjqui-icon-arrow-right-hover"))}),f.addHandler(j,"mouseleave",function(){t.removeClass(f.toThemeProperty("MLjqui-icon-arrow-left-hover"))}),f.addHandler(i,"mousedown",function(){u.addClass(f.toThemeProperty("MLjqui-icon-arrow-right-selected"))}),f.addHandler(i,"mouseup",function(){u.removeClass(f.toThemeProperty("MLjqui-icon-arrow-right-selected"))}),f.addHandler(j,"mousedown",function(){t.addClass(f.toThemeProperty("MLjqui-icon-arrow-left-selected"))}),f.addHandler(j,"mouseup",function(){t.removeClass(f.toThemeProperty("MLjqui-icon-arrow-left-selected"))}),"default"===f.pagerMode&&(f.addHandler(l,"mouseenter",function(){r.addClass(f.toThemeProperty("MLjqui-icon-arrow-last-hover"))}),f.addHandler(k,"mouseenter",function(){q.addClass(f.toThemeProperty("MLjqui-icon-arrow-first-hover"))}),f.addHandler(l,"mouseleave",function(){r.removeClass(f.toThemeProperty("MLjqui-icon-arrow-last-hover"))}),f.addHandler(k,"mouseleave",function(){q.removeClass(f.toThemeProperty("MLjqui-icon-arrow-first-hover"))}),f.addHandler(l,"mousedown",function(){r.addClass(f.toThemeProperty("MLjqui-icon-arrow-last-selected"))}),f.addHandler(k,"mousedown",function(){q.addClass(f.toThemeProperty("MLjqui-icon-arrow-first-selected"))}),f.addHandler(l,"mouseup",function(){r.removeClass(f.toThemeProperty("MLjqui-icon-arrow-last-selected"))}),f.addHandler(k,"mouseup",function(){q.removeClass(f.toThemeProperty("MLjqui-icon-arrow-first-selected"))})),f.addHandler(a(document),"mouseup.pagerbuttons"+e+this.element.id,function(){u.removeClass(f.toThemeProperty("MLjqui-icon-arrow-right-selected")),t.removeClass(f.toThemeProperty("MLjqui-icon-arrow-left-selected")),r&&(r.removeClass(f.toThemeProperty("MLjqui-icon-arrow-last-selected")),q.removeClass(f.toThemeProperty("MLjqui-icon-arrow-first-selected")))}),f.addHandler(i,"click",function(){i.MLjquiButton("disabled")||(f.rtl?f.goToPrevPage():f.goToNextPage())}),f.addHandler(j,"click",function(){j.MLjquiButton("disabled")||(f.rtl?f.goToNextPage():f.goToPrevPage())}),"default"===this.pagerMode&&(f.addHandler(k,"click",function(){ -if(!k.MLjquiButton("disabled"))if(f.rtl){var a=f.dataview.totalrecords,b=Math.ceil(a/f.pageSize);f.goToPage(b-1)}else f.goToPage(0)}),f.addHandler(l,"click",function(){if(!l.MLjquiButton("disabled"))if(f.rtl)f.goToPage(0);else{var a=f.dataview.totalrecords,b=Math.ceil(a/f.pageSize);f.goToPage(b-1)}}))};this.pagerdiv.children().remove(),this.toppagerdiv.children().remove(),f.call(this,this.pagerdiv,"bottom"),f.call(this,this.toppagerdiv,"top"),this.pager.append(this.pagerdiv),this.toppager.append(this.toppagerdiv),this.updatepagerdetails()}},_updatepagertheme:function(){},goToPage:function(b,c){if(this._loading)return!1;if(void 0!=this.editKey){if(!this.editSettings.saveOnPageChange)return!1;var d=this.endroweditbykey(this.editKey);if(!d)return!1}if(null!=b&&void 0!=b||(b=0),-1==b&&(b=0),0>b)return!1;var e=this.dataview.totalrecords,f=this.dataview.pagenum,g=Math.ceil(e/this.pageSize);return b>=g&&(0==this.dataview.totalrecords&&(this.dataview.pagenum=0,this.updatepagerdetails()),b>0&&(b=g-1)),this.dataview.pagenum!=b?(this.pageable&&(this.dataview.pagenum=b,this._raiseEvent("pageChanged",{pagenum:b,oldpagenum:f,pageSize:this.dataview.pagesize})),this.serverProcessing?this.updateBoundData("pager",c):(this.refresh(),c&&a.isFunction(c)&&c()),!0):!1},goToPrevPage:function(a){if(this.dataview.pagenum>0)return this.goToPage(this.dataview.pagenum-1,a);if("default"!=this.pagerMode&&"advanced"!=this.pagerMode){var b=this.dataview.totalrecords,c=Math.ceil(b/this.pageSize);return this.goToPage(c-1,a)}return!1},goToNextPage:function(a){var b=this.dataview.totalrecords;this.summaryrows&&(b+=this.summaryrows.length);var c=Math.ceil(b/this.pageSize);return this.dataview.pagenum=this.dataview.totalrecords&&(g=this.dataview.totalrecords);var h=this.dataview.totalrecords;f++;var i=Math.ceil(h/this.dataview.pagesize);if(i>=1&&i--,i++,"root"==this.pageSizeMode&&(i=Math.ceil(this.rootRecordsLength/this.dataview.pagesize),i>=1&&i--,i++,h=this.rootRecordsLength,this.dataview.totalrecords=this.rootRecordsLength),"default"!=this.pagerMode){if(this.pagergotoinputbottom){var j=this.pagergotoinputbottom.find("input");j.val(this.dataview.pagenum+1),j.attr("title","1 - "+i),j=this.pagergotoinputtop.find("input"),j.val(this.dataview.pagenum+1),j.attr("title","1 - "+i)}}else{var k="",l=this.pagerButtonsCount;0!=l&&l||(l=5);var m=0;for(this.rtl&&(m=l-1);this.rtl&&m>=0||!this.rtl&&l>m;){var n=1+m,o=this.dataview.pagenum/l,p=Math.floor(o);n+=p*l;var q=this.toTP("MLjqui-grid-pager-number");if(q+=" "+this.toTP("MLjqui-rc-all"),n>i&&!this.rtl)break;if(this.rtl&&n>i)m--;else{if(this.rtl||0==m&&n>l&&(k+="..."),this.dataview.pagenum===n-1&&(q+=" "+this.toTP("MLjqui-tb-fill-state-pressed")),this.rtl){if(m===l-1){var q=this.toTP("MLjqui-grid-pager-number");q+=" "+this.toTP("MLjqui-rc-all"),i>=1+n&&(k+="...")}this.dataview.pagenum===n-1&&(q+=" "+this.toTP("MLjqui-tb-fill-state-pressed")),k+=""+n+""}else if(k+=""+n+"",m===l-1){var q=this.toTP("MLjqui-grid-pager-number");q+=" "+this.toTP("MLjqui-rc-all"),i>=1+n&&(k+="...")}if(this.rtl){var q=this.toTP("MLjqui-grid-pager-number");q+=" "+this.toTP("MLjqui-rc-all"),0==m&&n>l&&(k+="...")}this.rtl?m--:m++}}if(!this.pagerbuttonsbottom)return;var r=this.pagerbuttonsbottom.find("a");this.removeHandler(r,"click"),this.removeHandler(r,"mouseenter"),this.removeHandler(r,"mouseleave");var r=this.pagerbuttonstop.find("a");this.removeHandler(r,"click"),this.removeHandler(r,"mouseenter"),this.removeHandler(r,"mouseleave"),this.pagerbuttonsbottom[0].innerHTML=k,this.pagerbuttonstop[0].innerHTML=k,this.disabled&&this.host.find(".MLjqui-grid-pager-number").css("cursor","default");var s=function(){r.click(function(c){if(!b.disabled){var d=a(c.target).attr("data-page");b.goToPage(parseInt(d)-1)}}),r.mouseenter(function(c){b.disabled||a(c.target).addClass(b.toTP("MLjqui-tb-fill-state-hover"))}),r.mouseleave(function(c){b.disabled||a(c.target).removeClass(b.toTP("MLjqui-tb-fill-state-hover"))})};if("both"===this.pagerPosition||"bottom"===this.pagerPosition){var r=this.pagerbuttonsbottom.find("a");s(r)}if("both"===this.pagerPosition||"top"===this.pagerPosition){var r=this.pagerbuttonstop.find("a");s(r)}}if(0==g&&f>g&&(f=0),this.pagerdetailsbottom&&(this.rtl?(this.pagerdetailsbottom[0].innerHTML=h+this.gridlocalization.pagerrangestring+g+"-"+f,this.pagerdetailstop[0].innerHTML=h+this.gridlocalization.pagerrangestring+g+"-"+f):(this.pagerdetailsbottom[0].innerHTML=f+"-"+g+this.gridlocalization.pagerrangestring+h,this.pagerdetailstop[0].innerHTML=f+"-"+g+this.gridlocalization.pagerrangestring+h)),"default"==this.pagerMode){var t=this.pagerbuttonsbottom.width()+a(this.pagerdetailsbottom).width()+160;this.pagerdiv.css("min-width",t),this.toppagerdiv.css("min-width",t)}f>g&&this.goToPrevPage()}},_preparecolumnGroups:function(){var a=this.columnsHeight;if(this.columnGroups){if(this.columnshierarchy=new Array,this.columnGroups.length){for(var b=this,c=0;ca?-1:a>b?1:0});for(var o=1;oa?this.vScrollInstance.setPosition(this.vScrollInstance.value+20):this.vScrollInstance.setPosition(this.vScrollInstance.value-20);var c=this.vScrollInstance.value;if(b!=c)return!0}else if("hidden"!=this.hScrollBar.css("visibility")){var b=this.hScrollInstance.value;a>0?this.hScrollInstance.value>20?this.hScrollInstance.setPosition(this.hScrollInstance.value-20):this.hScrollInstance.setPosition(0):this.hScrollInstance.value0?!0:void 0==b.editKey?!1:void 0}),this.addHandler(a(window),"MLjquiReady."+this.element.id,function(){b._updatecolumnwidths(),b.refresh()}),this.editable&&this.addHandler(a(document),"mousedown.gridedit"+this.element.id,function(c){if(b.editable&&b.editSettings.saveOnBlur&&null!=b.editKey&&!b.vScrollInstance.isScrolling()&&!b.vScrollInstance.isScrolling()){var d=b.host.coord(),e=b.host.width(),f=b.host.height(),g=!1,h=!1,i=!1;if((c.pageYd.top+f)&&(g=!0,h=!0),(c.pageXd.left+e)&&(g=!0,i=!0),g){var j=function(b){var d=a(b.children()[0]).data();if(d&&!d.MLjquiWidget&&(d=b.data()),d||(d=b.data()),d.MLjquiWidget&&d.MLjquiWidget.container&&"block"==d.MLjquiWidget.container[0].style.display){var e=d.MLjquiWidget,f=e.container.coord().top,i=e.container.coord().top+e.container.height();return h&&(c.pageYi)?(g=!0,e.close(),!0):!1}},k=b._editors;if(k)for(var l=0;l=o&&o+q>c))break;if(a>=n&&n+p>a){d=m;break}}}return d},f=function(){if(b.hoveredRow){var a=b.hoveredRow[0].cells,c=function(a){for(var c=0;c0){var d=b._pinnedTable[0].rows[b.hoveredRow[0].rowIndex].cells;c(d)}}b.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(a){f(),b.wrapper&&(b.wrapper.parent().removeAttr("tabindex",0),b.wrapper.removeAttr("tabindex",1),b.content.removeAttr("tabindex",2))});var g=function(a){if(!b.enableHover)return!0;if(b.hoveredRow=a,!a)return!0;var c=a[0].cells,d=b.rowDetails&&!b.treeGrid,e=d&&!b.treeGrid?1:0,f=0;e>0&&b.rtl&&(e=0,f=1);for(var g=e;g=0)p.expanded?b.hidedetailsbykey(k):b.showdetailsbykey(k);else if(c.target&&c.target.className.indexOf&&c.target.className.indexOf("MLjqui-grid-group")>=0&&b.treeGrid)p.expanded?b.treeGrid.collapseRow(k):b.treeGrid.expandRow(k),g(b._getuirow(k)),c.stopPropagation&&c.stopPropagation(),c.preventDefault&&c.preventDefault();else{if(!(c.target&&c.target.className.indexOf&&c.target.className.indexOf("checkbox")>=0&&b.treeGrid)){var m=a(d).index(),n=b.columns.records[m];if(c.stopPropagation&&c.stopPropagation(),b.editable&&null==b.editKey&&b._lastSelectedKey==k&&b.editSettings.editOnDoubleClick&&q){var o=b.beginroweditbykey(k,n);return!0}if(b.isTouchDevice()&&b.scrolled&&new Date-b.scrolled<500)return b.enableBrowserSelection||c.preventDefault&&c.preventDefault(),!1;if("singlerow"===b.selectionMode&&"custom"!==b.selectionMode)return b.selectrowbykey(k,"mouse",!1),b._lastSelectedKey=k,b._updateSelection(),c.preventDefault&&c.preventDefault(),l(),!0;if("custom"!==b.selectionMode&&(c.ctrlKey||c.metaKey||b.clearSelection(!1),c.shiftKey&&b._lastSelectedKey)){var p=b.rowinfo[b._lastSelectedKey];b._doSelection(b._lastSelectedKey,!0,!1);var v=a(b._table.children()[1]).children("[data-key="+b._lastSelectedKey+"]"),w=v.index(),x=j.index();return b._selectRange(x,w),b.selectrowbykey(k,"mouse",!1),b._updateSelection(),c.preventDefault&&c.preventDefault(),l(),!0}return b._lastSelectedKey=k,b.clickTime=new Date,"custom"===b.selectionMode?!0:(p&&(p.selected?b.unselectrowbykey(k,"mouse",!1):b.selectrowbykey(k,"mouse",!1),l()),b._updateSelection(),b.enableBrowserSelection||c.preventDefault&&c.preventDefault(),!0)}p.checked?b.treeGrid.uncheckRow(k):b.treeGrid.checkRow(k),g(b._getuirow(k)),c.stopPropagation&&c.stopPropagation()}}}})},_updateSelection:function(){var b=this,c=a(b._table.children()[1]).children(),d=b._pinnedTable?a(b._pinnedTable.children()[1]).children():null,e=b.rowDetails&&!b.treeGrid,f=e?1:0,g=0;f>0&&b.rtl&&(f=0,g=1);for(var h=0;hc)for(var f=c,g=d;b>f;){var g=g.next(),h=g.attr("data-key");e._doSelection(h,!0,!1),f++}else if(c>b)for(var f=c,g=d;f>b;){var g=g.prev(),h=g.attr("data-key");this._doSelection(h,!0,!1),f--}},_getuikey:function(b,c){var d=null,e=a(this._table.children()[1]).children();if(d=a(e[b]).attr("data-key"),a(e[b]).attr("data-role")){var f=a(e[b]);if("next"==c){for(;f;)if(f=f.next()){var g=f.attr("data-role");if(!g)return d=f.attr("data-key")}}else if("prev"==c)for(;f;)if(f=f.prev()){var g=f.attr("data-role");if(!g)return d=f.attr("data-key")}return null}return d},getRows:function(){return this.source.records},getView:function(){var b=this,c=this._names(),d=new Array,e=function(d,f){if(f)for(var g=0;g0&&(h.records=new Array,e(h.records,f[g].records))}};return e(d,this.dataViewRecords),d},getKeys:function(){for(var a=new Array,b=this.source.records,c=0;c0){for(var f=0,g=0;g0)){if(f===e+b)return d=h.attr("data-key");f++}}return d}if(this.rowDetails)for(var f=0,g=0;g0)return c}catch(d){for(var e=a(this._table.children()[1]).children(),f=0;f0)return c}catch(d){for(var e=a(this._pinnedTable.children()[1]).children(),f=0;f=33&&40>=e)){var k=-1;this._searchString||(this._searchString=""),(8==e||46==e)&&this._searchString.length>=1&&(this._searchString=this._searchString.substr(0,this._searchString.length-1));var l=String.fromCharCode(e),m=!isNaN(parseInt(l)),n=!1;if(e>=65&&97>=e||m||8==e||32==e||46==e){b.shiftKey||(l=l.toLocaleLowerCase()),8!=e&&32!=e&&46!=e&&(this._searchString.length>0&&this._searchString.substr(0,1)==l||(this._searchString+=l)),32==e&&(this._searchString+=" "),this._searchTime=new Date;var f=this.getSelection();if(f.length>=1){for(var o=f[0].uid,p=-1,q=0;q0&&r[0]==o)var r=this._getMatches(this._searchString)}else var r=this._getMatches(this._searchString);if(r.length>0){var f=this.getSelection();if(f.length>=1){var s=r.indexOf(f[0].uid);if(-1==s)this.clearSelection(!1),this.selectrowbykey(r[0]);else{var t=s+1;t>=r.length&&(t=0),this.clearSelection(!1),this.selectrowbykey(r[t])}}else this.clearSelection(!1),this.selectrowbykey(r[0]);this._lastSearchString=this._searchString}}if(void 0!=this._searchTimer&&clearTimeout(this._searchTimer),27!=e&&13!=e||(this._searchString="",this._lastSearchString=""),this._searchTimer=setTimeout(function(){d._searchString="",d._lastSearchString=""},500),k>=0)return;if(n)return!1}if(void 0!=this.editKey){if(27===e&&this.editSettings.cancelOnEsc)this.endroweditbykey(this.editKey,!0);else if(13===e&&this.editSettings.saveOnEnter){if(b.target&&"div"!=b.target.nodeName.toLowerCase()&&"input"!=b.target.nodeName.toLowerCase())return!0;this.endroweditbykey(this.editKey,!1)}else if(this.editSettings.editSingleCell&&this.editColumn){var u=this.columns.records.indexOf(this.editColumn);if(9==e&&u0){for(var v=this.editKey,x=null,q=u-1;q>=0;q--)if(this.columns.records[q].editable&&!this.columns.records[q].hidden){x=this.columns.records[q];break}x&&(this.endroweditbykey(this.editKey,!1),this.beginroweditbykey(v,x))}if(9==e){var y=this.rowinfo[this.editKey],p=this.getrowindex(y),g=this._getuirow(this.editKey);if(b.shiftKey||w){if(!x&&b.shiftKey){for(var z=null,q=this.columns.records.length-1;q>=0;q--)if(this.columns.records[q].editable&&!this.columns.records[q].hidden){z=this.columns.records[q];break}if(z){for(;g;)if(g=g.prev()){var A=g.attr("data-role");if(!A){var B=g.attr("data-key");break}}if(B){this.clearSelection(!1),this._lastSelectedKey=B;var y=this.rowsByKey[B],p=this.getrowindex(y),C=this.getrowdisplayindex(y);this._raiseEvent("rowSelect",{key:B,index:C,boundIndex:p,row:this.rowsByKey[B]}),this.endroweditbykey(this.editKey,!1),this._doSelection(B,!0,!0),this.beginroweditbykey(B,z)}}}}else{for(var z=null,q=0;q=1){for(var F="",G=0;G');K.val(F),a("body").append(K),K.select(),setTimeout(function(){document.designMode="off",K.select(),K.remove()},100)}}}}if(32===e&&this.treeGrid&&this.treeGrid.checkboxes){var f=this.getSelection();if(f.length>1){for(var q=0;q0)if(this.dataview.filters.length>0){for(var S=this.rowinfo[o].row.records,q=0;q0)for(;null==this._getuirow(o)&&this.dataview.pagenum>0;)this.goToPrevPage()}else if(39==e){var g=this._getuirow(o),T=null;if(g){var A=g.attr("data-role");A||(T=g.attr("data-key"))}this.pageable&&null==T&&this.goToNextPage()}return!1}}},_selection:function(a){if("selectionStart"in a[0]){var b=a[0],c=b.selectionEnd-b.selectionStart;return{start:b.selectionStart,end:b.selectionEnd,length:c,text:b.value -}}var d=document.selection.createRange();if(null==d)return{start:0,end:b.value.length,length:0};var e=a[0].createTextRange(),f=e.duplicate();e.moveToBookmark(d.getBookmark()),f.setEndPoint("EndToStart",e);var c=d.text.length;return{start:f.text.length,end:f.text.length+d.text.length,length:c,text:d.text}},_doSelection:function(a,b,c){if(null==a)return void this.clearSelection();"singlerow"===this.selectionMode&&this.clearSelection(!1);var d=this.rowinfo[a];if(d)d.selected=b,this.ensurerowvisiblebykey(a);else{this.ensurerowvisiblebykey(a);var d=this.rowinfo[a];d?d.selected=b:this.rowinfo[a]={selected:b}}"none"!=this.selectionMode&&c!==!1&&this._renderrows()},clearSelection:function(a){if(this.rowinfo){var b=this.getRows();for(var c in this.rowinfo){var d=this.rowinfo[c];if(d.selected){d.selected=!1;var e=b.indexOf(d.row),f=this.getrowdisplayindex(d.row);this._raiseEvent("rowUnselect",{key:c,index:f,boundIndex:e,row:d.row})}}}a!==!1&&this._renderrows()},exportData:function(c){if(!a.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid)throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!";throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var d=this.exportSettings.columnsHeader;void 0==d&&(d=!0);var e=this.exportSettings.hiddenColumns;void 0==e&&(e=!1);var f=this.exportSettings.serverURL,g=this.exportSettings.characterSet,h=this.exportSettings.collapsedRecords;void 0==h&&(h=!1);var i=this.exportSettings.fileName;void 0===i&&(i=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data");var j=this,k=this.getRows();if(1==this.exportSettings.recordsInView&&(k=this.getView()),this.treeGrid&&this.treeGrid.virtualModeCreateRecords)var k=this.treeGrid.getRows();if(this.groups&&this.groups.length>0){var l=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",k),m=function(b,c){for(var d=0;d0)for(var f=m(e.records,new Array),g=0;g0&&o.length>0)for(var q=this._names(),p=0;p0&&d&&t(a[b].records)}};if(t(s),"xml"!=c&&"json"!=c){for(var u=o.length,p=0;r>p;p++){var v=new b(this,this);v.width=this.indentWidth,v.datafield="Level"+p,v.displayfield="Level"+p,v.align="center",v.cellsalign="center",v.text="",this.rtl?o.splice(u,0,v):o.splice(p,0,v)}var w=new Array,x=!(!this.source._source.hierarchy||!this.source._source.hierarchy.groupingDataFields),y=function(b){for(var d=0;d0?e["Level"+e[q.level]]=g?"-":"+":e["Level"+e[q.level]]="",e[q.leaf]&&(e["Level"+e[q.level]]="");for(var f=e[q.level]+1;r>f;f++)e["Level"+f]="";if(x&&!e[q.leaf]&&(j.rtl?e[o[o.length-r-1].displayfield]=e.label:e[o[r].displayfield]=e.label),e.aggregate)for(var i="xls"==c?"_AG":"",f=r;f=r?e=o.length-r-1:r>0&&r>b&&(e=0));var f=a(j._table[0].rows[0].cells[e]);if(j._table[0].rows.length>1){var g=a(j._table[0].rows[1].cells[e]);if(0==g.length)var g=a(j._table[0].rows[1].cells[0])}if(0==f.length)var f=a(j._table[0].rows[0].cells[0]);var h=this,i=function(a){var b=j.toThemeProperty;if(a.removeClass(b("MLjqui-cell")),a.removeClass(b("MLjqui-grid-cell-selected")),a.removeClass(b("MLjqui-tb-fill-state-pressed")),a.removeClass(b("MLjqui-grid-cell-hover")),a.removeClass(b("MLjqui-tb-fill-state-hover")),h.customCellStyles)for(var c in h.customCellStyles)a.removeClass(h.customCellStyles[c])};if(i(f),g&&i(g),null==this.displayfield)return!0;j.showAggregates&&j.getcolumnaggregateddata&&J.push(j.getcolumnaggregateddata(this.displayfield,this.aggregates,!0,k));var l=j._getexportcolumntype(this);!this.exportable||this.hidden&&!z||(A[this.displayfield]={},A[this.displayfield].text=this.text,A[this.displayfield].width=parseInt(this.width),isNaN(A[this.displayfield].width)&&(A[this.displayfield].width=60),A[this.displayfield].width>500&&(A[this.displayfield].width=500),A[this.displayfield].formatString=this.cellsFormat,A[this.displayfield].localization=j.gridlocalization,A[this.displayfield].type=l,A[this.displayfield].cellsAlign=this.cellsalign,A[this.displayfield].hidden=!d,A[this.displayfield].index=e,A[this.displayfield].maxIndex=o.length),F="cell"+G;var m=this.element;if("json"!=c&&"xml"!=c){H="column"+I;var n=function(a,b,d,e,f,g,h,i,j){B[a]={index:1+h,maxIndex:o.length},g.rtl&&(B[a].index=o.length-h),"html"!=c&&"xls"!=c&&"pdf"!=c||(b&&(B[a]["font-size"]=b.css("font-size"),B[a]["font-weight"]=b.css("font-weight"),B[a]["font-style"]=b.css("font-style"),B[a]["background-color"]=g._getexportcolor(b.css("background-color")),B[a].color=g._getexportcolor(b.css("color")),B[a]["border-color"]=g._getexportcolor(b.css("border-top-color"))),d?B[a]["text-align"]=f.align:(B[a]["text-align"]=f.cellsalign,B[a].formatString=f.cellsFormat,B[a].dataType=l),"html"!=c&&"pdf"!=c||(B[a]["border-top-width"]="0px",g.rtl?(B[a]["border-left-width"]="1px",B[a]["border-right-width"]="0px",h==o.length-r-1&&d&&(B[a]["border-right-width"]="1px")):(B[a]["border-left-width"]="0px",B[a]["border-right-width"]="1px"),B[a]["border-bottom-width"]="1px",b&&(B[a]["border-top-style"]=b.css("border-top-style"),B[a]["border-left-style"]=b.css("border-left-style"),B[a]["border-right-style"]=b.css("border-right-style"),B[a]["border-bottom-style"]=b.css("border-bottom-style")),d?(0!=h||g.rtl?h==o.length-1&&g.rtl&&(B[a]["border-right-width"]="1px"):B[a]["border-left-width"]="1px",b&&(B[a]["border-top-width"]="1px",B[a]["border-bottom-width"]=b.css("border-bottom-width"))):0!=h||g.rtl?h==o.length-1&&g.rtl&&(B[a]["border-right-width"]="1px"):B[a]["border-left-width"]="1px",b&&(B[a].height=b.css("height")),g.treeGrid&&!d&&(B[a].index-10&&this.treeGrid){var N=r+1;if(this.rtl&&(N=o.length-r),B["column"+N]){var O=B["column"+N];O.merge=r,O["border-left-width"]="1px";for(var p=(B["cell"+N],0);pp;p++){var N=p+1,Q=p;this.rtl&&(N=o.length-p);var R=B["column"+N];R.disabled=!0,B["cell"+N].level=Q,B["cell"+N].maxLevel=r,B["column"+N].level=Q,B["cellalt"+N]&&(B["cellalt"+N].level=Q,B["cellalt"+N].maxLevel=r);var v=o[p];if(v.customCellStyles)for(var P in v.customCellStyles)B["cell"+N+v.customCellStyles[P]]&&(B["cell"+N+v.customCellStyles[P]].maxLevel=r,B["cell"+N+v.customCellStyles[P]].level=Q);if(("html"==c||"pdf"==c||"xls"==c)&&(R["font-size"]=O["font-size"],R["font-weight"]=O["font-weight"],R["font-style"]=O["font-style"],R["background-color"]=O["background-color"],R.color=O.color,R["border-color"]=O["border-color"],"html"==c||"pdf"==c)){R["border-top-width"]=O["border-top-width"],R["border-left-width"]=O["border-left-width"],this.rtl&&(R["border-right-width"]=O["border-right-width"],0==p&&(R["border-right-width"]="1px")),0!=p||this.rtl?0==p&&this.rtl&&(R["border-left-width"]="0px"):R["border-left-width"]="0px",this.rtl?this.rtl&&(R["border-left-width"]="0px"):R["border-right-width"]="0px",R["border-bottom-width"]="0px";var R=B["cell"+N];this.rtl?this.rtl&&(R["border-left-width"]="0px"):R["border-right-width"]="0px"}}}}if(this.showAggregates){var S=[],T="xls"==c?"_AG":"",U=0;this.rowDetails&&!this.treeGrid&&U++,J.length>0&&(a.each(o,function(a){if(this.aggregates)for(var b=0;b0){for(var u=r,v=0;v0)for(var c=this.getRows(),d=0;d0){var f=this.rowsByKey[b];if(this.treeGrid)var f=this.treeGrid.getRow(b);if(f.level0){for(var h=0;h";var t=this.getCellTextByKey(b,p.displayfield);q.innerHTML=cellContent;var u=a(q.firstChild);switch(p.columntype){case"textbox":case"default":var v=a("").appendTo(u);if(this.rtl&&v.css("direction","rtl"),v.addClass(this.toThemeProperty("MLjqui-input")),v.addClass(this.toThemeProperty("MLjqui-widget-content")),v.addClass(this.toThemeProperty("MLjqui-cell-editor")),v[0].onfocus=function(b){setTimeout(function(){if(b){var c=a(b.target).parent().parent().index();c>=0&&i.ensureColumnVisible(i.columns.records[c].datafield)}else{var c=a(document.activeElement).parent().parent().index();c>=0&&i.ensureColumnVisible(i.columns.records[c].datafield)}i.content&&(i.content[0].scrollTop=0,i.content[0].scrollLeft=0),i.gridcontent&&(i.gridcontent[0].scrollLeft=0,i.gridcontent[0].scrollTop=0)},10)},p.editable){if(!m){m=!0;var w=a.MLjqui.browser.msie&&a.MLjqui.browser.version>10;w||v.focus();var x=v;setTimeout(function(){var a=x.val().length;w||x.focus();try{if("selectionStart"in x[0])x[0].setSelectionRange(0,a);else{var b=x[0].createTextRange();b.collapse(!0),b.moveEnd("character",a),b.moveStart("character",0),b.select()}}catch(c){}},10)}}else v.attr("disabled",!0),v.attr("readOnly",!0),v.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));if(v.width(s),v.height(o),a.MLjqui.browser.msie&&a.MLjqui.browser.version<9&&v.css("line-height",parseInt(o)+"px"),v.css("text-align",p.cellsalign),null===t&&(t=""),void 0==t&&(t=""),v.val(t),p.createeditor){var y=t,t=this.getCellValueByKey(b,p.displayfield);p.createeditor(this.treeGrid?b:j,t,v,y,s,o)}if(this._editors.push({column:p,editor:v}),""!=p.cellsFormat&&(-1==p.cellsFormat.indexOf("p")&&-1==p.cellsFormat.indexOf("c")&&-1==p.cellsFormat.indexOf("n")&&-1==p.cellsFormat.indexOf("f")||v.keydown(function(a){var b=a.charCode?a.charCode:a.keyCode?a.keyCode:0,c=String.fromCharCode(b),d=parseInt(c);if(isNaN(d))return!0;if(i._selection(v).length>0)return!0;var e="",f=v.val();if(p.cellsFormat.length>1){var g=parseInt(p.cellsFormat.substring(1));isNaN(g)&&(g=0)}else var g=0;if(g>0&&-1!=f.indexOf(i.gridlocalization.decimalseparator)&&i._selection(v).start>f.indexOf(i.gridlocalization.decimalseparator))return!0;for(var h=0;h=11?!1:void 0})),p.initeditor){var y=t,t=this.getCellValueByKey(b,p.displayfield);p.initeditor(this.treeGrid?b:j,t,v,y,s,o)}break;case"custom":case"template":this.editorsCache||(this.editorsCache=new Array);var z=a("
          ").appendTo(u),A=a.trim(p.datafield).split(" ").join("");-1!=A.indexOf(".")&&(A=A.replace(".",""));var B=this.editorsCache["templateeditor_"+A];if("custom"==p.columntype)var B=this.editorsCache["customeditor_"+A+"_"+b];var y=t,t=this.getCellValueByKey(b,p.displayfield);if(B){var v=B;v.width(r),v.height(o),v.appendTo(z)}else{var v=a("
          ");v.width(r),v.height(o),B=v,null===t&&(t=""),"custom"!=p.columntype?this.editorsCache["templateeditor_"+A]=v:this.editorsCache["customeditor_"+A+"_"+b]=v,v.appendTo(z),p.createeditor&&p.createeditor(this.treeGrid?b:j,t,v,y,r,o)}p.initeditor&&p.initeditor(this.treeGrid?b:j,t,v,y,r,o),this._editors.push({column:p,editor:v})}}}this.editKey=b,this.beginUpdate();var C=this.getrowdisplayindex(f);if(this._raiseEvent("rowBeginEdit",{key:b,index:C,boundIndex:j,row:this.rowsByKey[b]}),g){var f=this.rowsByKey[b],D=null,E=null;f&&(D=f[c.datafield],E=f[c.displayfield]),this._raiseEvent("cellBeginEdit",{value:D,displayValue:E,key:b,index:C,dataField:c.datafield,displayField:c.displayfield,boundIndex:j,row:this.rowsByKey[b]})}this.endUpdate(!1)},_toNumber:function(a){a.indexOf||void 0==a||(a=a.toString()),a.indexOf(this.gridlocalization.currencysymbol)>-1&&(a=a.replace(this.gridlocalization.currencysymbol,""));var b=function(a,b,c){var d=a;if(b==c)return a;for(var e=d.indexOf(b);-1!=e;)d=d.replace(b,c),e=d.indexOf(b);return d};a=b(a,this.gridlocalization.thousandsseparator,""),a=a.replace(this.gridlocalization.decimalseparator,"."),a.indexOf(this.gridlocalization.percentsymbol)>-1&&(a=a.replace(this.gridlocalization.percentsymbol,""));for(var c="",d=0;d1)&&(a.MLjqui.dataFormat&&(f=a.MLjqui.dataFormat.parsedate(l,b.cellsFormat,this.gridlocalization)),"Invalid Date"!=f&&null!=f||(f=""))}}b.displayfield!=b.datafield&&(f={label:f,value:f})}if(b.geteditorvalue){var m=this.getCellValueByKey(e,b.displayfield);f=b.geteditorvalue(this.treeGrid?e:d,m,c)}}return f},_validateEditors:function(a){for(var b=this,c=!0,d=b.rowsByKey[a],e=b.getrowindex(d),f=b._editors,a=b.editKey,g=b._getuirow(a),h=0;h=0||b.indexOf("datetimeinput")>=0||b.indexOf("combobox")>=0||b.indexOf("menu")>=0)&&a.MLjquiWidget.isOpened){var c=a.MLjquiWidget.isOpened();c&&a.MLjquiWidget.close()}}},p="customeditor_"+j.displayfield+"_"+b,q="templateeditor_"+j.displayfield;if(d.editorsCache[p]){var r=a(d.editorsCache[p]).data(),s=d.editorsCache[p];!r.MLjquiWidget&&a(s).children()[0]&&a(a(s).children()[0]).data().MLjquiWidget&&(r=a(a(s).children()[0]).data()),o(r),d.editorsCache[p].detach()}if(d.editorsCache[q]){d.editorsCache[q].detach();var r=a(d.editorsCache[q]).data(),s=d.editorsCache[q];!r.MLjquiWidget&&a(s).children()[0]&&a(a(s).children()[0]).data().MLjquiWidget&&(r=a(a(s).children()[0]).data()),o(r)}}k!=m&&(d.beginUpdate(),d._raiseEvent("cellValueChanged",{value:k,oldValue:m,dataField:j.datafield,displayField:j.displayfield,key:b,index:g,row:f}),d.endUpdate(!1))}};d.updaterowbykey(d.editKey,k,!1,q)}if(!j)return!1}return d._detachEditors(i),!0}},_detachEditors:function(b){var c=this,d=c.rowsByKey[b],e=c.getrowindex(d);if(c.editorsCache)for(var f in c.editorsCache){var g=a(c.editorsCache[f]).data();if(g&&g.MLjquiWidget){var h=g.MLjquiWidget.element.className;if((h.indexOf("dropdownlist")>=0||h.indexOf("datetimeinput")>=0||h.indexOf("combobox")>=0||h.indexOf("menu")>=0)&&g.MLjquiWidget.isOpened){var i=g.MLjquiWidget.isOpened();i&&g.MLjquiWidget.close()}}a(c.editorsCache[f]).detach()}c.beginUpdate();var j=c.getrowdisplayindex(d);if(c.editSettings.editSingleCell){var d=c.rowsByKey[b],k=null,l=null;d&&(k=d[c.editColumn.datafield],l=d[c.editColumn.displayfield]),c._raiseEvent("cellEndEdit",{value:k,displayValue:l,key:b,index:j,dataField:c.editColumn.datafield,displayField:c.editColumn.displayfield,boundIndex:e,row:c.rowsByKey[b]})}c._raiseEvent("rowEndEdit",{key:b,index:j,boundIndex:e,row:c.rowsByKey[b]}),c.endUpdate(!1),c.editColumn=null,c.editKey=null,c._renderrows(),c._renderhorizontalscroll(),c.host.focus(),setTimeout(function(){c.host.focus()},10)},_showvalidationpopup:function(b,c,d,e){if(void 0==d)var d=this.gridlocalization.validationstring;e.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var f=a("
          "),g=a("
          ");f.html(d),g.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up")),f.addClass(this.toThemeProperty("MLjqui-grid-validation")),f.addClass(this.toThemeProperty("MLjqui-rc-all")),f.hide(),g.hide(),f.prependTo(this.table),g.prependTo(this.table);var h=this.hScrollInstance,i=h.value,j=parseInt(i),k=this.getColumn(c).uielement;if(b){var l=b;f.css("top",parseInt(l.position().top)+30+"px");var m=parseInt(f.css("top"));g.css("top",m-11),g.removeClass(),g.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var n=!1;m>=this._table.height()&&(g.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up")),g.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down")),m=parseInt(l.position().top)-l.outerHeight()-5,0>m&&(m=0,g.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down")),n=!0),f.css("top",m+"px"),g.css("top",m+f.outerHeight()-9));var o=-j+parseInt(a(k).position().left),p=parseInt(this._table.css("left"));isNaN(p)&&(p=0),0!=p&&(j=0),g.css("left",j+o+30);var q=f.width();if(q+o>this.host.width()-20){var r=q+o-this.host.width()+40;o-=r}n?f.css("left",j+parseInt(a(k).position().left)-f.outerWidth()):f.css("left",j+o),e.mouseenter(function(){e.hasClass("MLjqui-grid-validation-label")&&(f.show(),g.show())}),e.mouseleave(function(){f.hide(),g.hide()}),this.popups||(this.popups=new Array),this.popups[this.popups.length]={validation:f,validationrow:g}}},addRow:function(b,c,d,e){if(void 0!=c){this._datachanged=!0,void 0==d&&(d="last");var f=!1,g=this.that;if(null==b){var h=this.dataview.filters&&this.dataview.filters.length>0,i=h?this.source.records.length:this.dataview.totalrecords;if(!this.pageable){this.source._source.totalrecords?this.dataview.totalrecords=this.source._source.totalrecords:this.source._source.totalRecords?this.dataview.totalrecords=this.source._source.totalRecords:0!==this.source.hierarchy.length?this.dataview.totalrecords=this.source.hierarchy.length:this.dataview.totalrecords=this.source.records.length;var i=h?this.source.records.length:this.dataview.totalrecords}if(a.isArray(c)){var j=new Array;a.each(c,function(a,b){var d=g.dataview.getid(g.dataview.source.id,c[a],i+a);j.push(d),g.getColumn(g.dataview.source.id)&&(c[a][g.dataview.source.id]=d)}),b=j}else b=this.dataview.getid(this.dataview.source.id,c,i),this.getColumn(this.dataview.source.id)&&(c[this.dataview.source.id]=b)}else a.isArray(c)?a.each(c,function(a,d){var e=b[a];g.getColumn(g.dataview.source.id)&&(c[a][g.dataview.source.id]=e)}):this.getColumn(this.dataview.source.id)&&(c[this.dataview.source.id]=b);var k=this.treeGrid?!!this.treeGrid.virtualModeCreateRecords:!1,l=function(b,c,d,f){if(b._loading)throw new Error("MLjquiDataTable: "+b.loadingErrorMessage);var g=b.vScrollInstance.value,h=!1;if(a.isArray(d)?a.each(d,function(a,d){var g=null;null!=c&&null!=c[a]&&(g=c[a]),this.uid=g,b.rowsByKey[g]=this,c==e&&(e=null),h=b.source.addRecord(this,f,e,k)}):(d.uid=c,b.rowsByKey[c]=d,c==e&&(e=null),h=b.source.addRecord(d,f,e,k)),b.groups&&b.groups.length>0){var i=Object.prototype.toString,j=b.groups[0];if(Object.prototype.toString="function"==typeof j?j:function(){ -return this[j]},!b.source.records.sort){var l=new Array,m=0;a.each(data,function(){l[startindex+m++]=this}),data=l}b.source.records.sort(function(b,c){if(void 0===b&&(b=null),void 0===c&&(c=null),null===b&&null===c)return 0;if(null===b&&null!==c)return-1;if(null!==b&&null===c)return 1;var d=0,e=0;if(b&&b.uid&&(d=b.uid),c&&c.uid&&(e=c.uid),b=b.toString(),c=c.toString(),a.MLjqui.dataFormat.isNumber(b)&&a.MLjqui.dataFormat.isNumber(c))return c>b?-1:b>c?1:0;if(a.MLjqui.dataFormat.isDate(b)&&a.MLjqui.dataFormat.isDate(c))return c>b?-1:b>c?1:0;a.MLjqui.dataFormat.isNumber(b)||a.MLjqui.dataFormat.isNumber(c)||(b=String(b).toLowerCase(),c=String(c).toLowerCase());try{if(c>b)return-1;if(b>c)return 1}catch(f){}if("number"==typeof d){if(e>d)return-1;if(d>e)return 1}return 0}),Object.prototype.toString=i}return b.dataview._filteredData=null,b.dataview._sortData=null,b.dataview._sortHierarchyData=null,void 0!=b._updating&&0!=b._updating||b.refresh(),b.source&&b.source._knockoutdatasource&&!b._updateFromAdapter&&b.autokoupdates&&b.source._source._localdata&&(b.source.suspendKO=!0,b.source._source._localdata.push(d),b.source.suspendKO=!1),b.vScrollInstance.setPosition(g),h};if(this.source.addrow){var m=function(a,e){1!=a&&void 0!=a||(void 0!=e&&(b=e),l(g,b,c,d))};try{f=g.treeGrid?this.source.addrow(b,c,d,e,m):this.source.addrow(b,c,d,m),void 0==f&&(f=!0)}catch(n){f=!1}if(0==f)return!1}else l(this,b,c,d);return f}return!1},deleteRow:function(a){var b=this._getkey(a);this.deleterowbykey(b)},deleterowbykey:function(b){if(void 0!=b){this._datachanged=!0;var c=!1,d=this.that,e=function(b,c){if(b._loading)throw new Error("MLjquiDataTable: "+b.loadingErrorMessage);b.dataview._filteredData=null,b.dataview._sortData=null,b.dataview._sortHierarchyData=null;var d=!1,e=b.vScrollInstance.value;if(a.isArray(c))a.each(c,function(){var a=this;if(b.rowsByKey[a]){if(d=!0,b.rowinfo[a].selected&&b.unselectrowbykey(a,!1),b.treeGrid)var c=b._names(),e=b.rowsByKey[a][c.parent];if(delete b.rowsByKey[a],b.treeGrid&&b.rowinfo[a]){var f=b.rowinfo[a].row.records,g=function(a){for(var c=0;c0&&a.originalRecord&&(a.originalRecord[b.columns.records[c].datafield]=e[b.columns.records[c].datafield]);f=!0}else f=!1};h(g),b.treeGrid&&(g=b.treeGrid.getRow(c),h(g))}var i=b.vScrollInstance.value;if(void 0!=d&&1!=d||void 0!=b._updating&&0!=b._updating||b._renderrows(),b.showAggregates&&b._updatecolumnsaggregates&&b._updatecolumnsaggregates(),b.source&&b.source._knockoutdatasource&&!b._updateFromAdapter&&b.autokoupdates&&b.source._source._localdata){var g=b.rowsByKey[c],j=b.getrowindex(g),k=b.source._source._localdata()[j];b.source.suspendKO=!0,b.source._source._localdata.replace(k,a.extend({},g)),b.source.suspendKO=!1}return b.vScrollInstance.setPosition(i),f};if(this.source.updaterow){var i=function(a){1!=a&&void 0!=a||(h(f,b,c),e&&e(),f._renderrows(!1))};try{g=this.source.updaterow(b,c,i),void 0==g&&(g=!0)}catch(j){g=!1}}else g=h(f,b,c),g&&e&&e(),f._renderrows(!1);return g}return!1},lockRow:function(a){var b=this._getkey(a);this.lockrowbykey(b)},unlockRow:function(a){var b=this._getkey(a);this.unlockrowbykey(b)},lockrowbykey:function(a){this.rowinfo[a]?this.rowinfo[a].locked=!0:this.rowinfo[a]={locked:!0},this._renderrows()},unlockrowbykey:function(a){this.rowinfo[a]?this.rowinfo[a].locked=!1:this.rowinfo[a]={locked:!1},this._renderrows()},selectRow:function(a){var b=this._getkey(a);this.selectrowbykey(b)},unselectRow:function(a){var b=this._getkey(a);this.unselectrowbykey(b)},selectrowbykey:function(a,b,c){"keyboard"!=b&&"mouse"!=b&&(this._lastSelectedKey=a);var d=c!==!1;this._doSelection(a,!0,d);var e=this.rowsByKey[a],f=this.getrowindex(e),g=this.getrowdisplayindex(e);this._raiseEvent("rowSelect",{key:a,index:g,boundIndex:f,row:this.rowsByKey[a]})},unselectrowbykey:function(a,b){var c=b!==!1;this._doSelection(a,!1,c);var d=this.rowsByKey[a],e=this.getrowindex(d),f=this.getrowdisplayindex(d);this._raiseEvent("rowUnselect",{key:a,index:f,boundIndex:e,row:this.rowsByKey[a]})},getSelection:function(){var a=new Array;if(this.rowinfo)for(var b in this.rowinfo){var c=this.rowinfo[b];c.selected&&a.push(c.row)}return a},showdetailsbykey:function(b){if(this.rowDetails){var c=this.rowinfo[b];if(c){c.expanded=!0;var d=a(this._table.children()[1]).children("[data-key="+b+"]"),e=a(this._pinnedTable.children()[1]).children("[data-key="+b+"]");if(d){var f=e.children(),g=a(f[0]);if(this.rtl)var g=a(f[f.length-1]);this.rtl?(g.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl")),g.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl")),g.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left")),g.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))):(g.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse")),g.addClass(this.toThemeProperty("MLjqui-grid-group-expand")),g.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right")),g.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))),d.next().show();var h=e.next();if(h.show(),a.MLjqui.browser.msie&&a.MLjqui.browser.version<8&&(d.next().children().show(),e.next().children().show()),!c.initialized){var i=c.detailsHeight,j=this.initRowDetails(b,c.row,a(a(h).children().children().children()[0]),c);c.details=a(h).children().children().children()[0],c.initialized=!0,j!==!1&&c.detailsHeight==i||(j===!1&&(c.expanded=!1,c.nodetails=!0,h.hide()),this._renderrows())}this._updateScrollbars(),("auto"===this.height||null===this.height||this.autoheight)&&this._arrange();var k=this.getrowindex(c.row),l=this.getrowdisplayindex(c.row);this._raiseEvent("rowExpand",{row:c.row,index:l,boundIndex:k,rowKey:b})}}}},hidedetailsbykey:function(b){if(this.rowDetails){var c=this.rowinfo[b];if(c){c.expanded=!1;var d=a(this._table.children()[1]).children("[data-key="+b+"]"),e=a(this._pinnedTable.children()[1]).children("[data-key="+b+"]");if(d){var f=e.children(),g=a(f[0]);if(this.rtl)var g=a(f[f.length-1]);this.rtl?(g.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl")),g.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl")),g.addClass(this.toThemeProperty("MLjqui-icon-arrow-left")),g.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))):(g.addClass(this.toThemeProperty("MLjqui-grid-group-collapse")),g.removeClass(this.toThemeProperty("MLjqui-grid-group-expand")),g.addClass(this.toThemeProperty("MLjqui-icon-arrow-right")),g.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))),d.next().hide(),e.next().hide(),a.MLjqui.browser.msie&&a.MLjqui.browser.version<8&&(d.next().children().hide(),e.next().children().hide()),this._updateScrollbars(),("auto"===this.height||null===this.height||this.autoheight)&&this._arrange();var h=this.getrowindex(c.row),i=this.getrowdisplayindex(c.row);this._raiseEvent("rowCollapse",{row:c.row,index:i,boundIndex:h,rowKey:b})}}}},_getvirtualcolumnsindexes:function(a,b,c,d,e){if(this.rowDetails||this.rtl||this.editcell||this.width&&this.width.toString().indexOf("%")>=0||this.exporting)return{start:0,end:c+d};var f=0,g=-1,h=c+d;if(this.autorowheight)return{start:0,end:c+d};if(!e)for(var i=0;c+d>i;i++){if(this.columns.records[i].hidden||(f+=this.columns.records[i].width),f>=a&&-1==g&&(g=i),f>b+a){h=i;break}}return h++,h>c+d&&(h=c+d),-1==g&&(g=0),{start:g,end:h}},_renderhorizontalscroll:function(){var a=this.hScrollInstance,b=a.value;"hidden"===this.hScrollBar.css("visibility")&&(a.value=0,b=0);var c=parseInt(b);if(null!=this.table){var d=this.columnsrow,e=0,f=this.columns.records.length-e,g=this.columns.records,h=0==this.source.records.length;if(this.rtl&&"hidden"!=this.hScrollBar.css("visibility")&&(c=a.max-c),h&&!this._haspinned)this.table[0].style.left=-c+"px",d[0].style.marginLeft=-c+"px";else{if(this._haspinned||void 0==this._haspinned){for(var i=0;e+f>i;i++){var j=g[i];if(j.pinned){var k=null;if(this.showAggregates&&this.statusbar[0].cells&&(k=this.statusbar[0].cells[i]),this.filterrow&&this.filterrow[0].cells&&(filtercell=this.filterrow[0].cells[i]),this.rtl){var l=d[0].cells[i];l.style.marginLeft=-parseInt(b)+"px",k&&(k.style.marginLeft=-parseInt(b)+"px"),this.filterrow&&filtercell&&(filtercell.style.marginLeft=-parseInt(b)+"px")}else{var l=d[0].cells[i];l.style.marginLeft=c+"px",k&&(k.style.marginLeft=c+"px"),this.filterrow&&filtercell&&(filtercell.style.marginLeft=c+"px")}}}if(this.columnsVirtualization){for(var m=this._getvirtualcolumnsindexes(c,this.host.width(),0,this.columns.records.length,!1),n=m.start,o=m.end,p=0;n>p;p++){var q=p,r=this.columns.records[q].element[0];if(!this.columns.records[q].pinned&&(r.parentNode&&r.parentNode.removeChild(r),this.filterrow&&this.filterrow[0])){var s=this.filterrow[0].cells[q];s.parentNode&&s.parentNode.removeChild(s)}}for(var p=o;pp;p++){var q=p;if(r=this.columns.records[q].element[0],!this.columns.records[q].pinned&&(r.parentNode||this.columnsrow[0].appendChild(r),this.filterrow&&this.filterrow[0])){var s=this.filterrow[0].cells[q];s.parentNode||this.filterrow[0].appendChild(s)}}}this._table[0].style.left=-c+"px",d[0].style.marginLeft=-c+"px"}else if(0==this._haspinned){if(this.columnsVirtualization){for(var m=this._getvirtualcolumnsindexes(c,this.host.width(),0,this.columns.records.length,!1),n=m.start,o=m.end,p=0;n>p;p++){var q=p,r=this.columns.records[q].element[0];if(r.parentNode&&r.parentNode.removeChild(r),this.filterrow&&this.filterrow[0]){var s=this.filterrow[0].cells[q];s.parentNode&&s.parentNode.removeChild(s)}}for(var p=o;pp;p++){var q=p;if(r=this.columns.records[q].element[0],r.parentNode||this.columnsrow[0].appendChild(r),this.filterrow&&this.filterrow[0]){var s=this.filterrow[0].cells[q];s.parentNode||this.filterrow[0].appendChild(s)}}}this.table[0].style.left=-c+"px",d[0].style.marginLeft=-c+"px"}this.filterrow&&(this.filterrow[0].style.left=-c+"px",this.rtl&&(this.filterrow[0].style.left=-c+parseInt(this.content.css("left"))+"px"))}if(this.showAggregates&&this.aggregates[0].cells){var t=0;this.rtl&&"hidden"!=this.vScrollBar.css("visibility")&&(t="hidden"!=this.hScrollBar.css("visibility")?2+parseInt(this.hScrollBar.css("left")):3+parseInt(this.vScrollBar.width())),this.aggregates[0].style.marginLeft=-c+t+"px"}}},_initializeColumns:function(){var c=this.source.datafields;null==c&&this.source._source&&(c=this.source._source.datafields);var d=c?c.length>0:!1;if(this.columns&&this.columns.records)for(var e=0;e0&&("stringfilter"===filtertype?e.MLjquiDropDownList({selectedIndex:2}):e.MLjquiDropDownList({selectedIndex:0}))}}},applyFilters:function(){if(this.editable&&null!=this.editKey){this.endroweditbykey(this.editKey)}if(this.dataview._filteredData=null,this.dataview._sortData=null,this.dataview._sortHierarchyData=null,this.serverProcessing?(this.dataview.pagenum=0,this.updateBoundData("filter")):(this.goToPage(0),this.refresh()),arguments&&arguments.length>0){if(this._updateSimpleFilter&&this.filtercolumnsList){var a=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(a)}this._updateFilterRow&&this._updateFilterRow()}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(a,b){if(this.dataview._filteredData=null,this.dataview._sortData=null,this.dataview._sortHierarchyData=null,this._loading)throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);if(this.editable&&null!=this.editKey){this.endroweditbykey(this.editKey)}if(null==a&&(b=null,a=this.sortcolumn),a){var c=this;"a"==b||"asc"==b||"ascending"==b||1==b?ascending=!0:ascending=!1,null!=b?c.sortdirection={ascending:ascending,descending:!ascending}:c.sortdirection={ascending:!1,descending:!1},null!=b?c.sortcolumn=a:c.sortcolumn=null,c.source.sort&&(c.dataview.sortfield=a,null==b?c.dataview.sortfielddirection="":c.dataview.sortfielddirection=ascending?"asc":"desc",c.source.sort&&!this._loading&&c.source.sort(a,b)),c.dataview.sortBy(a,b),c._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}this.serverProcessing?this.updateBoundData("sort"):this.refresh()},_togglesort:function(a){var b=this;if(!this.disabled&&a.sortable&&b.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection},d=null;null!=c.sortcolumn&&c.sortcolumn==a.displayfield?(d=c.sortdirection.ascending,d=1==d?!1:null):d=!0,b.sortBy(a.displayfield,d)}},_renderfilter:function(){var b=this,c=a("
          ");c.height(22);var d=c.find("input"),e=c.find("div:first");c.addClass(this.toThemeProperty("MLjqui-rc-all")),c.addClass(this.toThemeProperty("MLjqui-widget")),c.addClass(this.toThemeProperty("MLjqui-input-group")),d.addClass(this.toThemeProperty("MLjqui-input")),d.addClass(this.toThemeProperty("MLjqui-rc-l")),d.addClass(this.toThemeProperty("MLjqui-input-group-addon")),d.addClass(this.toThemeProperty("MLjqui-widget")),d.addClass(this.toThemeProperty("MLjqui-widget-content")),e.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal")),e.addClass(this.toThemeProperty("MLjqui-rc-r")),e.addClass(this.toThemeProperty("MLjqui-input-group-addon")),e.find("div").addClass(this.toThemeProperty("MLjqui-icon-search")),this.rtl&&(d.addClass(this.toThemeProperty("MLjqui-rtl")),d.css("direction","rtl")),this.filter.children().remove(),this.filterbutton=e;for(var f=new Array,g=0;g"+this.gridlocalization.filtersearchstring+"");this.filter.append(i);var j=a("
          ");this.filter.append(j),j.MLjquiDropDownList&&j.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:!0,autoDropDownHeight:h,rtl:b.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:f,displayMember:"label",valueMember:"value"}),this.filtercolumnsList=j;var k=function(a){b.filterinput.val("");for(var c=0;c=0&&(d=d.replace(b.gridlocalization.decimalseparator,".")),d.indexOf(b.gridlocalization.currencysymbol)>=0&&(d=d.replace(b.gridlocalization.currencysymbol,"")),d.indexOf(b.gridlocalization.percentagesymbol)>=0&&(d=d.replace(b.gridlocalization.percentagesymbol,"")));var i=f.createfilter(h,d,"EQUAL",null,c.cellsFormat,b.gridlocalization)}else var i=f.createfilter(h,d,"CONTAINS");return f.operator=e,f.addfilter(0,i),f};if("simple"!==b.filterMode){if(f){var h=f.value,i=b.getColumn(h),k=g(i,c,"and");c.length>0?(b.removeFilter(h),b.addFilter(h,k),b.applyFilters()):(b.removeFilter(h),b.applyFilters()),"advanced"===b.filterMode&&b._updateFilterRow&&b._updateFilterRow(!0)}}else{if(b.clearFilters(!1,!1),c.length>0)for(var l=0;l"+this.gridlocalization.filterstring+"");c.append(m),this.addHandler(m,"click",function(c){var d=function(c){if(b.filterrow)for(var d=0;d");n.attr("title",b.gridlocalization.filterclearstring),n.addClass(b.toThemeProperty("MLjqui-icon-close")),c.append(n),n.hide(),b.filtericon=n,n.click(function(){b.clearFilters(),b.filtericon.fadeOut(200)}),b.dataview.filters.length>0&&("advanced"!=b.filterMode?k(b.dataview.filters[0].datafield):b._updateFilterRow&&b._updateFilterRow())},_renderadvancedfilter:function(){var b=this,c=function(){b.clearFilters(!1,!1);for(var c=b.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value,d=(b.filterinput.val(),0);d0||0==m.length&&"NOT_NULL"==i||0==m.length&&"NOT_EMPTY"==i||0==m.length&&"EMPTY"==i||0==m.length&&"NULL"==i){var n=h.displayfield,o=new a.MLjqui.filter;"numericfilter"==filtertype&&(","==b.gridlocalization.decimalseparator&&m.indexOf(b.gridlocalization.decimalseparator)>=0&&(m=m.replace(b.gridlocalization.decimalseparator,".")),m.indexOf(b.gridlocalization.currencysymbol)>=0&&(m=m.replace(b.gridlocalization.currencysymbol,"")),m.indexOf(b.gridlocalization.percentagesymbol)>=0&&(m=m.replace(b.gridlocalization.percentagesymbol,"")));var k=o.createfilter(filtertype,m,i,null,h.cellsFormat,b.gridlocalization);o.addfilter(0,k),b.addFilter(n,o)}}}b.dataview.filters.length>0?b.applyFilters():b.clearFilters(),0==b.dataview.filters.length?b.filtericon.fadeOut(200):b.filtericon.fadeIn(200)},d=function(){var d=a("
          ").appendTo(b.filter);b.filterrow=d,d[0].cells=new Array,d.height(24),d.width(b.table.width());var e=0,f=b.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value,g=b.filterinput.val();a.each(b.columns.records,function(){var h=this,i=a("
          ").appendTo(d);if(i.css("position","absolute"),i.css("left",e+parseInt(h.uielement[0].style.left)),h.pinned&&(i.css("z-index",b.tableZIndex+b.columns.records.length),i.addClass(b.toThemeProperty("MLjqui-widget-header"))),d[0].cells.push(i[0]),!this.filterable)return!0;var j=a("").appendTo(i);j.keydown(function(a){13===a.keyCode&&c()}),h.displayfield===f&&j.val(g),j.addClass(b.toThemeProperty("MLjqui-input")),j.addClass(b.toThemeProperty("MLjqui-rc-all")),j.addClass(b.toThemeProperty("MLjqui-widget")),j.addClass(b.toThemeProperty("MLjqui-widget-content"));var k=a("
          ").appendTo(i);k.append(a("
          ")),j.focus(function(){b.ensureColumnVisible(h.displayfield),b.filter[0].scrollLeft=0,b.ensureColumnVisible(h.displayfield),setTimeout(function(){b.filter[0].scrollLeft=0,b.ensureColumnVisible(h.displayfield)},10)}),k.click(function(){var c=a("
          ");c.insertAfter(k),k.remove();var d=b.getcolumntypebydatafield(h),e=b._getfiltersbytype(d);"string"===d?index=2:index=0,c.MLjquiDropDownList({theme:b.theme,enableBrowserBoundsDetection:!0,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:b.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:e,selectionRenderer:function(){return"
          "}}),b.addHandler(c,"close",function(a){j.focus(),setTimeout(function(){j.focus()},10)}),c.removeAttr("tabindex"),c.find("div").removeAttr("tabindex"),c.MLjquiDropDownList("open")}),j[0].style.width=h.width-6-22+"px"}),a("
          ").appendTo(d)};d();var e=a("
          ").appendTo(b.filter),f=a("").appendTo(e),g=a("").appendTo(e),h=0;f.css("left",h),g.css("left",h),f.MLjquiButton({theme:b.theme}),g.MLjquiButton({theme:b.theme}),g.click(function(){b.filtercolumnsList.MLjquiDropDownList({disabled:!1}),b.filterinput.removeClass(b.toThemeProperty("MLjqui-fill-state-disabled")),b.filterinput.attr("disabled",!1),b.filterbutton.removeClass(b.toThemeProperty("MLjqui-fill-state-disabled")),b.filter.find(".filterrow").addClass("filterrow-hidden"),b.filter.find(".filterrow").hide(),b._arrange()}),f.click(function(){c()}),b._renderhorizontalscroll()},_getfiltertype:function(a){var b="stringfilter";switch(a){case"number":case"int":case"float":case"decimal":b="numericfilter";break;case"boolean":case"bool":b="booleanfilter";break;case"date":case"time":b="datefilter";break;case"string":b="stringfilter"}return b},getcolumntypebydatafield:function(b){var c=this,d="string",e=c.source.datafields||(c.source._source?c.source._source.datafields:null);if(e){var f="";if(a.each(e,function(){return this.name==b.displayfield?(this.type&&(f=this.type),!1):void 0}),f)return f}return d},_getfiltersbytype:function(a){var b=this,c="";switch(a){case"number":case"float":case"int":c=b.gridlocalization.filternumericcomparisonoperators;break;case"date":c=b.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":c=b.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:c=b.gridlocalization.filterstringcomparisonoperators}return c},_getcellvalue:function(a,b){var c=null;return c=b[a.datafield],null!=a.displayfield&&(c=b[a.displayfield]),null==c&&(c=""),c},_renderrows:function(b){if(this.editable&&null!=this.editKey&&b!==!1){this.endroweditbykey(this.editKey)}if(this.treeGrid)return void this.treeGrid._renderrows();if(!this._loading&&!this._updating){this.rendering&&this.rendering();var c=this,d=0;this.table[0].rows=new Array;var e=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");this.rtl&&(e+=" "+this.toTP("MLjqui-cell-rtl"));var f=this.columns.records.length,g=a.MLjqui.browser.msie&&a.MLjqui.browser.version<8;g&&this.host.attr("hideFocus","true");var h=c.groups.length,i=new Array,j=this.source.records;if(j=this.dataview.evaluate(j),this.dataViewRecords=j,"all"==this.dataview.pagesize||!this.pageable||this.serverProcessing){var k=j;if(this.pageable&&this.serverProcessing&&j.length>this.dataview.pagesize)var k=j.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}else var k=j.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize);if(c.groups&&c.groups.length>0){var l=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0,m=function(a){for(var b=0,d=new Array,e=0;ec.dataview.pagesize*c.dataview.pagenum&&b<=c.dataview.pagesize*c.dataview.pagenum+c.dataview.pagesize&&d.push(f),b>c.dataview.pagesize*c.dataview.pagenum+c.dataview.pagesize)break}return d};if("root"===this.pageSizeMode){var n=c.source.getGroupedRecords(c.groups,"records","label",null,"data",null,"parent",j,0);c.rootRecordsLength=n.length,n=m(n)}else var n=c.source.getGroupedRecords(c.groups,"records","label",null,"data",null,"parent",k,l);var o=function(a,b){for(var c=0;c0)for(var e=o(d.records,new Array),f=0;fv;v++){var w=this.columns.records[v],x=w.width;xw.maxwidth&&(x=w.maxwidth);var y=a('
          ');a(document.body).append(y);var z=y.find("td");t=1+parseInt(z.css("padding-left"))+parseInt(z.css("padding-right")),y.remove();break}for(var A=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"",B="",C="
          ",D=0,E=f,v=0;f>v;v++){var w=this.columns.records[v];if(w.hidden)D++,E--;else{var x=w.width;if(xw.maxwidth&&(x=w.maxwidth),x-=t,0>x&&(x=0),g){var F=x;if(v==D&&F++,w.rowDetailscolumn){var F=F+4;C+="",B+=""}else C+="",B+=""}else C+="",B+="";u+=x}}B+="",C+="",this._hiddencolumns=!1;var G=!1;if(this.rowDetails&&this._pinnedTable&&(this._pinnedTable.find("[data-role=details]").detach(),this._table.find("[data-role=details]").detach()),0===r){var H='',I=this.host.height();if(this.pageable&&(I-=this.pagerHeight,"both"===this.pagerPosition&&(I-=this.pagerHeight)),I-=this.columnsHeight,this.filterable){var J=this.filter.find(".filterrow"),K=this.filter.find(".filterrow-hidden"),L=1;K.length>0&&(L=0),I-=this.filterHeight+this.filterHeight*J.length*L}this.showstatusbar&&(I-=this.statusBarHeight),this.showAggregates&&(I-=this.aggregatesHeight),25>I&&(I=25),"hidden"!=this.hScrollBar[0].style.visibility&&(I-=this.hScrollBar.outerHeight()),("auto"===this.height||null===this.height||this.autoheight)&&(I=300);var y='",H+=y,B+=H,C+=H,this.table[0].style.width=u+2+"px",d=u}for(var M=this.getRows(),N=new Array,p=0;p',P='';if(h>0&&q.level',P='';for(var Q=0,R=0,v=0;f>v;v++){var S=this.columns.records[v];(S.pinned||this.rtl&&this.columns.records[f-1].pinned)&&(G=!0);var x=S.width;xS.maxwidth&&(x=S.maxwidth),x-=t,0>x&&(x=0);var e=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");S.pinned&&(e+=" "+this.toTP("MLjqui-grid-cell-pinned")),this.sortcolumn===S.displayfield&&(e+=" "+this.toTP("MLjqui-grid-cell-sort")),this.altRows&&p%2!=0&&(e+=" "+this.toTP("MLjqui-grid-cell-alt")),this.rtl&&(e+=" "+this.toTP("MLjqui-cell-rtl"));var T="";if(h>0&&q.levelU;U++){var V=c.columns.records[U],W=V.width;WV.maxwidth&&(x=V.maxwidth),W-=t,0>W&&(W=0),V.hidden||(F+=W)}x=F}var y='",X+='" class="'+e+'">',X+=Z,X+="",S.pinned?(P+=y,H+=y):(H+=y,G&&(P+=X)),h>0&&!g&&q.level",P+="",B+=H,C+=P,this.rowinfo[q.uid]?("group"in this.rowinfo[q.uid]||(this.rowinfo[q.uid].group=Y),"row"in this.rowinfo[q.uid]||(this.rowinfo[q.uid].row=q),"details"in this.rowinfo[q.uid]||(this.rowinfo[q.uid].details=null),"detailsHeight"in this.rowinfo[q.uid]||(this.rowinfo[q.uid].detailsHeight=200),"initialized"in this.rowinfo[q.uid]||(this.rowinfo[q.uid].initialized=!1),"expanded"in this.rowinfo[q.uid]||(this.rowinfo[q.uid].expanded=!1)):this.rowinfo[q.uid]={group:Y,row:q,details:null,detailsHeight:200,initialized:!1,expanded:!1},this.serverProcessing&&(this.rowinfo[q.uid].row=q),this.rowDetails){var ba=this.rowinfo[q.uid].detailsHeight;if(this.rowinfo[q.uid])if(this.rowinfo[q.uid].expanded)var ca='',B+=ca,C+=ca}}if(B+="
          ',y+=this.gridlocalization.emptydatastring,y+="
          0&&q.level0&&g&&Y&&v>=h&&(y+="font-size: 1px; border-color: transparent; color: transparent;",X+="font-size: 1px; border-color: transparent; color: transparent;"),S.pinned&&(y+="pointer-events: auto;",X+="pointer-events: auto;"),!Y&&S.rowDetailscolumn&&(this.rowinfo[q.uid]?this.rowinfo[q.uid].nodetails||(this.rowinfo[q.uid].expanded?(e+=this.rtl?" "+this.toTP("MLjqui-grid-group-expand-rtl"):" "+this.toTP("MLjqui-grid-group-expand"),e+=" "+this.toTP("MLjqui-icon-arrow-down")):this.rtl?(e+=" "+this.toTP("MLjqui-grid-group-collapse-rtl"),e+=" "+this.toTP("MLjqui-icon-arrow-left")):(e+=" "+this.toTP("MLjqui-grid-group-collapse"),e+=" "+this.toTP("MLjqui-icon-arrow-right"))):this.rtl?(e+=" "+this.toTP("MLjqui-grid-group-collapse-rtl"),e+=" "+this.toTP("MLjqui-icon-arrow-left")):(e+=" "+this.toTP("MLjqui-grid-group-collapse"),e+=" "+this.toTP("MLjqui-icon-arrow-right"))),(!this.autoRowHeight||this.autoRowHeight&&!S.autoCellHeight)&&(e+=" "+this.toTP("MLjqui-grid-cell-nowrap "));var Z=c._getcellvalue(S,q),$=S.cellsFormat;if(h>0&&q.level=0||Z.indexOf(" ng-")>=0)&&N.push({rowKey:q.uid,row:aa,column:S.datafield,value:Z,columnIndex:v})}}if(y+='" class="'+e+'">',y+=Z,y+="
          ",C+="",G){c.WinJS?MSApp.execUnsafeLocalFunction(function(){c.table.html(C+B)}):c.table[0].innerHTML=C+B;var da=this.table.find("#table"+this.element.id),ea=this.table.find("#pinnedtable"+this.element.id);if(ea.css("float","left"),ea.css("pointer-events","none"),da.css("float","left"),ea[0].style.position="absolute",da[0].style.position="relative",da[0].style.zIndex=s-10,ea[0].style.zIndex=s+10,this._table=da,this._table[0].style.left="0px",this._pinnedTable=ea,this._pinnedTable[0].style.left="0px",this._pinnedTable[0].style.width=d+"px",this._table[0].style.width=d+"px",this.rtl&&d>parseInt(this.element.style.width)&&this._haspinned&&(this._pinnedTable[0].style.left=3-d+parseInt(this.element.style.width)+"px"),this.rowDetails)for(var p=0;r>p;p++){var q=i[p],O=q.uid;if(this.rowinfo[O].details){var fa=a(this._table.children()[1]).children("[data-key="+O+"]"),ga=a(this._pinnedTable.children()[1]).children("[data-key="+O+"]");if(fa){var ha=ga.next(),ia=a(a(ha).children().children());ia.children().detach(),ia.append(this.rowinfo[q.uid].details)}}}}else{c.WinJS?MSApp.execUnsafeLocalFunction(function(){c.table.html(B)}):c.table[0].innerHTML=B;var U=this.table.find("#table"+this.element.id);this._table=U,a.MLjqui.browser.msie&&a.MLjqui.browser.version<10&&(this._table[0].style.width=d+"px"),0===r&&(this._table[0].style.width=2+d+"px")}if(0===r&&(this._table[0].style.tableLayout="auto",this._pinnedTable&&(this._pinnedTable[0].style.tableLayout="auto")),N&&N.length>0){this._table[0].rows;a.each(N,function(){var b=(this.row,this.rowKey),d=(this.column,this.columnIndex),e=c._getuirow(b);if(e){var f=e[0].cells[d];a.MLjqui.angularCompile&&a.MLjqui.angularCompile(f,"
          "+f.innerHTML+"
          ")}})}this.rendered&&this.rendered()}},getcolumnindex:function(a){var b=this.getColumn(a),c=this.columns.records.indexOf(b);return c},setcolumnindex:function(b,c,d){var e=this.getColumn(b);if(!(e.pinned||e.hidden||e.checkboxcolumn||e.grouped)){var f=this.columns.records.indexOf(e);this.columns.records.splice(f,1),this.columns.records.splice(c,0,e);var g=0,h=this.headerZIndex;this.columnsrow.children().detach();var i=this.toThemeProperty("MLjqui-grid-cell");i+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned"),i+=" "+this.toThemeProperty("MLjqui-item");var j=this;if(void 0!=j.filterrow){a(j.filterrow.children()[0])}this.columnsrow[0].cells=[];var k=!1;if(a.each(this.columns.records,function(a,b){var c=this.uielement;j.columnsrow.append(c),j.rtl?c.css("z-index",h++):c.css("z-index",h--);var d=j.rtl?250+h+1:250+h-1;this.pinned&&c.css("z-index",d);var e=this.width;c.css("left",g),j.columnsrow[0].cells[j.columnsrow[0].cells.length]=c[0],this.hidden&&(k=!0),this.hidden&&this.hideable||(g+=e)}),this.groupable){var l=this.groups.length;l>0&&f-l>=0&&(f-=l,c-=l)}this.rowDetails&&f-1>=0&&(f--,c--),"checkbox"==this.selectionMode&&f-1>=0&&(f--,c--);var e=this._columns[f];this._columns.splice(f,1),this._columns.splice(c,0,e),this.resize(),this._rendercolumnGroups(),this._raiseEvent("columnReordered",{dataField:e.datafield,oldIndex:f,newIndex:c})}},_pinnedColumnsLength:function(){var b=0;return a.each(this.columns.records,function(){this.pinned&&b++,this.grouped&&b++}),this.rowDetails&&b++,"checkbox"==this.selectionMode&&b++,b},_handlecolumnsReorder:function(){var b=this,c=-1,d=!1;if(b.columnsReorder){var e="mousemove.reorder"+this.element.id,f="mousedown.reorder"+this.element.id,g="mouseup.reorder"+this.element.id,h=!1;this.isTouchDevice()&&this.touchmode!==!0&&(h=!0,e=a.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id,f=a.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id,g=a.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id),this.removeHandler(a(document),e),this.addHandler(a(document),e,function(e){if(b.resizing)return!0;if(null!=b.reordercolumn){var f=parseInt(e.pageX),g=parseInt(e.pageY);if(h){var i=b.getTouches(e),j=i[0];void 0!=j&&(f=parseInt(j.pageX),g=parseInt(j.pageY))}var k=b.host.coord(),l=parseInt(k.left),m=parseInt(k.top);void 0!=b.dragmousedownoffset&&null!=b.dragmousedownoffset||(b.dragmousedownoffset={left:0,top:0});var n=parseInt(f)-parseInt(b.dragmousedownoffset.left),o=parseInt(g)-parseInt(b.dragmousedownoffset.top);if(b.reordercolumn.css({left:n+"px",top:o+"px"}),d=!1,f>=l&&f<=l+b.host.width()&&g>=m&&g<=m+b.host.height()&&(d=!0),c=-1,d){b.reordercolumnicon.removeClass(b.toThemeProperty("MLjqui-grid-dragcancel-icon")),b.reordercolumnicon.addClass(b.toThemeProperty("MLjqui-grid-drag-icon"));var p=b.columnsheader.coord(),q=p.top+b.columnsheader.height();if(null!=b.columnsdropline)if(g>=p.top&&q>=g){if(c=b._handlereordercolumnsdroplines(f),b.columnGroups&&-1!=c){var r=0;r+=b._pinnedColumnsLength();var s=c.index;if(s>=r){var t=b.columns.records[s];if(void 0!=t){var u=b.columns.records.indexOf(b.getColumn(t.datafield));if(null==t.datafield)var u=b.columns.records.indexOf(b.getcolumnbytext(t.text));var v=a.data(b.reordercolumn[0],"reorderrecord"),w=b.columns.records.indexOf(b.getColumn(v)),x=t;if(u>w&&"before"==c.position&&(x=b.columns.records[u-1]),x.columngroup!=b.getColumn(v).columngroup)return void b.columnsdropline.hide()}}}}else b.columnsdropline.fadeOut("slow")}else null!=b.columnsdropline&&b.columnsdropline.fadeOut("slow"),b.reordercolumnicon.removeClass(b.toThemeProperty("MLjqui-grid-drag-icon")),b.reordercolumnicon.addClass(b.toThemeProperty("MLjqui-grid-dragcancel-icon"));if(e.preventDefault&&(e.preventDefault(),e.stopPropagation()),h)return e.preventDefault(),e.stopPropagation(),!1}}),this.columnsbounds=new Array,this.removeHandler(a(document),f),this.addHandler(a(document),f,function(c){if(b.resizing)return!0;b.columnsbounds=new Array;var d=b.host.coord().left,e=b.host.coord().top;b.showtoolbar&&(e+=b.toolbarHeight),b.filter&&(e+=b.filter.height());var f=0;a.each(b.columns.records,function(c){var g=this;if(g.hidden)return b.columnsbounds[b.columnsbounds.length]={top:e,column:g,left:d,width:0,height:2},!0;0==f&&(d=b.rtl?parseInt(b.host.coord().left)-b.hScrollInstance.max+b.hScrollInstance.value:parseInt(b.host.coord().left)-b.hScrollInstance.value),f++;var h=2+b.columnsHeight;b.columnshierarchy&&(e=a(g.uielement).coord().top,h=a(g.uielement).height()),b.columnsbounds[b.columnsbounds.length]={top:e,column:g,left:d,width:g.width,height:h},d+=g.width})}),this.removeHandler(a(document),g),this.addHandler(a(document),g,function(e){if(b.resizing)return!0;b.__drag=!1,a(document.body).removeClass("MLjqui-disableselect");var f=parseInt(e.pageX),g=parseInt(e.pageY);if(h){var i=b.getTouches(e),j=i[0];f=parseInt(j.pageX),g=parseInt(j.pageY)}var k=b.host.coord(),l=(parseInt(k.left),parseInt(k.top));if(b.showtoolbar&&(l+=b.toolbarHeight),b.columndragstarted=!1,b.dragmousedown=null,null!=b.reordercolumn){var m=a.data(b.reordercolumn[0],"reorderrecord"),n=b.columns.records.indexOf(b.getColumn(m));b.reordercolumn.remove(),b.reordercolumn=null;var o=0;if(o+=b._pinnedColumnsLength(),null!=m){if(d&&-1!=c){var p=c.index;if(p>=o){var q=b.columns.records[p];if(void 0!=q){var r=b.columns.records.indexOf(b.getColumn(q.datafield));if(null==q.datafield)var r=b.columns.records.indexOf(b.getcolumnbytext(q.text));if(b.columnGroups){var s=q;if(r>n&&"before"==c.position&&(s=b.columns.records[r-1]),s.columngroup!=b.getColumn(m).columngroup)return void(null!=b.columnsdropline&&(b.columnsdropline.remove(),b.columnsdropline=null))}r>n?"before"==c.position?b.setcolumnindex(m,r-1):b.setcolumnindex(m,r):n>r&&b.setcolumnindex(m,r)}}}null!=b.columnsdropline&&(b.columnsdropline.remove(),b.columnsdropline=null)}}})}},getcolumnbytext:function(b){var c=null;return this.columns.records&&a.each(this.columns.records,function(){return this.text==b?(c=this,!1):void 0}),c},_handlereordercolumnsdroplines:function(b){var c=this,d=-1,e=c._pinnedColumnsLength(),f=parseInt(c.host.coord().left),g=f+c.host.width(),h="hidden"!=c.vScrollBar.css("visibility")?19:0;return c.rtl||(h=0),a.each(c.columnsbounds,function(a){if(a>=e){if(0==this.width)return!0;if(b<=this.left+this.width/2)return b>g?(c.columnsdropline.fadeOut(),!1):(c.columnsdropline.css("left",h+parseInt(this.left)+"px"),c.columnsdropline.css("top",parseInt(this.top)+"px"),c.columnsdropline.height(this.height),c.columnsdropline.fadeIn("slow"),d={index:a,position:"before"},!1);if(b>=this.left+this.width/2){if(this.left+this.width>g)return c.columnsdropline.fadeOut(),!1;c.columnsdropline.css("left",h+1+this.left+this.width),c.columnsdropline.css("top",this.top),c.columnsdropline.height(this.height),c.columnsdropline.fadeIn("slow"),d={index:a,position:"after"}}}}),d},_createreordercolumn:function(b,c,d){var e=this,f=c;e.reordercolumn&&e.reordercolumn.remove(),e.columnsdropline&&e.columnsdropline.remove(),e.reordercolumn=a("
          ");var g=b.clone();e.reordercolumn.css("z-index",999999),g.css("border-width","1px"),g.css("opacity","0.4");var h=a(g.find("."+e.toThemeProperty("MLjqui-grid-column-menubutton")));h.length>0&&h.css("display","none");var i=a(g.find(".MLjqui-icon-close"));i.length>0&&i.css("display","none"),e.reordercolumnicon=a('
          '),e.reordercolumnicon.addClass(e.toThemeProperty("MLjqui-grid-drag-icon")),e.reordercolumn.css("float","left"),e.reordercolumn.css("position","absolute");e.host.coord();g.width(b.width()+16),e.reordercolumn.append(g),e.reordercolumn.height(b.height()),e.reordercolumn.width(g.width()),e.reordercolumn.append(e.reordercolumnicon),a(document.body).append(e.reordercolumn),g.css("margin-left",0),g.css("left",0),g.css("top",0),e.reordercolumn.css("left",f.left+e.dragmousedown.left),e.reordercolumn.css("top",f.top+e.dragmousedown.top),void 0!=d&&d&&(e.columnsdropline=a('
          '),e.columnsdropline.width(2),e.columnsdropline.addClass(e.toThemeProperty("MLjqui-grid-group-drag-line")),a(document.body).append(e.columnsdropline))},_handlecolumnsdragreorder:function(b,c){this.reordercolumn&&this.reordercolumn.remove(),this.columnsdropline&&this.columnsdropline.remove(),this.dragmousedown=null,this.dragmousedownoffset=null,this.columndragstarted=!1,this.reordercolumn=null;var d,e=this,f=!1;this.isTouchDevice()&&this.touchmode!==!0&&(f=!0);var g="mousedown.drag",d="mousemove.drag";f?(g=a.MLjqui.mobile.getTouchEventName("touchstart")+".drag",d=a.MLjqui.mobile.getTouchEventName("touchmove")+".drag"):this.addHandler(c,"dragstart",function(a){return!1}),this.addHandler(c,g,function(c){if(0==b.draggable)return!0;if(e.resizing)return!0;e.__drag=!0;var d=c.pageX,g=c.pageY;if(f){var h=e.getTouches(c),i=h[0];d=i.pageX,g=i.pageY}e.dragmousedown={left:d,top:g};var j=a(c.target).coord();return e.dragmousedownoffset={left:parseInt(d)-parseInt(j.left),top:parseInt(g-j.top)},c.preventDefault&&c.preventDefault(),!0}),this.addHandler(c,d,function(g){if(!b.draggable)return!0;if(void 0==b.datafield)return!0;if(b.pinned)return!0;if(e.resizing)return!0;if(e.dragmousedown){var h=g.pageX,i=g.pageY;if(f){var j=e.getTouches(g),k=j[0];void 0!=k&&(h=k.pageX,i=k.pageY)}if(d={left:h,top:i},!e.columndragstarted&&null==e.reordercolumn){var l=Math.abs(d.left-e.dragmousedown.left),m=Math.abs(d.top-e.dragmousedown.top);(l>3||m>3)&&(e._createreordercolumn(c,d,!0),a(document.body).addClass("MLjqui-disableselect"),a.data(e.reordercolumn[0],"reorderrecord",b.datafield))}}})},getTouches:function(b){return a.MLjqui.mobile.getTouches(b)},_handlecolumnsResize:function(){var b=this;if(this.columnsResize){var c=!1;b.isTouchDevice()&&(c=!0);var d="mousemove.resize"+this.element.id,e="mousedown.resize"+this.element.id,f="mouseup.resize"+this.element.id;if(c)var d=a.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id,e=a.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id,f=a.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id;this.removeHandler(a(document),d),this.addHandler(a(document),d,function(d){if(null!=b.resizablecolumn&&!b.disabled&&b.resizing&&null!=b.resizeline){var e=(b.resizablecolumn.columnelement,b.host.coord()),f=parseInt(b.resizestartline.coord().left),g=f-b._startcolumnwidth,h=b.resizablecolumn.column.minwidth;h="auto"==h?0:parseInt(h);var i=b.resizablecolumn.column.maxwidth;i="auto"==i?0:parseInt(i);var j=d.pageX;if(c){var k=a.MLjqui.mobile.getTouches(d),l=k[0];j=l.pageX}g+=h;var m=i>0?f+i:0,n=0==i?!0:b._startcolumnwidth+j-f=e.left&&j<=e.left+b.host.width()&&(b.resizeline.css("left",j),c))return!1}else if(j>=e.left&&j>=g&&(0!=m&&d.pageXc.pageY)return void(b.resizablecolumn=null);b._startcolumnwidth=b.resizablecolumn.column.width,b.resizablecolumn.column._width=null,a(document.body).addClass("MLjqui-disableselect"),a(document.body).addClass("MLjqui-position-reset"),b._mouseDownResize=new Date,b.resizing=!0,b._resizecolumn=b.resizablecolumn.column,b.resizeline=b.resizeline||a('
          '),b.resizestartline=b.resizestartline||a('
          '),b.resizebackground=b.resizebackground||a('
          '),b.resizebackground.css("opacity",.01),b.resizebackground.css("cursor","col-resize"),b.resizeline.css("cursor","col-resize"),b.resizestartline.css("cursor","col-resize"),b.resizeline.addClass(b.toThemeProperty("MLjqui-grid-column-resizeline")),b.resizestartline.addClass(b.toThemeProperty("MLjqui-grid-column-resizestartline")),a(document.body).append(b.resizeline),a(document.body).append(b.resizestartline),a(document.body).append(b.resizebackground);var e=b.resizablecolumn.columnelement.coord();b.resizebackground.css("left",b.host.coord().left),b.resizebackground.css("top",b.host.coord().top),b.resizebackground.width(b.host.width()),b.resizebackground.height(b.host.height()),b.resizebackground.css("z-index",999999999);var f=function(a){b.rtl?a.css("left",parseInt(e.left)):a.css("left",parseInt(e.left)+b._startcolumnwidth);var c=0,d=b.showtoolbar?b.toolbarHeight:0;c+=d;var f=b.showstatusbar?b.statusBarHeight:0;c+=f;var g=b.showAggregates?b.aggregatesHeight:0;c+=g,b.pageable&&"bottom"!=b.pagerPosition&&(c+=b.pagerHeight),b.filterable&&(c+=b.filter.height());var h=0;b.pageable&&"top"!=b.pagerPosition&&(h=b.pagerHeight);var i="hidden"!=b.hScrollBar.css("visibility")?b.scrollBarSize:0;a.css("top",parseInt(e.top)),a.css("z-index",9999999999),b.columnGroups?a.height(b.host.height()+b.resizablecolumn.columnelement.height()-h-c-i-b.columnGroupslevel*b.columnsHeight):a.height(b.host.height()-h-c-i),a.show("fast")};f(b.resizeline),f(b.resizestartline),b.dragmousedown=null}});var g=function(){if(a(document.body).removeClass("MLjqui-disableselect"),a(document.body).removeClass("MLjqui-position-reset"),b.resizing){b._mouseUpResize=new Date;var c=b._mouseUpResize-b._mouseDownResize;if(200>c)return b.resizing=!1,void(null!=b._resizecolumn&&null!=b.resizeline&&"block"==b.resizeline.css("display")&&(b._resizecolumn=null,b.resizeline.hide(),b.resizestartline.hide(),b.resizebackground.remove()));if(b.resizing=!1,!b.disabled){var d=b.host.width();if("hidden"!=b.vScrollBar[0].style.visibility&&(d-=20),0>d&&(d=0),null!=b._resizecolumn&&null!=b.resizeline&&"block"==b.resizeline.css("display")){var e=parseInt(b.resizeline.css("left")),f=parseInt(b.resizestartline.css("left")),g=b._startcolumnwidth+e-f;if(b.rtl)var g=b._startcolumnwidth-e+f;var h=b._resizecolumn.width;b._resizecolumn.width=g,void 0!=b._resizecolumn._percentagewidth&&(b._resizecolumn._percentagewidth=g/d*100);for(var i=0;i0&&(b-=parseInt(this.scrollBarSize)+6,c=b);var d="";if(void 0!=this.columns&&void 0!=this.columns.records){var e=this,f=!1;a.each(this.columns.records,function(a,f){if(!this.hidden)if(-1!=this.width.toString().indexOf("%")||void 0!=this._percentagewidth){var f=0,g="hidden"==e.vScrollBar[0].style.visibility?0:e.scrollBarSize+5;0==e.scrollBarSize&&(g=0),f=parseFloat(this.width)*c/100,void 0!=this._percentagewidth&&(f=parseFloat(this._percentagewidth)*c/100),fthis.maxwidth&&"auto"!=this.maxwidth&&(f=this.maxwidth),b-=Math.round(f)}else"auto"==this.width||this._width?d+=this.text:b-=this.width});var g=this.columnsheader.find("#columntable"+this.element.id);if(0!=g.length){var h=0,i=g.find(".MLjqui-grid-column-header"),j=0;a.each(this.columns.records,function(g,k){var l=a(i[g]),m=!1,n=this.width,o=this.width;if(-1==this.width.toString().indexOf("%")&&void 0==this._percentagewidth||(n=void 0!=this._percentagewidth?parseFloat(this._percentagewidth)*c/100:parseFloat(this.width)*c/100,n=Math.round(n),m=!0),"auto"==this.width||this._width||m)if(m)nthis.maxwidth&&"auto"!=this.maxwidth&&(n=this.maxwidth,this.width=n),parseInt(l[0].style.width)!=n&&(l.width(n),this.width=n);else{var p=Math.floor(b*(this.text.length/d.length));isNaN(p)&&(p=this.minwidth);var q=b*(this.text.length/d.length)-p;h+=q,h>=1&&(h-=1,p++),h>=.5&&g==e.columns.records.length-1&&p++,0>p&&($element=a(""+this.text+""),a(document.body).append($element),p=10+$element.width(),$element.remove()),pthis.maxwidth&&(p=this.maxwidth),this._width="auto",this.width=p,l.width(this.width)}else parseInt(l[0].style.width)!=this.width&&l.width(this.width);parseInt(l[0].style.left)!=j&&l.css("left",j),this.hidden||(j+=this.width),this._requirewidthupdate=!0,o!==this.width&&(f=!0)}),this.columnsheader.width(2+j),g.width(this.columnsheader.width()),this._resizecolumnGroups(),f&&this._renderrows(),this.showAggregates&&this._refreshcolumnsaggregates()}}},_rendercolumnheaders:function(){var b=this;if(!this._updating){this._columnsbydatafield=new Array,this.columnsheader.find("#columntable"+this.element.id).remove();var c=a('
          ');c[0].cells=new Array;var d=0,e="",f=this.host.width(),g=f,h=new Array,i=new Array;if(a.each(this.columns.records,function(a,c){if(!this.hidden)if("auto"==this.width||this._width)e+=this.text;else if(this.widththis.maxwidth&&"auto"!=this.maxwidth)f-=this.maxwidth;else if(-1!=this.width.toString().indexOf("%")){var c=0;c=parseFloat(this.width)*g/100,cthis.maxwidth&&"auto"!=this.maxwidth&&(c=this.maxwidth),f-=c}else"string"==typeof this.width&&(this.width=parseInt(this.width)),f-=this.width;this.pinned||this.grouped||this.checkboxcolumn?(b._haspinned&&(this.pinned=!0),h[h.length]=this):i[i.length]=this}),this.rtl){var j=0;h.reverse();for(var k=this.columns.records.length-1;k>=this.columns.records.length-h.length;k--)this.columns.replace(k,h[j++]);for(var l=0;l
          ');b.rtl&&0===h&&(q[0].style.borderLeftColor="transparent"),b.columnGroups&&(q[0].style.height=n+"px",q[0].style.bottom="0px",this.pinned&&(q[0].style.zIndex=k)),this.uielement=q,this.element=q,""!=this.classname&&this.classname&&q.addClass(this.classname);var r=this.width,s=!1;if(null===this.width&&(this.width="auto"),-1==this.width.toString().indexOf("%")&&void 0==this._percentagewidth||(r=void 0!=this._percentagewidth?parseFloat(this._percentagewidth)*g/100:parseFloat(this.width)*g/100,r=Math.round(r),s=!0),"auto"==this.width||this._width||s)if(s)rthis.maxwidth&&"auto"!=this.maxwidth&&(r=this.maxwidth),void 0!=this._percentagewidth&&-1==this.width.toString().indexOf("%")||(this._percentagewidth=this.width),q.width(r),this.width=r;else{var t=Math.floor(f*(this.text.length/e.length)),u=f*(this.text.length/e.length)-t;p+=u,p>=1&&(p-=1,t++),p>=.5&&h==b.columns.records.length-1&&t++,isNaN(t)&&(t=this.minwidth),0>t&&($element=a(""+this.text+""),a(document.body).append($element),t=10+$element.width(),$element.remove()),tthis.maxwidth&&(t=this.maxwidth),this._width="auto",this.width=parseInt(t),r=this.width,q.width(this.width)}else rthis.maxwidth&&"auto"!=this.maxwidth&&(r=this.maxwidth),q[0].style.width=parseInt(r)+"px";this.hidden&&q.css("display","none");var v=a(q.children()[0]);c[0].cells[h]=q[0];var w=!1,x=!1,y=null!=this.renderer?this.renderer(this.text,this.align,n):b._rendercolumnheader(this.text,this.align,n,b);if(null==y&&(y=b._rendercolumnheader(this.text,this.align,n,b)),null!=this.renderer&&(y=a(y)),w=!0,b.WinJS?MSApp.execUnsafeLocalFunction(function(){v.append(a(y))}):this.renderer?v.append(a(y)):y&&(v[0].innerHTML=y),null!=y){var z=a('
          '); -v.append(z);var A=z.children();this.sortasc=A[1],this.sortdesc=A[2],this.filtericon=A[0],this.iconscontainer=z,b.rtl&&(z.css("margin-left","0px"),z.css("left","0px"),a(this.sortasc).css("float","left"),a(this.filtericon).css("float","left"),a(this.sortdesc).css("float","left"))}c.append(q),b.columnsReorder&&this.draggable&&b._handlecolumnsdragreorder&&b._handlecolumnsdragreorder(this,q);var B=this;if(b.addHandler(q,"click",function(a){return B.checkboxcolumn?!0:(b._togglesort&&(b._loading||b._togglesort(B)),void a.preventDefault())}),b.columnsResize&&!x){var C=!1,D="mousemove";b.isTouchDevice()&&(C=!0,D=a.MLjqui.mobile.getTouchEventName("touchstart")),b.addHandler(q,D,function(c){if(!B.resizable)return b.resizablecolumn=null,!0;var d=parseInt(c.pageX),e=5,f=parseInt(q.coord().left);if(b.hasTransform&&(f=a.MLjqui.utilities.getOffset(q).left),b._handlecolumnsResize){if(C){var g=a.MLjqui.mobile.getTouches(c),h=g[0];return d=h.pageX,e=40,d>=f+B.width-e?(b.resizablecolumn={columnelement:q,column:B},q.css("cursor","col-resize")):(q.css("cursor",""),b.resizablecolumn=null),!0}var i=B.width;if(b.rtl&&(i=0),d>=f+i-e){if(f+i+e>=d)return b.resizablecolumn={columnelement:q,column:B},q.css("cursor","col-resize"),!1;q.css("cursor",""),b.resizablecolumn=null}else q.css("cursor",""),f+i-e>d&&(B._animating||B._menuvisible||q.mouseenter()),b.resizablecolumn=null}})}if(q.css("left",d),this.hidden||(d+=r),B.rendered){var E=B.rendered(a(v[0].firstChild),B.align,n);E&&null!=z&&z.hide()}}),d>0?this.columnsheader.width(2+d):this.columnsheader.width(d),this.columnsrow=c,b.columnsheader.append(c),c.width(d),this._handlecolumnsdragdrop&&this._handlecolumnsdragdrop(),this._handlecolumnsReorder&&this._handlecolumnsReorder(),this._handlecolumnsResize&&this._handlecolumnsResize(),this.columnGroups&&this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(this.columnGroups){for(var b=0,c=0;c'),q=a(this._rendercolumnheader(i.text,i.align,this.columnsHeight,this));p.append(q),p[0].style.left=l+"px",0===l&&(p[0].style.borderLeftColor="transparent"),p[0].style.top=k+"px",p[0].style.height=n+"px",p[0].style.width=-1+i.width+"px",g.append(p),i.element=p}}}}},_resizecolumnGroups:function(){if(this.columnGroups)for(var a=0;a0){c.removeHandler(d,"mouseenter"),c.removeHandler(d,"mouseleave");var e=a(b.filtericon);c.removeHandler(e,"mousedown"),c.removeHandler(e,"click"),c.removeHandler(d,"click")}},_calculateaggregate:function(a,b,c,d){if(!a.datafield)return null;var e=a.aggregates;if(e||(e=b),e){for(var f=new Array,g=0;g0&&k(a[b].records))};k(d),d=j}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){for(var l=new Array,g=0;g=o)&&n&&(void 0!=n[a.datafield].sum||void 0!=n[a.datafield].avg)){var p=this.source.getAggregatedData([{name:a.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,h,i);void 0!=n[a.datafield].sum&&(n[a.datafield].sum=p[a.datafield].sum),void 0!=n[a.datafield].avg&&(n[a.datafield].avg=p[a.datafield].avg)}}return n}var n=this.source.getAggregatedData([{name:a.datafield,aggregates:e}],this.gridlocalization,d,i);if(this.treeGrid&&n&&(void 0!=n[a.datafield].sum||void 0!=n[a.datafield].avg)){var o=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(0==o||i>=o){var p=this.source.getAggregatedData([{name:a.datafield,aggregates:e}],this.gridlocalization,h,i);void 0!=n[a.datafield].sum&&(n[a.datafield].sum=p[a.datafield].sum),void 0!=n[a.datafield].avg&&(n[a.datafield].avg=p[a.datafield].avg)}}return n}}return null},getcolumnaggregateddata:function(a,b,c,d){var e=this.getColumn(a);if(!e)return"";var f=void 0==c||0==c?!1:c;if(null==b)return"";var g=e.aggregates;e.aggregates=null;var h=this._calculateaggregate(e,b,f,d),i={};return h&&(i=h[a],e.aggregates=g),i},_updatecolumnaggregates:function(b,c,d){var e=this;if(c)if(d.children().remove(),d.html(""),b.aggregatesRenderer){if(c){var f=b.aggregatesRenderer(c[b.datafield],b,d,this.getcolumnaggregateddata(b.datafield,b.aggregates),"aggregates");d.html(f)}}else a.each(c,function(){var b=this;for(g in b){var c=a('
          '),f=g;f=e._getaggregatename(f),c.html(f+":"+b[g]),e.rtl&&c.addClass(e.toThemeProperty("MLjqui-rtl")),d.append(c)}});else if(d.children().remove(),d.html(""),b.aggregatesRenderer){var g={};b.aggregates&&(g=this.getcolumnaggregateddata(b.datafield,b.aggregates));var f=b.aggregatesRenderer({},b,d,null);d.html(f)}},_getaggregatetype:function(a){switch(a){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return a}var b=a;for(var c in a){b=c;break}return b},_getaggregatename:function(a){var b=a;switch(a){case"min":b="Min";break;case"max":b="Max";break;case"count":b="Count";break;case"avg":b="Avg";break;case"product":b="Product";break;case"var":b="Var";break;case"stdevp":b="StDevP";break;case"stdev":b="StDev";break;case"varp":b="VarP";case"sum":b="Sum"}if(a===b&&"string"!=typeof b)for(var c in a){b=c;break}return b},_updatecolumnsaggregates:function(){var b=this.getRows();this.dataViewRecords&&(b=this.dataViewRecords);var c=this.columns.records.length;if(void 0!=this.aggregates[0].cells)for(var d=0;c>d;d++){var e=a(this.aggregates[0].cells[d]),f=this.columns.records[d],g=this._calculateaggregate(f,null,!0,b);this._updatecolumnaggregates(f,g,e)}},_refreshcolumnsaggregates:function(){var b=this.columns.records.length;if(void 0!=this.aggregates[0].cells)for(var c=0,d=0;b>d;d++){var e=a(this.aggregates[0].cells[d]),f=this.columns.records[d];e&&(e.width(f.width),e[0].style.left=c+"px",f.hidden&&f.hideable?e.css("display","none"):c+=f.width)}},_updateaggregates:function(){var b=a('
          '),c=0,d=this.columns.records.length,e=this.toThemeProperty("MLjqui-grid-cell");this.rtl&&(e+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl"),c=0,b.css("border-left-width","0px"),this.aggregates.css("border-left-color","transparent")),e+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var f=d+10,g=new Array;this.aggregates[0].cells=g;for(var h=0;d>h;h++){var i=this.columns.records[h],j=this._calculateaggregate(i),k=i.width;ki.maxwidth&&(k=i.maxwidth);var l=e;i.cellsalign&&(l+=" "+this.toThemeProperty("MLjqui-"+i.cellsalign+"-align"));var m=a('
          ');b.append(m),m.css("left",c),this.rtl?(m.css("z-index",f++),0==h&&m.css("border-left-width","0px")):m.css("z-index",f--),m.width(k),m[0].style.left=c+"px",i.hidden&&i.hideable?m.css("display","none"):c+=k,g[g.length]=m[0],this._updatecolumnaggregates(i,j,m)}a.MLjqui.browser.msie&&a.MLjqui.browser.version<8&&b.css("z-index",f--),b.width(parseInt(c)+2),b.height(this.aggregatesHeight),this.aggregates.children().remove(),this.aggregates.append(b),this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header")),this.aggregates.addClass(e),this.aggregates.css("border-bottom-color","transparent"),this.aggregates.css("border-top-width","1px"),this.rtl&&"hidden"!=this.hScrollBar.css("visibility")&&this._renderhorizontalscroll()},destroy:function(){var b=this;if(b.columns&&b.columns.records)for(var c=0;c0&&h.MLjquiDropDownList("destroy")}b.filtercolumnsList&&b.filtercolumnsList.MLjquiDropDownList("destroy")}if(b.pageable){b.pagershowrowscombotop&&b.pagershowrowscombotop.MLjquiDropDownList&&b.pagershowrowscombotop.MLjquiDropDownList("destroy"),b.pagershowrowscombobottom&&b.pagershowrowscombobottom.MLjquiDropDownList&&b.pagershowrowscombobottom.MLjquiDropDownList("destroy");var i=b.pagerbuttonsbottom.find("a");b.removeHandler(i,"click"),b.removeHandler(i,"mouseenter"),b.removeHandler(i,"mouseleave"),i.remove();var i=b.pagerbuttonstop.find("a");b.removeHandler(i,"click"),b.removeHandler(i,"mouseenter"),b.removeHandler(i,"mouseleave"),i.remove(),b.pagernexttop&&(b.pagernexttop.MLjquiButton("destroy"),b.pagerprevioustop.MLjquiButton("destroy"),b.pagernextbottom.MLjquiButton("destroy"),b.pagerpreviousbottom.MLjquiButton("destroy"),b.pagerfirsttop.MLjquiButton("destroy"),b.pagerfirstbottom.MLjquiButton("destroy"),b.pagerlasttop.MLjquiButton("destroy"),b.pagerlastbottom.MLjquiButton("destroy"))}b._removeHandlers(),b.vScrollBar.MLjquiScrollBar("destroy"),b.hScrollBar.MLjquiScrollBar("destroy"),delete b.vScrollBar,delete b.hScrollBar,delete b._mousewheelfunc,a.MLjqui.utilities.resize(b.host,null,!0),b.host.remove()},propertiesChangedHandler:function(a,b,c){c.width&&c.height&&2==Object.keys(c).length&&a.refresh()},propertyChangedHandler:function(b,c,d,e){if(void 0!=this.isInitialized&&0!=this.isInitialized&&!(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&2==Object.keys(b.batchUpdate).length)&&e!==d)if("filterable"==c)b._render();else if("height"===c)b.host.height(b.height),b.host.width(b.width),b._updatesize(!1,!0);else if("width"===c)b.host.height(b.height),b.host.width(b.width),b._updatesize(!0,!1);else if("source"===c)b.updateBoundData();else if("columns"===c||"columnGroups"===c)b._columns=null,b._render();else if("rtl"===c)b.content.css("left",""),b.columns=b._columns,b.vScrollBar.MLjquiScrollBar({rtl:e}),b.hScrollBar.MLjquiScrollBar({rtl:e}),b._render();else if("pagerMode"===c)b.pagerMode=e,b._initpager();else if("pageSizeOptions"==c){b._initpager();for(var f=!1,g=0;g0&&k.MLjquiDropDownList({theme:b.theme}),b.filtercolumnsList&&b.filtercolumnsList.MLjquiDropDownList({theme:b.theme})}b.refresh()}else b.refresh()}},_rendercolumnheader:function(a,b,c,d){var e="4px";return d.columnGroups?(e=c/2-this._columnheight/2,0>e&&(e=4),e+="px"):25!=this.columnsHeight&&(e=this.columnsHeight/2-this._columnheight/2,0>e&&(e=4),e+="px"),'
          '+a+"
          "}}),a.MLjqui.dataCollection=function(a){return this.records=new Array,this.owner=a,this.updating=!1,this.beginUpdate=function(){this.updating=!0},this.resumeupdate=function(){this.updating=!1},this.clear=function(){this.records=new Array},this.replace=function(a,b){this.records[a]=b},this.isempty=function(a){return void 0==this.records[a]},this.initialize=function(a){1>a&&(a=1),this.records[a-1]=-1},this.length=function(){return this.records.length},this.indexOf=function(a){return this.records.indexOf(a)},this.add=function(a){return null==a?!1:(this.records[this.records.length]=a,!0)},this.insertAt=function(a,b){return null==a||void 0==a?!1:null==b?!1:a>=0?aa)return!1;if(ab?-1:b>c?1:0;case"date":case"time":return c>b?-1:b>c?1:0;case"string":case"text":b=String(b).toLowerCase(),c=String(c).toLowerCase()}else{if(a.MLjqui.dataFormat.isNumber(b)&&a.MLjqui.dataFormat.isNumber(c))return c>b?-1:b>c?1:0;if(a.MLjqui.dataFormat.isDate(b)&&a.MLjqui.dataFormat.isDate(c))return c>b?-1:b>c?1:0;a.MLjqui.dataFormat.isNumber(b)||a.MLjqui.dataFormat.isNumber(c)||(b=String(b).toLowerCase(),c=String(c).toLowerCase())}try{if(c>b)return-1;if(b>c)return 1}catch(e){}return 0},this._equals=function(a,b){return 0===this._compare(a,b)},this.evaluate=function(b){if(this.grid.serverProcessing){if(b&&(""==this.grid.source._source.id||null==this.grid.source._source.id)&&this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array;var d=this;a.each(b,function(a){this.uid=c,d.grid.rowsByKey[this.uid]=this,c++})}return b}var e=new Array;if(this.filters.length){var f=new Array,g=function(a,b){for(var c=0;c0){var h=new Array,i=function(a,b){for(var c=0;c0&&i(d,d.records)}};i(null,b),g.call(this,h,e);for(var j=0;j0){var d=this,m=new Array;this._sortData=null;var n=function(b,c){d._sortData=null;var e=null;if(d.source.hierarchy.groupingDataFields)if(c&&c.length>0&&c[0].level0)return a(b,c).text();if(this.rows&&""!=b&&void 0!=b&&this.rows.length>0){var e=this.rows[this.rows.length-1][b];null==e&&(e=null);for(var f=1;100>=f;f++){var g=this.grid.rowsByKey[f+e];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e+f];if(g)continue;return"MLjqui"+e+f}return e+f}}}if(void 0!=b&&b.toString().length>0){var h=a(c).attr(b);if(null!=h&&h.toString().length>0)return this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords?"MLjqui"+h:h}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[d];if(g){var e=this.rows[this.rows.length-1][b];null==e&&(e="");for(var f=1;1e3>=f;f++){var g=this.grid.rowsByKey[f+e];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e+f];if(g)continue;return"MLjqui"+e+f}return e+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+d];if(!g)return"MLjqui"+d;for(var f=d+1;100>=f;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g)continue;return"MLjqui"+f}}}return d},this.generatekey=function(){var a=function(){return 16*(1+Math.random())|0};return""+a()+a()+"-"+a()+"-"+a()},this}}(MLjquiBaseFramework),function(a){function b(b,d){var e=b.nodeName.toLowerCase();if("area"===e){var f,g=b.parentNode,h=g.name;return b.href&&h&&"map"===g.nodeName.toLowerCase()?(f=a("img[usemap=#"+h+"]")[0],!!f&&c(f)):!1}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||d:d)&&c(b)}function c(b){return!a(b).parents().andSelf().filter(function(){return"hidden"===a.css(this,"visibility")||a.expr.filters.hidden(this)}).length}function d(c){var d=a.attr(c,"tabindex"),e=isNaN(d);return(e||d>=0)&&b(c,!e)}a.MLjqui.MLjquiWidget("MLjquiWindow","",{}),a.extend(a.MLjqui._MLjquiWindow.prototype,{defineInstance:function(){var b={height:"auto",width:200,minHeight:50,maxHeight:600,minWidth:50,maxWidth:800,showCloseButton:!0,disabled:!1,autoOpen:!0,keyboardCloseKey:"esc",title:"",content:"",draggable:!0,resizable:!0,animationType:"fade",closeAnimationDuration:250,showAnimationDuration:250,isModal:!1,position:"center",closeButtonSize:16,closeButtonAction:"hide",modalOpacity:.3,dragArea:null,okButton:null,cancelButton:null,dialogResult:{OK:!1,Cancel:!1,None:!0},collapsed:!1,showCollapseButton:!1,collapseAnimationDuration:150,collapseButtonSize:16,rtl:!1,keyboardNavigation:!0,headerHeight:null,_events:["created","closed","moving","moved","open","collapse","expand","open","close","resize"],initContent:null,enableResize:!0,restricter:null,autoFocus:!0,closing:null,_invalidArgumentExceptions:{invalidHeight:"Invalid height!",invalidWidth:"Invalid width!",invalidMinHeight:"Invalid minHeight!",invalidMaxHeight:"Invalid maxHeight!",invalidMinWidth:"Invalid minWidth!",invalidMaxWidth:"Invalid maxWidth",invalidKeyCode:"Invalid keyCode!",invalidAnimationType:"Invalid animationType!",invalidCloseAnimationDuration:"Invalid closeAnimationDuration!",invalidShowAnimationDuration:"Invalid showAnimationDuration!",invalidPosition:"Invalid position!",invalidCloseButtonSize:"Invalid closeButtonSize!",invalidCollapseButtonSize:"Invalid collapseButtonSize!",invalidCloseButtonAction:"Invalid cluseButtonAction!",invalidModalOpacity:"Invalid modalOpacity!",invalidDragArea:"Invalid dragArea!",invalidDialogResult:"Invalid dialogResult!",invalidIsModal:"You can have just one modal window!"},_enableResizeCollapseBackup:null,_enableResizeBackup:void 0,_heightBeforeCollapse:null,_minHeightBeforeCollapse:null,_mouseDown:!1,_isDragging:!1,_rightContentWrapper:null,_leftContentWrapper:null,_headerContentWrapper:null,_closeButton:null,_collapseButton:null,_title:null,_content:null,_mousePosition:{},_windowPosition:{},_modalBackground:null,_SCROLL_WIDTH:21,_visible:!0,modalBackgroundZIndex:12990,modalZIndex:18e3,zIndex:9001,_touchEvents:{mousedown:a.MLjqui.mobile.getTouchEventName("touchstart"),mouseup:a.MLjqui.mobile.getTouchEventName("touchend"),mousemove:a.MLjqui.mobile.getTouchEventName("touchmove"),mouseenter:"mouseenter",mouseleave:"mouseleave",click:a.MLjqui.mobile.getTouchEventName("touchstart")}};return a.extend(!0,this,b),b},createInstance:function(){this.host.attr("role","dialog"),this.host.removeAttr("data-bind"),this.host.detach(),a(document.body).append(this.host);var b=this,c=function(){var c=parseInt(a(b.restricter).css("padding-top")),d=parseInt(a(b.restricter).css("padding-left")),e=parseInt(a(b.restricter).css("padding-bottom")),f=parseInt(a(b.restricter).css("padding-right")),g=a(b.restricter).coord();b.dragArea={left:d+g.left,top:c+g.top,width:1+f+a(b.restricter).width(),height:1+e+a(b.restricter).height()}};if(this.restricter&&c(),this.restricter&&(this.addHandler(a(window),"resize."+this.element.id,function(){c()}),this.addHandler(a(window),"orientationchanged."+this.element.id,function(){c()}),this.addHandler(a(window),"orientationchange."+this.element.id,function(){c()})),this._isTouchDevice=a.MLjqui.mobile.isTouchDevice(),this._validateProperties(),this._createStructure(),this._refresh(),this.autoOpen||this.host.css("display","none"),a.MLjqui.browser.msie&&this.host.addClass(this.toThemeProperty("MLjqui-noshadow")),this.isModal||this._fixWindowZIndex(),this._setStartupSettings(),this._positionWindow(),this._raiseEvent(0),this.autoOpen){this._performLayout();var d=this;this.isModal&&this._fixWindowZIndex("modal-show"),d.initContent&&(d.initContent(),d._contentInitialized=!0),this._raiseEvent(7),this._raiseEvent(9)}},refresh:function(){this._performLayout()},_setStartupSettings:function(){this.disabled&&this.disable(),this.collapsed&&(this.collapsed=!1,this.collapse(0)),this.autoOpen||(this.hide(null,.001,!0),this._visible=!1),null!==this.title&&""!==this.title&&this.setTitle(this.title),null!==this.content&&""!==this.content&&this.setContent(this.content),this.title=this._headerContentWrapper.html(),this.content=this._content.html()},_fixWindowZIndex:function(b){var c=a.data(document.body,"MLjquiwindows-list")||[],d=this.zIndex;if(this.isModal){c&&(c=this._removeFromArray(this.host,c),a.data(document.body,"MLjquiwindows-list",c));var e=a.data(document.body,"MLjquiwindows-modallist");if(e)if("modal-show"==b)e.push(this.host);else{var f=e.indexOf(this.host);-1!=f&&e.splice(f,1)}else if("modal-show"==b){var g=new Array;g.push(this.host),a.data(document.body,"MLjquiwindows-modallist",g),e=g}else a.data(document.body,"MLjquiwindows-modallist",new Array),e=new Array;d=this.modalZIndex;return a.each(e,function(a){if(this.data()&&this.data().MLjquiWindow){var b=this.data().MLjquiWindow.instance;b._modalBackground.css("z-index",d),b.host.css("z-index",d+1),d+=2}}),void a.data(document.body,"MLjquiwindow-modal",this.host)}if(this._indexOf(this.host,c)<0&&c.push(this.host),a.data(document.body,"MLjquiwindows-list",c),c.length>1){var h=c[c.length-2];if("auto"==h.css("z-index"))d=this.zIndex+c.length+1;else{var i=this.zIndex;d=parseInt(h.css("z-index"),10)+1,i>d&&(d=i)}}this.host.css("z-index",d),this._sortByStyle("z-index",c)},_validateProperties:function(){try{if(this._validateSize(),this._validateAnimationProperties(),this._validateInteractionProperties(),this._validateModalProperties(),!this.position)throw new Error(this._invalidArgumentExceptions.invalidPosition);if(isNaN(this.closeButtonSize)||parseInt(this.closeButtonSize)<0)throw new Error(this._invalidArgumentExceptions.invalidCloseButtonSize);if(isNaN(this.collapseButtonSize)||parseInt(this.collapseButtonSize)<0)throw new Error(this._invalidArgumentExceptions.invalidCollapseButtonSize); -}catch(a){alert(a)}},_validateModalProperties:function(){if(this.modalOpacity<0||this.modalOpacity>1)throw new Error(this._invalidArgumentExceptions.invalidModalOpacity);if(this.isModal&&!this._singleModalCheck())throw new Error(this._invalidArgumentExceptions.invalidIsModal)},_validateSize:function(){if(this._validateSizeLimits(),"auto"!==this.height&&isNaN(parseInt(this.height)))throw new Error(this._invalidArgumentExceptions.invalidHeight);if("auto"!==this.width&&isNaN(parseInt(this.width)))throw new Error(this._invalidArgumentExceptions.invalidWidth);"auto"!==this.height&&this.heightthis.maxHeight&&(this.height=this.maxHeight),this.width>this.maxWidth&&(this.width=this.maxWidth),null!==this.dragArea&&(this.dragArea&&(null!==this.dragArea.height&&this.host.height()>this.dragArea.height||parseInt(this.height,10)>this.dragArea.height)||null!==this.dragArea.width&&this.width>this.dragArea.width||this.maxHeight>this.dragArea.height||this.maxWidth>this.dragArea.width)},_validateSizeLimits:function(){if(null==this.maxHeight&&(this.maxHeight=9999),null==this.minWidth&&(this.minWidth=0),null==this.maxWidth&&(this.maxWidth=9999),null==this.minHeight&&(this.minHeight=0),isNaN(parseInt(this.minHeight)))throw new Error(this._invalidArgumentExceptions.invalidMinHeight);if(isNaN(parseInt(this.maxHeight)))throw new Error(this._invalidArgumentExceptions.invalidMaxHeight);if(isNaN(parseInt(this.minWidth)))throw new Error(this._invalidArgumentExceptions.invalidMinWidth);if(isNaN(parseInt(this.maxWidth)))throw new Error(this._invalidArgumentExceptions.invalidMaxWidth);if(this.minHeight>this.maxHeight)throw new Error(this._invalidArgumentExceptions.invalidMinHeight);if(this.minWidth>this.maxWidth)throw new Error(this._invalidArgumentExceptions.invalidMinWidth)},_validateAnimationProperties:function(){if("fade"!==this.animationType&&"slide"!==this.animationType&&"combined"!==this.animationType&&"none"!==this.animationType)throw new Error(this._invalidArgumentExceptions.invalidAnimationType);if(isNaN(parseInt(this.closeAnimationDuration),10)||this.closeAnimationDuration<0)throw new Error(this._invalidArgumentExceptions.invalidCloseAnimationDuration);if(isNaN(parseInt(this.showAnimationDuration),10)||this.showAnimationDuration<0)throw new Error(this._invalidArgumentExceptions.invalidShowAnimationDuration)},_validateInteractionProperties:function(){if(parseInt(this.keyCode,10)<0||parseInt(this.keyCode,10)>130&&"esc"!==this.keyCode)throw new Error(this._invalidArgumentExceptions.invalidKeyCode);if(null!==this.dragArea&&("undefined"==typeof this.dragArea.width||"undefined"==typeof this.dragArea.height||"undefined"==typeof this.dragArea.left||"undefined"==typeof this.dragArea.top))throw new Error(this._invalidArgumentExceptions.invalidDragArea);if(!this.dialogResult||!this.dialogResult.OK&&!this.dialogResult.Cancel&&!this.dialogResult.None)throw new Error(this._invalidArgumentExceptions.invalidDialogResult);if("hide"!==this.closeButtonAction&&"close"!==this.closeButtonAction&&"destroy"!==this.closeButtonAction)throw new Error(this._invalidArgumentExceptions.invalidCloseButtonAction)},_singleModalCheck:function(){for(var b=a.data(document.body,"MLjquiwindows-list")||[],c=b.length;c;)if(c-=1,a(b[c].attr("id")).length>0&&a(b[c].attr("id")).MLjquiWindow("isModal"))return!1;return!0},_createStructure:function(){var b=this.host.children("DIV");if(1===b.length)this._header=a("
          "+this.host.attr("caption")+"
          "),this.host.prepend(this._header),this.host.attr("caption",""),this._content=a(b[0]);else{if(2!==b.length)throw new Error("Invalid structure!");this._header=a(b[0]),this._content=a(b[1])}},_refresh:function(){this._render(),this._addStyles(),this._performLayout(),this._removeEventHandlers(),this._addEventHandlers(),this._initializeResize()},_render:function(){this._addHeaderWrapper(),this._addCloseButton(),this._addCollapseButton(),this._removeModal(),this._makeModal()},_addHeaderWrapper:function(){this._headerContentWrapper||(this._header.wrapInner('
          '),this._headerContentWrapper=this._header.children(0),null!==this.headerHeight&&this._header.height(this.headerHeight))},_addCloseButton:function(){this._closeButton||(this._closeButtonWrapper=a('
          '),this._closeButton=a('
          '),this._closeButtonWrapper.append(this._closeButton),this._header.append(this._closeButtonWrapper))},_addCollapseButton:function(){this._collapseButton||(this._collapseButtonWrapper=a('
          '),this._collapseButton=a('
          '),this._collapseButtonWrapper.append(this._collapseButton),this._header.append(this._collapseButtonWrapper))},_removeModal:function(){!this.isModal&&"object"==typeof this._modalBackground&&null!==this._modalBackground&&this._modalBackground.length>=1&&(a("."+this.toThemeProperty("MLjqui-window-modal")).remove(),this._modalBackground=null)},focus:function(){try{this.host.focus();var a=this;setTimeout(function(){a.host.focus()},10)}catch(b){}},_makeModal:function(){if(this.isModal&&(!this._modalBackground||this._modalBackground.length<1)){var b=a.data(document.body,"MLjquiwindows-list");b&&(this._removeFromArray(this.host,b),a.data(document.body,"MLjquiwindows-list",b)),this._modalBackground=a("
          "),this._modalBackground.addClass(this.toThemeProperty("MLjqui-window-modal")),this._setModalBackgroundStyles(),a(document.body).append(this._modalBackground),this.addHandler(this._modalBackground,this._getEvent("click"),function(){return!1});var c=this,d=function(b,c){var d=a(b).parents().get();for(j=0;j0&&(b[0].focus(1),setTimeout(function(){b[0].focus(1)},100)),a.preventDefault(),!1}),this.addHandler(a(document),"keydown.window"+this.element.id,function(b){if(9===b.keyCode){var e=a.data(document.body,"MLjquiwindows-modallist");if(!(e.length>1&&e[e.length-1][0]!=c.element)){var f=c._getTabbables(),g=null,h=null;if(f.length>0&&(g=f[0],h=f[f.length-1]),b.target!=c.element&&null!=g)return d(b.target,c.host)&&(b.target!==h||b.shiftKey)?b.target===g&&b.shiftKey?(h.focus(1),!1):void 0:(g.focus(1),!1)}}})}},_addStyles:function(){this.host.addClass(this.toThemeProperty("MLjqui-rc-all")),this.host.addClass(this.toThemeProperty("MLjqui-window")),this.host.addClass(this.toThemeProperty("MLjqui-popup")),a.MLjqui.browser.msie&&this.host.addClass(this.toThemeProperty("MLjqui-noshadow")),this.host.addClass(this.toThemeProperty("MLjqui-widget")),this.host.addClass(this.toThemeProperty("MLjqui-widget-content")),this._header.addClass(this.toThemeProperty("MLjqui-window-header")),this._content.addClass(this.toThemeProperty("MLjqui-window-content")),this._header.addClass(this.toThemeProperty("MLjqui-widget-header")),this._content.addClass(this.toThemeProperty("MLjqui-widget-content")),this._header.addClass(this.toThemeProperty("MLjqui-disableselect")),this._header.addClass(this.toThemeProperty("MLjqui-rc-t")),this._content.addClass(this.toThemeProperty("MLjqui-rc-b")),this.host.attr("tabindex")||(this.element.tabIndex=0,this.host.children().css("tab-index",0)),this.host.attr("hideFocus","true").css("outline","none")},_performHeaderLayout:function(){this._handleHeaderButtons(),this._header.css("position","relative"),this.rtl?(this._headerContentWrapper.css("direction","rtl"),this._headerContentWrapper.css("float","right")):(this._headerContentWrapper.css("direction","ltr"),this._headerContentWrapper.css("float","left")),this._performHeaderCloseButtonLayout(),this._performHeaderCollapseButtonLayout(),this._centerElement(this._headerContentWrapper,this._header,"y","margin"),this.headerHeight&&(this._centerElement(this._closeButtonWrapper,this._header,"y","margin"),this._centerElement(this._collapseButtonWrapper,this._header,"y","margin"))},_handleHeaderButtons:function(){this._closeButtonWrapper&&(this.showCloseButton?(this._closeButtonWrapper.css("visibility","visible"),this._closeButtonWrapper.width(this.closeButtonSize),this._closeButtonWrapper.height(this.closeButtonSize)):this._closeButtonWrapper.css("visibility","hidden"),this.showCollapseButton?(this._collapseButtonWrapper.css("visibility","visible"),this._collapseButtonWrapper.width(this.collapseButtonSize),this._collapseButtonWrapper.height(this.collapseButtonSize)):this._collapseButtonWrapper.css("visibility","hidden"))},_performHeaderCloseButtonLayout:function(){if(this._closeButtonWrapper){var a=parseInt(this._header.css("padding-right"),10);isNaN(a)||(this._closeButtonWrapper.width(this._closeButton.width()),this.rtl?(this._closeButtonWrapper.css("margin-left",a),this._closeButtonWrapper.css("margin-right","0px")):(this._closeButtonWrapper.css("margin-right",a),this._closeButtonWrapper.css("margin-left","0px"))),this.rtl?this._closeButtonWrapper.css({position:"absolute",left:"0px",right:""}):this._closeButtonWrapper.css({position:"absolute",right:"0px",left:""})}},_performHeaderCollapseButtonLayout:function(){if(this._closeButtonWrapper){var a=parseInt(this._header.css("padding-right"),10);isNaN(a)||(this._collapseButtonWrapper.width(this.collapseButtonSize),this._collapseButtonWrapper.height(this.collapseButtonSize),this.rtl?(this._collapseButtonWrapper.css("margin-left",a),this._collapseButtonWrapper.css("margin-right","0px")):(this._collapseButtonWrapper.css("margin-right",a),this._collapseButtonWrapper.css("margin-left","0px"))),this.rtl?this._collapseButtonWrapper.css({position:"absolute",left:this.showCloseButton?this._closeButton.outerWidth(!0):0,right:""}):this._collapseButtonWrapper.css({position:"absolute",right:this.showCloseButton?this._closeButton.outerWidth(!0):0,left:""}),this._centerElement(this._collapseButton,this._collapseButton.parent(),"y")}},_performWidgetLayout:function(){var a;"auto"!==this.width&&this.host.css("width",this.width),this.collapsed||("auto"!==this.height?this.host.height(this.height):this.host.height(this.host.height()),this.host.css("min-height",this.minHeight)),this._setChildrenLayout(),a=this._validateMinSize(),this.host.css({"max-height":this.maxHeight,"min-width":this.minWidth,"max-width":this.maxWidth}),a||this._setChildrenLayout()},_setChildrenLayout:function(){this._header.width(this.host.width()-(this._header.outerWidth(!0)-this._header.width())),this._content.width(this.host.width()-(this._content.outerWidth(!0)-this._content.width())),this._content.height(this.host.height()-this._header.outerHeight(!0)-(this._content.outerHeight(!0)-this._content.height()))},_validateMinSize:function(){var a=!0;this.minHeight=0){var e=a.outerHeight(!0),f=b.height(),g=Math.max(0,f-e)/2;a.css(d+"top",g+"px")}if(c.indexOf("x")>=0){var h=a.outerWidth(!0),i=b.width(),j=Math.max(0,i-h)/2;a.css(d+"left",j+"px")}},_centerElementInArea:function(a,b,c){if(c=c.toLowerCase(),c.indexOf("y")>=0){var d=a.outerHeight(!0),e=b.height,f=(e-d)/2;a.css("top",f+b.top+"px")}if(c.indexOf("x")>=0){var g=a.outerWidth(!0),h=b.width,i=(h-g)/2;a.css("left",i+b.left+"px")}},_removeEventHandlers:function(){this.removeHandler(this._header,this._getEvent("mousedown")),this.removeHandler(this._header,this._getEvent("mousemove")),this.removeHandler(this._header,"focus"),this.removeHandler(a(document),this._getEvent("mousemove")+"."+this.host.attr("id")),this.removeHandler(a(document),this._getEvent("mouseup")+"."+this.host.attr("id")),this.removeHandler(this.host,"keydown"),this.removeHandler(this._closeButton,this._getEvent("click")),this.removeHandler(this._closeButton,this._getEvent("mouseenter")),this.removeHandler(this._closeButton,this._getEvent("mouseleave")),this.removeHandler(this._collapseButton,this._getEvent("click")),this.removeHandler(this._collapseButton,this._getEvent("mouseenter")),this.removeHandler(this._collapseButton,this._getEvent("mouseleave")),this.removeHandler(this.host,this._getEvent("mousedown")),this.removeHandler(a(this.okButton),this._getEvent("click"),this._setDialogResultHandler),this.removeHandler(a(this.cancelButton),this._getEvent("click"),this._setDialogResultHandler),this.removeHandler(this._header,this._getEvent("mouseenter")),this.removeHandler(this._header,this._getEvent("mouseleave")),this.removeHandler(this.host,"resizing",this._windowResizeHandler)},_removeFromArray:function(a,b){var c=this._indexOf(a,b);return c>=0?b.splice(this._indexOf(a,b),1):b},_sortByStyle:function(a,b){for(var c=0;cc;d--){var e,f=b[d],g=b[d-1];parseInt(f.css(a),10)document.body.clientHeight&&b&&(c=this._SCROLL_WIDTH),document.body.scrollWidth>document.body.clientWidth&&b&&(d=this._SCROLL_WIDTH),{width:a(document).width()-c,height:a(document).height()-d}},_closeButtonHover:function(){var a=this;this.addHandler(this._closeButton,this._getEvent("mouseenter"),function(){a._closeButton.addClass(a.toThemeProperty("MLjqui-window-close-button-hover"))}),this.addHandler(this._closeButton,this._getEvent("mouseleave"),function(){a._closeButton.removeClass(a.toThemeProperty("MLjqui-window-close-button-hover"))})},_collapseButtonHover:function(){var a=this;this.addHandler(this._collapseButton,this._getEvent("mouseenter"),function(){a._collapseButton.addClass(a.toThemeProperty("MLjqui-window-collapse-button-hover"))}),this.addHandler(this._collapseButton,this._getEvent("mouseleave"),function(){a._collapseButton.removeClass(a.toThemeProperty("MLjqui-window-collapse-button-hover"))})},_setModalBackgroundStyles:function(){this.isModal&&(this._modalBackground.fadeTo(0,this.modalOpacity),this._modalBackground.css({position:"absolute",top:"0px",left:"0px",width:this._getDocumentSize().width,height:this._getDocumentSize().height,"z-index":this.modalBackgroundZIndex}),this.autoOpen||this._modalBackground.css("display","none"))},_addFocusHandlers:function(){var a=this;this.addHandler(this.host,this._getEvent("mousedown"),function(){a.isModal||a.bringToFront()})},_indexOf:function(a,b){for(var c=0;c=0&&this.move(f-l,g),k=!1;break;case 38:c?this.resizable&&this.resize(i,j-l):this.draggable&&g-l>=0&&this.move(f,g-l),k=!1;break;case 39:c?this.resizable&&this.resize(i+l,j):this.draggable&&f+i+l<=h.width&&this.move(f+l,g),k=!1;break;case 40:c?this.resizable&&this.resize(i,j+l):this.draggable&&g+j+l<=h.height&&this.move(f,g+l),k=!1}return k||(b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation()),k}},_addCollapseHandlers:function(){var a=this;this.addHandler(this._collapseButton,this._getEvent("click"),function(){a.collapsed?a.expand():a.collapse()})},_closeWindow:function(a){return this.closeWindow(),!1},_addHeaderCursorHandlers:function(a){return a.resizeArea&&a.resizable&&!a.collapsed?void a._header.css("cursor",a._resizeWrapper.css("cursor")):a.draggable?void a._header.css("cursor","move"):(a._header.css("cursor","default"),void(a._resizeWrapper&&a._resizeWrapper.length>0&&a._resizeWrapper.css("cursor","default")))},_addDragDropHandlers:function(){if(this.draggable){var b=this;this.addHandler(this.host,"focus",function(){b._headerFocused=!0}),this.addHandler(this.host,"blur",function(){b._headerFocused=!1}),this.addHandler(this._header,"focus",function(){return b._headerFocused=!0,!1}),this.addHandler(this._header,this._getEvent("mousedown"),function(a,c,d){return c&&(a.pageX=c),d&&(a.pageY=d),b._headerMouseDownHandler(b,a),!0}),this.addHandler(this._header,"dragstart",function(a){return a.preventDefault&&a.preventDefault(),!1}),this.addHandler(this._header,this._getEvent("mousemove"),function(a){return b._headerMouseMoveHandler(b,a)}),this.addHandler(a(document),this._getEvent("mousemove")+"."+this.host.attr("id"),function(a){return b._dragHandler(b,a)}),this.addHandler(a(document),this._getEvent("mouseup")+"."+this.host.attr("id"),function(a){return b._dropHandler(b,a)});try{if(""!=document.referrer||window.frameElement){var c=null;if(null!=window.top&&window.top!=window.self&&window.parent&&document.referrer&&(c=document.referrer),c&&-1!=c.indexOf(document.location.host)){var d=function(a){b._dropHandler(b,a)};window.top.document.addEventListener?window.top.document.addEventListener("mouseup",d,!1):window.top.document.attachEvent&&window.top.document.attachEvent("onmouseup",d)}}}catch(e){}}},_headerMouseDownHandler:function(b,c){if(b.isModal||b.bringToFront(),null==b._resizeDirection){var d=a.MLjqui.mobile.getTouches(c),e=(d[0],a.MLjqui.position(c));b._mousePosition.x=e.left,b._mousePosition.y=e.top,b._mouseDown=!0,b._isDragging=!1}},_headerMouseMoveHandler:function(b,c){if(b._mouseDown&&!b._isDragging){var d=a.MLjqui.mobile.getTouches(c),e=d[0],f=e.pageX,g=e.pageY,h=a.MLjqui.position(c);return f=h.left,g=h.top,(f+3b._mousePosition.x||g+3b._mousePosition.y)&&(b._isDragging=!0,b._mousePosition={x:f,y:g},b._windowPosition={x:b.host.coord().left,y:b.host.coord().top},a(document.body).addClass(b.toThemeProperty("MLjqui-disableselect"))),b._isTouchDevice?(c.preventDefault(),!0):!1}return b._isDragging?b._isTouchDevice?(c.preventDefault(),!0):!1:!0},_dropHandler:function(b,c){var d=!0;if(b._isDragging&&!b.isResizing&&!b._resizeDirection){var e=parseInt(b.host.css("left"),10),f=parseInt(b.host.css("top"),10),g=b._isTouchDevice?0:c.pageX,h=b._isTouchDevice?0:c.pageY;b.enableResize=b._enableResizeBackup,b._enableResizeBackup="undefined",b._raiseEvent(3,e,f,g,h),d=!1,"undefined"!=c.preventDefault&&c.preventDefault(),null!=c.originalEvent&&(c.originalEvent.mouseHandled=!0),"undefined"!=c.stopPropagation&&c.stopPropagation()}return b._isDragging=!1,b._mouseDown=!1,a(document.body).removeClass(b.toThemeProperty("MLjqui-disableselect")),d},_dragHandler:function(b,c){if(b._isDragging&&!b.isResizing&&!b._resizeDirection){var d=b._isTouchDevice?c.originalEvent.which:c.which;if("undefined"==typeof b._enableResizeBackup&&(b._enableResizeBackup=b.enableResize),b.enableResize=!1,0===d&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<8)return b._dropHandler(b,c);var e=a.MLjqui.mobile.getTouches(c),f=(e[0],a.MLjqui.position(c)),g=f.left,h=f.top,i=g-b._mousePosition.x,j=h-b._mousePosition.y,k=b._windowPosition.x+i,l=b._windowPosition.y+j;return b.move(k,l,c),c.preventDefault(),!1}return!0},_validateCoordinates:function(a,b,c,d){var e=this._getDraggingArea();a=a=e.width+e.left-2*d&&(a=e.width+e.left-f-d),b+g>=e.height+e.top-c&&(b=e.height+e.top-g-c),{x:a,y:b}},_performLayout:function(){this._performHeaderLayout(),this._performWidgetLayout()},_parseDragAreaAttributes:function(){null!==this.dragArea&&(this.dragArea.height=parseInt(this.dragArea.height,10),this.dragArea.width=parseInt(this.dragArea.width,10),this.dragArea.top=parseInt(this.dragArea.top,10),this.dragArea.left=parseInt(this.dragArea.left,10))},_positionWindow:function(){if(this._parseDragAreaAttributes(),this.position instanceof Array&&2===this.position.length&&"number"==typeof this.position[0]&&"number"==typeof this.position[1])this.host.css({left:this.position[0],top:this.position[1]});else if(this.position instanceof Object){if(this.position.left)this.host.offset(this.position);else if(void 0!==this.position.x&&void 0!=this.position.y)this.host.css({left:this.position.x,top:this.position.y});else if(this.position.center){this._centerElement(this.host,this.position.center,"xy");var a=this.position.center.coord(),b=parseInt(this.host.css("left")),c=parseInt(this.host.css("top"));this.host.css({left:b+a.left,top:c+a.top})}}else this._positionFromLiteral()},_getDraggingArea:function(){var a={};return a.left=this.dragArea&&this.dragArea.left?this.dragArea.left:0,a.top=this.dragArea&&this.dragArea.top?this.dragArea.top:0,a.width=this.dragArea&&this.dragArea.width?this.dragArea.width:this._getDocumentSize().width,a.height=this.dragArea&&this.dragArea.height?this.dragArea.height:this._getDocumentSize().height,a},_positionFromLiteral:function(){this.position instanceof Array||(this.position=this.position.split(","));for(var b=this.position.length,c=this._getDraggingArea();b;)switch(b-=1,this.position[b]=this.position[b].replace(/ /g,""),this.position[b]){case"top":this.host.css("top",c.top);break;case"left":this.host.css("left",c.left);break;case"bottom":this.host.css("top",c.height-this.host.height()+c.top);break;case"right":this.host.css("left",c.left+c.width-this.host.width());break;default:this.dragArea||(c=a(window)),this._centerElement(this.host,c,"xy")}},_raiseEvent:function(b){var c=this._events[b],d=a.Event(c),e={};return 2!==b&&3!==b||(e.x=arguments[1],e.y=arguments[2],e.pageX=arguments[3],e.pageY=arguments[4]),"closed"!==c&&"close"!==c||(e.dialogResult=this.dialogResult),d.args=e,this.host.trigger(d)},destroy:function(){this.removeHandler(a(window),"resize.window"+this.element.id),this._removeEventHandlers(),this._destroy()},_destroy:function(){this.restricter&&(this.removeHandler(a(window),"resize."+this.element.id),this.removeHandler(a(window),"orientationchanged."+this.element.id),this.removeHandler(a(window),"orientationchange."+this.element.id)),this.host.remove(),null!==this._modalBackground&&this._modalBackground.remove()},_toClose:function(a,b){return a&&b[0]===this.element||b[0]!==this.element&&"object"==typeof b[0]},propertyChangedHandler:function(b,c,d,e){switch(this._validateProperties(),c){case"rtl":this._performLayout();break;case"dragArea":this._positionWindow();break;case"collapseButtonSize":this._performLayout();break;case"closeButtonSize":this._performLayout();break;case"isModal":this._refresh(),this._fixWindowZIndex();break;case"keyboardCloseKey":this._removeEventHandlers(),this._addEventHandlers();break;case"disabled":e?this.disable():(this.disabled=!0,this.enable());break;case"showCloseButton":case"showCollapseButton":this._performLayout();break;case"height":this._performLayout();break;case"width":this._performLayout();break;case"title":this.setTitle(e),this.title=e;break;case"content":this.setContent(e);break;case"draggable":this._removeEventHandlers(),this._addEventHandlers(),this._removeResize(),this._initializeResize();break;case"resizable":this.enableResize=e,e?this._initializeResize():this._removeResize();break;case"position":this._positionWindow();break;case"modalOpacity":this._setModalBackgroundStyles();break;case"okButton":e?this._addDialogButtonsHandlers():this.removeHandler(this.okButton);break;case"cancelButton":e?this._addDialogButtonsHandlers():this.removeHandler(this.cancelButton);break;case"collapsed":e?d||(this.collapsed=!1,this.collapse(0)):d&&(this.collapsed=!0,this.expand(0));case"theme":a.MLjqui.utilities.setTheme(d,e,this.host);break;case"enableResize":return;case"maxWidth":case"maxHeight":case"minWidth":case"minHeight":return b._performLayout(),b._removeResize(),void b._initializeResize();default:return}},collapse:function(b){if(!this.collapsed&&!this.host.is(":animated")){if("none"==this.host.css("display"))return;var c=this,d=this._header.outerHeight(!0),e=parseInt(this._header.css("border-bottom-width"),10),f=parseInt(this._header.css("margin-bottom"),10),b=isNaN(parseInt(b))?this.collapseAnimationDuration:b;isNaN(e)||(d-=2*e),isNaN(f)||(d+=f),this._heightBeforeCollapse=this.host.height(),this._minHeightBeforeCollapse=this.host.css("min-height"),this.host.css("min-height",d),this.host.animate({height:d},b,function(){c.collapsed=!0,c._collapseButton.addClass(c.toThemeProperty("MLjqui-window-collapse-button-collapsed")),c._collapseButton.addClass(c.toThemeProperty("MLjqui-icon-arrow-down")),c._content.css("display","none"),c._raiseEvent(5),c._raiseEvent(9),a.MLjqui.aria(c,"aria-expanded",!1)})}},expand:function(b){if(this.collapsed&&!this.host.is(":animated")){var c=this,b=isNaN(parseInt(b))?this.collapseAnimationDuration:b;this.host.animate({height:this._heightBeforeCollapse},b,function(){c.collapsed=!1,c.host.css("min-height",c._minHeightBeforeCollapse),c._collapseButton.removeClass(c.toThemeProperty("MLjqui-window-collapse-button-collapsed")),c._collapseButton.removeClass(c.toThemeProperty("MLjqui-icon-arrow-down")),c._content.css("display","block"),c._raiseEvent(6),c._performWidgetLayout(),c._raiseEvent(9),a.MLjqui.aria(c,"aria-expanded",!0)})}},closeAll:function(b){for(var b=!0,c=a.data(document.body,"MLjquiwindows-list"),d=c.length,e=a.data(document.body,"MLjquiwindow-modal")||[];d;)d-=1,this._toClose(b,c[d])&&(c[d].MLjquiWindow("closeWindow","close"),c.splice(d,1));this._toClose(b,e)&&(e.MLjquiWindow("closeWindow","close"),a.data(document.body,"MLjquiwindow-modal",[])),a.data(document.body,"MLjquiwindows-list",c)},setTitle:function(b){a.MLjqui.utilities.html(this._headerContentWrapper,b),this.title=b,this._performLayout()},setContent:function(b){this._contentInitialized=!1;for(var c=this._content,d=!1;!d;)c.css("height","auto"),c.css("width","auto"),c.is(".MLjqui-window")?d=!0:c=c.parent();a.MLjqui.utilities.html(this._content,b),this._performLayout()},disable:function(){console.log("dddddddddddddddddddddddddddddddddddddd"),this.disabled=!0,this._removeEventHandlers(),this._header.addClass(this.toThemeProperty("MLjqui-window-header-disabled")),this._closeButton.addClass(this.toThemeProperty("MLjqui-window-close-button-disabled")),this._collapseButton.addClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")),this._content.addClass(this.toThemeProperty("MLjqui-window-content-disabled")),this.host.addClass(this.toThemeProperty("MLjqui-window-disabled")),this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this._removeResize()},enable:function(){this.disabled&&(this._addEventHandlers(),this._header.removeClass(this.toThemeProperty("MLjqui-window-header-disabled")),this._content.removeClass(this.toThemeProperty("MLjqui-window-content-disabled")),this._closeButton.removeClass(this.toThemeProperty("MLjqui-window-close-button-disabled")),this._collapseButton.removeClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")),this.host.removeClass(this.toThemeProperty("MLjqui-window-disabled")),this.host.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this.disabled=!1,this._initializeResize())},isOpen:function(){return this._visible},closeWindow:function(a){var b=this;a="undefined"==typeof a?this.closeButtonAction:a,this.hide(function(){"close"===a&&b._destroy()})},bringToFront:function(){var b=a.data(document.body,"MLjquiwindows-list");if(this.isModal)return b=a.data(document.body,"MLjquiwindows-modallist"),this._fixWindowZIndex("modal-hide"),void this._fixWindowZIndex("modal-show");for(var c=b[b.length-1],d=parseInt(c.css("z-index"),10),e=this._indexOf(this.host,b),f=b.length-1;f>e;f-=1){var g=parseInt(b[f].css("z-index"),10)-1;b[f].css("z-index",g)}this.host.css("z-index",d),this._sortByStyle("z-index",b)},hide:function(a,b,c){if(this.closing){var d=this.closing();if(0==d)return}switch(b=b||this.closeAnimationDuration,this.animationType){case"none":this.host.css("display","none");break;case"fade":this.host.fadeOut(b,function(){a instanceof Function&&a()});case"slide":this.host.slideUp(b,function(){ -a instanceof Function&&a()});case"combined":this.host.hide(b,function(){a instanceof Function&&a()})}this._visible=!1,this.isModal&&(this._modalBackground.hide(),this._fixWindowZIndex("modal-hide")),c!==!0&&(this._raiseEvent(1),this._raiseEvent(8))},open:function(a,b){this.show(a,b)},close:function(a,b,c){this.hide(a,b,c)},show:function(a,b){switch(this._setDialogResult("none"),b=b||this.showAnimationDuration,this.animationType){case"none":this.host.css("display","block");break;case"fade":this.host.fadeIn(b,function(){a instanceof Function&&a()});break;case"slide":this.host.slideDown(b,function(){a instanceof Function&&a()});break;case"combined":this.host.show(b,function(){a instanceof Function&&a()})}this.isModal&&(this._modalBackground.show(),this._fixWindowZIndex("modal-show"));var c=this;if(this._visible||(b>150&&"none"!=this.animationType?setTimeout(function(){c._contentInitialized||c.initContent&&(c.initContent(),c._contentInitialized=!0),c._raiseEvent(7),c._raiseEvent(9)},b-150):(c._contentInitialized||c.initContent&&(c.initContent(),c._contentInitialized=!0),this._raiseEvent(7),c._raiseEvent(9))),this._visible=!0,this._performLayout(),this.autoFocus){var d=function(){c._isTouchDevice||c._content.focus()};d(),setTimeout(function(){d()},100)}},_getTabbables:function(){var b=this._content.find("*"),c=new Array;return a.each(b,function(){d(this)&&(c[c.length]=this)}),c},move:function(b,c,d,e){var f,g,h,i=0,j=0,b=parseInt(b,10),c=parseInt(c,10);if(a.MLjqui.browser.msie&&(a(window).width()>a(document).width()&&!this.dragArea&&(j=this._SCROLL_WIDTH),a(window).height()document.documentElement.scrollWidth&&!this.dragArea&&(i=this._SCROLL_WIDTH)),f=this._validateCoordinates(b,c,j,i),parseInt(this.host.css("left"),10)!==f.x||parseInt(this.host.css("top"),10)!==f.y){if(d){var k=a.MLjqui.mobile.getTouches(d),l=(k[0],a.MLjqui.position(d));g=l.left,h=l.top}void 0==g&&(g=b),void 0==h&&(h=c),e!==!1&&this._raiseEvent(2,f.x,f.y,g,h)}this.element.style.left=f.x+"px",this.element.style.top=f.y+"px",this._moved=!0}})}(MLjquiBaseFramework),function(a){var b=function(a){return{resizeConfig:function(){this.resizeTarget=null,this.resizeIndicatorSize=5,this.resizeTargetChildren=null,this.isResizing=!1,this.resizeArea=!1,this.minWidth=1,this.maxWidth=100,this.minHeight=1,this.maxHeight=100,this.resizeParent=null,this.enableResize=!0,this._cursorBackup,this._resizeEvents=["resizing","resized","resize"],this._resizeMouseDown=!1,this._resizeCurrentMode=null,this._mouseResizePosition={},this._resizeMethods=null,this._SCROLL_WIDTH=21},_resizeExceptions:{invalidTarget:"Invalid target!",invalidMinHeight:"Invalid minimal height!",invalidMaxHeight:"Invalid maximum height!",invalidMinWidth:"Invalid minimum width!",invalidMaxWidth:"Invalid maximum width!",invalidIndicatorSize:"Invalid indicator size!",invalidSize:"Invalid size!"},removeResize:function(){if(this.resizeTarget){var b=a(this.resizeTarget.children(".MLjqui-resize"));b.detach();var c=b.children();this._removeResizeEventListeners();for(var d=0;dthis.minWidth?3*this.resizeIndicatorSize:this.minWidth,this.resizeTarget.maxHeight=this.maxHeight,this.resizeTarget.minHeight=3*this.resizeIndicatorSize>this.minHeight?3*this.resizeIndicatorSize:this.minHeight},_parseResizeParentProperties:function(){this.resizeParent&&(this.resizeParent.left=parseInt(this.resizeParent.left,10),this.resizeParent.top=parseInt(this.resizeParent.top,10),this.resizeParent.width=parseInt(this.resizeParent.width,10),this.resizeParent.height=parseInt(this.resizeParent.height,10))},_getChildren:function(b,c,d,e,f){this.resizeTargetChildren=a(f),this.resizeTargetChildren.toArray();for(var g=this.resizeTargetChildren.length;g;)g-=1,this.resizeTargetChildren[g]=a(this.resizeTargetChildren[g])},_refreshResize:function(){this._renderResize(),this._performResizeLayout(),this._removeResizeEventListeners(),this._addResizeEventHandlers()},_renderResize:function(){this.resizeTarget.wrapInner(a("
          ")),this._resizeWrapper=this.resizeTarget.children(0),this._resizeWrapper.addClass("MLjqui-resize"),this._resizeWrapper.addClass("MLjqui-rc-all"),this._resizeWrapper.css("z-index",8e3)},_performResizeLayout:function(){this._resizeWrapper.height(this.resizeTarget.height()),this._resizeWrapper.width(this.resizeTarget.width())},_removeResizeEventListeners:function(){var b=this.resizeTarget.attr("id");this.removeHandler(this._resizeWrapper,"mousemove.resize"+b),this.removeHandler(this._resizeWrapper,"mousedown.resize"+b),this.removeHandler(a(document),"mousemove.resize"+b),this.removeHandler(a(document),"mouseup.resize"+b)},_addResizeEventHandlers:function(){var b=this.resizeTarget.attr("id"),c=this;this.addHandler(this._resizeWrapper,"mousemove.resize."+b,function(a){c._resizeCursorChangeHandler(c,a)}),this.addHandler(this._resizeWrapper,"mousedown.resize."+b,function(a){c._resizeMouseDownHandler(c,a)}),this.addHandler(a(document),"mousemove.resize."+b,function(a){return c._resizeHandler(c,a)}),this.addHandler(a(document),"mouseup.resize."+b,function(a){c._stopResizing(c,a)});try{if(""!=document.referrer||window.frameElement){var d=function(a){c._stopResizing(c,a)};window.top.document.addEventListener?window.top.document.addEventListener("mouseup",d,!1):window.top.document.attachEvent&&window.top.document.attachEvent("onmouseup",d)}}catch(e){}},_stopResizing:function(a,b){a.enableResize&&(a.isResizing&&a._raiseResizeEvent(1),a._resizeMouseDown=!1,a.isResizing=!1,a._resizeDirection=null,a.resizeTarget&&a.resizeTarget.removeClass("MLjqui-disableselect")),"undefined"==a._cursorBackup&&(a._cursorBackup="default"),a._resizeWrapper&&a._resizeWrapper.css("cursor",a._cursorBackup)},_resizeHandler:function(b,c){return b.enableResize&&!b.collapsed?b.isResizing&&b._resizeDirection?(0===c.which&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<9&&b._stopResizing(c),b._performResize(c.pageX,c.pageY),!1):b._resizeCaptureCursor(c.pageX,c.pageY):void 0},_resizeCaptureCursor:function(a,b){return this._resizeMouseDown&&!this.isResizing&&this._resizeDirection&&(a+3this._mouseResizePosition.x||b+3this._mouseResizePosition.y)?(this._changeCursor(a-parseInt(this.resizeTarget.css("left")),b-parseInt(this.resizeTarget.css("top"))),this._mouseResizePosition={x:a,y:b},this._prepareResizeMethods(this._resizeDirection),this._resizeBackupData(),this.isResizing=!0,this.resizeTarget.addClass("MLjqui-disableselect"),!1):void 0},_resizeBackupData:function(){this.resizeTarget.lastWidth=this.resizeTarget.width(),this.resizeTarget.lastHeight=this.resizeTarget.height(),this.resizeTarget.x=parseInt(this.resizeTarget.css("left"),10),this.resizeTarget.y=parseInt(this.resizeTarget.css("top"),10),this._resizeBackupChildrenSize()},_resizeBackupChildrenSize:function(){for(var a,b=this.resizeTargetChildren.length;b;)b-=1,a=this.resizeTargetChildren[b],this.resizeTargetChildren[b].lastWidth=a.width(),this.resizeTargetChildren[b].lastHeight=a.height()},_performResize:function(a,b){var c=a-this._mouseResizePosition.x,d=b-this._mouseResizePosition.y;this._resizeDirection&&this._resize(this.resizeTarget,c,d)},_resizeCursorChangeHandler:function(a,b){a.enableResize&&!a.collapsed&&(a.isResizing||a._changeCursor(b.pageX-parseInt(a.resizeTarget.css("left")),b.pageY-parseInt(a.resizeTarget.css("top"))))},_resizeMouseDownHandler:function(a,b){a.enableResize&&null!==a._resizeDirection&&(a._resizeMouseDown=!0,a._mouseResizePosition.x=b.pageX,a._mouseResizePosition.y=b.pageY,b.preventDefault())},_validateResizeProperties:function(){try{if(!this.resizeTarget||1!==this.resizeTarget.length)throw new Error(this._resizeExceptions.invalidTarget);if(this.minHeight<0||isNaN(parseInt(this.minHeight)))throw new Error(this._resizeExceptions.invalidMinHeight);if(this.maxHeight<=0||isNaN(parseInt(this.maxHeight)))throw new Error(this._resizeExceptions.invalidMaxHeight);if(this.minWidth<0||isNaN(parseInt(this.minWidth)))throw new Error(this._resizeExceptions.invalidMinWidth);if(this.maxWidth<0||isNaN(parseInt(this.maxWidth)))throw new Error(this._resizeExceptions.invalidMaxWidth);if(this.resizeIndicatorSize<0||isNaN(parseInt(this.resizeIndicatorSize)))throw new Error(this._resizeExceptions.invalidIndicatorSize);if(this.minHeight>this.maxHeight||this.minWidth>this.maxWidth)throw new Error(this._resizeExceptions.invalidSize)}catch(a){alert(a)}},_changeCursor:function(a,b){this.isResizing||this._resizeMouseDown||(this.resizeArea=!0,a<=this.resizeIndicatorSize&&a>=0&&b<=this.resizeIndicatorSize&&b>0?(this._resizeWrapper.css("cursor","nw-resize"),this._resizeDirection="topleft"):b<=this.resizeIndicatorSize&&b>0&&a>=this.resizeTarget.width()-this.resizeIndicatorSize?(this._resizeWrapper.css("cursor","ne-resize"),this._resizeDirection="topright"):b>=this.resizeTarget.height()-this.resizeIndicatorSize&&b=0?(this._resizeWrapper.css("cursor","sw-resize"),this._resizeDirection="bottomleft"):b>=this.resizeTarget.height()-this.resizeIndicatorSize&&b=this.resizeTarget.width()-this.resizeIndicatorSize&&a=0?(this._resizeWrapper.css("cursor","e-resize"),this._resizeDirection="left"):b<=this.resizeIndicatorSize&&b>0?(this._resizeWrapper.css("cursor","n-resize"),this._resizeDirection="top"):b>=this.resizeTarget.height()-this.resizeIndicatorSize&&b=this.resizeTarget.width()-this.resizeIndicatorSize&&a=0&&this._resizeMethods.push(this._resizeLeft),a.indexOf("top")>=0&&this._resizeMethods.push(this._resizeTop),a.indexOf("right")>=0&&this._resizeMethods.push(this._resizeRight),a.indexOf("bottom")>=0&&this._resizeMethods.push(this._resizeBottom)},_validateResize:function(a,b,c,d,e){return"horizontal"===c||"both"===c?this._validateWidth(a,d,e):"vertical"===c||"both"===c?this._validateHeight(b,d,e):{result:!1,fix:0}},_getParent:function(){return null!==this.resizeParent&&"undefined"!==this.resizeParent&&this.resizeParent.height&&this.resizeParent.width&&this.resizeParent.top&&this.resizeParent.left?this.resizeParent:{left:0,top:0,width:a(document).width(),height:a(document).height()}},_validateHeight:function(b,c,d){var e=0,f=2,g=this._getParent();return a(window).width()>a(document).width()&&a.MLjqui.browser.msie&&g.height===a(document).height()&&(e=this._SCROLL_WIDTH),"bottom"===d&&b+c.position().top+e+f>g.height+g.top?{fix:g.height-c.position().top-e-f+g.top,result:!1}:"top"===d&&c.lastHeight-b+c.yc.maxHeight?{fix:c.maxHeight,result:!1}:{result:!0,fix:b}},_validateWidth:function(b,c,d){var e=0,f=2,g=this._getParent();return a(window).height()=document.documentElement.scrollWidth&&g.width===a(document).width()&&(e=this._SCROLL_WIDTH),"right"===d&&b+c.position().left+e+f>g.width+g.left?{fix:g.width-c.position().left-e-f+g.left,result:!1}:"left"===d&&c.lastWidth-b+c.xc.maxWidth?{fix:c.maxWidth,result:!1}:{result:!0,fix:b}},_resize:function(a,b,c){for(var d=(this._resizeDirection,this._resizeMethods.length),e=0;d>e;e++)if(this._resizeMethods[e]instanceof Function){var f={element:a,x:b,y:c,self:this};this._resizeMethods[e](f)}this._performResizeLayout()},resize:function(a,b){if(this.resizable){var c=a-this.host.width(),d=b-this.host.height(),e="right";0!=d&&(e="bottom"),this._resizeDirection=e,this._prepareResizeMethods(this._resizeDirection),this._resizeBackupData(),this.isResizing=!0,this._resize(this.resizeTarget,c,d),this.isResizing=!1}},_setResizeChildrenSize:function(a,b){for(var c=this.resizeTargetChildren.length;c;)if(c--,"width"===b){var d=this.resizeTargetChildren[c].lastWidth-(this.resizeTarget.lastWidth-a);d0&&this.resizeTargetChildren[c].width(d)}else{var e=this.resizeTargetChildren[c].lastHeight-(this.resizeTarget.lastHeight-a);e0&&this.resizeTargetChildren[c].height(e)}},_resizeRight:function(a){var b=a.element.lastWidth+a.x,c=a.self._validateResize(b,0,"horizontal",a.element,"right");return c.result||(b=c.fix),a.element.width()!==b&&(a.self._setResizeChildrenSize(b,"width"),a.element.width(b),a.self._raiseResizeEvent(0)),b},_resizeLeft:function(a){var b=a.element.lastWidth-a.x,c=a.self._validateResize(b,0,"horizontal",a.element,"left"),d=a.element.x+a.x;return c.result?(a.element.width()!==b&&(a.self._setResizeChildrenSize(b,"width"),a.element.width(b),a.element.css("left",d),a.self._raiseResizeEvent(0)),b):(d=a.element.x+(a.element.lastWidth-c.fix),void(b=c.fix))},_resizeBottom:function(a){var b=a.element.lastHeight+a.y,c=a.self._validateResize(0,b,"vertical",a.element,"bottom");return c.result||(b=c.fix),a.element.height()!==b&&(a.self._setResizeChildrenSize(b,"height"),a.element.height(b),a.self._raiseResizeEvent(0)),b},_resizeTop:function(a){var b=a.element.lastHeight-a.y,c=a.self._validateResize(0,b,"vertical",a.element,"top"),d=a.element.y+a.y;return c.result?(a.element.height()!==b&&(a.self._setResizeChildrenSize(b,"height"),a.element.height(b),a.element.css("top",d),a.self._raiseResizeEvent(0)),b):(d=a.element.y+(a.element.lastHeight-c.fix),void(b=c.fix))},_raiseResizeEvent:function(b){var c=this._resizeEvents[b],d=a.Event(c),e={};if(e.width=parseInt(this.resizeTarget[0].style.width),e.height=parseInt(this.resizeTarget[0].style.height),d.args=e,0==b){var c=this._resizeEvents[2],f=a.Event(c);f.args=e,this.resizeTarget.trigger(f)}return this.resizeTarget.trigger(d)}}}(MLjquiBaseFramework);a.extend(a.MLjqui._MLjquiWindow.prototype,b)}(MLjquiBaseFramework),function(a){a.MLjqui.cssroundedcorners=function(a){var b={all:"MLjqui-rc-all",top:"MLjqui-rc-t",bottom:"MLjqui-rc-b",left:"MLjqui-rc-l",right:"MLjqui-rc-r","top-right":"MLjqui-rc-tr","top-left":"MLjqui-rc-tl","bottom-right":"MLjqui-rc-br","bottom-left":"MLjqui-rc-bl"};for(prop in b)if(b.hasOwnProperty(prop)&&a==prop)return b[prop]},a.MLjqui.MLjquiWidget("MLjquiButton","",{}),a.extend(a.MLjqui._MLjquiButton.prototype,{defineInstance:function(){var b={cursor:"arrow",roundedCorners:"all",disabled:!1,height:null,width:null,overrideTheme:!1,enableHover:!0,enableDefault:!0,enablePressed:!0,imgPosition:"center",imgSrc:"",imgWidth:16,imgHeight:16,value:null,textPosition:"",textImageRelation:"overlay",rtl:!1,_ariaDisabled:!1,_scrollAreaButton:!1,template:"default",aria:{"aria-disabled":{name:"disabled",type:"boolean"}}};return a.extend(!0,this,b),b},_addImage:function(b){var c=this;if("input"==c.element.nodeName.toLowerCase()||"button"==c.element.nodeName.toLowerCase()||"div"==c.element.nodeName.toLowerCase()){if(c._img)c._img[0].setAttribute("src",c.imgSrc),c._img[0].setAttribute("width",c.imgWidth),c._img[0].setAttribute("height",c.imgHeight),c._text.html(c.value);else{c.field=c.element,c.field.className&&(c._className=c.field.className);var d={title:c.field.title},e=null;if(c.field.getAttribute("value"))var e=c.field.getAttribute("value");else if("input"!=c.element.nodeName.toLowerCase())var e=c.element.innerHTML;c.value&&(e=c.value),c.field.id.length?d.id=c.field.id.replace(/[^\w]/g,"_")+"_"+b:d.id=a.MLjqui.utilities.createId()+"_"+b;var f=a("
          ",d);f[0].style.cssText=c.field.style.cssText,f.css("box-sizing","border-box");var g=a("");g[0].setAttribute("src",c.imgSrc),g[0].setAttribute("width",c.imgWidth),g[0].setAttribute("height",c.imgHeight),f.append(g),c._img=g;var h=a("");e&&(h.html(e),c.value=e),f.append(h),c._text=h,a(c.field).hide().after(f);var i=c.host.data();if(c.host=f,c.host.data(i),c.element=f[0],c.element.id=c.field.id,c.field.id=d.id,c._className&&(c.host.addClass(c._className),a(c.field).removeClass(c._className)),c.field.tabIndex){var j=c.field.tabIndex;c.field.tabIndex=-1,c.element.tabIndex=j}}c.imgSrc?c._img.show():c._img.hide(),c.value?c._text.show():c._text.hide(),c._positionTextAndImage()}},_positionTextAndImage:function(){var a=this,b=a.host.outerWidth(),c=a.host.outerHeight(),d=a.imgWidth,e=a.imgHeight;""==a.imgSrc&&(d=0,e=0);var f=a._text.width(),g=a._text.height(),h=4,i=4,j=4,k=0,l=0;switch(a.textImageRelation){case"imageBeforeText":case"textBeforeImage":k=d+f+2*j+h+2*i,l=Math.max(e,g)+2*j+h+2*i;break;case"imageAboveText":case"textAboveImage":k=Math.max(d,f)+2*j,l=e+g+h+2*j+2*i;break;case"overlay":k=Math.max(d,f)+2*j,l=Math.max(e,g)+2*j}a.width||(a.host.width(k),b=k),a.height||(a.host.height(l),c=l),a._img.css("position","absolute"),a._text.css("position","absolute"),a.host.css("position","relative"),a.host.css("overflow","hidden");var m={},n={},o=function(a,b,c,d,e){switch(b.width=0||null!=c.value)&&(c.refresh(),c._addImage("MLjquiButton")),c._ariaDisabled||c.host.attr("role","button"),c.overrideTheme||(c.host.addClass(c.toThemeProperty(a.MLjqui.cssroundedcorners(c.roundedCorners))),c.enableDefault&&c.host.addClass(c.toThemeProperty("MLjqui-button")),c.host.addClass(c.toThemeProperty("MLjqui-widget"))),c.isTouchDevice=a.MLjqui.mobile.isTouchDevice(),c._ariaDisabled||a.MLjqui.aria(this),"arrow"!=c.cursor&&(c.disabled?c.host.css({cursor:"arrow"}):c.host.css({cursor:c.cursor}));var d="mouseenter mouseleave mousedown focus blur";if(c._scrollAreaButton)var d="mousedown";c.isTouchDevice&&(c.addHandler(c.host,a.MLjqui.mobile.getTouchEventName("touchstart"),function(a){c.isPressed=!0,c.refresh()}),c.addHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+c.element.id,function(a){c.isPressed=!1,c.refresh()})),c.addHandler(c.host,d,function(a){switch(a.type){case"mouseenter":c.isTouchDevice||!c.disabled&&c.enableHover&&(c.isMouseOver=!0,c.refresh());break;case"mouseleave":c.isTouchDevice||!c.disabled&&c.enableHover&&(c.isMouseOver=!1,c.refresh());break;case"mousedown":c.disabled||(c.isPressed=!0,c.refresh());break;case"focus":c.disabled||(c.isFocused=!0,c.refresh());break;case"blur":c.disabled||(c.isFocused=!1,c.refresh())}}),c.mouseupfunc=function(a){c.disabled||(c.isPressed||c.isMouseOver)&&(c.isPressed=!1,c.refresh())},c.addHandler(a(document),"mouseup.button"+c.element.id,c.mouseupfunc);try{if((""!=document.referrer||window.frameElement)&&null!=window.top&&window.top!=window.self){var e="";if(window.parent&&document.referrer&&(e=document.referrer),-1!=e.indexOf(document.location.host)){var f=function(a){c.isPressed=!1,c.refresh()};window.top.document&&c.addHandler(a(window.top.document),"mouseup",f)}}}catch(g){}c.propertyChangeMap.roundedCorners=function(b,c,d,e){b.host.removeClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(d))),b.host.addClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(e)))},c.propertyChangeMap.disabled=function(b,c,d,e){d!=e&&(b.refresh(),b.host[0].disabled=e,b.host.attr("disabled",e),e?b.host.css({cursor:"default"}):b.host.css({cursor:b.cursor}),a.MLjqui.aria(b,"aria-disabled",b.disabled))},c.propertyChangeMap.rtl=function(a,b,c,d){c!=d&&a.refresh()},c.propertyChangeMap.template=function(a,b,c,d){c!=d&&(a.host.removeClass(a.toThemeProperty("MLjqui-"+c)),a.refresh())},c.propertyChangeMap.theme=function(b,c,d,e){b.host.removeClass(),b.enableDefault&&b.host.addClass(b.toThemeProperty("MLjqui-button")),b.host.addClass(b.toThemeProperty("MLjqui-widget")),b.overrideTheme||b.host.addClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(b.roundedCorners))),b._oldCSSCurrent=null,b.refresh()},c.disabled&&(c.element.disabled=!0,c.host.attr("disabled",!0))},resize:function(a,b){this.width=a,this.height=b,this._setSize()},val:function(){var b=this,c=b.host.find("input");return c.length>0?0==arguments.length||"object"==typeof value?c.val():(c.val(value),b.refresh(),c.val()):0==arguments.length||"object"==typeof value?"button"==b.element.nodeName.toLowerCase()?a(b.element).text():b.element.value:(b.element.value=arguments[0],"button"==b.element.nodeName.toLowerCase()&&a(b.element).text(arguments[0]),void b.refresh())},_setSize:function(){var a=this;null==a.width||-1==a.width.toString().indexOf("px")&&-1==a.width.toString().indexOf("%")?void 0==a.width||isNaN(a.width)||a.host.css("width",a.width):a.host.css("width",a.width),null==a.height||-1==a.height.toString().indexOf("px")&&-1==a.height.toString().indexOf("%")?void 0==a.height||isNaN(a.height)||a.host.css("height",parseInt(a.height)):a.host.css("height",a.height)},_removeHandlers:function(){var b=this;b.removeHandler(b.host,"selectstart"),b.removeHandler(b.host,"click"),b.removeHandler(b.host,"focus"),b.removeHandler(b.host,"blur"),b.removeHandler(b.host,"mouseenter"),b.removeHandler(b.host,"mouseleave"),b.removeHandler(b.host,"mousedown"),b.removeHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc),b.isTouchDevice&&(b.removeHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart")),b.removeHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id)),b.mouseupfunc=null,delete b.mouseupfunc},focus:function(){this.host.focus()},destroy:function(){var b=this;b._removeHandlers();var c=a.data(b.element,"MLjquiButton");c&&delete c.instance,b.host.removeClass(),b.host.removeData(),b.host.remove(),delete b.set,delete b.get,delete b.call,delete b.element,delete b.host},render:function(){this.refresh()},propertiesChangedHandler:function(a,b,c){c&&c.width&&c.height&&2==Object.keys(c).length&&(a._setSize(),a.refresh())},propertyChangedHandler:function(a,b,c,d){void 0!=this.isInitialized&&0!=this.isInitialized&&d!=c&&(a.batchUpdate&&a.batchUpdate.width&&a.batchUpdate.height&&2==Object.keys(a.batchUpdate).length||("textImageRelation"!=b&&"textPosition"!=b&&"imgPosition"!=b||(a._img?a._positionTextAndImage():a._addImage("MLjquiButton")),"imgSrc"!=b&&"imgWidth"!=b&&"imgHeight"!=b&&"value"!=b||a._addImage("MLjquiButton"),"width"!=b&&"height"!=b||(a._setSize(),a.refresh())))},refresh:function(){var a=this;if(!a.overrideTheme){var b=a.toThemeProperty("MLjqui-fill-state-focus"),c=a.toThemeProperty("MLjqui-fill-state-disabled"),d=a.toThemeProperty("MLjqui-fill-state-normal");a.enableDefault||(d="");var e=a.toThemeProperty("MLjqui-fill-state-hover"),f=a.toThemeProperty("MLjqui-fill-state-pressed"),g=a.toThemeProperty("MLjqui-fill-state-pressed");a.enablePressed||(f="");var h="";if(a.host){if(a.host[0].disabled=a.disabled,a.disabled)return a._oldCSSCurrent&&a.host.removeClass(a._oldCSSCurrent),h=d+" "+c,"default"!==a.template&&""!==a.template&&(h+=" MLjqui-"+a.template,""!=a.theme&&(h+=" MLjqui-"+a.template+"-"+a.theme)),a.host.addClass(h),void(a._oldCSSCurrent=h);h=a.isMouseOver&&!a.isTouchDevice?a.isPressed?g:e:a.isPressed?f:d,a.isFocused&&(h+=" "+b),"default"!==a.template&&""!==a.template&&(h+=" MLjqui-"+a.template,""!=a.theme&&(h+=" MLjqui-"+a.template+"-"+a.theme)),h!=a._oldCSSCurrent&&(a._oldCSSCurrent&&a.host.removeClass(a._oldCSSCurrent),a.host.addClass(h),a._oldCSSCurrent=h),a.rtl&&(a.host.addClass(a.toThemeProperty("MLjqui-rtl")),a.host.css("direction","rtl"))}}}}),a.MLjqui.MLjquiWidget("MLjquiLinkButton","",{}),a.extend(a.MLjqui._MLjquiLinkButton.prototype,{defineInstance:function(){this.disabled=!1,this.height=null,this.width=null,this.rtl=!1,this.href=null},createInstance:function(a){var b=this;this.host.onselectstart=function(){return!1},this.host.attr("role","button");var c=this.height||this.host.height(),d=this.width||this.host.width();this.href=this.host.attr("href"),this.target=this.host.attr("target"),this.content=this.host.text(),this.element.innerHTML="",this.host.append("");var e=this.host.find("input");e.addClass(this.toThemeProperty("MLjqui-reset")),e.width(d),e.height(c),e.val(this.content),this.host.find("tr").addClass(this.toThemeProperty("MLjqui-reset")),this.host.find("td").addClass(this.toThemeProperty("MLjqui-reset")),this.host.find("tbody").addClass(this.toThemeProperty("MLjqui-reset")),this.host.css("color","inherit"),this.host.addClass(this.toThemeProperty("MLjqui-link")),e.css({width:d}),e.css({height:c});var f=void 0==a?{}:a[0]||{};e.MLjquiButton(f),this.disabled&&(this.host[0].disabled=!0),this.propertyChangeMap.disabled=function(a,b,c,d){a.host[0].disabled=d,a.host.find("input").MLjquiButton({disabled:d})},this.addHandler(e,"click",function(a){return this.disabled||b.onclick(a),!1})},onclick:function(a){null!=this.target?window.open(this.href,this.target):window.location=this.href}}),a.MLjqui.MLjquiWidget("MLjquiRepeatButton","MLjquiButton",{}),a.extend(a.MLjqui._MLjquiRepeatButton.prototype,{defineInstance:function(){this.delay=50},createInstance:function(b){var c=this,d=a.MLjqui.mobile.isTouchDevice(),e=d?"touchend."+this.base.element.id:"mouseup."+this.base.element.id,f=d?"touchstart."+this.base.element.id:"mousedown."+this.base.element.id;this.addHandler(a(document),e,function(a){null!=c.timeout&&(clearTimeout(c.timeout),c.timeout=null,c.refresh()),void 0!=c.timer&&(clearInterval(c.timer),c.timer=null,c.refresh())}),this.addHandler(this.base.host,f,function(a){null!=c.timer&&clearInterval(c.timer),c.timeout=setTimeout(function(){clearInterval(c.timer),c.timer=setInterval(function(a){c.ontimer(a)},c.delay)},150)}),this.mousemovefunc=function(a){d||0==a.which&&null!=c.timer&&(clearInterval(c.timer),c.timer=null)},this.addHandler(this.base.host,"mousemove",this.mousemovefunc)},destroy:function(){var b=a.MLjqui.mobile.isTouchDevice(),c=b?"touchend."+this.base.element.id:"mouseup."+this.base.element.id,d=b?"touchstart."+this.base.element.id:"mousedown."+this.base.element.id;this.removeHandler(this.base.host,"mousemove",this.mousemovefunc),this.removeHandler(this.base.host,d),this.removeHandler(a(document),c),this.timer=null,delete this.mousemovefunc,delete this.timer;var e=a.data(this.base.element,"MLjquiRepeatButton");e&&delete e.instance,a(this.base.element).removeData(),this.base.destroy(),delete this.base},stop:function(){clearInterval(this.timer),this.timer=null},ontimer:function(b){var b=new a.Event("click");null!=this.base&&null!=this.base.host&&this.base.host.trigger(b)}}),a.MLjqui.MLjquiWidget("MLjquiToggleButton","MLjquiButton",{}),a.extend(a.MLjqui._MLjquiToggleButton.prototype,{defineInstance:function(){this.toggled=!1,this.uiToggle=!0,this.aria={"aria-checked":{name:"toggled",type:"boolean"},"aria-disabled":{name:"disabled",type:"boolean"}}},createInstance:function(b){var c=this;c.base.overrideTheme=!0,c.isTouchDevice=a.MLjqui.mobile.isTouchDevice(),a.MLjqui.aria(this),c.propertyChangeMap.roundedCorners=function(b,c,d,e){b.base.host.removeClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(d))),b.base.host.addClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(e)))},c.propertyChangeMap.toggled=function(a,b,c,d){a.refresh()},c.propertyChangeMap.disabled=function(a,b,c,d){a.base.disabled=d,a.refresh()},c.addHandler(c.base.host,"click",function(a){!c.base.disabled&&c.uiToggle&&c.toggle()}),c.isTouchDevice||(c.addHandler(c.base.host,"mouseenter",function(a){c.base.disabled||c.refresh()}),c.addHandler(c.base.host,"mouseleave",function(a){c.base.disabled||c.refresh()})),c.addHandler(c.base.host,"mousedown",function(a){c.base.disabled||c.refresh()}),c.addHandler(a(document),"mouseup.togglebutton"+c.base.element.id,function(a){c.base.disabled||c.refresh()})},destroy:function(){this._removeHandlers(),this.base.destroy()},_removeHandlers:function(){this.removeHandler(this.base.host,"click"),this.removeHandler(this.base.host,"mouseenter"), -this.removeHandler(this.base.host,"mouseleave"),this.removeHandler(this.base.host,"mousedown"),this.removeHandler(a(document),"mouseup.togglebutton"+this.base.element.id)},toggle:function(){this.toggled=!this.toggled,this.refresh(),a.MLjqui.aria(this,"aria-checked",this.toggled)},unCheck:function(){this.toggled=!1,this.refresh()},check:function(){this.toggled=!0,this.refresh()},refresh:function(){var a=this,b=a.base.toThemeProperty("MLjqui-fill-state-disabled"),c=a.base.toThemeProperty("MLjqui-fill-state-normal");a.base.enableDefault||(c="");var d=a.base.toThemeProperty("MLjqui-fill-state-hover"),e=a.base.toThemeProperty("MLjqui-fill-state-pressed"),f=a.base.toThemeProperty("MLjqui-fill-state-pressed"),g="";return a.base.host[0].disabled=a.base.disabled,a.base.disabled?(g=c+" "+b,void a.base.host.addClass(g)):(g=a.base.isMouseOver&&!a.isTouchDevice?a.base.isPressed||a.toggled?f:d:a.base.isPressed||a.toggled?e:c,"default"!==a.base.template&&""!==a.base.template&&(g+=" MLjqui-"+a.base.template,""!=a.base.theme&&(g+=" MLjqui-"+a.template+"-"+a.base.theme)),a.base.host.hasClass(b)&&b!=g&&a.base.host.removeClass(b),a.base.host.hasClass(c)&&c!=g&&a.base.host.removeClass(c),a.base.host.hasClass(d)&&d!=g&&a.base.host.removeClass(d),a.base.host.hasClass(e)&&e!=g&&a.base.host.removeClass(e),a.base.host.hasClass(f)&&f!=g&&a.base.host.removeClass(f),void(a.base.host.hasClass(g)||a.base.host.addClass(g)))}})}(MLjquiBaseFramework),function(a){a.MLjqui.MLjquiWidget("MLjquiScrollBar","",{}),a.extend(a.MLjqui._MLjquiScrollBar.prototype,{defineInstance:function(){var b={height:null,width:null,vertical:!1,min:0,max:1e3,value:0,step:10,largestep:50,thumbMinSize:10,thumbSize:0,thumbStep:"auto",roundedCorners:"all",showButtons:!0,disabled:!1,touchMode:"auto",touchModeStyle:"auto",thumbTouchSize:0,_triggervaluechanged:!0,rtl:!1,areaDownCapture:!1,areaUpCapture:!1,_initialLayout:!1,offset:0,reference:0,velocity:0,frame:0,timestamp:0,ticker:null,amplitude:0,target:0};return a.extend(!0,this,b),b},createInstance:function(a){this.render()},render:function(){this._mouseup=new Date;var b=this,c="
          ";if(a.MLjqui.utilities&&"hidden"==a.MLjqui.utilities.scrollBarButtonsVisibility&&(this.showButtons=!1),b.WinJS?MSApp.execUnsafeLocalFunction(function(){b.host.html(c)}):this.element.innerHTML=c,void 0!=this.width&&parseInt(this.width)>0&&this.host.width(parseInt(this.width)),void 0!=this.height&&parseInt(this.height)>0&&this.host.height(parseInt(this.height)),this.isPercentage=!1,null!=this.width&&-1!=this.width.toString().indexOf("%")&&(this.host.width(this.width),this.isPercentage=!0),null!=this.height&&-1!=this.height.toString().indexOf("%")&&(this.host.height(this.height),this.isPercentage=!0),this.isPercentage){var d=this;a.MLjqui.utilities.resize(this.host,function(){d._arrange()},!1)}this.thumbCapture=!1,this.scrollOuterWrap=a(this.element.firstChild),this.scrollWrap=a(this.scrollOuterWrap[0].firstChild),this.btnUp=a(this.scrollWrap[0].firstChild),this.areaUp=a(this.btnUp[0].nextSibling),this.btnThumb=a(this.areaUp[0].nextSibling),this.arrowUp=a(this.btnUp[0].firstChild),this.areaDown=a(this.btnThumb[0].nextSibling),this.btnDown=a(this.areaDown[0].nextSibling),this.arrowDown=a(this.btnDown[0].firstChild);var e=this.element.id;if(this.btnUp[0].id="MLjquiScrollBtnUp"+e,this.btnDown[0].id="MLjquiScrollBtnDown"+e,this.btnThumb[0].id="MLjquiScrollThumb"+e,this.areaUp[0].id="MLjquiScrollAreaUp"+e,this.areaDown[0].id="MLjquiScrollAreaDown"+e,this.scrollWrap[0].id="MLjquiScrollWrap"+e,this.scrollOuterWrap[0].id="MLjquiScrollOuterWrap"+e,!this.host.MLjquiRepeatButton)throw new Error("MLjquiScrollBar: Missing reference to MLjquibuttons.js.");this.btnUp.MLjquiRepeatButton({_ariaDisabled:!0,overrideTheme:!0,disabled:this.disabled}),this.btnDown.MLjquiRepeatButton({_ariaDisabled:!0,overrideTheme:!0,disabled:this.disabled}),this.btnDownInstance=a.data(this.btnDown[0],"MLjquiRepeatButton").instance,this.btnUpInstance=a.data(this.btnUp[0],"MLjquiRepeatButton").instance,this.areaUp.MLjquiRepeatButton({_scrollAreaButton:!0,_ariaDisabled:!0,overrideTheme:!0}),this.areaDown.MLjquiRepeatButton({_scrollAreaButton:!0,_ariaDisabled:!0,overrideTheme:!0}),this.btnThumb.MLjquiButton({_ariaDisabled:!0,overrideTheme:!0,disabled:this.disabled}),this.propertyChangeMap.value=function(a,b,c,d){isNaN(d)||c!=d&&a.setPosition(parseFloat(d),!0)},this.propertyChangeMap.width=function(a,b,c,d){void 0!=a.width&&parseInt(a.width)>0&&(a.host.width(parseInt(a.width)),a._arrange())},this.propertyChangeMap.height=function(a,b,c,d){void 0!=a.height&&parseInt(a.height)>0&&(a.host.height(parseInt(a.height)),a._arrange())},this.propertyChangeMap.theme=function(a,b,c,d){a.setTheme()},this.propertyChangeMap.max=function(a,b,c,d){isNaN(d)||c!=d&&(a.max=parseInt(d),a.min>a.max&&(a.max=a.min+1),a._arrange(),a.setPosition(a.value))},this.propertyChangeMap.min=function(a,b,c,d){isNaN(d)||c!=d&&(a.min=parseInt(d),a.min>a.max&&(a.max=a.min+1),a._arrange(),a.setPosition(a.value))},this.propertyChangeMap.disabled=function(a,b,c,d){c!=d&&(d?a.host.addClass(a.toThemeProperty("MLjqui-fill-state-disabled")):a.host.removeClass(a.toThemeProperty("MLjqui-fill-state-disabled")),a.btnUp.MLjquiRepeatButton("disabled",a.disabled),a.btnDown.MLjquiRepeatButton("disabled",a.disabled),a.btnThumb.MLjquiButton("disabled",a.disabled))},this.propertyChangeMap.touchMode=function(a,b,c,d){c!=d&&(a._updateTouchBehavior(),d===!0?(a.showButtons=!1,a.refresh()):d===!1&&(a.showButtons=!0,a.refresh()))},this.propertyChangeMap.rtl=function(a,b,c,d){c!=d&&a.refresh()},this.buttonUpCapture=!1,this.buttonDownCapture=!1,this._updateTouchBehavior(),this.setPosition(this.value),this._addHandlers(),this.setTheme()},resize:function(a,b){this.width=a,this.height=b,this._arrange()},_updateTouchBehavior:function(){if(this.isTouchDevice=a.MLjqui.mobile.isTouchDevice(),1==this.touchMode){if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9)return void this.setTheme();this.isTouchDevice=!0,a.MLjqui.mobile.setMobileSimulator(this.btnThumb[0]),this._removeHandlers(),this._addHandlers(),this.setTheme()}else 0==this.touchMode&&(this.isTouchDevice=!1)},_addHandlers:function(){var b=this,c=!1;try{("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)&&(c=!0,this._touchSupport=!0)}catch(d){}if((b.isTouchDevice||c)&&(this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchend"),function(a){var c=b.vertical?b.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):b.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"),d=b.toThemeProperty("MLjqui-fill-state-pressed");return b.btnThumb.removeClass(c),b.btnThumb.removeClass(d),b.disabled||b.handlemouseup(b,a),!1}),this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchstart"),function(a){if(!b.disabled){if(1==b.touchMode)a.clientX=a.originalEvent.clientX,a.clientY=a.originalEvent.clientY;else{var c=a;c.originalEvent.touches&&c.originalEvent.touches.length?(a.clientX=c.originalEvent.touches[0].clientX,a.clientY=c.originalEvent.touches[0].clientY):(a.clientX=a.originalEvent.clientX,a.clientY=a.originalEvent.clientY)}b.handlemousedown(a),a.preventDefault&&a.preventDefault()}}),a.MLjqui.mobile.touchScroll(this.element,b.max,function(a,c,d,e,f){if("visible"==b.host.css("visibility")){if(1==b.touchMode)f.clientX=f.originalEvent.clientX,f.clientY=f.originalEvent.clientY;else{var g=f;g.originalEvent.touches&&g.originalEvent.touches.length?(f.clientX=g.originalEvent.touches[0].clientX,f.clientY=g.originalEvent.touches[0].clientY):(f.clientX=f.originalEvent.clientX,f.clientY=f.originalEvent.clientY)}var h=b.vertical?b.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):b.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");b.btnThumb.addClass(h),b.btnThumb.addClass(b.toThemeProperty("MLjqui-fill-state-pressed")),b.thumbCapture=!0,b.handlemousemove(f)}},b.element.id,b.host,b.host)),!this.isTouchDevice){try{if((""!=document.referrer||window.frameElement)&&null!=window.top&&window.top!=window.self){var e=null;if(window.parent&&document.referrer&&(e=document.referrer),e&&-1!=e.indexOf(document.location.host)){var f=function(a){b.disabled||b.handlemouseup(b,a)};window.top.document.addEventListener?window.top.document.addEventListener("mouseup",f,!1):window.top.document.attachEvent&&window.top.document.attachEvent("onmouseup",f)}}}catch(g){}var h="click mouseup mousedown";this.addHandler(this.btnDown,h,function(a){var c=b.step;switch(Math.abs(b.max-b.min)<=c&&(c=1),b.rtl&&!b.vertical&&(c=-b.step),a.type){case"click":b.buttonDownCapture&&!b.isTouchDevice?b.disabled||b.setPosition(b.value+c):!b.disabled&&b.isTouchDevice&&b.setPosition(b.value+c);break;case"mouseup":if(!b.btnDownInstance.base.disabled&&b.buttonDownCapture)return b.buttonDownCapture=!1,b.btnDown.removeClass(b.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),b.btnDown.removeClass(b.toThemeProperty("MLjqui-fill-state-pressed")),b._removeArrowClasses("pressed","down"),b.handlemouseup(b,a),b.setPosition(b.value+c),!1;break;case"mousedown":if(!b.btnDownInstance.base.disabled)return b.buttonDownCapture=!0,b.btnDown.addClass(b.toThemeProperty("MLjqui-fill-state-pressed")),b.btnDown.addClass(b.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),b._addArrowClasses("pressed","down"),!1}}),this.addHandler(this.btnUp,h,function(a){var c=b.step;switch(Math.abs(b.max-b.min)<=c&&(c=1),b.rtl&&!b.vertical&&(c=-b.step),a.type){case"click":b.buttonUpCapture&&!b.isTouchDevice?b.disabled||b.setPosition(b.value-c):!b.disabled&&b.isTouchDevice&&b.setPosition(b.value-c);break;case"mouseup":if(!b.btnUpInstance.base.disabled&&b.buttonUpCapture)return b.buttonUpCapture=!1,b.btnUp.removeClass(b.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),b.btnUp.removeClass(b.toThemeProperty("MLjqui-fill-state-pressed")),b._removeArrowClasses("pressed","up"),b.handlemouseup(b,a),b.setPosition(b.value-c),!1;break;case"mousedown":if(!b.btnUpInstance.base.disabled)return b.buttonUpCapture=!0,b.btnUp.addClass(b.toThemeProperty("MLjqui-fill-state-pressed")),b.btnUp.addClass(b.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),b._addArrowClasses("pressed","up"),!1}})}var i="click";if(this.isTouchDevice&&(i=a.MLjqui.mobile.getTouchEventName("touchend")),this.addHandler(this.areaUp,i,function(a){if(!b.disabled){var c=b.largestep;return b.rtl&&!b.vertical&&(c=-b.largestep),b.setPosition(b.value-c),!1}}),this.addHandler(this.areaDown,i,function(a){if(!b.disabled){var c=b.largestep;return b.rtl&&!b.vertical&&(c=-b.largestep),b.setPosition(b.value+c),!1}}),this.addHandler(this.areaUp,"mousedown",function(a){return b.disabled?void 0:(b.areaUpCapture=!0,!1)}),this.addHandler(this.areaDown,"mousedown",function(a){return b.disabled?void 0:(b.areaDownCapture=!0,!1)}),this.addHandler(this.btnThumb,"mousedown dragstart",function(a){return"dragstart"===a.type?!1:(b.disabled||b.handlemousedown(a),void(a.preventDefault&&a.preventDefault()))}),this.addHandler(a(document),"mouseup."+this.element.id,function(a){b.disabled||b.handlemouseup(b,a)}),!this.isTouchDevice&&(this.mousemoveFunc=function(a){b.disabled||b.handlemousemove(a)},this.addHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc),this.addHandler(a(document),"mouseleave."+this.element.id,function(a){b.disabled||b.handlemouseleave(a)}),this.addHandler(a(document),"mouseenter."+this.element.id,function(a){b.disabled||b.handlemouseenter(a)}),!b.disabled)){this.addHandler(this.btnUp,"mouseenter mouseleave",function(a){"mouseenter"===a.type?b.disabled||b.btnUpInstance.base.disabled||1==b.touchMode||(b.btnUp.addClass(b.toThemeProperty("MLjqui-scrollbar-button-state-hover")),b.btnUp.addClass(b.toThemeProperty("MLjqui-fill-state-hover")),b._addArrowClasses("hover","up")):b.disabled||b.btnUpInstance.base.disabled||1==b.touchMode||(b.btnUp.removeClass(b.toThemeProperty("MLjqui-scrollbar-button-state-hover")),b.btnUp.removeClass(b.toThemeProperty("MLjqui-fill-state-hover")),b._removeArrowClasses("hover","up"))});var j=b.toThemeProperty("MLjqui-scrollbar-thumb-state-hover");b.vertical||(j=b.toThemeProperty("MLjqui-scrollbar-thumb-state-hover-horizontal")),this.addHandler(this.btnThumb,"mouseenter mouseleave",function(a){"mouseenter"===a.type?b.disabled||1==b.touchMode||(b.btnThumb.addClass(j),b.btnThumb.addClass(b.toThemeProperty("MLjqui-fill-state-hover"))):b.disabled||1==b.touchMode||(b.btnThumb.removeClass(j),b.btnThumb.removeClass(b.toThemeProperty("MLjqui-fill-state-hover")))}),this.addHandler(this.btnDown,"mouseenter mouseleave",function(a){"mouseenter"===a.type?b.disabled||b.btnDownInstance.base.disabled||1==b.touchMode||(b.btnDown.addClass(b.toThemeProperty("MLjqui-scrollbar-button-state-hover")),b.btnDown.addClass(b.toThemeProperty("MLjqui-fill-state-hover")),b._addArrowClasses("hover","down")):b.disabled||b.btnDownInstance.base.disabled||1==b.touchMode||(b.btnDown.removeClass(b.toThemeProperty("MLjqui-scrollbar-button-state-hover")),b.btnDown.removeClass(b.toThemeProperty("MLjqui-fill-state-hover")),b._removeArrowClasses("hover","down"))})}},destroy:function(){var b=this.btnUp,c=this.btnDown,d=this.btnThumb,e=(this.scrollWrap,this.areaUp),f=this.areaDown;this.arrowUp.remove(),delete this.arrowUp,this.arrowDown.remove(),delete this.arrowDown,f.removeClass(),e.removeClass(),c.removeClass(),b.removeClass(),d.removeClass(),b.MLjquiRepeatButton("destroy"),c.MLjquiRepeatButton("destroy"),e.MLjquiRepeatButton("destroy"),f.MLjquiRepeatButton("destroy"),d.MLjquiButton("destroy");var g=a.data(this.element,"MLjquiScrollBar");this._removeHandlers(),this.btnUp=null,this.btnDown=null,this.scrollWrap=null,this.areaUp=null,this.areaDown=null,this.scrollOuterWrap=null,delete this.mousemoveFunc,delete this.btnDownInstance,delete this.btnUpInstance,delete this.scrollOuterWrap,delete this.scrollWrap,delete this.btnDown,delete this.areaDown,delete this.areaUp,delete this.btnDown,delete this.btnUp,delete this.btnThumb,delete this.propertyChangeMap.value,delete this.propertyChangeMap.min,delete this.propertyChangeMap.max,delete this.propertyChangeMap.touchMode,delete this.propertyChangeMap.disabled,delete this.propertyChangeMap.theme,delete this.propertyChangeMap,g&&delete g.instance,this.host.removeData(),this.host.remove(),delete this.host,delete this.set,delete this.get,delete this.call,delete this.element},_removeHandlers:function(){this.removeHandler(this.btnUp,"mouseenter"),this.removeHandler(this.btnDown,"mouseenter"),this.removeHandler(this.btnThumb,"mouseenter"),this.removeHandler(this.btnUp,"mouseleave"),this.removeHandler(this.btnDown,"mouseleave"),this.removeHandler(this.btnThumb,"mouseleave"),this.removeHandler(this.btnUp,"click"),this.removeHandler(this.btnDown,"click"),this.removeHandler(this.btnDown,"mouseup"),this.removeHandler(this.btnUp,"mouseup"),this.removeHandler(this.btnDown,"mousedown"),this.removeHandler(this.btnUp,"mousedown"),this.removeHandler(this.areaUp,"mousedown"),this.removeHandler(this.areaDown,"mousedown"),this.removeHandler(this.areaUp,"click"),this.removeHandler(this.areaDown,"click"),this.removeHandler(this.btnThumb,"mousedown"),this.removeHandler(this.btnThumb,"dragstart"),this.removeHandler(a(document),"mouseup."+this.element.id),this.mousemoveFunc?this.removeHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc):this.removeHandler(a(document),"mousemove."+this.element.id),this.removeHandler(a(document),"mouseleave."+this.element.id),this.removeHandler(a(document),"mouseenter."+this.element.id)},_addArrowClasses:function(a,b){"pressed"==a&&(a="selected"),""!=a&&(a="-"+a),this.vertical?("up"!=b&&void 0!=b||this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-up"+a)),"down"!=b&&void 0!=b||this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"+a))):("up"!=b&&void 0!=b||this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"+a)),"down"!=b&&void 0!=b||this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"+a)))},_removeArrowClasses:function(a,b){"pressed"==a&&(a="selected"),""!=a&&(a="-"+a),this.vertical?("up"!=b&&void 0!=b||this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-up"+a)),"down"!=b&&void 0!=b||this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"+a))):("up"!=b&&void 0!=b||this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"+a)),"down"!=b&&void 0!=b||this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"+a)))},setTheme:function(){var b=this.btnUp,c=this.btnDown,d=this.btnThumb,e=this.scrollWrap,f=(this.areaUp,this.areaDown,this.arrowUp),g=this.arrowDown;this.scrollWrap[0].className=this.toThemeProperty("MLjqui-reset"),this.scrollOuterWrap[0].className=this.toThemeProperty("MLjqui-reset");var h=this.toThemeProperty("MLjqui-reset");this.areaDown[0].className=h,this.areaUp[0].className=h;var i=this.toThemeProperty("MLjqui-scrollbar")+" "+this.toThemeProperty("MLjqui-widget")+" "+this.toThemeProperty("MLjqui-widget-content");this.host.addClass(i),this.isTouchDevice&&this.host.addClass(this.toThemeProperty("MLjqui-scrollbar-mobile")),c[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal"),b[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");var j="";if(this.vertical?(f[0].className=h+" "+this.toThemeProperty("MLjqui-icon-arrow-up"),g[0].className=h+" "+this.toThemeProperty("MLjqui-icon-arrow-down"),j=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal")):(f[0].className=h+" "+this.toThemeProperty("MLjqui-icon-arrow-left"),g[0].className=h+" "+this.toThemeProperty("MLjqui-icon-arrow-right"),j=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-horizontal")),j+=" "+this.toThemeProperty("MLjqui-fill-state-normal"),d[0].className=j,this.disabled?(e.addClass(this.toThemeProperty("MLjqui-fill-state-disabled")),e.removeClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"))):(e.addClass(this.toThemeProperty("MLjqui-scrollbar-state-normal")),e.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"))),"all"==this.roundedCorners)if(this.host.addClass(this.toThemeProperty("MLjqui-rc-all")),this.vertical){var k=a.MLjqui.cssroundedcorners("top");k=this.toThemeProperty(k),b.addClass(k);var l=a.MLjqui.cssroundedcorners("bottom");l=this.toThemeProperty(l),c.addClass(l)}else{var m=a.MLjqui.cssroundedcorners("left");m=this.toThemeProperty(m),b.addClass(m);var n=a.MLjqui.cssroundedcorners("right");n=this.toThemeProperty(n),c.addClass(n)}else{var o=a.MLjqui.cssroundedcorners(this.roundedCorners);o=this.toThemeProperty(o),elBtnUp.addClass(o),elBtnDown.addClass(o)}var o=a.MLjqui.cssroundedcorners(this.roundedCorners);o=this.toThemeProperty(o),d.hasClass(o)||d.addClass(o),this.isTouchDevice&&0!=this.touchModeStyle&&(this.showButtons=!1,d.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-touch")))},isScrolling:function(){return void 0==this.thumbCapture||void 0==this.buttonDownCapture||void 0==this.buttonUpCapture||void 0==this.areaDownCapture||void 0==this.areaUpCapture?!1:this.thumbCapture||this.buttonDownCapture||this.buttonUpCapture||this.areaDownCapture||this.areaUpCapture},track:function(){var a,b,c,d;a=Date.now(),b=a-this.timestamp,this.timestamp=a,c=this.offset-this.frame,this.frame=this.offset,d=1e3*c/(1+b),this.velocity=.2*d+.2*this.velocity},handlemousedown:function(b){function c(a){e.reference=parseInt(e.btnThumb[0].style.top),e.offset=parseInt(e.btnThumb[0].style.top),e.vertical||(e.reference=parseInt(e.btnThumb[0].style.left),e.offset=parseInt(e.btnThumb[0].style.left)),e.velocity=e.amplitude=0,e.frame=e.offset,e.timestamp=Date.now(),clearInterval(e.ticker),e.ticker=setInterval(function(){e.track()},100)}if(void 0==this.thumbCapture||0==this.thumbCapture){this.thumbCapture=!0;var d=this.btnThumb;null!=d&&(d.addClass(this.toThemeProperty("MLjqui-fill-state-pressed")),this.vertical?d.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed")):d.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal")))}var e=this;this.thumbCapture&&a.MLjqui.scrollAnimation&&c(b),this.dragStartX=b.clientX,this.dragStartY=b.clientY,this.dragStartValue=this.value},toggleHover:function(a,b){},refresh:function(){this._arrange()},_setElementPosition:function(a,b,c){isNaN(b)||parseInt(a[0].style.left)!=parseInt(b)&&(a[0].style.left=b+"px"),isNaN(c)||parseInt(a[0].style.top)!=parseInt(c)&&(a[0].style.top=c+"px")},_setElementTopPosition:function(a,b){isNaN(b)||(a[0].style.top=b+"px")},_setElementLeftPosition:function(a,b){isNaN(b)||(a[0].style.left=b+"px")},handlemouseleave:function(a){var b=this.btnUp,c=this.btnDown;if((this.buttonDownCapture||this.buttonUpCapture)&&(b.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),c.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),this._removeArrowClasses("pressed")),1==this.thumbCapture){var d=this.btnThumb,e=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");d.removeClass(e),d.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"))}},handlemouseenter:function(a){var b=this.btnUp,c=this.btnDown;if(this.buttonUpCapture&&(b.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),b.addClass(this.toThemeProperty("MLjqui-fill-state-pressed")),this._addArrowClasses("pressed","up")),this.buttonDownCapture&&(c.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed")),this._addArrowClasses("pressed","down")),1==this.thumbCapture){var d=this.btnThumb;this.vertical?d.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed")):d.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal")),d.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"))}},handlemousemove:function(a){var b=this.btnUp,c=this.btnDown,d=0;if(null!=c&&null!=b){if(null!=b&&null!=c&&void 0!=this.buttonDownCapture&&void 0!=this.buttonUpCapture&&(this.buttonDownCapture&&a.which==d?(c.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")),this._removeArrowClasses("pressed","down"),this.buttonDownCapture=!1):this.buttonUpCapture&&a.which==d&&(b.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),b.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")),this._removeArrowClasses("pressed","up"),this.buttonUpCapture=!1)),1!=this.thumbCapture)return!1;var e=this.btnThumb;if(a.which==d&&!this.isTouchDevice&&!this._touchSupport){this.thumbCapture=!1,this._arrange();var f=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");return e.removeClass(f),e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")),!0}void 0!=a.preventDefault&&a.preventDefault(),null!=a.originalEvent&&(a.originalEvent.mouseHandled=!0),void 0!=a.stopPropagation&&a.stopPropagation();var g=0;try{g=this.vertical?a.clientY-this.dragStartY:a.clientX-this.dragStartX;var h=this._btnAndThumbSize;this._btnAndThumbSize||(h=this.vertical?b.height()+c.height()+e.height():b.width()+c.width()+e.width());var i=(this.max-this.min)/(this.scrollBarSize-h);if("auto"!=this.thumbStep){if(g*=i,Math.abs(this.dragStartValue+g-this.value)>=parseInt(this.thumbStep)){var j=Math.round(parseInt(g)/this.thumbStep)*this.thumbStep;return this.rtl&&!this.vertical?this.setPosition(this.dragStartValue-j):this.setPosition(this.dragStartValue+j),!1}return!1}g*=i;var j=g;this.rtl&&!this.vertical&&(j=-g),this.setPosition(this.dragStartValue+j),this.offset=parseInt(e[0].style.left),this.vertical&&(this.offset=parseInt(e[0].style.top))}catch(k){alert(k)}return!1}},handlemouseup:function(b,c){function d(){var a,b;if(h.amplitude)if(a=Date.now()-h.timestamp,b=-h.amplitude*Math.exp(-a/325),b>.5||-.5>b){var c=(h.max-h.min)/(h.scrollBarSize-h._btnAndThumbSize),e=c*(h.target+b),f=e;h.rtl&&!h.vertical&&(f=-e),h.setPosition(h.dragStartValue+f),requestAnimationFrame(d)}else{var c=(h.max-h.min)/(h.scrollBarSize-h._btnAndThumbSize),e=c*(h.target+b),f=e;h.rtl&&!h.vertical&&(f=-e),h.setPosition(h.dragStartValue+f)}}var e=!1;if(this.thumbCapture){this.thumbCapture=!1;var f=this.btnThumb,g=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");if(f.removeClass(g),f.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")),e=!0,this._mouseup=new Date,a.MLjqui.scrollAnimation){var h=this;clearInterval(this.ticker),(this.velocity>25||this.velocity<-25)&&(this.amplitude=.8*this.velocity,this.target=Math.round(this.offset+this.amplitude),this.vertical?this.target-=this.reference:this.target-=this.reference,this.timestamp=Date.now(),requestAnimationFrame(d))}}if(this.areaDownCapture=this.areaUpCapture=!1,this.buttonUpCapture||this.buttonDownCapture){var i=this.btnUp,j=this.btnDown;this.buttonUpCapture=!1,this.buttonDownCapture=!1,i.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),j.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed")),i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")),j.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")),this._removeArrowClasses("pressed"),e=!0,this._mouseup=new Date}e&&(void 0!=c.preventDefault&&c.preventDefault(),null!=c.originalEvent&&(c.originalEvent.mouseHandled=!0),void 0!=c.stopPropagation&&c.stopPropagation())},setPosition:function(b,c){this.element;if(void 0!=b&&NaN!=b||(b=this.min),b>=this.max&&(b=this.max),b1?c=a/(b+a)*a:1==b?c=a-1:0==b&&(c=a),this.thumbSize>0&&(c=this.thumbSize),cd)&&(d=10),(NaN==e||10>e)&&(e=10),f+=2,this.btnSize=f;var i=this._btnAndThumbSize;if(!this._btnAndThumbSize){var i=this.vertical?2*this.btnSize+c.outerHeight():2*this.btnSize+c.outerWidth();i=Math.round(i)}var j=(g-i)/(this.max-this.min)*(this.value-this.min);if(this.rtl&&!this.vertical&&(j=(g-i)/(this.max-this.min)*(this.max-this.value-this.min)),j=Math.round(j),0>j&&(j=0),this.vertical){var k=g-j-i;0>k&&(k=0),b[0].style.height=k+"px",a[0].style.height=j+"px",this._setElementTopPosition(a,f),this._setElementTopPosition(c,f+j),this._setElementTopPosition(b,f+j+h)}else a[0].style.width=j+"px",g-j-i>=0?b[0].style.width=g-j-i+"px":b[0].style.width="0px",this._setElementLeftPosition(a,f),this._setElementLeftPosition(c,f+j),this._setElementLeftPosition(b,2+f+j+h)},_arrange:function(){var a=this;if(a._initialLayout)return void(a._initialLayout=!1);if(a.min>a.max){var b=a.min;a.min=a.max,a.max=b}if(a.min<0){var c=a.max-a.min;a.min=0,a.max=c}var d=(a.element,a.areaUp),e=a.areaDown,f=a.btnUp,g=a.btnDown,h=a.btnThumb,i=a.scrollWrap,j=parseInt(a.element.style.height),k=parseInt(a.element.style.width);if(a.isPercentage)var j=a.host.height(),k=a.host.width();isNaN(j)&&(j=0),isNaN(k)&&(k=0),a._width=k,a._height=j;var l=a.vertical?k:j;a.showButtons||(l=0),f[0].style.width=l+"px",f[0].style.height=l+"px",g[0].style.width=l+"px",g[0].style.height=l+"px",a.vertical?i[0].style.width=k+2+"px":i[0].style.height=j+2+"px",a._setElementPosition(f,0,0);var m=l+2;a.vertical?a._setElementPosition(g,0,j-m):a._setElementPosition(g,k-m,0);var n=a.vertical?j:k;a.scrollBarSize=n;var o=a._getThumbSize(n-2*m);o=Math.floor(o-2),oj)&&(j=10),(NaN==k||10>k)&&(k=10),a.btnSize=l;var q=a.vertical?2*m+(2+parseInt(h[0].style.height)):2*m+(2+parseInt(h[0].style.width));q=Math.round(q),a._btnAndThumbSize=q;var r=(n-q)/(a.max-a.min)*(a.value-a.min);if(a.rtl&&!a.vertical&&(r=(n-q)/(a.max-a.min)*(a.max-a.value-a.min)),r=Math.round(r),(isNaN(r)||0>r||r===-(1/0)||r===1/0)&&(r=0),a.vertical){var s=n-r-q;0>s&&(s=0),e[0].style.height=s+"px",e[0].style.width=k+"px",d[0].style.height=r+"px",d[0].style.width=k+"px";var t=parseInt(a.element.style.height);a.isPercentage&&(t=a.host.height()),h[0].style.visibility="inherit",(t-3*parseInt(l)<0||q>t)&&(h[0].style.visibility="hidden"),a._setElementPosition(d,0,m),a._setElementPosition(h,0,m+r),a._setElementPosition(e,0,m+r+o)}else{r>0&&(d[0].style.width=r+"px"),j>0&&(d[0].style.height=j+"px");var u=n-r-q;0>u&&(u=0),e[0].style.width=u+"px",e[0].style.height=j+"px";var v=parseInt(a.element.style.width);a.isPercentage&&(v=a.host.width()),h[0].style.visibility="inherit",(v-3*parseInt(l)<0||q>v)&&(h[0].style.visibility="hidden"),a._setElementPosition(d,m,0),a._setElementPosition(h,m+r,0),a._setElementPosition(e,m+r+o,0)}}})}(MLjquiBaseFramework),function(a){function b(b){return function(c,d){"string"!=typeof c&&(d=c,c="*");var e,f,g,h=c.toLowerCase().split(s),i=0,j=h.length;if(a.isFunction(d))for(;j>i;i++)e=h[i],g=/^\+/.test(e),g&&(e=e.substr(1)||"*"),f=b[e]=b[e]||[],f[g?"unshift":"push"](d)}}function c(a,b,d,e,f,g){f=f||b.dataTypes[0],g=g||{},g[f]=!0;for(var h,i=a[f],j=0,k=i?i.length:0,l=a===t;k>j&&(l||!h);j++)h=i[j](b,d,e),"string"==typeof h&&(!l||g[h]?h=void 0:(b.dataTypes.unshift(h),h=c(a,b,d,e,h,g)));return!l&&h||g["*"]||(h=c(a,b,d,e,"*",g)),h}function d(b,c){var d,e,f=a.MLjqui.data.ajaxSettings.flatOptions||{};for(d in c)void 0!==c[d]&&((f[d]?b:e||(e={}))[d]=c[d]);e&&a.extend(!0,b,e)}function e(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes,j=a.responseFields;for(e in j)e in c&&(b[j[e]]=c[e]);for(;"*"===i[0];)i.shift(), -void 0===d&&(d=a.mimeType||b.getResponseHeader("content-type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function f(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;if(a.dataFilter&&(b=a.dataFilter(b,a.dataType)),g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if("*"!==e){if("*"!==h&&h!==e){if(c=i[h+" "+e]||i["* "+e],!c)for(d in i)if(f=d.split(" "),f[1]===e&&(c=i[h+" "+f[0]]||i["* "+f[0]])){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function g(){try{return new window.XMLHttpRequest}catch(a){}}function h(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}}a.MLjqui.observableArray=function(b,c){if("string"==typeof b&&(b=a.parseJSON(b)),!Object.defineProperty||!function(){try{return Object.defineProperty({},"x",{}),!0}catch(a){return!1}}()){var d=Object.defineProperty;Object.defineProperty=function(a,b,c){if(d)try{return d(a,b,c)}catch(e){}if(a!==Object(a))throw TypeError("Object.defineProperty called on non-object");return Object.prototype.__defineGetter__&&"get"in c&&Object.prototype.__defineGetter__.call(a,b,c.get),Object.prototype.__defineSetter__&&"set"in c&&Object.prototype.__defineSetter__.call(a,b,c.set),"value"in c?a[b]=c.value:a[b]||(a[b]=c),a}}Array.prototype.forEach||(Array.prototype.forEach=function(a){if(void 0===this||null===this)throw TypeError();var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw TypeError();var d,e=arguments[1];for(d=0;c>d;d++)d in b&&a.call(e,b[d],d,b)}),"function"!=typeof Object.getOwnPropertyNames&&(Object.getOwnPropertyNames=function(a){if(a!==Object(a))throw TypeError("Object.getOwnPropertyNames called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c});var e,f=this,g=[];f.notifier=null,f.name="observableArray",f.observing=!0,f.changes=new Array;var c=c;return f.observe=function(){f.observing=!0,1==arguments.length&&(c=arguments[0])},f.unobserve=function(){f.observing=!1},f.toArray=function(){return g.slice(0)},f.toJSON=function(a,b){function c(a){return'"'+a.replace(m,function(a){var b=n[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'}function d(a){return 10>a?"0"+a:a}function e(a){var b;return b=isFinite(a.valueOf())?a.getUTCFullYear()+"-"+d(a.getUTCMonth()+1)+"-"+d(a.getUTCDate())+"T"+d(a.getUTCHours())+":"+d(a.getUTCMinutes())+":"+d(a.getUTCSeconds())+'Z"':"null"}function f(a){var b,c=a.length,d=[];for(b=0;c>b;b++)d.push(k(b,a)||"null");return"["+d.join(",")+"]"}function h(b){var d,e,f=[];for(d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(""!=d&&a&&-1===a.indexOf(d))continue;e=k(d,b),e&&f.push(c(d)+":"+e)}return"{"+f.join(",")+"}"}function i(a){switch(Object.prototype.toString.call(a)){case"[object Date]":return e(a);case"[object Array]":return f(a)}return h(a)}function j(a,b){switch(b){case"string":return c(a);case"number":case"float":case"integer":case"int":return isFinite(a)?a:"null";case"boolean":return a}return"null"}function k(a,b){var c=b[a],d=typeof c;return c&&"object"==typeof c&&"function"==typeof c.toJSON&&(c=c.toJSON(a),d=typeof c),/(number|float|int|integer|string|boolean)/.test(d)||!c&&"object"===d?j(c,d):i(c)}var l=g;b&&(l=b);var m=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,n={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return!a&&window.JSON&&"function"==typeof window.JSON.stringify?window.JSON.stringify(l):k("",{"":l})},f.defineIndexProperty=function(b){if(!(b in f)){var c=function(b,c,d,h){var i=b[c],j=i,k=function(){return j},l=function(b){if(i=b,j!==i){var d=j;if(j=i,"function"==typeof e){var k=g.indexOf(h),l="",m=function(b,d){Object.getOwnPropertyNames(b).forEach(function(e){var f=a.type(b[e]);"array"==f||"object"==f?m(b[e],d+"."+e):c===e&&(l=d+"."+e)})};m(h,k),e({object:f,type:"update",path:l,index:k,name:c,newValue:i,oldValue:d})}}return j=i,i};void 0!=b[c]&&"length"!=c&&(Object.defineProperty?Object.defineProperty(b,c,{get:k,set:l}):Object.prototype.__defineGetter__&&Object.prototype.__defineSetter__&&(Object.prototype.__defineGetter__.call(b,c,k),Object.prototype.__defineSetter__.call(b,c,l)))},d=function(b,e,f){var g=a.type(b);/(number|float|int|integer|string|boolean)/.test(g)||void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(g){var h=a.type(b[g]);"array"==h||"object"==h?(c(b,g,e+"."+g,f),d(b[g],e+"."+g,f)):c(b,g,e+"."+g,f)})};Object.defineProperty(f,b,{configurable:!0,enumerable:!0,get:function(){return g[b]},set:function(a){var c=g[b];f.toJSON(null,c)!=f.toJSON(null,a)&&(g[b]=a,"function"==typeof e&&e({object:f,type:"update",path:b.toString(),index:b,name:"index",newValue:a,oldValue:c}),d(a,b,a))}}),d(f[b],b,f[b])}},f.push=function(){for(var a,b=0,c=arguments.length;c>b;b++)a=g.length,g.push(arguments[b]),f.defineIndexProperty(a),"function"==typeof e&&e({object:f,type:"add",name:"length",index:a,newValue:g.length,oldValue:a});return g.length},f.pop=function(){if(~g.length){var a=g.length-1,b=g.pop();return delete f[a],"function"==typeof e&&e({object:f,type:"delete",name:"length",index:a,newValue:g.length,oldValue:a}),b}},f.unshift=function(){for(var a=g.length,b=0,c=arguments.length;c>b;b++)g.splice(b,0,arguments[b]),f.defineIndexProperty(g.length-1);return"function"==typeof e&&e({object:f,type:"add",index:0,name:"length",newValue:g.length,oldValue:a}),g.length},f.shift=function(){var a=g.length;if(~g.length){var b=g.shift();return 0===g.length&&delete f[a],"function"==typeof e&&e({object:f,type:"delete",index:a,name:"length",newValue:g.length,oldValue:a}),b}},f.slice=function(b,c,d){var e=g.slice(b,c),f=new a.MLjqui.observableArray(e,d);return f},f.splice=function(b,c,d){var h,i=[];for(b=~b?b:g.length-b,c=(null==c?g.length-b:c)||0;c--;)h=g.splice(b,1)[0],i.push(h),delete f[g.length],"function"==typeof e&&e({object:f,type:"delete",index:b,name:"length",newValue:-1,oldValue:b});for(var j=2,k=arguments.length;k>j;j++)g.splice(b,0,arguments[j]),defineIndexProperty(g.length-1),"function"==typeof e&&e({object:f,type:"add",index:b,name:"length",newValue:g.length-1,oldValue:b}),b++;var l=new a.MLjqui.observableArray(i,d);return l},Object.defineProperty(f,"length",{configurable:!1,enumerable:!0,get:function(){return g.length},set:function(a){var b=Number(a);if(!(b%1===0&&b>=0))throw new RangeError("Invalid array length");return bg.length&&f.push.apply(f,new Array(b-g.length)),a}}),a.MLjqui.observableArray.prototype.fromArray=function(b,c){var d=new a.MLjqui.observableArray(b,c);return d},a.MLjqui.observableArray.prototype.clone=function(){var b=new a.MLjqui.observableArray(g,c);return b.observing=f.observing,b.changes=f.changes,b.notifier=f.notifier,b},f.remove=function(a){if(0>a||a>=f.length)throw new Error("Invalid index : "+a);if(f.hasOwnProperty(a)){var b=f[a];return f[a]=void 0,g[a]=void 0,"function"==typeof e&&e({object:f,type:"delete",index:a,name:"index",newValue:void 0,oldValue:b}),!0}return!1},f.concat=function(b,c){var d=g.concat(b),e=new a.MLjqui.observableArray(d,c);return e},Object.getOwnPropertyNames(Array.prototype).forEach(function(a){if(!(a in f)){var b=function(){var b=f.observing;f.observing=!1;var c=g[a],d=c.apply(g,arguments);return f.observing=b,d};Object.defineProperty(f,a,{configurable:!1,enumerable:!0,writeable:!1,value:b})}}),f.set=function(b,c){if("string"==a.type(b)&&b.split(".").length>1){for(var d=b.split("."),e=f,g=0;g=f.length)throw new Error("Invalid Index: "+b);g=f.length?f.push(c):f[b]=c,!0},f.get=function(a){return f[a]},b instanceof Array&&f.push.apply(f,b),e=function(){f.observing&&(arguments&&arguments[0]&&f.changes.push(arguments[0]),c&&c.apply(f,arguments),f.notifier&&f.notifier.apply(f,arguments))},f},a.MLjqui.formatDate=function(b,c,d){var e=a.MLjqui.dataFormat.formatdate(b,c,d);return e},a.MLjqui.formatNumber=function(b,c,d){var e=a.MLjqui.dataFormat.formatnumber(b,c,d);return e},a.MLjqui.dataAdapter=function(b,c){if(void 0!=b&&(void 0!==b.dataFields&&(b.datafields=b.dataFields),void 0!==b.dataType&&(b.datatype=b.dataType),void 0!==b.localData&&(b.localdata=b.localData),void 0!==b.sortColumn&&(b.sortcolumn=b.sortColumn),void 0!==b.sortDirection&&(b.sortdirection=b.sortDirection),void 0!==b.sortOrder&&(b.sortdirection=b.sortOrder),void 0!==b.formatData&&(b.formatdata=b.formatData),void 0!==b.processData&&(b.processdata=b.processData),void 0!==b.pageSize&&(b.pagesize=b.pageSize),void 0!==b.pageNum&&(b.pagenum=b.pageNum),void 0!==b.updateRow&&(b.updaterow=b.updateRow),void 0!==b.addRow&&(b.addrow=b.addRow),void 0!==b.deleteRow&&(b.deleterow=b.deleteRow),void 0!==b.contentType&&(b.contenttype=b.contentType),void 0!=b.totalRecords&&(b.totalrecords=b.totalRecords),void 0!=b.loadError&&(b.loadError=b.loadError),void 0!=b.sortComparer&&(b.sortcomparer=b.sortComparer)),this._source=b,this._options=c||{},void 0!=b.beforeLoadComplete&&(this._options.beforeLoadComplete=this._source.beforeLoadComplete),void 0!=b.downloadComplete&&(this._options.downloadComplete=this._source.downloadComplete),void 0!=b.loadComplete&&(this._options.loadComplete=this._source.loadComplete),void 0!=b.autoBind&&(this._options.downloadComplete=this._source.autoBind),void 0!=b.formatData&&(this._options.formatData=this._source.formatData),void 0!=b.loadError&&(this._options.loadError=this._source.loadError),void 0!=b.beforeSend&&(this._options.beforeSend=this._source.beforeSend),void 0!=b.contentType&&(this._options.contentType=this._source.contentType),void 0!=b.async&&(this._options.async=this._source.async),void 0!=b.loadServerData&&(this._options.loadServerData=this._source.loadServerData),void 0!=b.uniqueDataFields&&(this._options.uniqueDataFields=this._source.uniqueDataFields),this.records=new Array,this._downloadComplete=new Array,this._bindingUpdate=new Array,void 0!=b&&null!=b.localdata&&"function"==typeof b.localdata){var d=b.localdata();if(null!=d){b._localdata=b.localdata;var e=this;b._localdata.subscribe&&(e._oldlocaldata=[],b._localdata.subscribe(function(b){var c=function(b){return a.isArray(b)?a.makeArray(c(a(b))):a.extend(!0,{},b)};0!=e.suspendKO&&void 0!=e.suspendKO&&0!=e._oldlocaldata.length||(e._oldlocaldata=c(b))},b._localdata,"beforeChange"),b._localdata.subscribe(function(a){if(0==e.suspendKO||void 0==e.suspendKO){var c="";e._oldrecords=e.records,0==e._oldlocaldata.length&&(b.localdata=b._localdata()),0==e._oldlocaldata.length?c="change":a&&(e._oldlocaldata.length==a.length&&(c="update"),e._oldlocaldata.length>a.length&&(c="remove"),e._oldlocaldata.length0?(this.callBindingUpdate("update"),this._changedrecords=[]):this.dataBind(null,""))},formatDate:function(b,c,d){var e=a.MLjqui.dataFormat.formatdate(b,c,d);return e},formatNumber:function(b,c,d){var e=a.MLjqui.dataFormat.formatnumber(b,c,d);return e},dataBind:function(b,c){if(1!=this.isUpdating){var d=this._source;if(d){d.generatedfields&&(d.datafields=null,d.generatedfields=null),a.MLjqui.dataFormat.datescache=new Array,null!=d.dataFields&&(d.datafields=d.dataFields),void 0==d.recordstartindex&&(d.recordstartindex=0),void 0==d.recordendindex&&(d.recordendindex=0),void 0==d.loadallrecords&&(d.loadallrecords=!0),void 0==d.root&&(d.root=""),void 0==d.record&&(d.record=""),void 0!=d.sort&&(this.sort=d.sort),void 0!=d.filter?this.filter=d.filter:this.filter=null,void 0!=d.sortcolumn&&(this.sortcolumn=d.sortcolumn),void 0!=d.sortdirection&&(this.sortdirection=d.sortdirection),void 0!=d.sortcomparer&&(this.sortcomparer=d.sortcomparer),this.records=new Array;var e=this._options||{};if(this.virtualmode=void 0!=e.virtualmode?e.virtualmode:!1,this.totalrecords=void 0!=e.totalrecords?e.totalrecords:0,this.pageable=void 0!=e.pageable?e.pageable:!1,this.pagesize=void 0!=e.pagesize?e.pagesize:0,this.pagenum=void 0!=e.pagenum?e.pagenum:0,this.cachedrecords=void 0!=e.cachedrecords?e.cachedrecords:new Array,this.originaldata=new Array,this.recordids=new Array,this.updaterow=void 0!=e.updaterow?e.updaterow:null,this.addrow=void 0!=e.addrow?e.addrow:null,this.deleterow=void 0!=e.deleterow?e.deleterow:null,this.cache=void 0!=e.cache?e.cache:!1,this.unboundmode=!1,void 0!=d.formatdata&&(e.formatData=d.formatdata),void 0!=d.data&&(void 0==e.data&&(e.data={}),a.extend(e.data,d.data)),void 0!=d.mapchar?this.mapChar=d.mapchar?d.mapchar:">":this.mapChar=e.mapChar?e.mapChar:">",(e.unboundmode||d.unboundmode)&&(this.unboundmode=e.unboundmode||d.unboundmode),void 0!=d.cache&&(this.cache=d.cache),this.koSubscriptions)for(var f=0;f0)for(var j=0;jn;n++)m[d.datafields[n].name]="";m.uid=j,d.localdata[d.localdata.length]=m}}void 0==this.totalrecords&&(this.totalrecords=0);var l=d.datafields?d.datafields.length:0,o=function(b,c){for(var e={},f=0;c>f;f++){var h=d.datafields?d.datafields[f]:{},i="";if(void 0!=h&&null!=h){if(h.map){if(a.isFunction(h.map))i=h.map(b);else{var j=h.map.split(g.mapChar);if(j.length>0){for(var k=b,l=0;l0){for(var n=!1,o=!1,p=0;l>p;p++){var q=d.datafields[p];if(void 0!=q&&q.name==c){n=!0,j=q.map,k=q.type,m=q.name;break}if(void 0!=q&&q.map&&q.map.indexOf(c)>=0){n=!0,j=q.map,k=q.type,m=q.name,o=!0;var r=i[c];if(null!=j){var s=j.split(g.mapChar);if(s.length>0){for(var t=i,u=0;u0){for(var t=i,u=0;uj;j++){for(var m=g.records[j],q=!1,r=0;rj;j++){var s=g._oldrecords[j];g.records[j]?g.records[j]._koindex!=s._koindex&&g._changedrecords.push({index:j,oldrecord:s,record:null}):g._changedrecords.push({index:j,oldrecord:s,record:null})}}else if(a.isArray(d.localdata))if(0==l){var t=0,u=new Array;a.each(d.localdata,function(b,c){var e=new Object(this);if("string"==typeof c)return g.records=d.localdata,!1;var f=g.getid(d.id,e,b);if("object"==typeof f&&(f=b),e.uid=f,0==b){for(var h in this){t++;var i=a.type(this[h]);u.push({name:h,type:i})}l=t,d.datafields=u,d.generatedfields=u}if(l>0){var j=o(e,l);j.uid=f,g.records[g.records.length]=j}else g.records[g.records.length]=e})}else a.each(d.localdata,function(a){var b=this,c=o(b,l),e=g.getid(d.id,c,a);"object"==typeof e&&(e=a);var b=new Object(c);b.uid=e,g.records[g.records.length]=b});else{this.records=new Array;var t=0,u=new Array;a.each(d.localdata,function(b){var c=g.getid(d.id,this,b);if(0==l&&!("string"==typeof this||this instanceof String)){for(var e in this){t++;var f=a.type(this[e]);u.push({name:e,type:f})}l=t,d.datafields=u,d.generatedfields=u}if(l>0){var h=this,i=o(h,l);i.uid=c,g.records[g.records.length]=i}else this.uid=c,g.records[g.records.length]=this})}if(this.originaldata=d.localdata,this.cachedrecords=this.records,this.addForeignValues(d),e.uniqueDataFields){var v=this.getUniqueRecords(this.records,e.uniqueDataFields);this.records=v,this.cachedrecords=v}if(e.beforeLoadComplete){var w=e.beforeLoadComplete(g.records,this.originaldata);void 0!=w&&(g.records=w,g.cachedrecords=w)}if(e.autoSort&&e.autoSortField){var x=Object.prototype.toString;Object.prototype.toString="function"==typeof field?field:function(){return this[e.autoSortField]},g.records.sort(function(b,c){if(void 0===b&&(b=null),void 0===c&&(c=null),null===b&&null===c)return 0;if(null===b&&null!==c)return 1;if(null!==b&&null===c)return-1;if(b=b.toString(),c=c.toString(),null===b&&null===c)return 0;if(null===b&&null!==c)return 1;if(null!==b&&null===c)return-1;if(a.MLjqui.dataFormat.isNumber(b)&&a.MLjqui.dataFormat.isNumber(c))return c>b?-1:b>c?1:0;if(a.MLjqui.dataFormat.isDate(b)&&a.MLjqui.dataFormat.isDate(c))return c>b?-1:b>c?1:0;a.MLjqui.dataFormat.isNumber(b)||a.MLjqui.dataFormat.isNumber(c)||(b=String(b).toLowerCase(),c=String(c).toLowerCase());try{if(c>b)return-1;if(b>c)return 1}catch(d){}return 0}),Object.prototype.toString=x}g.loadedData=d.localdata,g.buildHierarchy(),a.isFunction(e.loadComplete)&&e.loadComplete(d.localdata,g.records);break;case"json":case"jsonp":case"xml":case"xhtml":case"script":case"text":case"ics":if(null!=d.localdata&&!d.url){if(a.isFunction(d.beforeprocessing)&&d.beforeprocessing(d.localdata),"xml"===d.datatype?g.loadxml(d.localdata,d.localdata,d):"text"===h?g.loadtext(d.localdata,d):"ics"===h?g.loadics(d.localdata,d):g.loadjson(d.localdata,d.localdata,d),g.addForeignValues(d),e.uniqueDataFields){var v=g.getUniqueRecords(g.records,e.uniqueDataFields);g.records=v,g.cachedrecords=v}if(e.beforeLoadComplete){var w=e.beforeLoadComplete(g.records,this.originaldata);void 0!=w&&(g.records=w,g.cachedrecords=w)}return g.loadedData=d.localdata,g.buildHierarchy.call(g),a.isFunction(e.loadComplete)&&e.loadComplete(d.localdata,g.records),void g.callBindingUpdate(c)}var y=void 0!=e.data?e.data:{};if(d.processdata&&d.processdata(y),a.isFunction(e.processData)&&e.processData(y),a.isFunction(e.formatData)){var z=e.formatData(y);void 0!=z&&(y=z)}var A="application/x-www-form-urlencoded";e.contentType&&(A=e.contentType);var B="GET";d.type&&(B=d.type),e.type&&(B=e.type);var C=h;if("ics"==h&&(C="text"),d.url&&d.url.length>0)a.isFunction(e.loadServerData)?g._requestData(y,d,e):this.xhr=a.MLjqui.data.ajax({dataType:C,cache:this.cache,type:B,url:d.url,async:i,timeout:d.timeout,contentType:A,data:y,success:function(b,c,f){if(a.isFunction(d.beforeprocessing)){var i=d.beforeprocessing(b,c,f);void 0!=i&&(b=i)}if(a.isFunction(e.downloadComplete)){var i=e.downloadComplete(b,c,f);void 0!=i&&(b=i)}if(null==b)return g.records=new Array,g.cachedrecords=new Array,g.originaldata=new Array,g.callDownloadComplete(),void(a.isFunction(e.loadComplete)&&e.loadComplete(new Array));var j=b;if(b.records&&(j=b.records),void 0!=b.totalrecords?d.totalrecords=b.totalrecords:void 0!=b.totalRecords&&(d.totalrecords=b.totalRecords),"xml"===d.datatype?g.loadxml(null,j,d):"text"===h?g.loadtext(j,d):"ics"===h?g.loadics(j,d):g.loadjson(null,j,d),g.addForeignValues(d),e.uniqueDataFields){var k=g.getUniqueRecords(g.records,e.uniqueDataFields);g.records=k,g.cachedrecords=k}if(e.beforeLoadComplete){var l=e.beforeLoadComplete(g.records,b);void 0!=l&&(g.records=l,g.cachedrecords=l)}g.loadedData=b,g.buildHierarchy.call(g),g.callDownloadComplete(),a.isFunction(e.loadComplete)&&e.loadComplete(b,c,f,g.records)},error:function(b,c,f){a.isFunction(d.loaderror)&&d.loaderror(b,c,f),a.isFunction(e.loadError)&&e.loadError(b,c,f),b=null,g.callDownloadComplete()},beforeSend:function(b,c){a.isFunction(e.beforeSend)&&e.beforeSend(b,c),a.isFunction(d.beforesend)&&d.beforesend(b,c)}});else if(g.buildHierarchy(new Array),g.callDownloadComplete(),a.isFunction(e.loadComplete)){if(!D)var D={};e.loadComplete(D)}}this.callBindingUpdate(c)}}},buildHierarchy:function(a){var b=this._source,c=new Array;if(b.datafields){if(b.hierarchy&&!b.hierarchy.reservedNames)b.hierarchy.reservedNames={leaf:"leaf",parent:"parent",expanded:"expanded",checked:"checked",selected:"selected",level:"level",icon:"icon",data:"data"};else if(b.hierarchy){var d=b.hierarchy.reservedNames;d.leaf||(d.leaf="leaf"),d.parent||(d.parent="parent"),d.expanded||(d.expanded="expanded"),d.checked||(d.checked="checked"),d.selected||(d.selected="selected"),d.level||(d.level="level"),d.data||(d.data="data")}if(b.hierarchy){var e=this,d=b.hierarchy.reservedNames;if(b.hierarchy.root){if("xml"==b.dataType){var c=this.getRecordsHierarchy("uid","parentuid","records",null,a);return this.hierarchy=c,c}this.hierarchy=this.records;for(var f=b.hierarchy.root,g=0;g1){for(var h=a,i=0;i=0&&(this._source.hierarchy||d)){var g=e._source&&e._source.hierarchy?e._source.hierarchy.reservedNames:null;null==g&&(g=f()),a[g.level]=0,"last"==b?this.hierarchy.push(a):"number"==typeof b&&isFinite(b)?this.hierarchy.splice(b,0,a):this.hierarchy.splice(0,0,a)}else"last"==b?this.records.push(a):"number"==typeof b&&isFinite(b)?this.records.splice(b,0,a):this.records.splice(0,0,a);return!0}if(this.hierarchy.length>0){var h=function(d){if(d)for(var g=0;g0){var c=function(d){if(d)for(var e=0;ed;d++){var e=a.datafields[d];if(void 0!=e)if(void 0!=e.values){void 0==e.value&&(e.value=e.name),void 0==e.values.value&&(e.values.value=e.value);var f,g,h=new Array;b.pageable&&b.virtualmode?(f=b.pagenum*b.pagesize,g=f+b.pagesize,g>b.totalrecords&&(g=b.totalrecords)):b.virtualmode?(f=a.recordstartindex,g=a.recordendindex,g>b.totalrecords&&(g=b.totalrecords)):(f=0,g=b.records.length);for(var i=f;g>i;i++){var j=b.records[i],k=e.name,l=j[e.value];if(void 0!=h[l])j[k]=h[l];else for(var m=0;mg;g++){var h=a[g],i="";if(void 0!=h){for(var j=0;d>j;j++){var k=b[j];i+=h[k]+"_"}f[i]||(e[e.length]=h),f[i]=!0}}return e},getAggregatedData:function(b,c,d,e){var f=d;f||(f=this.records);var g={},h=new Array,i=f.length;if(0!=i&&void 0!=i){for(var j=0;i>j;j++)for(var k=f[j],l=0;lh;h++){var j=f[h],k=j[m.name];e+=(k-d)*(k-d)}var l="stdevp"==this||"varp"==this?c:c-1;0==l&&(l=1),"var"==this||"varp"==this?g[m.name][this]=e/l:"stdevp"!=this&&"stdev"!=this||(g[m.name][this]=Math.sqrt(e/l))}}),m.formatStrings&&a.each(m.aggregates,function(b){var d=m.formatStrings[b];if(d)if("min"==this||"max"==this||"count"==this||"product"==this||"sum"==this||"avg"==this||"stdev"==this||"stdevp"==this||"var"==this||"varp"==this){var e=g[m.name][this];g[m.name][this]=a.MLjqui.dataFormat.formatnumber(e,d,c)}else if("object"==typeof this)for(obj in this){var e=g[m.name][obj];g[m.name][obj]=a.MLjqui.dataFormat.formatnumber(e,d,c)}})}return g}},bindDownloadComplete:function(a,b){this._downloadComplete[this._downloadComplete.length]={id:a,func:b}},unbindDownloadComplete:function(a){for(var b=0;bt;t++){var u=s(i[t]);id=u[k.uniqueId];var v=new Array,w=0;for(m=0;q>m;m++){var x=b[m],y=u[x];null!=y&&(v[w++]={value:y,hash:l[m]})}if(v.length!=q)break;for(var z=null,A="",B=-1,C=0;Co;o++){var p=a.extend({},k[o]),q=p[c],r=p[b];j[r]={parentid:q,item:p}}for(var o=0;l>o;o++){var p=a.extend({},k[o]),q=p[c],r=p[b];if(void 0!=j[q]){var p={parentid:q,item:j[r].item},s=j[q].item;s[i]||(s[i]=[]);var t=s[i].length,u=p.item;m?void 0==u[m.parent]&&(u[m.parent]=s):void 0==u.parent&&(u.parent=s);var v=n(u);s[i][t]=v,j[q].item=s,j[r]=p}else{var u=j[r].item;m?void 0==u[m.parent]&&(u[m.parent]=null):void 0==u.parent&&(u.parent=null);var v=n(u);m?v[m.level]=0:v.level=0,g[g.length]=v}}if(0!=g.length){var w=function(a,b){for(var c=0;c0?w(a+1,d):m?b[c][m.leaf]=!0:b[c].leaf=!0}};w(0,g)}return g},bindBindingUpdate:function(a,b){this._bindingUpdate[this._bindingUpdate.length]={id:a,func:b}},unbindBindingUpdate:function(a){for(var b=0;b0)return a(b,c).text();if(b&&b.toString().length>0){var e=a(c).attr(b);if(null!=e&&e.toString().length>0)return a.trim(e).split(" ").join("").replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,"");var f=b.split(this.mapChar);if(f.length>1){for(var g=c,h=0;h0)return e;if(b.map)try{var e=a(c).attr(b.map);if(null!=e&&e.toString().length>0)return e;if(a(b.map,c).length>0)return a(b.map,c).text();if(a(b.name,c).length>0)return a(b.name,c).text()}catch(i){return d}},loadjson:function(b,c,d){"string"==typeof b&&(b=a.parseJSON(b)),void 0==d.root&&(d.root=""),void 0==d.record&&(d.record="");var b=b||c;b||(b=[]);var e=this;if(""!=d.root){var f=d.root.split(e.mapChar);if(f.length>1){for(var g=b,h=0;h0){for(var g=b,h=0;hr;r++){var s=b[r];if(void 0==s)break;if(!d.record||""==d.record||(s=s[d.record],void 0!=s)){var t=this.getid(d.id,s,r);if("object"==typeof t&&(t=r),!this.recordids[t]){this.recordids[t]=s;for(var u={},v=0;m>v;v++){var w=d.datafields[v],x="";if(void 0!=w&&null!=w){if(w.map){if(a.isFunction(w.map))x=w.map(s);else{var f=w.map.split(e.mapChar);if(f.length>0){for(var y=s,h=0;hg;g++){var h=d.datafields[g],i="";if(void 0!=h&&null!=h){if(h.map){if(a.isFunction(h.map))i=h.map(f);else{var j=h.map.split(e.mapChar);if(j.length>0){for(var k=f,l=0;lo;o++){var p=b[o];if(void 0==p)break;var q=this.getid(d.id,p,o);if(!this.recordids[q]){this.recordids[q]=p;var r={},s=!1;d.hierarchy&&d.hierarchy.root&&(s=!0);for(var t=0;i>t;t++){var u=d.datafields[t],v="";if(void 0!=u&&null!=u){if(u.map)if(a.isFunction(u.map))v=u.map(p);else{var w=u.map.indexOf("[");if(0>w)if(v=a(u.map,p),1==v.length)v=v.text();else{n=!0;for(var x=new Array,y=0;y0&&(v=x[0])}else{var z=u.map.substring(0,w-1),A=u.map.indexOf("]"),B=u.map.substring(w+1,A);v=a(z,p).attr(B),void 0==v&&(v=a(p).attr(B)),void 0==v&&(v="")}""==v&&(v=a(p).attr(u.map),void 0==v&&(v=""))}if(""==v){if(v=a(u.name,p),1==v.length)v=v.text();else{for(var x=new Array,y=0;y0&&(v=x[0])}""==v&&(v=a(p).attr(u.name),void 0==v&&(v="")),""==v&&p.nodeName&&p.nodeName==u.name&&p.firstChild&&(v=a(p.firstChild).text())}v=this.getvaluebytype(v,u),void 0!=u.displayname?r[u.displayname]=v:r[u.name]=v}}(d.recordendindex<=0||go;o++){var p=b[o],C=f[o];if(a(p).parent().length>0){var q=this.getid(d.id,a(p).parents(d.hierarchy.record+":first"));C.parentuid=q}else C.parentuid=null}this.records=f,this.cachedrecords=this.records}},loadics:function(a,b){if(null!=a){var c=b.rowDelimiter||this.rowDelimiter||"\n",d=a.split(c),e=d.length,f=a.split("\r");1==e&&f.length>1&&(d=f,e=d.length),this.records=new Array,this.originaldata=new Array;var g=this.records;this.recordids=new Array;for(var h=function(a){var b=/^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z)?$/,c=b.exec(a);if(!c)throw new Error("Invalid UNTIL value: "+a);return new Date(Date.UTC(c[1],c[2]-1,c[3],c[5]||0,c[6]||0,c[7]||0))},i=0;e>i;i++){var j=d[i];if("BEGIN:VEVENT"!=j)if(j.indexOf("SUMMARY")>=0)l.SUMMARY=j.substring(j.indexOf("SUMMARY")+8);else if(j.indexOf("LOCATION")>=0)l.LOCATION=j.substring(j.indexOf("LOCATION")+9);else if(j.indexOf("DESCRIPTION")>=0)l.DESCRIPTION=j.substring(j.indexOf("DESCRIPTION")+12);else if(j.indexOf("RRULE")>=0)l.RRULE=j.substring(j.indexOf("RRULE")+6);else if(j.indexOf("EXDATE")>=0){var k=j.substring(j.indexOf("EXDATE")+7);l.EXDATE=k}else j.indexOf("DTEND")>=0?l.DTEND=h(j.substring(j.indexOf("DTEND")+6)):j.indexOf("DTSTART")>=0?l.DTSTART=h(j.substring(j.indexOf("DTSTART")+8)):j.indexOf("UID")>=0?l.uid=l.UID=j.substring(j.indexOf("UID")+4):j.indexOf("STATUS")>=0?l.STATUS=j.substring(j.indexOf("STATUS")+7):"END:VEVENT"!=j||g.push(l);else var l={}}this.records=g,this.cachedrecords=this.records}},loadtext:function(b,c){if(null!=b){var d=c.rowDelimiter||this.rowDelimiter||"\n",e=b.split(d),f=e.length,g=b.split("\r");1==f&&g.length>1&&(e=g,f=e.length),this.totalrecords=this.virtualmode?c.totalrecords||f:f,this.records=new Array,this.originaldata=new Array;var h=this.records,i=this.pageable?this.pagesize*this.pagenum:c.recordstartindex;this.recordids=new Array,c.loadallrecords&&(i=0,f=this.totalrecords);var j=0;this.virtualmode&&(i=this.pageable?this.pagesize*this.pagenum:c.recordstartindex,j=i,i=0,f=this.totalrecords);var k=c.datafields.length,l=c.columnDelimiter||this.columnDelimiter;l||(l="tab"===c.datatype||"tsv"===c.datatype?" ":",");for(var m=i;f>m;m++){var n=e[m],o=null;if(!this.recordids[o]){null==c.id&&(o=m,this.recordids[o]=n);for(var p={},q=e[m].split(l),r=0;k>r;r++)if(!(r>=q.length)){var s=c.datafields[r],t=q[r];s.map&&a.isFunction(s.map)&&(t=s.map(n)),s.type&&(t=this.getvaluebytype(t,s));var u=s.map||s.name||r.toString();p[u]=t,null!=c.id&&c.id===s.name&&(o=t,this.recordids[o]=n)}null==o&&(o=m),h[j+m]=a.extend({},p),h[j+m].uid=o,this.originaldata[j+m]=a.extend({},h[m])}}this.records=h,this.cachedrecords=this.records}},getvaluebytype:function(b,c){var d=b;if(null==b)return b;if(a.isArray(b)&&"array"!=c.type){for(var e=0;ec;c++)if(a[c]===b)return c;return-1},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a&&isFinite(a)},isNull:function(a){return null===a},isUndefined:function(a){return"undefined"==typeof a},isValue:function(a){return this.isObject(a)||this.isString(a)||this.isNumber(a)||this.isBoolean(a)},isEmpty:function(b){return!this.isString(b)&&this.isValue(b)?!1:this.isValue(b)?(b=a.trim(b).replace(/\ \;/gi,"").replace(/\ \;/gi,""),""===b):!0},startsWith:function(a,b){return 0===a.indexOf(b)},endsWith:function(a,b){return a.substr(a.length-b.length)===b},trim:function(a){return(a+"").replace(this.regexTrim,"")},isArray:function(a){return"[object Array]"===this.toString.call(a)},defaultcalendar:function(){var a={"/":"/",":":":",firstDay:0,days:{names:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],namesAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],namesShort:["Su","Mo","Tu","We","Th","Fr","Sa"]},months:{names:["January","February","March","April","May","June","July","August","September","October","November","December",""],namesAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""]},AM:["AM","am","AM"],PM:["PM","pm","PM"],eras:[{name:"A.D.",start:null,offset:0}],twoDigitYearMax:2029,patterns:{d:"M/d/yyyy",D:"dddd, MMMM dd, yyyy",t:"h:mm tt",T:"h:mm:ss tt",f:"dddd, MMMM dd, yyyy h:mm tt",F:"dddd, MMMM dd, yyyy h:mm:ss tt",M:"MMMM dd",Y:"yyyy MMMM",S:"yyyy'-'MM'-'dd'T'HH':'mm':'ss",ISO:"yyyy-MM-dd hh:mm:ss",ISO2:"yyyy-MM-dd HH:mm:ss",d1:"dd.MM.yyyy",d2:"dd-MM-yyyy",d3:"MM-dd-yyyy",zone1:"yyyy-MM-ddTHH:mm:ss-HH:mm",zone2:"yyyy-MM-ddTHH:mm:ss+HH:mm",custom:"yyyy-MM-ddTHH:mm:ss.fff",custom2:"yyyy-MM-dd HH:mm:ss.fff"},percentsymbol:"%",currencysymbol:"$",currencysymbolposition:"before",decimalseparator:".",thousandsseparator:","};return a},expandFormat:function(a,b){b=b||"F";var c,d=a.patterns,e=b.length;if(1===e){if(c=d[b],!c)throw"Invalid date format string '"+b+"'.";b=c}else 2===e&&"%"===b.charAt(0)&&(b=b.charAt(1));return b},getEra:function(a,b){if(!b)return 0;if("string"==typeof a)return 0;for(var c,d=a.getTime(),e=0,f=b.length;f>e;e++)if(c=b[e].start,null===c||d>=c)return e;return 0},toUpper:function(a){return a.split(" ").join(" ").toUpperCase()},toUpperArray:function(a){for(var b=[],c=0,d=a.length;d>c;c++)b[c]=this.toUpper(a[c]);return b},getEraYear:function(a,b,c,d){var e=a.getFullYear();return!d&&b.eras&&(e-=b.eras[c].offset),e},toUpper:function(a){return a?a.toUpperCase():""},getDayIndex:function(a,b,c){var d,e=a.days,f=a._upperDays;return f||(a._upperDays=f=[this.toUpperArray(e.names),this.toUpperArray(e.namesAbbr),this.toUpperArray(e.namesShort)]),b=b.toUpperCase(),c?(d=this.arrayIndexOf(f[1],b),-1===d&&(d=this.arrayIndexOf(f[2],b))):d=this.arrayIndexOf(f[0],b),d},getMonthIndex:function(a,b,c){var d=a.months,e=a.monthsGenitive||a.months,f=a._upperMonths,g=a._upperMonthsGen;f||(a._upperMonths=f=[this.toUpperArray(d.names),this.toUpperArray(d.namesAbbr)],a._upperMonthsGen=g=[this.toUpperArray(e.names),this.toUpperArray(e.namesAbbr)]),b=this.toUpper(b);var h=this.arrayIndexOf(c?f[1]:f[0],b);return 0>h&&(h=this.arrayIndexOf(c?g[1]:g[0],b)),h},appendPreOrPostMatch:function(a,b){for(var c=0,d=!1,e=0,f=a.length;f>e;e++){var g=a.charAt(e);switch(g){case"'":d?b.push("'"):c++,d=!1;break;case"\\":d&&b.push("\\"),d=!d;break;default:b.push(g),d=!1}}return c},getTokenRegExp:function(){return/\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g},formatlink:function(a,b){var c="";return b&&b.target&&(c="target="+b.target),""!=c?"'+a+"":''+a+""},formatemail:function(a){return''+a+""},formatNumber:function(a,b,c){return this.formatnumber(a,b,c)},formatnumber:function(a,b,c){if(void 0!=c&&null!=c&&""!=c||(c=this.defaultcalendar()),""===b||null===b)return a;this.isNumber(a)||(a*=1);var d;b.length>1&&(d=parseInt(b.slice(1),10));var e={},f=b.charAt(0).toUpperCase();switch(e.thousandsSeparator=c.thousandsseparator,e.decimalSeparator=c.decimalseparator,f){case"D":case"d":case"F":case"f":e.decimalPlaces=d;break;case"N":case"n":e.decimalPlaces=0;break;case"C":case"c":e.decimalPlaces=d,"before"==c.currencysymbolposition?e.prefix=c.currencysymbol:e.suffix=c.currencysymbol;break;case"P":case"p":e.suffix=c.percentsymbol,e.decimalPlaces=d;break;default:throw"Bad number format specifier: "+f}if(this.isNumber(a)){var g,h=0>a,i=a+"",j=e.decimalSeparator?e.decimalSeparator:".";if(this.isNumber(e.decimalPlaces)){var k=e.decimalPlaces,l=Math.pow(10,k);if(i=(a*l).toFixed(0)/l+"",g=i.lastIndexOf("."),k>0)for(0>g?(i+=j,g=i.length-1):"."!==j&&(i=i.replace(".",j));i.length-1-g0&&void 0==k&&"."!==j&&(i=i.replace(".",j))}if(e.thousandsSeparator){var m=e.thousandsSeparator;g=i.lastIndexOf(j),g=g>-1?g:i.length;for(var n=i.substring(g),o=-1,p=g;p>0;p--)o++,o%3===0&&p!==g&&(!h||p>1)&&(n=m+n),n=i.charAt(p-1)+n;i=n}return i=e.prefix?e.prefix+i:i,i=e.suffix?i+e.suffix:i}return a},tryparsedate:function(b,c){void 0!=c&&null!=c||(c=this.defaultcalendar());var d=this;if(""==b)return null;if(null==b||b.substring||(b=b.toString()),null!=b&&"/Date("==b.substring(0,6)){var e=/^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/,f=new Date(+b.replace(/\/Date\((\d+)\)\//,"$1"));if("Invalid Date"==f){var g=b.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/),f=null;g&&(f=new Date(1*g[1]+36e5*g[2]+6e4*g[3]))}if(null==f||"Invalid Date"==f||isNaN(f)){var h=e.exec(b);if(h){var i=new Date(parseInt(h[1]));if(h[2]){var j=parseInt(h[3]);"-"===h[2]&&(j=-j);var k=i.getUTCMinutes();i.setUTCMinutes(k-j)}if(!isNaN(i.valueOf()))return i}}return f}patterns=c.patterns;for(prop in patterns)if(f=d.parsedate(b,patterns[prop],c)){if("ISO"==prop){var l=d.parsedate(b,patterns.ISO2,c);if(l)return l}return f}if(null!=b){for(var l=null,m=[":","/","-"],n=!0,o=0;o=0?(t=b.substring(b.indexOf(":")-2),t=q.trim(t),u=b.substring(0,b.indexOf(":")-2)):b.toUpperCase().indexOf("AM")>=0?(t=b.substring(b.toUpperCase().indexOf("AM")-2),t=q.trim(t),u=b.substring(0,b.toUpperCase().indexOf("AM")-2)):b.toUpperCase().indexOf("PM")>=0&&(t=b.substring(b.toUpperCase().indexOf("PM")-2),t=q.trim(t),u=b.substring(0,b.toUpperCase().indexOf("PM")-2));var v=new Date,w=!1;if(u){for(var x=0;x=0){m=u.split(r[x]);break}for(var y=new Array,z=new Array,A=new Array,B=null,C=null,x=0;x2){C=x;break}}}for(var x=0;x0&&(v=G[0],w=!0)}if(t){var J=t.indexOf(":")>=0?t.split(":"):t,K=q.parsedate(t,"h:mm tt",c)||q.parsedate(t,"h:mm:ss tt",c)||q.parsedate(t,"HH:mm:ss.fff",c)||q.parsedate(t,"HH:mm:ss.ff",c)||q.parsedate(t,"HH:mm:ss.tttt",c)||q.parsedate(t,"HH:mm:ss",c)||q.parsedate(t,"HH:mm",c)||q.parsedate(t,"HH",c),L=0,M=0,N=0,O=0;K&&NaN!=K.getTime()?(L=K.getHours(),M=K.getMinutes(),N=K.getSeconds(),O=K.getMilliseconds()):(1==J.length&&(L=parseInt(J[0])),2==J.length&&(L=parseInt(J[0]),M=parseInt(J[1])),3==J.length&&(L=parseInt(J[0]),M=parseInt(J[1]),J[2].indexOf(".")>=0?(N=parseInt(J[2].toString().split(".")[0]),O=parseInt(J[2].toString().split(".")[1])):N=parseInt(J[2])),4==J.length&&(L=parseInt(J[0]),M=parseInt(J[1]),N=parseInt(J[2]),O=parseInt(J[3]))),!v||isNaN(L)||isNaN(M)||isNaN(N)||isNaN(O)||(v.setHours(L,M,N,O),w=!0)}if(w)return v}return null},getparseregexp:function(a,b){var c=a._parseRegExp;if(c){var d=c[b];if(d)return d}else a._parseRegExp=c={};for(var e,f=this.expandFormat(a,b).replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1"),g=["^"],h=[],i=0,j=0,k=this.getTokenRegExp();null!==(e=k.exec(f));){var l=f.slice(i,e.index);if(i=k.lastIndex,j+=this.appendPreOrPostMatch(l,g),j%2)g.push(e[0]);else{var m,n=e[0],o=n.length;switch(n){case"dddd":case"ddd":case"MMMM":case"MMM":case"gg":case"g":m="(\\D+)";break;case"tt":case"t":m="(\\D*)";break;case"yyyy":case"fff":case"ff":case"f":m="(\\d{"+o+"})";break;case"dd":case"d":case"MM":case"M":case"yy":case"y":case"HH":case"H":case"hh":case"h":case"mm":case"m":case"ss":case"s":m="(\\d\\d?)";break;case"zzz":m="([+-]?\\d\\d?:\\d{2})";break;case"zz":case"z":m="([+-]?\\d\\d?)";break;case"/":m="(\\"+a["/"]+")";break;default:throw"Invalid date format pattern '"+n+"'."}m&&g.push(m),h.push(e[0])}}this.appendPreOrPostMatch(f.slice(i),g),g.push("$");var p=g.join("").replace(/\s+/g,"\\s+"),q={regExp:p,groups:h};return c[b]=q},outOfRange:function(a,b,c){return b>a||a>c},expandYear:function(a,b){var c=new Date,d=this.getEra(c);if(100>b){var e=a.twoDigitYearMax;e="string"==typeof e?(new Date).getFullYear()%100+parseInt(e,10):e;var f=this.getEraYear(c,a,d);b+=f-f%100,b>e&&(b-=100)}return b},parsedate:function(a,b,c){void 0!=c&&null!=c||(c=this.defaultcalendar()),a=this.trim(a);var d=c,e=this.getparseregexp(d,b),f=new RegExp(e.regExp).exec(a);if(null===f)return null;for(var g,h=e.groups,i=null,j=null,k=null,l=null,m=null,n=0,o=0,p=0,q=0,r=null,s=!1,t=0,u=h.length;u>t;t++){var v=f[t+1];if(v){var w=h[t],x=w.length,y=parseInt(v,10);switch(w){case"dd":case"d":if(l=y,this.outOfRange(l,1,31))return null;break;case"MMM":case"MMMM":if(k=this.getMonthIndex(d,v,3===x),this.outOfRange(k,0,11))return null;break;case"M":case"MM":if(k=y-1,this.outOfRange(k,0,11))return null;break;case"y":case"yy":case"yyyy":if(j=4>x?this.expandYear(d,y):y,this.outOfRange(j,0,9999))return null;break;case"h":case"hh":if(n=y,12===n&&(n=0),this.outOfRange(n,0,11))return null;break;case"H":case"HH":if(n=y,this.outOfRange(n,0,23))return null;break;case"m":case"mm":if(o=y,this.outOfRange(o,0,59))return null;break;case"s":case"ss":if(p=y,this.outOfRange(p,0,59))return null;break;case"tt":case"t":if(s=d.PM&&(v===d.PM[0]||v===d.PM[1]||v===d.PM[2]),!s&&(!d.AM||v!==d.AM[0]&&v!==d.AM[1]&&v!==d.AM[2]))return null;break;case"f":case"ff":case"fff":if(q=y*Math.pow(10,3-x),this.outOfRange(q,0,999))return null;break;case"ddd":case"dddd":if(m=this.getDayIndex(d,v,3===x),this.outOfRange(m,0,6))return null;break;case"zzz":var z=v.split(/:/);if(2!==z.length)return null;if(g=parseInt(z[0],10),this.outOfRange(g,-12,13))return null;var A=parseInt(z[1],10);if(this.outOfRange(A,0,59))return null;r=60*g+(this.startsWith(v,"-")?-A:A);break;case"z":case"zz":if(g=y,this.outOfRange(g,-12,13))return null;r=60*g;break;case"g":case"gg":var B=v;if(!B||!d.eras)return null;B=trim(B.toLowerCase());for(var C=0,D=d.eras.length;D>C;C++)if(B===d.eras[C].name.toLowerCase()){i=C;break}if(null===i)return null}}}var E,F=new Date,G=d.convert;if(E=F.getFullYear(),null===j?j=E:d.eras&&(j+=d.eras[i||0].offset),null===k&&(k=0),null===l&&(l=1),G){if(F=G.toGregorian(j,k,l),null===F)return null}else{if(F.setFullYear(j,k,l),F.getDate()!==l)return null;if(null!==m&&F.getDay()!==m)return null}if(s&&12>n&&(n+=12),F.setHours(n,o,p,q),null!==r){var H=F.getMinutes()-(r+F.getTimezoneOffset());F.setHours(F.getHours()+parseInt(H/60,10),H%60)}return F},cleardatescache:function(){this.datescache=new Array},formatDate:function(a,b,c){return this.formatdate(a,b,c)},formatdate:function(a,b,c){function d(a,b){var c,d=a+"";return b>1&&d.lengtht&&(v%=100),g.push(d(v,t));break;case"h":case"hh":j=a.getHours()%12,0===j&&(j=12),g.push(d(j,t));break;case"H":case"HH":g.push(d(a.getHours(),t));break;case"m":case"mm":g.push(d(a.getMinutes(),t));break;case"s":case"ss":g.push(d(a.getSeconds(),t));break;case"t":case"tt":v=a.getHours()<12?c.AM?c.AM[0]:" ":c.PM?c.PM[0]:" ",g.push(1===t?v.charAt(0):v);break;case"f":case"ff":case"fff":g.push(d(a.getMilliseconds(),3).substr(0,t));break;case"z":case"zz":j=a.getTimezoneOffset()/60,g.push((0>=j?"+":"-")+d(Math.floor(Math.abs(j)),t));break;case"zzz":j=a.getTimezoneOffset()/60,g.push((0>=j?"+":"-")+d(Math.floor(Math.abs(j)),2)+":"+d(Math.abs(a.getTimezoneOffset()%60),2));break;case"g":case"gg":c.eras&&g.push(c.eras[this.getEra(a,h)].name);break;case"/":g.push(c["/"]);break;default:throw"Invalid date format pattern '"+s+"'."}}}var w=g.join("");return this.datescache||(this.datescache=new Array),this.datescache[f]=w,w}}),a.MLjqui.data={};var i,j,k=/#.*$/,l=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,m=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,n=/^(?:GET|HEAD)$/,o=/^\/\//,p=/\?/,q=/([?&])_=[^&]*/,r=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,s=/\s+/,t=(a.fn.load,{}),u={},v=["*/"]+["*"];try{j=location.href}catch(w){j=document.createElement("a"),j.href="",j=j.href}i=r.exec(j.toLowerCase())||[],a.extend(a.MLjqui.data,{ajaxSetup:function(b,c){return c?d(b,a.MLjqui.data.ajaxSettings):(c=b,b=a.MLjqui.data.ajaxSettings),d(b,c),b},ajaxSettings:{url:j,isLocal:m.test(i[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":v},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":window.String,"text html":!0,"text json":a.parseJSON,"text xml":a.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b(t),ajaxTransport:b(u),ajax:function(b,d){function g(b,c,d,g){var i,k,l,m,n,o=c;2!==J&&(J=2,x&&clearTimeout(x),w=void 0,j=g||"",L.readyState=b>0?4:0,d&&(m=e(B,L,d)),b>=200&&300>b||304===b?(B.ifModified&&(n=L.getResponseHeader("Last-Modified"),n&&(a.lastModified[h]=n),n=L.getResponseHeader("Etag"),n&&(a.etag[h]=n)),304===b?(o="notmodified",i=!0):(i=f(B,m),o=i.state,k=i.data,l=i.error,i=!l)):(l=o,o&&!b||(o="error",0>b&&(b=0))),L.status=b,L.statusText=(c||o)+"",i?E.resolveWith(C,[k,o,L]):E.rejectWith(C,[L,o,l]),L.statusCode(G),G=void 0,z&&D.trigger("ajax"+(i?"Success":"Error"),[L,B,i?k:l]),F.fireWith(C,[L,o]),z&&(D.trigger("ajaxComplete",[L,B]),--a.active||a.event.trigger("ajaxStop")))}"object"==typeof b&&(d=b,b=void 0),d=d||{};var h,j,m,w,x,y,z,A,B=a.MLjqui.data.ajaxSetup({},d),C=B.context||B,D=C!==B&&(C.nodeType||C instanceof a)?a(C):a.event,E=a.Deferred(),F=a.Callbacks("once memory"),G=B.statusCode||{},H={},I={},J=0,K="canceled",L={readyState:0,setRequestHeader:function(a,b){if(!J){var c=a.toLowerCase();a=I[c]=I[c]||a,H[a]=b}return this},getAllResponseHeaders:function(){return 2===J?j:null},getResponseHeader:function(a){var b;if(2===J){if(!m)for(m={};b=l.exec(j);)m[b[1].toLowerCase()]=b[2];b=m[a.toLowerCase()]}return void 0===b?null:b},overrideMimeType:function(a){return J||(B.mimeType=a),this},abort:function(a){return a=a||K,w&&w.abort(a),g(0,a),this}};if(E.promise(L),L.success=L.done,L.error=L.fail,L.complete=F.add,L.statusCode=function(a){if(a){var b;if(2>J)for(b in a)G[b]=[G[b],a[b]];else b=a[L.status],L.always(b)}return this},B.url=((b||B.url)+"").replace(k,"").replace(o,i[1]+"//"),B.dataTypes=a.trim(B.dataType||"*").toLowerCase().split(s),null==B.crossDomain&&(y=r.exec(B.url.toLowerCase()),B.crossDomain=!(!y||y[1]===i[1]&&y[2]===i[2]&&(y[3]||("http:"===y[1]?80:443))==(i[3]||("http:"===i[1]?80:443)))),B.data&&B.processData&&"string"!=typeof B.data&&(B.data=a.param(B.data,B.traditional)),c(t,B,d,L),2===J)return L;if(z=B.global,B.type=B.type.toUpperCase(),B.hasContent=!n.test(B.type),z&&0===a.active++&&a.event.trigger("ajaxStart"),!B.hasContent&&(B.data&&(B.url+=(p.test(B.url)?"&":"?")+B.data,delete B.data),h=B.url,B.cache===!1)){var M=a.now(),N=B.url.replace(q,"$1_="+M);B.url=N+(N===B.url?(p.test(B.url)?"&":"?")+"_="+M:"")}(B.data&&B.hasContent&&B.contentType!==!1||d.contentType)&&L.setRequestHeader("Content-Type",B.contentType),B.ifModified&&(h=h||B.url,a.lastModified[h]&&L.setRequestHeader("If-Modified-Since",a.lastModified[h]),a.etag[h]&&L.setRequestHeader("If-None-Match",a.etag[h])),L.setRequestHeader("Accept",B.dataTypes[0]&&B.accepts[B.dataTypes[0]]?B.accepts[B.dataTypes[0]]+("*"!==B.dataTypes[0]?", "+v+"; q=0.01":""):B.accepts["*"]);for(A in B.headers)L.setRequestHeader(A,B.headers[A]);if(B.beforeSend&&(B.beforeSend.call(C,L,B)===!1||2===J))return L.abort();K="abort";for(A in{success:1,error:1,complete:1})L[A](B[A]);if(w=c(u,B,d,L)){L.readyState=1,z&&D.trigger("ajaxSend",[L,B]),B.async&&B.timeout>0&&(x=setTimeout(function(){L.abort("timeout")},B.timeout));try{J=1,w.send(H,g)}catch(O){if(!(2>J))throw O;g(-1,O)}}else g(-1,"No Transport");return L},active:0,lastModified:{},etag:{}});var x=[],y=/\?/,z=/(=)\?(?=&|$)|\?\?/,A=a.now();a.MLjqui.data.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var b=x.pop()||a.expando+"_"+A++;return this[b]=!0,b}}),a.MLjqui.data.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.data,i=b.url,j=b.jsonp!==!1,k=j&&z.test(i),l=j&&!k&&"string"==typeof h&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&z.test(h);return"jsonp"===b.dataTypes[0]||k||l?(e=b.jsonpCallback=a.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,f=window[e],k?b.url=i.replace(z,"$1"+e):l?b.data=h.replace(z,"$1"+e):j&&(b.url+=(y.test(i)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||a.error(e+" was not called"),g[0]},b.dataTypes[0]="json",window[e]=function(){g=arguments},d.always(function(){window[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,x.push(e)),g&&a.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),a.MLjqui.data.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(b){return a.globalEval(b),b}}}),a.MLjqui.data.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),a.MLjqui.data.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=document.head||document.getElementsByTagName("head")[0]||document.documentElement;return{send:function(d,e){b=document.createElement("script"),b.async="async",a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,d){(d||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,c&&b.parentNode&&c.removeChild(b),b=void 0,d||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(0,1)}}}});var B,C=window.ActiveXObject?function(){for(var a in B)B[a](0,1)}:!1,D=0;a.MLjqui.data.ajaxSettings.xhr=window.ActiveXObject?function(){return!this.isLocal&&g()||h()}:g,function(b){a.extend(a.support,{ajax:!!b,cors:!!b&&"withCredentials"in b})}(a.MLjqui.data.ajaxSettings.xhr()),a.support.ajax&&a.MLjqui.data.ajaxTransport(function(b){if(!b.crossDomain||a.support.cors){var c;return{send:function(d,e){var f,g,h=b.xhr();if(b.username?h.open(b.type,b.url,b.async,b.username,b.password):h.open(b.type,b.url,b.async),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");try{for(g in d)h.setRequestHeader(g,d[g])}catch(i){}h.send(b.hasContent&&b.data||null),c=function(d,g){var i,j,k,l,m;try{if(c&&(g||4===h.readyState))if(c=void 0,f&&(h.onreadystatechange=a.noop,C&&delete B[f]),g)4!==h.readyState&&h.abort();else{ -i=h.status,k=h.getAllResponseHeaders(),l={},m=h.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=h.responseText}catch(n){}try{j=h.statusText}catch(n){j=""}i||!b.isLocal||b.crossDomain?1223===i&&(i=204):i=l.text?200:404}}catch(o){g||e(-1,o)}l&&e(i,j,l,k)},b.async?4===h.readyState?setTimeout(c,0):(f=++D,C&&(B||(B={},a(window).unload(C)),B[f]=c),h.onreadystatechange=c):c()},abort:function(){c&&c(0,1)}}}}),a.MLjqui.filter=function(){this.operator="and";var b=1,c=["EMPTY","NOT_EMPTY","CONTAINS","CONTAINS_CASE_SENSITIVE","DOES_NOT_CONTAIN","DOES_NOT_CONTAIN_CASE_SENSITIVE","STARTS_WITH","STARTS_WITH_CASE_SENSITIVE","ENDS_WITH","ENDS_WITH_CASE_SENSITIVE","EQUAL","EQUAL_CASE_SENSITIVE","NULL","NOT_NULL"],d=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"],e=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"],f=["EQUAL","NOT_EQUAL"],g=new Array,h=new Array;this.evaluate=function(a){for(var c=!0,d=0;da||a>g.length?null:h[a]},this.setoperatorat=function(a,b){return void 0==a||null==a?null:0>a||a>g.length?null:void(h[b]=b)},this.getfilterat=function(a){return void 0==a||null==a?null:0>a||a>g.length?null:g[a]},this.setfilterat=function(a,b){return void 0==a||null==a?null:0>a||a>g.length?null:(b.key=i(),void(g[a]=b))},this.clear=function(){g=new Array,h=new Array};var j=function(b,c){this.filtervalue=b,this.comparisonoperator=c,this.type="stringfilter",this.evaluate=function(b){var c=this.filtervalue,d=this.comparisonoperator;if(null==b||void 0==b||""==b){if("NULL"==d)return!0;if("EQUAL"==d&&b==c)return!0;if("NOT_EQUAL"==d&&b!=c)return!0;if("EMPTY"!=d)return!1;if(""==b)return!0}var e="";try{e=b.toString()}catch(f){return!0}var g=function(b,c){switch(d){case"EQUAL":return a.MLjqui.string.equalsIgnoreCase(b,c);case"EQUAL_CASE_SENSITIVE":return a.MLjqui.string.equals(b,c);case"NOT_EQUAL":return!a.MLjqui.string.equalsIgnoreCase(b,c);case"NOT_EQUAL_CASE_SENSITIVE":return!a.MLjqui.string.equals(b,c);case"CONTAINS":return a.MLjqui.string.containsIgnoreCase(b,c);case"CONTAINS_CASE_SENSITIVE":return a.MLjqui.string.contains(b,c);case"DOES_NOT_CONTAIN":return!a.MLjqui.string.containsIgnoreCase(b,c);case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return!a.MLjqui.string.contains(b,c);case"EMPTY":return""==b;case"NOT_EMPTY":return""!=b;case"NOT_NULL":return null!=b;case"STARTS_WITH":return a.MLjqui.string.startsWithIgnoreCase(b,c);case"ENDS_WITH":return a.MLjqui.string.endsWithIgnoreCase(b,c);case"ENDS_WITH_CASE_SENSITIVE":return a.MLjqui.string.endsWith(b,c);case"STARTS_WITH_CASE_SENSITIVE":return a.MLjqui.string.startsWith(b,c);default:return!1}},h=new Array;if(c&&c.indexOf&&(c.indexOf("|")>=0||c.indexOf(" AND ")>=0||c.indexOf(" OR ")>=0||c.indexOf(" and ")>=0||c.indexOf(" or ")>=0)){var i=g(e,c);if(i)return i;var j=c.indexOf(" AND ")>=0?c.split(" AND "):new Array,k=c.indexOf(" OR ")>=0?c.split(" OR "):new Array,l=c.indexOf(" and ")>=0?c.split(" and "):new Array,m=c.indexOf(" or ")>=0?c.split(" or "):new Array,n=c.indexOf("|")>=0?c.split("|"):new Array;if(n.length>0)for(var o=0;o=0?c.split(" "):new Array;if(p.length>0)for(var o=0;o0)for(var o=0;o=0&&h.push(j[o]);if(k.length>0)for(var o=0;o=0&&h.push(k[o]);for(var q=void 0,r=0;rc;case"GREATER_THAN_OR_EQUAL":return b>=c;case"LESS_THAN":return c>b;case"LESS_THAN_OR_EQUAL":return c>=b;case"STARTS_WITH":return a.MLjqui.string.startsWithIgnoreCase(b.toString(),c.toString());case"ENDS_WITH":return a.MLjqui.string.endsWithIgnoreCase(b.toString(),c.toString());case"ENDS_WITH_CASE_SENSITIVE":return a.MLjqui.string.endsWith(b.toString(),c.toString());case"STARTS_WITH_CASE_SENSITIVE":return a.MLjqui.string.startsWith(b.toString(),c.toString());case"CONTAINS":return a.MLjqui.string.containsIgnoreCase(b.toString(),c.toString());case"CONTAINS_CASE_SENSITIVE":return a.MLjqui.string.contains(b.toString(),c.toString());case"DOES_NOT_CONTAIN":return!a.MLjqui.string.containsIgnoreCase(b.toString(),c.toString());case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return!a.MLjqui.string.contains(b.toString(),c.toString());default:return!0}},h=new Array;if(c&&c.indexOf&&(c.indexOf("|")>=0||c.indexOf(" AND ")>=0||c.indexOf(" OR ")>=0||c.indexOf(" and ")>=0||c.indexOf(" or ")>=0)){var i=g(e,c);if(i)return i;c=c.toString();var j=c.indexOf(" AND ")>=0?c.split(" AND "):new Array,k=c.indexOf(" OR ")>=0?c.split(" OR "):new Array,l=c.indexOf(" and ")>=0?c.split(" and "):new Array,m=c.indexOf(" or ")>=0?c.split(" or "):new Array;j=j.concat(l),k=k.concat(m);var n=c.indexOf("|")>=0?c.split("|"):new Array;if(n.length>0)for(var o=0;o0)for(var o=0;o=0&&h.push(j[o]);if(k.length>0)for(var o=0;o=0&&h.push(k[o]);for(var p=void 0,q=0;q=0){var r=b.toString().split("..");2==r.length&&(i=e>=r[0]&&e<=r[1])}else var i=g(e,b);var s=q=0&&(h=c.toString().split(".."),2==h.length)?e>=h[0]&&e<=h[1]:g(e,c)}},m=function(b,c,d,e){this.filtervalue=b,this.type="datefilter";var f=this;if(void 0!=d&&void 0!=e){var g=a.MLjqui.dataFormat.parsedate(b,d,e);if(null!=g)this.filterdate=g;else{var h=a.MLjqui.dataFormat.tryparsedate(b,e);null!=h&&(this.filterdate=h)}}else{var i=new Date(b);"NaN"==i.toString()||"Invalid Date"==i.toString()?this.filterdate=a.MLjqui.dataFormat.tryparsedate(b):this.filterdate=i}if(!this.filterdate){var i=new Date(b);"NaN"==i.toString()||"Invalid Date"==i.toString()?this.filterdate=a.MLjqui.dataFormat.tryparsedate(b):this.filterdate=i}this.comparisonoperator=c,this.evaluate=function(b){var c=this.filtervalue,g=this.comparisonoperator;if(null==b||void 0==b||""==b){if("NOT_NULL"==g)return!1;if("NULL"==g)return!0;switch(g){case"EQUAL":return b==c;case"NOT_EQUAL":return b!=c}return!1}if("NULL"==g)return!1;if("NOT_NULL"==g)return!0;var h=new Date;h.setFullYear(1900,0,1),h.setHours(12,0,0,0);try{var i=new Date(b);b="NaN"==i.toString()||"Invalid Date"==i.toString()?a.MLjqui.dataFormat.tryparsedate(b):i,h=b;var j=!1;if(void 0!=d&&void 0!=e&&(d.indexOf("t")>=0||d.indexOf("T")>=0||d.indexOf(":")>=0||d.indexOf("f")>=0)&&(j=!0,c&&-1==c.toString().indexOf(":"))){var k=a.MLjqui.dataFormat.tryparsedate(c.toString()+":00",e);null!=k&&(f.filterdate=k)}j||(h.setHours(0),h.setMinutes(0),h.setSeconds(0))}catch(l){if(""!=b.toString())return!1}if(null!=f.filterdate)c=f.filterdate;else if(c&&c.indexOf&&(-1!=c.indexOf(":")||!isNaN(parseInt(c)))){var m=new Date(h);m.setHours(12,0,0,0);for(var n=c.split(":"),o=0;oc;case"GREATER_THAN_OR_EQUAL":return b>=c;case"LESS_THAN":return c>b;case"LESS_THAN_OR_EQUAL":return c>=b;case"STARTS_WITH":return a.MLjqui.string.startsWithIgnoreCase(b.toString(),c.toString());case"ENDS_WITH":return a.MLjqui.string.endsWithIgnoreCase(b.toString(),c.toString());case"ENDS_WITH_CASE_SENSITIVE":return a.MLjqui.string.endsWith(b.toString(),c.toString());case"STARTS_WITH_CASE_SENSITIVE":return a.MLjqui.string.startsWith(b.toString(),c.toString());case"CONTAINS":return a.MLjqui.string.containsIgnoreCase(b.toString(),c.toString());case"CONTAINS_CASE_SENSITIVE":return a.MLjqui.string.contains(b.toString(),c.toString());case"DOES_NOT_CONTAIN":return!a.MLjqui.string.containsIgnoreCase(b.toString(),c.toString());case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return!a.MLjqui.string.contains(b.toString(),c.toString());default:return!0}},q=new Array;if(c&&c.indexOf&&(c.indexOf("|")>=0||c.indexOf(" AND ")>=0||c.indexOf(" OR ")>=0||c.indexOf(" and ")>=0||c.indexOf(" or ")>=0)){var k=p(h,c);if(k)return k;var r=c.indexOf(" AND ")>=0?c.split(" AND "):new Array,s=c.indexOf(" OR ")>=0?c.split(" OR "):new Array,t=c.indexOf(" and ")>=0?c.split(" and "):new Array,u=c.indexOf(" or ")>=0?c.split(" or "):new Array;r=r.concat(t),s=s.concat(u);var v=c.indexOf("|")>=0?c.split("|"):new Array;if(v.length>0)for(var o=0;o0)for(var o=0;o=0&&q.push(r[o]);if(s.length>0)for(var o=0;o=0&&q.push(s[o]);for(var w=void 0,x=0;x=0){var y=b.toString().split("..");2==y.length&&(k=h>=y[0]&&h<=y[1])}else var k=p(h,b);var z=x=0&&(q=c.toString().split(".."),2==q.length)?h>=q[0]&&h<=q[1]:p(h,c)}},n=function(a,b,c){this.filtervalue=a,this.comparisonoperator=b,this.evaluate=function(a,b){return c(this.filtervalue,a,this.comparisonoperator)}}}}(MLjquiBaseFramework),function(a){a.MLjqui.MLjquiWidget("MLjquiTabs","",{}),a.extend(a.MLjqui._MLjquiTabs.prototype,{defineInstance:function(){var b={scrollAnimationDuration:200,enabledHover:!0,disabled:!1,collapsible:!1,animationType:"none",enableScrollAnimation:!0,contentTransitionDuration:450,toggleMode:"click",selectedItem:0,height:"auto",width:"auto",position:"top",selectionTracker:!1,scrollable:!0,scrollPosition:"right",scrollStep:70,autoHeight:!0,headerHeight:null,showCloseButtons:!1,canCloseAllTabs:!0,closeButtonSize:16,arrowButtonSize:16,keyboardNavigation:!0,reorder:!1,selectionTrackerAnimationDuration:300,_isTouchDevice:!1,roundedCorners:!0,_headerExpandingBalance:0,_dragStarted:!1,_tabCaptured:!1,_lastUnorderedListPosition:0,_selectedItem:0,_titleList:[],_contentList:[],_contentWrapper:null,_unorderedList:null,_scrollTimeout:null,isCollapsed:!1,touchMode:!1,initTabContent:null,enableDropAnimation:!1,_currentEvent:null,_needScroll:!0,_isAnimated:{},_events:["created","selected","add","removed","enabled","disabled","selecting","unselecting","unselected","dragStart","dragEnd","locked","unlocked","collapsed","expanded","tabclick"],_initTabContentList:[],_invalidArgumentExceptions:{invalidScrollAnimationDuration:"The scroll animation duration is not valid!",invalidWidth:"Width you've entered is invalid!",invalidHeight:"Height you've entered is invalid!",invalidAnimationType:"You've entered invalid animation type!",invalidcontentTransitionDuration:"You've entered invalid value for contentTransitionDuration!",invalidToggleMode:"You've entered invalid value for toggleMode!",invalidPosition:"You've entered invalid position!",invalidScrollPosition:"You've entered invalid scroll position!",invalidScrollStep:"You've entered invalid scroll step!",invalidStructure:"Invalid structure!",invalidArrowSize:"Invalid scroll button size!",invalidCloseSize:"Invalid close button size!"},aria:{"aria-disabled":{name:"disabled",type:"boolean"}},rtl:!1};return a.extend(!0,this,b),b},createInstance:function(){a.MLjqui.aria(this),this.host.addClass(this.toThemeProperty("MLjqui-tabs")),this.host.addClass(this.toThemeProperty("MLjqui-widget")),this.host.addClass(this.toThemeProperty("MLjqui-widget-content")),this.host.attr("role","tablist"),this._unorderedList=this.host.children("ul"),this._titleList=this.host.children("ul").children("li"),this._contentList=this.host.children("div"),this._selectedItem=this.selectedItem,this._isTouchDevice=a.MLjqui.mobile.isTouchDevice(),this._needScroll=this.scrollable,this.selectionTracker&&(this.selectionTracker=this._seletionTrackerBrowserCheck()),this._isTouchDevice&&(this.reorder=!1,this.keyboardNavigation=!1);for(var b=this.length();b;)b--,this._titleList[b]=a(this._titleList[b]),this._titleList[b].attr("role","tab"),this._contentList[b]=a(this._contentList[b]),this._contentList[b].attr("role","tabpanel");this._validateProperties(),this._refresh(),this._moveSelectionTrack(this._selectedItem,0),this.disabled&&this.disable(),this.element.tabIndex=0,this._raiseEvent(0),this._enableWindowResize()},_hiddenParent:function(){var b=this;if("none"==b.host.css("display"))return!0;var c=!1;return a.each(b.host.parents(),function(){return"none"==a(this).css("display")?(c=!0,!1):void 0}),c},_enableWindowResize:function(){var b=this,c=a.MLjqui.isHidden(b.host);a.MLjqui.utilities.resize(this.host,function(){c?(b._uiRefresh(!0),c=!1):b.refresh()})},resize:function(b,c){this.width=b,this.height=c;var d=a.MLjqui.isHidden(this.host);d?(this._uiRefresh(!0),d=!1):this.refresh()},refresh:function(a){1==a&&void 0!=a||this._setSize()},_seletionTrackerBrowserCheck:function(){var b="Browser CodeName: "+navigator.appCodeName;return b+="Browser Name: "+navigator.appName,b+="Browser Version: "+navigator.appVersion,b+="Platform: "+navigator.platform,b+="User-agent header: "+navigator.userAgent,-1!=b.indexOf("IEMobile")?!1:-1!=b.indexOf("Windows Phone OS")?!1:!(a.MLjqui.browser.msie&&a.MLjqui.browser.version<=7)},render:function(){this._refresh()},_uiRefresh:function(a){if(this._unorderedListLeftBackup=this._unorderedList.css("left"),a&&this._render(),this._addStyles(),this._performLayout(),this._prepareTabs(),this._removeEventHandlers(),this._addEventHandlers(),"auto"===this._unorderedListLeftBackup&&(this._unorderedListLeftBackup=this._getArrowsDisplacement()),this._unorderedList.css("left",this._unorderedListLeftBackup),this.rtl&&this.scrollable&&this._rightArrow&&"hidden"!=this._rightArrow.css("visibility")){var b=2*this.arrowButtonSize,c=this.host.width()-parseInt(this._unorderedList.width()+b+ +parseInt(this._unorderedList.css("margin-left")),10);this._unorderedList.css("left",c+"px")}},_refresh:function(){a.MLjqui.isHidden(this.host)||this._uiRefresh(!0)},_addStyles:function(){this._unorderedList.addClass(this.toThemeProperty("MLjqui-tabs-title-container")),this._unorderedList.css({outline:"none","white-space":"nowrap","margin-top":"0px","margin-bottom":"0px",padding:"0px",background:"transparent",border:"none","border-style":"none","text-indent":"0px"});for(var a=this.length();a;)switch(a--,this._titleList[a].removeClass(),this._titleList[a].css("padding",""),this._titleList[a].addClass("MLjqui-reset"),this._titleList[a].addClass("MLjqui-disableselect"),this._titleList[a].addClass(this.toThemeProperty("MLjqui-tabs-title")),this._titleList[a].addClass(this.toThemeProperty("MLjqui-item")),"bottom"==this.position&&this._titleList[a].addClass(this.toThemeProperty("MLjqui-tabs-title-bottom")),this._titleList[a].disabled&&(this._titleList[a].addClass(this.toThemeProperty("MLjqui-tabs-title-disable")),this._titleList[a].addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))),this._titleList[a].removeClass(this.toThemeProperty("MLjqui-rc-b")),this._titleList[a].removeClass(this.toThemeProperty("MLjqui-rc-t")),this._contentList[a].removeClass(this.toThemeProperty("MLjqui-rc-b")),this._contentList[a].removeClass(this.toThemeProperty("MLjqui-rc-t")),this.position){case"top":this._titleList[a].addClass(this.toThemeProperty("MLjqui-rc-t")),this._contentList[a].addClass(this.toThemeProperty("MLjqui-rc-b"));break;case"bottom":this._titleList[a].addClass(this.toThemeProperty("MLjqui-rc-b")),this._contentList[a].addClass(this.toThemeProperty("MLjqui-rc-t"))}if(this.selectionTracker)switch(this._selectionTracker.removeClass(this.toThemeProperty("MLjqui-rc-b")),this._selectionTracker.removeClass(this.toThemeProperty("MLjqui-rc-t")),this.position){case"top":this._selectionTracker.addClass(this.toThemeProperty("MLjqui-rc-t"));break;case"bottom":this._selectionTracker.addClass(this.toThemeProperty("MLjqui-rc-b"))}},_raiseEvent:function(b,c){var d=new a.Event(this._events[b]);d.owner=this,d.args=c,6!==b&&7!==b||(d.cancel=!1,this._currentEvent=d);var e="";try{if(e=this.host.trigger(d),1==b){var f=this;if(this.selectionTracker||"none"!=this.animationType)setTimeout(function(){f._initTabContentList[f.selectedItem]||f.initTabContent&&(f.initTabContent(f.selectedItem),f._initTabContentList[f.selectedItem]=!0);var b=new a.Event("loadContent");b.owner=this,f._contentList.length>0&&f._contentList[f.selectedItem]&&f._contentList[f.selectedItem].find("div").trigger(b)},50+f.selectionTrackerAnimationDuration);else{var d=new a.Event("loadContent");f._initTabContentList[f.selectedItem]||f.initTabContent&&(f.initTabContent(f.selectedItem),f._initTabContentList[f.selectedItem]=!0),d.owner=this;var d=new a.Event("resize");this.host.trigger(d)}}}catch(g){g&&console&&console.log(g)}return e},_getArrowsDisplacement:function(){if(!this._needScroll)return 0;var a,b=this.arrowButtonSize,c=this.arrowButtonSize;return a="left"===this.scrollPosition?b+c:"both"===this.scrollPosition?b:0},_scrollRight:function(a,b){this._unorderedList.stop(),this._unlockAnimation("unorderedList");var c,d,e=parseInt(this._unorderedList.width()+parseInt(this._unorderedList.css("margin-left")),10),f=parseInt(this.host.width(),10),g=parseInt(this._unorderedList.css("left"),10),h=this._getArrowsDisplacement(),i=0,j=void 0;this.scrollable?(c=parseInt(this._leftArrow.outerWidth(),10),d=parseInt(this._rightArrow.outerWidth(),10)):(c=0,d=0),a=this.enableScrollAnimation?a:0,parseInt(this._headerWrapper.width(),10)>parseInt(this._unorderedList.css("margin-left"))+parseInt(this._unorderedList.width(),10)?i=h:Math.abs(g)+this.scrollStepparseInt(this._unorderedList.css("left"),10)+4&&(j=f-e-c-d+parseInt(this._titleList[this._selectedItem].position().left))),this._performScrollAnimation(i,j,a)},_scrollLeft:function(a,b){this._unorderedList.stop(),this._unlockAnimation("unorderedList");var c=parseInt(this._unorderedList.css("left")),d=this._getArrowsDisplacement(),e=0,f=void 0;a=this.enableScrollAnimation?a:0,parseInt(this._headerWrapper.width())>=parseInt(this._unorderedList.width())?e=d:c+this.scrollStepparseInt(this._unorderedList.css("left"))+4&&(f=parseInt(this._titleList[this._selectedItem].position().left))),this._performScrollAnimation(e,f,a)},_performScrollAnimation:function(a,b,c){var d=this;void 0!==b&&this._moveSelectionTrack(this._selectedItem,0,b),this._lockAnimation("unorderedList"),this._unorderedList.animate({left:a},c,function(){d._moveSelectionTrack(d.selectedItem,0),d._unlockAnimation("unorderedList")})},_addKeyboardHandlers:function(){var b=this;this.keyboardNavigation&&this.addHandler(this.host,"keydown",function(c){if(!b._activeAnimation()){var d=b._selectedItem,e=b.selectionTracker,f=b.getContentAt(d);if(a(c.target).ischildof(f))return!0;switch(c.keyCode){case 37:return b.rtl?b.next():b.previous(),!1;case 39:return b.rtl?b.previous():b.next(),!1;case 36:return b.first(),!1;case 35:return b.last(),!1;case 27:b._tabCaptured&&(b._cancelClick=!0,b._uncapture(null,b.selectedItem),b._tabCaptured=!1)}b.selectionTracker=e}return!0})},_addScrollHandlers:function(){var b=this;this.addHandler(this._leftArrow,"mousedown",function(){b._startScrollRepeat(!0,b.scrollAnimationDuration)}),this.addHandler(this._rightArrow,"mousedown",function(){b._startScrollRepeat(!1,b.scrollAnimationDuration)}),this.addHandler(this._rightArrow,"mouseleave",function(){clearTimeout(b._scrollTimeout)}),this.addHandler(this._leftArrow,"mouseleave",function(){clearTimeout(b._scrollTimeout)}),this.addHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpScrollDocumentHandler,this),this.addHandler(a(document),"mouseleave.tab"+this.element.id,this._mouseLeaveScrollDocumentHandler,this)},_mouseLeaveScrollDocumentHandler:function(a){var b=a.data;b._scrollTimeout&&clearTimeout(b._scrollTimeout)},_mouseUpScrollDocumentHandler:function(a){var b=a.data;clearTimeout(b._scrollTimeout)},_mouseUpDragDocumentHandler:function(a){var b=a.data;b._tabCaptured&&b._dragStarted&&b._uncapture(a),b._tabCaptured=!1},_addReorderHandlers:function(){this.addHandler(a(document),"mousemove.tab"+this.element.id,this._moveElement,this),this.addHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpDragDocumentHandler,this)},_addEventHandlers:function(){for(var b=this.length();b;)b--,this._addEventListenerAt(b);this.keyboardNavigation&&this._addKeyboardHandlers(),this.scrollable&&this._addScrollHandlers(),this.reorder&&!this._isTouchDevice&&this._addReorderHandlers();var c=this;try{if((""!=document.referrer||window.frameElement)&&null!=window.top&&window.top!=window.self){var d=function(a){c._tabCaptured&&(c._cancelClick=!0,c._uncapture(null,c.selectedItem),c._tabCaptured=!1)},e=null;window.parent&&document.referrer&&(e=document.referrer),e&&-1!=e.indexOf(document.location.host)&&window.top.document&&this.addHandler(a(window.top.document),"mouseup",d)}}catch(f){}},focus:function(){try{this.host.focus();var a=this;setTimeout(function(){a.host.focus()},25)}catch(b){}},_getFocusedItem:function(a,b){for(var c=this.length();c;){c--;var d=this._titleList[c],e=parseInt(d.outerWidth(!0)),f=parseInt(d.offset().left),g=(parseInt(this._unorderedList.offset().left),parseInt(this.host.offset().left),f);if(a>=g&&g+e>=a&&d!==this._capturedElement&&!this._titleList[c].locked&&this._titleList[c].disabled!==!0)return c}return-1},_uncapture:function(b){var c=this.selectionTracker;this._unorderedListLeftBackup=this._unorderedList.css("left"),this._dragStarted=!1,this._tabCaptured=!1;var d=this._indexOf(this._capturedElement);if(this._capturedElement){switch(this.position){case"top":this._capturedElement.css("bottom",0);break;case"bottom":this._capturedElement.css("top",0)}if(b)var e=this._getFocusedItem(b.clientX,b.clientY);-1!==e&&b?(this._raiseEvent(10,{item:d,dropIndex:e}),this._reorderItems(e,d)):this._capturedElement.css("left",0),a.each(this._titleList,function(){this.css("position","static")}),this._reorderHeaderElements(),this._unorderedList.css({position:"relative",top:"0px"}),this._prepareTabs(),-1!==e&&b?(this._moveSelectionTrack(this._selectedItem,0),this._addSelectStyle(this._selectedItem,!0)):(this._selectedItem=d,this._moveSelectionTrack(d,0),this._addSelectStyle(this._selectedItem,!0)),document.selection&&document.selection.clear(),this._unorderedList.css("left",this._unorderedListLeftBackup),this.selectionTracker=c}},_reorderItems:function(a,b){var c=this._titleList[this.selectedItem];this._contentList[b];"undefined"==typeof this._capturedElement&&(this._capturedElement=this._titleList[b]),this._titleList[b].remove(),a>b?this._titleList[b].insertAfter(this._titleList[a]):this._titleList[b].insertBefore(this._titleList[a]),this._reorderElementArrays(a,b),this._getSelectedItem(c),this._removeEventHandlers(),this._addEventHandlers()},_reorderElementArrays:function(a,b){var c=(this._titleList[this.selectedItem],this._contentList[b]);if(a>b){for(var d=b;a>=d;d++)this._titleList[d]=this._titleList[d+1],this._contentList[d]=this._contentList[d+1];this._contentList[a]=c,this._titleList[a]=this._capturedElement}else{for(var d=b;d>=a;d--)this._titleList[d]=this._titleList[d-1],this._contentList[d]=this._contentList[d-1];this._contentList[a]=c,this._titleList[a]=this._capturedElement}},getSelectedItem:function(){return this.selectedItem},_getSelectedItem:function(a){for(var b=this.length();b;)if(b--,this._titleList[b]===a){this._selectedItem=this.selectedItem=b;break}},_moveElement:function(a,b){var b=a.data;b._tabCaptured&&(document.selection&&document.selection.clear(),b._dragStarted?(b._performDrag(a),clearTimeout(b._scrollTimeout)):(unorderedListLeft=-parseInt(b._unorderedList.css("left"),10),(a.clientX+unorderedListLeft>b._startX+3||a.clientX+unorderedListLeftthis._headerWrapper.offset().left+parseInt(this._headerWrapper.width(),10)?(this._scrollRight(this.scrollAnimationDuration),this._capturedElement.css("left",parseInt(this._capturedElement.css("left"))+this._lastUnorderedListPosition-b)):(this._unorderedList.stop(),this._unlockAnimation("unorderedList"),clearTimeout(this._scrollTimeout));var c=this;this._scrollTimeout=setTimeout(function(){c._dragScroll(a)},this.scrollAnimationDuration),this._lastUnorderedListPosition=b},_captureElement:function(a,b){this._tabCaptured||this._titleList[b].locked||this._titleList[b].disabled===!0||this._activeAnimation()||(unorderedListLeft=-parseInt(this._unorderedList.css("left"),10),this._startX=unorderedListLeft+a.clientX,this._startY=a.clientY,this._lastX=a.clientX,this._lastY=a.clientY,this._tabCaptured=!0,this._capturedElement=this._titleList[b])},_titleInteractionTrigger:function(a){this._headerExpandingBalance>0&&this._removeOppositeBorder(),this._selectedItem!==a?(this.select(this._titleList[a],"toggle"),this._titleList[a].collapsed=!1,this.collapsible||("auto"!==this.height?this._contentWrapper.css("visibility","visible"):this._contentWrapper.css("display","block"))):this.collapsible&&(this.isCollapsed?this.expand():this.collapse())},collapse:function(){var a=this._selectedItem,b=this;this.isCollapsed=!0,"auto"!==b.height?b._contentWrapper.css("visibility","hidden"):b._contentWrapper.hide(),b._raiseEvent(13,{item:a}),"top"==this.position?(b._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-collapsed")),b.host.addClass(this.toThemeProperty("MLjqui-tabs-collapsed"))):(b._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-collapsed-bottom")),b.host.addClass(this.toThemeProperty("MLjqui-tabs-collapsed-bottom")))},expand:function(){var a=this._selectedItem,b=this;this.isCollapsed=!1,this._select(a,b.contentTransitionDuration,null,!1,!0),"auto"!==b.height?b._contentWrapper.css("visibility","visible"):b._contentWrapper.show(),b._raiseEvent(14,{item:a}),"top"==this.position?(b._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-collapsed")),b.host.removeClass(this.toThemeProperty("MLjqui-tabs-collapsed"))):(b._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-collapsed-bottom")),b.host.removeClass(this.toThemeProperty("MLjqui-tabs-collapsed-bottom")))},_addSelectHandler:function(a){var b=this;this.addHandler(this._titleList[a],"selectstart",function(a){return!1}),this.addHandler(this._titleList[a],this.toggleMode,function(a){return function(){return b._raiseEvent("15",{item:a}),b._tabCaptured||b._cancelClick||b._titleInteractionTrigger(a),!0}}(a))},_addDragDropHandlers:function(a){var b=this;this.addHandler(this._titleList[a],"mousedown",function(c){return b._captureElement(c,a),!1}),this.addHandler(this._titleList[a],"mouseup",function(c){return b._tabCaptured&&b._dragStarted?(b._cancelClick=!0,b._uncapture(c,a)):b._cancelClick=!1,b._tabCaptured=!1,!1})},_removeHoverStates:function(){var b=this;a.each(this._titleList,function(){this.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-top")),this.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))})},_addHoverHandlers:function(a){var b=this,c=this._titleList[a];this.addHandler(c,"mouseenter",function(d){if(a!=b._selectedItem&&("top"==b.position?c.addClass(b.toThemeProperty("MLjqui-tabs-title-hover-top")):c.addClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom")),c.addClass(b.toThemeProperty("MLjqui-fill-state-hover")),b.showCloseButtons)){var e=c.children(0).children(b.toThemeProperty(".MLjqui-tabs-close-button",!0));e.addClass(b.toThemeProperty("MLjqui-tabs-close-button-hover",!0))}}),this.addHandler(c,"mouseleave",function(d){if(a!=b._selectedItem&&("top"==b.position?c.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-top")):c.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom")),c.removeClass(b.toThemeProperty("MLjqui-fill-state-hover")),b.showCloseButtons)){ -var e=c.children(0).children(b.toThemeProperty(".MLjqui-tabs-close-button",!0));e.removeClass(b.toThemeProperty("MLjqui-tabs-close-button-hover",!0))}})},_addEventListenerAt:function(a){var b=this;if(!this._titleList[a].disabled){this.reorder&&!this._isTouchDevice&&this._addDragDropHandlers(a),this._addSelectHandler(a),this.enabledHover&&this._addHoverHandlers(a);var c=this._titleList[a].find(this.toThemeProperty(".MLjqui-tabs-close-button",!0));this.removeHandler(c,"click"),this.addHandler(c,"click",function(c){return b.removeAt(a),!1})}},_removeEventHandlers:function(){for(var b=this.length();b;)b--,this._removeEventListenerAt(b);this.scrollable&&(this.removeHandler(this._leftArrow,"mousedown"),this.removeHandler(this._rightArrow,"mousedown")),this.removeHandler(a(document),"mousemove.tab"+this.element.id,this._moveElement),this.removeHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpScrollDocumentHandler),this.removeHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpDragDocumentHandler),this.removeHandler(this.host,"keydown")},_removeEventListenerAt:function(a){this.removeHandler(this._titleList[a],this.toggleMode),this.removeHandler(this._titleList[a],"mouseenter"),this.removeHandler(this._titleList[a],"mouseleave"),this.removeHandler(this._titleList[a],"mousedown"),this.removeHandler(this._titleList[a],"mouseup");var b=this._titleList[a].children(0).children(this.toThemeProperty(".MLjqui-tabs-close-button",!0));this.removeHandler(b,"click")},_moveSelectionTrack:function(a,b,c){var d=this;if(-1!=a&&0!=this._titleList.length&&!(a>=this._titleList.length)&&this.selectionTracker&&this._selectionTracker){if(this._selectionTracker.stop(),this._unlockAnimation("selectionTracker"),void 0===c){var e=parseInt(this._titleList[a].position().left);isNaN(parseInt(this._unorderedList.css("left")))||(e+=parseInt(this._unorderedList.css("left"))),isNaN(parseInt(this._unorderedList.css("margin-left")))||(e+=parseInt(this._unorderedList.css("margin-left"))),isNaN(parseInt(this._titleList[a].css("margin-left")))||(e+=parseInt(this._titleList[a].css("margin-left"))),!isNaN(parseInt(this._titleList[a].css("margin-right")))}else var e=c;var f=0,g=0;"top"===this.position&&(f=parseInt(this._headerWrapper.height())-parseInt(this._titleList[a].outerHeight()),this.autoHeight||(g+=parseInt(this._titleList[a].css("margin-top")))),this._lockAnimation("selectionTracker");var h=parseInt(this._titleList[a].css("padding-left"))+parseInt(this._titleList[a].css("padding-right")),i="top"==this.position?0:1,j=parseInt(this._headerWrapper.css("padding-top")),k=parseInt(this._titleList[a].css("padding-top"))+parseInt(this._titleList[a].css("padding-bottom"));this._selectionTracker.css("visibility","visible"),this._moveSelectionTrackerContainer.css("visibility","visible");var l=parseInt(this._titleList[a].css("margin-top"));isNaN(l)&&(l=0),this._selectionTracker.animate({top:j+l-i,left:e+"px",height:parseInt(this._titleList[a].height()+k),width:this._titleList[a].width()+h},b,function(){d._unlockAnimation("selectionTracker"),d._selectionTracker.css("visibility","hidden"),d._addSelectStyle(a,!0),d._moveSelectionTrackerContainer.css("visibility","hidden")})}},destroy:function(){a.MLjqui.utilities.resize(this.host,null,!0),this.host.remove()},_switchTabs:function(a,b){if(a!==b&&!this._activeAnimation()&&!this._tabCaptured){var c=this;return this._raiseEvent(7,{item:b}),this._raiseEvent(6,{item:a}),this._currentEvent&&this._currentEvent.cancel?void(this._currentEvent=null):(this._unselect(b,null,!0),this._select(a,c.contentTransitionDuration,null,!0),!0)}return!1},_activeAnimation:function(){for(child in this._isAnimated)if(this._isAnimated.hasOwnProperty(child)&&this._isAnimated[child])return!0;return!1},_indexOf:function(a){for(var b=this.length();b;)if(b--,this._titleList[b][0]===a[0]||this._contentList[b][0]===a[0])return b;return-1},_validateProperties:function(){try{if(this.scrollAnimationDuration<0||isNaN(this.scrollAnimationDuration))throw new Error(this._invalidArgumentExceptions.invalidScrollAnimationDuration);if(parseInt(this.width)<0&&"auto"!==this.width)throw new Error(this._invalidArgumentExceptions.invalidWidth);if(parseInt(this.height)<0&&"auto"!==this.height)throw new Error(this._invalidArgumentExceptions.invalidHeight);if("none"!==this.animationType&&"fade"!==this.animationType)throw new Error(this._invalidArgumentExceptions.invalidAnimationType);if(this.contentTransitionDuration<0||isNaN(this.contentTransitionDuration))throw new Error(this._invalidArgumentExceptions.invalidcontentTransitionDuration);if("click"!==this.toggleMode&&"dblclick"!==this.toggleMode&&"mouseenter"!==this.toggleMode&&"none"!==this.toggleMode)throw new Error(this._invalidArgumentExceptions.invalidToggleMode);if("top"!==this.position&&"bottom"!==this.position)throw new Error(this._invalidArgumentExceptions.invalidPosition);if("left"!==this.scrollPosition&&"right"!==this.scrollPosition&&"both"!==this.scrollPosition)throw new Error(this._invalidArgumentExceptions.invalidScrollPosition);if(this.scrollStep<0||isNaN(this.scrollStep))throw new Error(this._invalidArgumentExceptions.invalidScrollStep);if(this._titleList.length!==this._contentList.length||0==this._titleList.length)throw new Error(this._invalidArgumentExceptions.invalidStructure);if(this.arrowButtonSize<0||isNaN(this.arrowButtonSize))throw new Error(this._invalidArgumentExceptions.invalidArrowSize);if(this.closeButtonSize<0||isNaN(this.closeButtonSize))throw new Error(this._invalidArgumentExceptions.invalidCloseSize)}catch(a){alert(a)}},_startScrollRepeat:function(a,b){var c=this;a?this._scrollLeft(b):this._scrollRight(b),this._scrollTimeout&&clearTimeout(this._scrollTimeout),this._scrollTimeout=setTimeout(function(){c._startScrollRepeat(a,c.scrollAnimationDuration)},b)},_performLayout:function(){for(var a=this.length();a;)a--,"top"!==this.position&&"bottom"!==this.position||(this.rtl?this._titleList[a].css("float","right"):this._titleList[a].css("float","left"));this._fitToSize(),this._performHeaderLayout(),this._fitToSize()},updatetabsheader:function(){this._performHeaderLayout()},_setSize:function(){this._fitToSize(),this._positionArrows(this._totalItemsWidth),this._totalItemsWidth>this.element.offsetWidth?this._unorderedList.width(this._totalItemsWidth):this._unorderedList[0].style.width=this.element.offsetWidth-2+"px",this._fitToSize()},_addArrows:function(){this._leftArrow&&this._rightArrow&&(this._leftArrow.remove(),this._rightArrow.remove()),this._leftArrow=a('
          '),this._rightArrow=a('
          '),this._leftArrow.addClass(this.toThemeProperty("MLjqui-tabs-arrow-background")),this._rightArrow.addClass(this.toThemeProperty("MLjqui-tabs-arrow-background")),this._leftArrow.addClass(this.toThemeProperty("MLjqui-widget-header")),this._rightArrow.addClass(this.toThemeProperty("MLjqui-widget-header")),this._headerWrapper.append(this._leftArrow),this._headerWrapper.append(this._rightArrow),this._leftArrow.width(this.arrowButtonSize),this._leftArrow.height("100%"),this._rightArrow.width(this.arrowButtonSize),this._rightArrow.height("100%"),this._leftArrow.css({"z-index":"30"}),this._rightArrow.css({"z-index":"30"}),this._leftArrow.css("display","none"),this._rightArrow.css("display","none")},_tabsWithVisibleCloseButtons:function(){if(!this.showCloseButtons)return 0;var b=this.length();return a.each(this._titleList,function(){var a=this.attr("hasclosebutton");void 0!=a&&null!=a&&("false"!=a&&0!=a||b--)}),b},_calculateTitlesSize:function(){var b=0,c=0,d=this.length();for(this.rtl&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<8&&(this._measureItem=a(""),a(document.body).append(this._measureItem));d;){if(d--,this._measureItem&&(this._measureItem.html(this._titleList[d].html()),this._titleList[d].width(this._measureItem.width())),this._titleList[d].css("position","static"),this._titleList[d].find(this.toThemeProperty(".MLjqui-tabs-close-button",!0)).css("display","none"),c+=parseInt(this._titleList[d].outerWidth(!0)),b1)){var g=!1;this.hiddenCloseButtons&&1==this.hiddenCloseButtons[d]&&(this._titleList[d].find(this.toThemeProperty(".MLjqui-tabs-close-button",!0)).css("display","none"),g=!0),g||(c+=this.closeButtonSize,this._titleList[d].find(this.toThemeProperty(".MLjqui-tabs-close-button",!0)).css("display","block"))}this._titleList[d].height(this._titleList[d].height())}return this._measureItem&&this._measureItem.remove(),{height:b,width:10+c}},_reorderHeaderElements:function(){if(this.selectionTracker&&this._moveSelectionTrackerContainer.css({position:"absolute",height:"100%",top:"0px",left:"0px",width:"100%"}),this._headerWrapper.css({position:"relative",left:"0px",top:"0px"}),this.scrollable){this._rightArrow.css({width:this.arrowButtonSize,position:"absolute",top:"0px"}),this._leftArrow.css({width:this.arrowButtonSize,position:"absolute",top:"0px"});var a=this.theme&&-1!=this.theme.indexOf("ui-")?3:0;a>0&&(this._rightArrow.addClass(this.toThemeProperty("MLjqui-rc-r")),this._leftArrow.addClass(this.toThemeProperty("MLjqui-rc-l")));var b=this.scrollPosition;switch(this.rtl&&("left"==b&&(b="right"),"right"==b&&(b="left")),b){case"both":this._rightArrow.css("right","0px"),this._leftArrow.css("left","0px");break;case"left":this._rightArrow.css("left",this.arrowButtonSize+"px"),this._leftArrow.css("left","0px");break;case"right":this._rightArrow.css("right",-a+"px"),this._leftArrow.css("right",this.arrowButtonSize-a+"px")}}},_positionArrows:function(a){a>=parseInt(this._headerWrapper[0].offsetWidth)&&this.scrollable?(this._needScroll=!0,0===this._unorderedList.position().left&&(this._unorderedListLeftBackup=this._getArrowsDisplacement()+"px"),this._leftArrow.css("display","block"),this._rightArrow.css("display","block")):(this._needScroll=!1,this._leftArrow[0].style.display="none",this._rightArrow[0].style.display="none",this._unorderedList[0].style.left="0px")},_performHeaderLayout:function(){this._removeSelectStyle();var b=this._calculateTitlesSize(),c=b.height,d=b.width;this._headerWrapper.height(c),this._unorderedList.height(c),null!=this.headerHeight&&"auto"!=this.headerHeight&&(this._headerWrapper.height(this.headerHeight),this._unorderedList.height(this.headerHeight)),d>this.host.width()?this._unorderedList.width(d):this._unorderedList.width(this.host.width()),a.MLjqui.browser.msie&&a.MLjqui.browser.version<8&&(this._unorderedList.css("position","relative"),this._headerWrapper.css("overflow","hidden")),this._reorderHeaderElements(),d+=parseInt(this._unorderedList.css("margin-left")),this._totalItemsWidth=d,this._positionArrows(d),this._unorderedList.css({position:"relative",top:"0px"}),this._verticalAlignElements(),this._moveSelectionTrack(this._selectedItem,0),this._addSelectStyle(this.selectedItem)},_verticalAlignElements:function(){var a=this.length();for(this._maxHeightTab();a;){a--;var b=this._titleList[a].find(".MLjqui-tabs-titleContentWrapper"),c=(b.height(),this._titleList[a].find(this.toThemeProperty(".MLjqui-tabs-close-button",!0))),d=parseInt(this._titleList[a].css("padding-top"));if(d||(d=0),this.autoHeight){var e=this._titleList[a].outerHeight(!0)-this._titleList[a].height(),f=parseInt(this._titleList[a].css("padding-top")),g=parseInt(this._titleList[a].css("padding-bottom")),h=parseInt(this._titleList[a].css("border-top-width")),i=parseInt(this._titleList[a].css("border-bottom-width"));this._titleList[a].height(this._unorderedList.outerHeight()-f-g-h-i)}else if("top"===this.position){var j=parseInt(this._unorderedList.height())-parseInt(this._titleList[a].outerHeight(!0));parseInt(this._titleList[a].css("margin-top"))!==j&&0!==j&&this._titleList[a].css("margin-top",j)}else this._titleList[a].height(this._titleList[a].height());this._titleList[a].children(0).height("100%");var k=parseInt(this._titleList[a].height()),l=parseInt(k)/2-parseInt(c.height())/2;c.css("margin-top",1+l);var m=parseInt(k)/2-parseInt(b.height())/2;b.css("margin-top",m)}if(this.scrollable){var e=parseInt(this._headerWrapper.outerHeight())-this.arrowButtonSize,n=e/2;this._rightArrow.children(0).css("margin-top",n),this._rightArrow.height("100%"),this._leftArrow.height("100%"),this._leftArrow.children(0).css("margin-top",n)}},_getImageUrl:function(a){var b=a.css("background-image");return b=b.replace('url("',""),b=b.replace('")',""),b=b.replace("url(",""),b=b.replace(")","")},_fitToSize:function(){var a=!1,b=!1,c=this;if(null!=c.width&&-1!=c.width.toString().indexOf("%")&&(a=!0),null!=c.height&&-1!=c.height.toString().indexOf("%")&&(b=!0),a&&(this.host[0].style.width=this.width,this._contentWrapper[0].style.width="100%"),b){this.host[0].style.height=this.height,this._contentWrapper[0].style.width="100%",this._contentWrapper[0].style.height="auto";var d=this.element.offsetHeight-this._headerWrapper[0].offsetHeight;this._contentWrapper[0].style.height=d+"px"}if(a||(this.host.width(this.width),"auto"!=this.width&&this._contentWrapper.css("width","100%")),!b)if("auto"!==this.height){this.host.height(this.height);var d=this.host.height()-this._headerWrapper.outerHeight();this._contentWrapper.height(d)}else this._contentWrapper.css("height","auto")},_maxHeightTab:function(){for(var a=this.length(),b=-1,c=-1;a;)a--,b');var b=this.toThemeProperty("MLjqui-tabs-selection-tracker-"+this.position);this._selectionTracker=a('
          '),this._selectionTracker.css("color","inherit"),this._moveSelectionTrackerContainer.append(this._selectionTracker),this._headerWrapper.append(this._moveSelectionTrackerContainer),this._selectionTracker.css({position:"absolute","z-index":"10",left:"0px",top:"0px",display:"inline-block"})},_addContentWrapper:function(){var b="none",c=void 0==this._contentWrapper;this._contentWrapper=this._contentWrapper||a('
          '),this._contentWrapper.addClass(this.toThemeProperty("MLjqui-widget-content"));for(var d=this.length();d;)d--,this._contentList[d].addClass(this.toThemeProperty("MLjqui-tabs-content-element"));c&&(this.host.find(".MLjqui-tabs-content-element").wrapAll(this._contentWrapper),this._contentWrapper=this.host.find(".MLjqui-tabs-content")),this.roundedCorners&&("top"==this.position?this._contentWrapper.addClass(this.toThemeProperty("MLjqui-rc-b")):this._contentWrapper.addClass(this.toThemeProperty("MLjqui-rc-t")),this.host.addClass(this.toThemeProperty("MLjqui-rc-all")))},_addHeaderWrappers:function(){var b=this.length();for(this._unorderedList.remove(),this._headerWrapper=this._headerWrapper||a('
          '),this._headerWrapper.remove(),"top"==this.position?this._headerWrapper.prependTo(this.host):this._headerWrapper.appendTo(this.host),this._unorderedList.appendTo(this._headerWrapper),this._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header")),this._headerWrapper.addClass(this.toThemeProperty("MLjqui-widget-header")),"bottom"==this.position?this._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-bottom")):this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-bottom")),this.roundedCorners&&("top"==this.position?(this._headerWrapper.addClass(this.toThemeProperty("MLjqui-rc-t")),this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-rc-b"))):(this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-rc-t")),this._headerWrapper.addClass(this.toThemeProperty("MLjqui-rc-b"))));b;){if(b--,this._titleList[b].children(".MLjqui-tabs-titleWrapper").length<=0){var c=a('
          ');c.append(this._titleList[b].html()),this._titleList[b].empty(),c.appendTo(this._titleList[b])}this._titleList[b].children(".MLjqui-tabs-titleWrapper").css("z-index","15")}},_render:function(){this._addCloseButtons(),this._addHeaderWrappers(),this._addContentWrapper(),this.selectionTracker&&this._addSelectionTracker(),this._addArrows()},_addCloseButton:function(b){var c=b;if(this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",!0)).length<=0&&this._titleList[c].find(".MLjqui-tabs-titleContentWrapper").length<=0){var d=a('
          '),e="left";this.rtl&&(e="right"),d.css("float",e),d.addClass("MLjqui-disableselect"),d.append(this._titleList[c].html()),this._titleList[c].html("");var f=a('
          ');f.css({height:this.closeButtonSize,width:this.closeButtonSize,"float":e,"font-size":"1px"});this._titleList[c].append(d),this._titleList[c].append(f),this.showCloseButtons?this.hiddenCloseButtons&&1==this.hiddenCloseButtons[b]&&f.css("display","none"):f.css("display","none")}},_addCloseButtons:function(){for(var a=this.length();a;)a--,this._addCloseButton(a)},_prepareTabs:function(){var a=this.length(),b=this.selectionTracker;for(this.selectionTracker=!1;a;)a--,this._selectedItem!==a&&this._unselect(a,null,!1);this._select(this._selectedItem,0,null,!1),this.selectionTracker=b,this.initTabContent&&(this._initTabContentList[this.selectedItem]||this._hiddenParent()||(this.initTabContent(this.selectedItem),this._initTabContentList[this.selectedItem]=!0))},_isValidIndex:function(a){return a>=0&&a=0&&void 0!=this._titleList[a]){var c=null;if(this.showCloseButtons){var c=this._titleList[a].children(0).children(this.toThemeProperty(".MLjqui-tabs-close-button",!0));this.hiddenCloseButtons&&1==this.hiddenCloseButtons[a]&&(c=null)}this._titleList[a].removeClass(this.toThemeProperty("MLjqui-fill-state-hover")),"top"==this.position?(this._titleList[a].removeClass(this.toThemeProperty("MLjqui-tabs-title-hover-top")),this._titleList[a].addClass(this.toThemeProperty("MLjqui-tabs-title-selected-top"))):(this._titleList[a].removeClass(this.toThemeProperty("MLjqui-tabs-title-hover-bottom")),this._titleList[a].addClass(this.toThemeProperty("MLjqui-tabs-title-selected-bottom"))),this._titleList[a].addClass(this.toThemeProperty("MLjqui-fill-state-pressed")),null!=c&&c.addClass(this.toThemeProperty("MLjqui-tabs-close-button-selected"))}},_addItemTo:function(a,b,c){if(b=0&&!this._tabCaptured){var e=this;this._contentList[b].stop(),"fade"==this.animationType?(this._contentList[b].css("display","none"),a.MLjqui.aria(e._titleList[b],"aria-selected",!1),a.MLjqui.aria(e._contentList[b],"aria-hidden",!0)):this.selectionTracker?setTimeout(function(){e._contentList[b].css("display","none"),a.MLjqui.aria(e._titleList[b],"aria-selected",!1),a.MLjqui.aria(e._contentList[b],"aria-hidden",!0)},this.selectionTrackerAnimationDuration):(this._contentList[b].css("display","none"),a.MLjqui.aria(e._titleList[b],"aria-selected",!1),a.MLjqui.aria(e._contentList[b],"aria-hidden",!0)),this._unselectCallback(b,c,d),this.selectionTracker||(this._titleList[b].removeClass(this.toThemeProperty("MLjqui-tabs-title-selected")),this._titleList[b].removeClass(this.toThemeProperty("MLjqui-fill-state-pressed")))}},_unselectCallback:function(a,b,c){c&&this._raiseEvent(8,{item:a}),b&&b()},disable:function(){for(var a=this.length();a;)a--,this.disableAt(a)},enable:function(){for(var a=this.length();a;)a--,this.enableAt(a)},getEnabledTabsCount:function(){var b=0;return a.each(this._titleList,function(){this.disabled||b++}),b},getDisabledTabsCount:function(){var b=0;return a.each(this._titleList,function(){this.disabled&&b++}),b},removeAt:function(a){if(this._isValidIndex(a)&&(this.canCloseAllTabs||this.length()>1)){this._removeHoverStates();var b=this,c=(this._titleList[this._selectedItem],parseInt(this._titleList[a].outerWidth(!0))),d=this.getTitleAt(a);this._unorderedList.width(parseInt(this._unorderedList.width())-c),this._titleList[a].remove(),this._contentList[a].remove();if(this._titleList.splice(a,1),this._contentList.splice(a,1),this._addStyles(),this._performHeaderLayout(),this._removeEventHandlers(),this._addEventHandlers(),this._raiseEvent(3,{item:a,title:d}),this._isAnimated={},this.selectedItem>0){this._selectedItem=-1;var e=this._getPreviousIndex(this.selectedItem);this.select(e)}else{this._selectedItem=-1;var e=this._getNextIndex(this.selectedItem);this.select(e)}if(parseInt(this._unorderedList.css("left"))>this._getArrowsDisplacement()&&this._unorderedList.css("left",this._getArrowsDisplacement()),parseInt(this._unorderedList.width())<=parseInt(this._headerWrapper.width())){var f=this.enableScrollAnimation?this.scrollAnimationDuration:0;this._lockAnimation("unorderedList"),this._unorderedList.animate({left:0},f,function(){b._unlockAnimation("unorderedList")})}}},removeFirst:function(){this.removeAt(0)},removeLast:function(){this.removeAt(this.length()-1)},disableAt:function(a){if(!this._titleList[a].disabled||void 0===this._titleList[a].disabled){if(this.selectedItem==a){var b=this.next();b||(b=this.previous())}this._titleList[a].disabled=!0,this.removeHandler(this._titleList[a],this.toggleMode),this.enabledHover&&this._titleList[a].off("mouseenter").off("mouseleave"),this._removeEventListenerAt(a),this._titleList[a].addClass(this.toThemeProperty("MLjqui-tabs-title-disable")),this._titleList[a].addClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this._raiseEvent(5,{item:a})}},enableAt:function(a){this._titleList[a].disabled&&(this._titleList[a].disabled=!1,this._addEventListenerAt(a),this._titleList[a].removeClass(this.toThemeProperty("MLjqui-tabs-title-disable")),this._titleList[a].removeClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this._raiseEvent(4,{item:a}))},addAt:function(b,c,d){if(b>=0||b<=this.length()){this._removeHoverStates();var e=a("
        • "+c+"
        • "),f=a("
          "+d+"
          ");e.addClass(this.toThemeProperty("MLjqui-tabs-title")),e.addClass(this.toThemeProperty("MLjqui-item")),f.addClass(this.toThemeProperty("MLjqui-tabs-content-element")),"bottom"==this.position&&e.addClass(this.toThemeProperty("MLjqui-tabs-title-bottom"));var g=!1;0==this._titleList.length?this._unorderedList.append(e):b=0?this._titleList[b].before(e):this._titleList[this.length()-1].after(e),f.appendTo(this._contentWrapper),this._addItemTo(this._titleList,b,e),this._addItemTo(this._contentList,b,f),this._selectedItem>b&&this._selectedItem++,this._switchTabs(b,this._selectedItem),this._selectedItem=b,this.showCloseButtons&&this._titleList.length>0&&this._addCloseButton(b),this._uiRefresh(g),this._raiseEvent(2,{item:b}),this._moveSelectionTrack(this._selectedItem,0)}},addFirst:function(a,b){this.addAt(0,a,b)},addLast:function(a,b){this.addAt(this.length(),a,b)},val:function(a){return 0==arguments.length||"object"==typeof a?this._selectedItem:(this.select(a),this._selectedItem)},select:function(a,b){"object"==typeof a&&(a=this._indexOf(a));var c=a>=0&&a0&&b0&&a<=this._titleList.length;)if(a--,!this._titleList[a].disabled)return a;return b},_getNextIndex:function(a){if(void 0==a||isNaN(a))return 0;for(var b=a;a>=0&&a=0&&be)c=-e+this._getArrowsDisplacement(),d=this._getArrowsDisplacement();else{if(!(e+h>j-this._getArrowsDisplacement()))return this._moveSelectionTrack(a,this.selectionTrackerAnimationDuration),!0;c=-e+g-h-(this.scrollable?2*this.arrowButtonSize-this._getArrowsDisplacement():0),d=g-h-this._getArrowsDisplacement()}return this._lockAnimation("unorderedList"),this._unorderedList.animate({left:c},this.scrollAnimationDuration,function(){return b._unlockAnimation("unorderedList"),b._moveSelectionTrack(b._selectedItem,0),!0}),this._moveSelectionTrack(a,this.selectionTrackerAnimationDuration,d),!0},isVisibleAt:function(a){if(void 0!=a&&-1!=a&&null!=a||(a=this.selectedItem),!this._isValidIndex(a))return!1;var b=parseInt(this._titleList[a].position().left)+parseInt(this._unorderedList.css("margin-left")),c=parseInt(this._unorderedList.css("left")),d=parseInt(this._headerWrapper.outerWidth(!0)),e=parseInt(this._titleList[a].outerWidth(!0)),f=c-this._getArrowsDisplacement(),g=d-this._getArrowsDisplacement()-f;return-f>b?!1:!(b+e>g)},isDisabled:function(a){return this._titleList[a].disabled},_lockAnimation:function(a){this._isAnimated&&(this._isAnimated[a]=!0)},_unlockAnimation:function(a){this._isAnimated&&(this._isAnimated[a]=!1)},propertiesChangedHandler:function(a,b,c){c&&c.width&&c.height&&2==Object.keys(c).length&&a._setSize()},propertyChangedHandler:function(b,c,d,e){if(!(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&2==Object.keys(b.batchUpdate).length)){switch(this._validateProperties(),c){case"touchMode":e&&(b.enabledHover=!1,b.keyboardNavigation=!1);break;case"width":case"height":return void b._setSize();case"disabled":return void(e?this.disable():this.enable());case"showCloseButtons":return e?this.showAllCloseButtons():this.hideAllCloseButtons(),void this._moveSelectionTrack(this._selectedItem,this.selectionTrackerAnimationDuration);case"selectedItem":return void(this._isValidIndex(e)&&this.select(e));case"scrollStep":case"contentTransitionDuration":case"scrollAnimationDuration":case"enableScrollAnimation":return;case"selectionTracker":return void(e?(this._refresh(),this.select(this._selectedItem)):null!=this._selectionTracker&&this._selectionTracker.remove()); -case"scrollable":return void(e?(this._refresh(),this.select(this._selectedItem)):(this._leftArrow.remove(),this._rightArrow.remove(),this._performHeaderLayout()));case"autoHeight":return void this._performHeaderLayout();case"theme":return void a.MLjqui.utilities.setTheme(d,e,this.host)}this._unorderedList.css("left","0px"),this._refresh(),this.select(this._selectedItem),this._addSelectStyle(this._selectedItem,!0)}}})}(MLjquiBaseFramework),function(a){a.MLjqui.MLjquiWidget("MLjquiLoader","",{}),a.extend(a.MLjqui._MLjquiLoader.prototype,{defineInstance:function(){var b={width:200,height:150,text:"Loading...",html:null,textPosition:"bottom",imagePosition:"center",isModal:!1,autoOpen:!1,rtl:!1,events:["create"]};a.extend(!0,this,b)},createInstance:function(a){var b=this;b._render(!0),b._raiseEvent("0")},render:function(){this._render()},open:function(a,b){var c=this;null!==this.width&&-1!==this.width.toString().indexOf("%")&&c.host.css("width",this.width),null!==this.height&&-1!==this.height.toString().indexOf("%")&&c.host.css("height",this.height),c.host.show(),c.host.css("left",-c.host.width()/2),c.host.css("top",-c.host.height()/2),a&&b&&(c.host.css("left",a),c.host.css("top",b)),c.isModal&&c._modal.show()},close:function(){var a=this;a.host.hide(),a.isModal&&a._modal.hide()},_checkBrowser:function(){var b=this;"msie"===a.MLjqui.browser.browser&&("7.0"===a.MLjqui.browser.version?(b.isModal===!1&&b.host.addClass(b.toThemeProperty("MLjqui-loader-ie-transparency")),b.host.css("top",Math.max(0,(a(window).height()-a(b.host).outerHeight())/2+a(window).scrollTop())+"px"),b.host.css("left",Math.max(0,(a(window).width()-a(b.host).outerWidth())/2+a(window).scrollLeft())+"px"),a(window).resize(function(){b.host.css("top",Math.max(0,(a(window).height()-a(b.host).outerHeight())/2+a(window).scrollTop())+"px"),b.host.css("left",Math.max(0,(a(window).width()-a(b.host).outerWidth())/2+a(window).scrollLeft())+"px")}),this.host.css({"margin-top":"0","margin-left":"0"})):"8.0"===a.MLjqui.browser.version&&b.isModal===!1&&b.host.addClass(b.toThemeProperty("MLjqui-loader-ie-transparency")))},_textPos:function(){var a=this;this._text=a.host.children("div:eq(1)"),this._image&&this._image.css("background-position-y",a.imagePosition),"top"===a.textPosition?(this._text.addClass(a.toThemeProperty("MLjqui-loader-text-top")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-bottom")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-left")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-right"))):"bottom"===a.textPosition?(this._text.addClass(a.toThemeProperty("MLjqui-loader-text-bottom")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-top")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-left")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-right"))):"left"===a.textPosition?(this._text.addClass(a.toThemeProperty("MLjqui-loader-text-left")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-right")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-top")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-bottom"))):"right"===a.textPosition&&(this._text.addClass(a.toThemeProperty("MLjqui-loader-text-right")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-left")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-top")),this._text.removeClass(a.toThemeProperty("MLjqui-loader-text-bottom")))},refresh:function(a){a!==!0&&this._render(!1)},destroy:function(){var a=this;a._removeHandlers(),a.host.remove()},propertyChangedHandler:function(a,b,c,d){if(d!==c)switch(b){case"width":a.host.width(d);break;case"height":a.host.height(d);break;case"text":a._text.text(d);break;case"html":a.host.html(d);break;case"textPosition":a._textPos(d);break;case"rtl":d===!0?a._text.addClass(a.toThemeProperty("MLjqui-loader-rtl")):a._text.removeClass(a.toThemeProperty("MLjqui-loader-rtl"))}},_raiseEvent:function(b,c){var d=this,e=d.events[b],f=new a.Event(e);f.owner=d,f.args=c;try{var g=d.host.trigger(f)}catch(h){}return g},_render:function(b){var c=this;if(c.host.width(c.width),c.host.height(c.height),c.autoOpen===!1&&c.host.hide(),b&&(null===c.html?(c.host.append('
          '+c.text+"
          "),c._image=c.host.children("div:eq(0)"),c._text=c.host.children("div:eq(1)")):c.host.html(this.html),c.isModal===!0)){var d=c.host.css("display");c._modal=a('
          '),a("body").append(c._modal)}c._checkBrowser(),c._textPos(),c._addClass(),c._removeHandlers(),c._addHandlers()},_addHandlers:function(){var b=this;b.isModal===!0&&b.addHandler(a(document),"keyup.loader"+b.element.id,function(a){27===a.keyCode&&b.close()})},_removeHandlers:function(){var b=this;b.removeHandler(a(document),"keyup.loader"+b.element.id)},_addClass:function(){var b=this;b.host.addClass(b.toThemeProperty("MLjqui-widget")),b.host.addClass(b.toThemeProperty("MLjqui-loader")),b.host.addClass(b.toThemeProperty("MLjqui-rc-all")),b.host.addClass(b.toThemeProperty("MLjqui-fill-state-normal")),b.rtl&&b._text.addClass(b.toThemeProperty("MLjqui-loader-rtl")),a.MLjqui.browser.msie&&b.host.addClass(this.toThemeProperty("MLjqui-noshadow")),b.host.addClass(this.toThemeProperty("MLjqui-rc-t")),b.host.addClass(this.toThemeProperty("MLjqui-rc-b")),b.host.addClass(this.toThemeProperty("MLjqui-popup"))}})}(MLjquiBaseFramework),"function"!=typeof Object.create&&(Object.create=function(a){function b(){}return b.prototype=a,new b}),function(a,b,c){var d={init:function(b,c){var d=this;d.$elem=a(c),d.options=a.extend({},a.fn.owlCarousel.options,d.$elem.data(),b),d.userOptions=b,d.loadContent()},loadContent:function(){function b(a){var b,c="";if("function"==typeof d.options.jsonSuccess)d.options.jsonSuccess.apply(this,[a]);else{for(b in a.owl)a.owl.hasOwnProperty(b)&&(c+=a.owl[b].item);d.$elem.html(c)}d.logIn()}var c,d=this;"function"==typeof d.options.beforeInit&&d.options.beforeInit.apply(this,[d.$elem]),"string"==typeof d.options.jsonPath?(c=d.options.jsonPath,a.getJSON(c,b)):d.logIn()},logIn:function(){var a=this;a.$elem.data("owl-originalStyles",a.$elem.attr("style")).data("owl-originalClasses",a.$elem.attr("class")),a.$elem.css({opacity:0}),a.orignalItems=a.options.items,a.checkBrowser(),a.wrapperWidth=0,a.checkVisible=null,a.setVars()},setVars:function(){var a=this;return 0===a.$elem.children().length?!1:(a.baseClass(),a.eventTypes(),a.$userItems=a.$elem.children(),a.itemsAmount=a.$userItems.length,a.wrapItems(),a.$owlItems=a.$elem.find(".owl-item"),a.$owlWrapper=a.$elem.find(".owl-wrapper"),a.playDirection="next",a.prevItem=0,a.prevArr=[0],a.currentItem=0,a.customEvents(),void a.onStartup())},onStartup:function(){var a=this;a.updateItems(),a.calculateAll(),a.buildControls(),a.updateControls(),a.response(),a.moveEvents(),a.stopOnHover(),a.owlStatus(),a.options.transitionStyle!==!1&&a.transitionTypes(a.options.transitionStyle),a.options.autoPlay===!0&&(a.options.autoPlay=5e3),a.play(),a.$elem.find(".owl-wrapper").css("display","block"),a.$elem.is(":visible")?a.$elem.css("opacity",1):a.watchVisibility(),a.onstartup=!1,a.eachMoveUpdate(),"function"==typeof a.options.afterInit&&a.options.afterInit.apply(this,[a.$elem])},eachMoveUpdate:function(){var a=this;a.options.lazyLoad===!0&&a.lazyLoad(),a.options.autoHeight===!0&&a.autoHeight(),a.onVisibleItems(),"function"==typeof a.options.afterAction&&a.options.afterAction.apply(this,[a.$elem])},updateVars:function(){var a=this;"function"==typeof a.options.beforeUpdate&&a.options.beforeUpdate.apply(this,[a.$elem]),a.watchVisibility(),a.updateItems(),a.calculateAll(),a.updatePosition(),a.updateControls(),a.eachMoveUpdate(),"function"==typeof a.options.afterUpdate&&a.options.afterUpdate.apply(this,[a.$elem])},reload:function(){var a=this;b.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;return a.$elem.is(":visible")!==!1?!1:(a.$elem.css({opacity:0}),b.clearInterval(a.autoPlayInterval),b.clearInterval(a.checkVisible),void(a.checkVisible=b.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),b.clearInterval(a.checkVisible))},500)))},wrapItems:function(){var a=this;a.$userItems.wrapAll('
          ').wrap('
          '),a.$elem.find(".owl-wrapper").wrap('
          '),a.wrapperOuter=a.$elem.find(".owl-wrapper-outer"),a.$elem.css("display","block")},baseClass:function(){var a=this,b=a.$elem.hasClass(a.options.baseClass),c=a.$elem.hasClass(a.options.theme);b||a.$elem.addClass(a.options.baseClass),c||a.$elem.addClass(a.options.theme)},updateItems:function(){var b,c,d=this;if(d.options.responsive===!1)return!1;if(d.options.singleItem===!0)return d.options.items=d.orignalItems=1,d.options.itemsCustom=!1,d.options.itemsDesktop=!1,d.options.itemsDesktopSmall=!1,d.options.itemsTablet=!1,d.options.itemsTabletSmall=!1,d.options.itemsMobile=!1,!1;if(b=a(d.options.responsiveBaseWidth).width(),b>(d.options.itemsDesktop[0]||d.orignalItems)&&(d.options.items=d.orignalItems),d.options.itemsCustom!==!1)for(d.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),c=0;cd.itemsAmount&&d.options.itemsScaleUp===!0&&(d.options.items=d.itemsAmount)},response:function(){var c,d,e=this;return e.options.responsive!==!0?!1:(d=a(b).width(),e.resizer=function(){a(b).width()!==d&&(e.options.autoPlay!==!1&&b.clearInterval(e.autoPlayInterval),b.clearTimeout(c),c=b.setTimeout(function(){d=a(b).width(),e.updateVars()},e.options.responsiveRefreshRate))},void a(b).resize(e.resizer))},updatePosition:function(){var a=this;a.jumpTo(a.currentItem),a.options.autoPlay!==!1&&a.checkAp()},appendItemsSizes:function(){var b=this,c=0,d=b.itemsAmount-b.options.items;b.$owlItems.each(function(e){var f=a(this);f.css({width:b.itemWidth}).data("owl-item",Number(e)),e%b.options.items!==0&&e!==d||e>d||(c+=1),f.data("owl-roundPages",c)})},appendWrapperSizes:function(){var a=this,b=a.$owlItems.length*a.itemWidth;a.$owlWrapper.css({width:2*b,left:0}),a.appendItemsSizes()},calculateAll:function(){var a=this;a.calculateWidth(),a.appendWrapperSizes(),a.loops(),a.max()},calculateWidth:function(){var a=this;a.itemWidth=Math.round(a.$elem.width()/a.options.items)},max:function(){var a=this,b=-1*(a.itemsAmount*a.itemWidth-a.options.items*a.itemWidth);return a.options.items>a.itemsAmount?(a.maximumItem=0,b=0,a.maximumPixels=0):(a.maximumItem=a.itemsAmount-a.options.items,a.maximumPixels=b),b},min:function(){return 0},loops:function(){var b,c,d,e=this,f=0,g=0;for(e.positionsInArray=[0],e.pagesInArray=[],b=0;b').toggleClass("clickable",!b.browser.isTouch).appendTo(b.$elem)),b.options.pagination===!0&&b.buildPagination(),b.options.navigation===!0&&b.buildButtons()},buildButtons:function(){var b=this,c=a('
          ');b.owlControls.append(c),c.append(b.buttonPrev).append(b.buttonNext),c.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()}),c.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(c){c.preventDefault(),a(this).hasClass("owl-next")&&b.next()})},buildPagination:function(){var b=this;b.paginationWrapper=a('
          '),b.owlControls.append(b.paginationWrapper),b.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(c){c.preventDefault(),Number(a(this).data("owl-page"))!==b.currentItem&&b.goTo(Number(a(this).data("owl-page")),!0)})},updatePagination:function(){var b,c,d,e,f,g,h=this;if(h.options.pagination===!1)return!1;for(h.paginationWrapper.html(""),b=0,c=h.itemsAmount-h.itemsAmount%h.options.items,e=0;e",{"class":"owl-page"}),g=a("",{text:h.options.paginationNumbers===!0?b:"","class":h.options.paginationNumbers===!0?"owl-numbers":""}),f.append(g),f.data("owl-page",c===e?d:e),f.data("owl-roundPages",b),h.paginationWrapper.append(f));h.checkPagination()},checkPagination:function(){var b=this;return b.options.pagination===!1?!1:void b.paginationWrapper.find(".owl-page").each(function(){a(this).data("owl-roundPages")===a(b.$owlItems[b.currentItem]).data("owl-roundPages")&&(b.paginationWrapper.find(".owl-page").removeClass("active"),a(this).addClass("active"))})},checkNavigation:function(){var a=this;return a.options.navigation===!1?!1:void(a.options.rewindNav===!1&&(0===a.currentItem&&0===a.maximumItem?(a.buttonPrev.addClass("disabled"),a.buttonNext.addClass("disabled")):0===a.currentItem&&0!==a.maximumItem?(a.buttonPrev.addClass("disabled"),a.buttonNext.removeClass("disabled")):a.currentItem===a.maximumItem?(a.buttonPrev.removeClass("disabled"),a.buttonNext.addClass("disabled")):0!==a.currentItem&&a.currentItem!==a.maximumItem&&(a.buttonPrev.removeClass("disabled"),a.buttonNext.removeClass("disabled"))))},updateControls:function(){var a=this;a.updatePagination(),a.checkNavigation(),a.owlControls&&(a.options.items>=a.itemsAmount?a.owlControls.hide():a.owlControls.show())},destroyControls:function(){var a=this;a.owlControls&&a.owlControls.remove()},next:function(a){var b=this;if(b.isTransition)return!1;if(b.currentItem+=b.options.scrollPerPage===!0?b.options.items:1,b.currentItem>b.maximumItem+(b.options.scrollPerPage===!0?b.options.items-1:0)){if(b.options.rewindNav!==!0)return b.currentItem=b.maximumItem,!1;b.currentItem=0,a="rewind"}b.goTo(b.currentItem,a)},prev:function(a){var b=this;if(b.isTransition)return!1;if(b.options.scrollPerPage===!0&&b.currentItem>0&&b.currentItem=f.maximumItem?a=f.maximumItem:0>=a&&(a=0),f.currentItem=f.owl.currentItem=a,f.options.transitionStyle!==!1&&"drag"!==d&&1===f.options.items&&f.browser.support3d===!0?(f.swapSpeed(0),f.browser.support3d===!0?f.transition3d(f.positionsInArray[a]):f.css2slide(f.positionsInArray[a],1),f.afterGo(),f.singleItemTransition(),!1):(e=f.positionsInArray[a],f.browser.support3d===!0?(f.isCss3Finish=!1,c===!0?(f.swapSpeed("paginationSpeed"),b.setTimeout(function(){f.isCss3Finish=!0},f.options.paginationSpeed)):"rewind"===c?(f.swapSpeed(f.options.rewindSpeed),b.setTimeout(function(){f.isCss3Finish=!0},f.options.rewindSpeed)):(f.swapSpeed("slideSpeed"),b.setTimeout(function(){f.isCss3Finish=!0},f.options.slideSpeed)),f.transition3d(e)):c===!0?f.css2slide(e,f.options.paginationSpeed):"rewind"===c?f.css2slide(e,f.options.rewindSpeed):f.css2slide(e,f.options.slideSpeed),void f.afterGo()))},jumpTo:function(a){var b=this;"function"==typeof b.options.beforeMove&&b.options.beforeMove.apply(this,[b.$elem]),a>=b.maximumItem||-1===a?a=b.maximumItem:0>=a&&(a=0),b.swapSpeed(0),b.browser.support3d===!0?b.transition3d(b.positionsInArray[a]):b.css2slide(b.positionsInArray[a],1),b.currentItem=b.owl.currentItem=a,b.afterGo()},afterGo:function(){var a=this;a.prevArr.push(a.currentItem),a.prevItem=a.owl.prevItem=a.prevArr[a.prevArr.length-2],a.prevArr.shift(0),a.prevItem!==a.currentItem&&(a.checkPagination(),a.checkNavigation(),a.eachMoveUpdate(),a.options.autoPlay!==!1&&a.checkAp()),"function"==typeof a.options.afterMove&&a.prevItem!==a.currentItem&&a.options.afterMove.apply(this,[a.$elem])},stop:function(){var a=this;a.apStatus="stop",b.clearInterval(a.autoPlayInterval)},checkAp:function(){var a=this;"stop"!==a.apStatus&&a.play()},play:function(){var a=this;return a.apStatus="play",a.options.autoPlay===!1?!1:(b.clearInterval(a.autoPlayInterval),void(a.autoPlayInterval=b.setInterval(function(){a.next(!0)},a.options.autoPlay)))},swapSpeed:function(a){var b=this;"slideSpeed"===a?b.$owlWrapper.css(b.addCssSpeed(b.options.slideSpeed)):"paginationSpeed"===a?b.$owlWrapper.css(b.addCssSpeed(b.options.paginationSpeed)):"string"!=typeof a&&b.$owlWrapper.css(b.addCssSpeed(a))},addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){var b=this;b.$owlWrapper.css(b.doTranslate(a))},css2move:function(a){var b=this;b.$owlWrapper.css({left:a})},css2slide:function(a,b){var c=this;c.isCssFinish=!1,c.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||c.options.slideSpeed,complete:function(){c.isCssFinish=!0}})},checkBrowser:function(){var a,d,e,f,g=this,h="translate3d(0px, 0px, 0px)",i=c.createElement("div");i.style.cssText=" -moz-transform:"+h+"; -ms-transform:"+h+"; -o-transform:"+h+"; -webkit-transform:"+h+"; transform:"+h,a=/translate3d\(0px, 0px, 0px\)/g,d=i.style.cssText.match(a),e=null!==d&&1===d.length,f="ontouchstart"in b||b.navigator.msMaxTouchPoints,g.browser={support3d:e,isTouch:f}},moveEvents:function(){var a=this;a.options.mouseDrag===!1&&a.options.touchDrag===!1||(a.gestures(),a.disabledEvents())},eventTypes:function(){var a=this,b=["s","e","x"];a.ev_types={},a.options.mouseDrag===!0&&a.options.touchDrag===!0?b=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:a.options.mouseDrag===!1&&a.options.touchDrag===!0?b=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:a.options.mouseDrag===!0&&a.options.touchDrag===!1&&(b=["mousedown.owl","mousemove.owl","mouseup.owl"]),a.ev_types.start=b[0],a.ev_types.move=b[1],a.ev_types.end=b[2]},disabledEvents:function(){var b=this;b.$elem.on("dragstart.owl",function(a){a.preventDefault()}),b.$elem.on("mousedown.disableTextSelect",function(b){return a(b.target).is("input, textarea, select, option")})},gestures:function(){function d(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function e(b){"on"===b?(a(c).on(i.ev_types.move,g),a(c).on(i.ev_types.end,h)):"off"===b&&(a(c).off(i.ev_types.move),a(c).off(i.ev_types.end))}function f(c){var f,g=c.originalEvent||c||b.event;if(3===g.which)return!1;if(!(i.itemsAmount<=i.options.items)){if(i.isCssFinish===!1&&!i.options.dragBeforeAnimFinish)return!1;if(i.isCss3Finish===!1&&!i.options.dragBeforeAnimFinish)return!1;i.options.autoPlay!==!1&&b.clearInterval(i.autoPlayInterval),i.browser.isTouch===!0||i.$owlWrapper.hasClass("grabbing")||i.$owlWrapper.addClass("grabbing"),i.newPosX=0,i.newRelativeX=0,a(this).css(i.removeTransition()),f=a(this).position(),j.relativePos=f.left,j.offsetX=d(g).x-f.left,j.offsetY=d(g).y-f.top,e("on"),j.sliding=!1,j.targetElement=g.target||g.srcElement}}function g(e){var f,g,h=e.originalEvent||e||b.event;i.newPosX=d(h).x-j.offsetX,i.newPosY=d(h).y-j.offsetY,i.newRelativeX=i.newPosX-j.relativePos,"function"==typeof i.options.startDragging&&j.dragging!==!0&&0!==i.newRelativeX&&(j.dragging=!0,i.options.startDragging.apply(i,[i.$elem])),(i.newRelativeX>8||i.newRelativeX<-8)&&i.browser.isTouch===!0&&(void 0!==h.preventDefault?h.preventDefault():h.returnValue=!1,j.sliding=!0),(i.newPosY>10||i.newPosY<-10)&&j.sliding===!1&&a(c).off("touchmove.owl"),f=function(){return i.newRelativeX/5},g=function(){return i.maximumPixels+i.newRelativeX/5},i.newPosX=Math.max(Math.min(i.newPosX,f()),g()),i.browser.support3d===!0?i.transition3d(i.newPosX):i.css2move(i.newPosX)}function h(c){var d,f,g,h=c.originalEvent||c||b.event;h.target=h.target||h.srcElement,j.dragging=!1,i.browser.isTouch!==!0&&i.$owlWrapper.removeClass("grabbing"),i.newRelativeX<0?i.dragDirection=i.owl.dragDirection="left":i.dragDirection=i.owl.dragDirection="right",0!==i.newRelativeX&&(d=i.getNewPosition(),i.goTo(d,!1,"drag"),j.targetElement===h.target&&i.browser.isTouch!==!0&&(a(h.target).on("click.disable",function(b){b.stopImmediatePropagation(),b.stopPropagation(),b.preventDefault(),a(b.target).off("click.disable")}),f=a._data(h.target,"events").click,g=f.pop(),f.splice(0,0,g))),e("off")}var i=this,j={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};i.isCssFinish=!0,i.$elem.on(i.ev_types.start,".owl-wrapper",f)},getNewPosition:function(){var a=this,b=a.closestItem();return b>a.maximumItem?(a.currentItem=a.maximumItem,b=a.maximumItem):a.newPosX>=0&&(b=0,a.currentItem=0),b},closestItem:function(){var b=this,c=b.options.scrollPerPage===!0?b.pagesInArray:b.positionsInArray,d=b.newPosX,e=null;return a.each(c,function(f,g){d-b.itemWidth/20>c[f+1]&&d-b.itemWidth/20(c[f+1]||c[f]-b.itemWidth)&&"right"===b.moveDirection()&&(b.options.scrollPerPage===!0?(e=c[f+1]||c[c.length-1],b.currentItem=a.inArray(e,b.positionsInArray)):(e=c[f+1],b.currentItem=f+1))}),b.currentItem},moveDirection:function(){var a,b=this;return b.newRelativeX<0?(a="right",b.playDirection="next"):(a="left",b.playDirection="prev"),a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()}),a.$elem.on("owl.prev",function(){a.prev()}),a.$elem.on("owl.play",function(b,c){a.options.autoPlay=c,a.play(),a.hoverStatus="play"}),a.$elem.on("owl.stop",function(){a.stop(),a.hoverStatus="stop"}),a.$elem.on("owl.goTo",function(b,c){a.goTo(c)}),a.$elem.on("owl.jumpTo",function(b,c){a.jumpTo(c)})},stopOnHover:function(){var a=this;a.options.stopOnHover===!0&&a.browser.isTouch!==!0&&a.options.autoPlay!==!1&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var b,c,d,e,f,g=this;if(g.options.lazyLoad===!1)return!1;for(b=0;b=g.currentItem:!0,f&&d=h?b.setTimeout(e,100):d()}var f,g=this,h=0;"DIV"===c.prop("tagName")?(c.css("background-image","url("+c.data("src")+")"),f=!0):c[0].src=c.data("src"),e()},autoHeight:function(){function c(){var c=a(f.$owlItems[f.currentItem]).height();f.wrapperOuter.css("height",c+"px"),f.wrapperOuter.hasClass("autoHeight")||b.setTimeout(function(){f.wrapperOuter.addClass("autoHeight")},0)}function d(){e+=1,f.completeImg(g.get(0))?c():100>=e?b.setTimeout(d,100):f.wrapperOuter.css("height","")}var e,f=this,g=a(f.$owlItems[f.currentItem]).find("img");void 0!==g.get(0)?(e=0,d()):c()},completeImg:function(a){var b;return a.complete?(b=typeof a.naturalWidth,"undefined"===b||0!==a.naturalWidth):!1},onVisibleItems:function(){var b,c=this;for(c.options.addClassActive===!0&&c.$owlItems.removeClass("active"),c.visibleItems=[],b=c.currentItem;b=d.$userItems.length||-1===c?d.$userItems.eq(-1).after(a):d.$userItems.eq(c).before(a),void d.setVars()):!1},removeItem:function(a){var b,c=this;return 0===c.$elem.children().length?!1:(b=void 0===a||-1===a?-1:a,c.unWrap(),c.$userItems.eq(b).remove(),void c.setVars())}};a.fn.owlCarousel=function(b){return this.each(function(){if(a(this).data("owl-init")===!0)return!1;a(this).data("owl-init",!0);var c=Object.create(d);c.init(b,this),a.data(this,"owlCarousel",c)})},a.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1e3,autoPlay:3e3,stopOnHover:!0,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:b,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}}(jQuery,window,document); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui_agl.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui_agl.js deleted file mode 100644 index 00ddcd38..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui_agl.js +++ /dev/null @@ -1,19 +0,0 @@ -/* MLjquicore.js */ -//var MLjquiBaseFramework=window.minQuery||window.jQuery;(function(a){a.MLjqui=a.MLjqui||{};a.MLjqui.define=function(b,c,d){b[c]=function(){if(this.baseType){this.base=new b[this.baseType]();this.base.defineInstance()}this.defineInstance()};b[c].prototype.defineInstance=function(){};b[c].prototype.base=null;b[c].prototype.baseType=undefined;if(d&&b[d]){b[c].prototype.baseType=d}};a.MLjqui.invoke=function(e,d){if(d.length==0){return}var f=typeof(d)==Array||d.length>0?d[0]:d;var c=typeof(d)==Array||d.length>1?Array.prototype.slice.call(d,1):a({}).toArray();while(e[f]==undefined&&e.base!=null){if(e[f]!=undefined&&a.isFunction(e[f])){return e[f].apply(e,c)}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]!=undefined&&a.isFunction(e[b])){return e[b].apply(e,c)}}e=e.base}if(e[f]!=undefined&&a.isFunction(e[f])){return e[f].apply(e,c)}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]!=undefined&&a.isFunction(e[b])){return e[b].apply(e,c)}}return};a.MLjqui.hasProperty=function(c,b){if(typeof(b)=="object"){for(var e in b){var d=c;while(d){if(d.hasOwnProperty(e)){return true}if(d.hasOwnProperty(e.toLowerCase())){return true}d=d.base}return false}}else{while(c){if(c.hasOwnProperty(b)){return true}if(c.hasOwnProperty(b.toLowerCase())){return true}c=c.base}}return false};a.MLjqui.hasFunction=function(e,d){if(d.length==0){return false}if(e==undefined){return false}var f=typeof(d)==Array||d.length>0?d[0]:d;var c=typeof(d)==Array||d.length>1?Array.prototype.slice.call(d,1):{};while(e[f]==undefined&&e.base!=null){if(e[f]&&a.isFunction(e[f])){return true}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]&&a.isFunction(e[b])){return true}}e=e.base}if(e[f]&&a.isFunction(e[f])){return true}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]&&a.isFunction(e[b])){return true}}return false};a.MLjqui.isPropertySetter=function(c,b){if(b.length==1&&typeof(b[0])=="object"){return true}if(b.length==2&&typeof(b[0])=="string"&&!a.MLjqui.hasFunction(c,b)){return true}return false};a.MLjqui.validatePropertySetter=function(f,d,b){if(!a.MLjqui.propertySetterValidation){return true}if(d.length==1&&typeof(d[0])=="object"){for(var e in d[0]){var g=f;while(!g.hasOwnProperty(e)&&g.base){g=g.base}if(!g||!g.hasOwnProperty(e)){if(!b){var c=g.hasOwnProperty(e.toString().toLowerCase());if(!c){throw"Invalid property: "+e}else{return true}}return false}}return true}if(d.length!=2){if(!b){throw"Invalid property: "+d.length>=0?d[0]:""}return false}while(!f.hasOwnProperty(d[0])&&f.base){f=f.base}if(!f||!f.hasOwnProperty(d[0])){if(!b){throw"Invalid property: "+d[0]}return false}return true};if(!Object.keys){Object.keys=(function(){var d=Object.prototype.hasOwnProperty,e=!({toString:null}).propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],b=c.length;return function(h){if(typeof h!=="object"&&(typeof h!=="function"||h===null)){throw new TypeError("Object.keys called on non-object")}var f=[],j,g;for(j in h){if(d.call(h,j)){f.push(j)}}if(e){for(g=0;g1){var f=!e.base?e.element:e.base.element;var b=a.data(f,e.widgetName).initArgs;if(b&&JSON&&JSON.stringify&&h[0]&&b[0]){try{if(JSON.stringify(h[0])==JSON.stringify(b[0])){var g=true;a.each(h[0],function(l,m){if(e[l]!=m){g=false;return false}});if(g){return}}}catch(d){}}e.batchUpdate=h[0];var j={};var k={};a.each(h[0],function(l,m){var n=e;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){if(e[l]!=m){j[l]=e[l];k[l]=m;c++}}else{if(n.hasOwnProperty(l.toLowerCase())){if(e[l.toLowerCase()]!=m){j[l.toLowerCase()]=e[l.toLowerCase()];k[l.toLowerCase()]=m;c++}}}});if(c<2){e.batchUpdate=null}}a.each(h[0],function(l,m){var n=e;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){a.MLjqui.setvalueraiseevent(n,l,m)}else{if(n.hasOwnProperty(l.toLowerCase())){a.MLjqui.setvalueraiseevent(n,l.toLowerCase(),m)}else{if(a.MLjqui.propertySetterValidation){throw"MLjquiCore: invalid property '"+l+"'"}}}});if(e.batchUpdate!=null){e.batchUpdate=null;if(e.propertiesChangedHandler&&c>1){e.propertiesChangedHandler(e,j,k)}}}else{if(h.length==2){while(!e.hasOwnProperty(h[0])&&e.base){e=e.base}if(e.hasOwnProperty(h[0])){a.MLjqui.setvalueraiseevent(e,h[0],h[1])}else{if(e.hasOwnProperty(h[0].toLowerCase())){a.MLjqui.setvalueraiseevent(e,h[0].toLowerCase(),h[1])}else{if(a.MLjqui.propertySetterValidation){throw"MLjquiCore: invalid property '"+h[0]+"'"}}}}}};a.MLjqui.setvalueraiseevent=function(c,d,e){var b=c[d];c[d]=e;if(!c.isInitialized){return}if(c.propertyChangedHandler!=undefined){c.propertyChangedHandler(c,d,b,e)}if(c.propertyChangeMap!=undefined&&c.propertyChangeMap[d]!=undefined){c.propertyChangeMap[d](c,d,b,e)}};a.MLjqui.get=function(e,d){if(d==undefined||d==null){return undefined}if(e.propertyMap){var c=e.propertyMap(d);if(c!=null){return c}}if(e.hasOwnProperty(d)){return e[d]}if(e.hasOwnProperty(d.toLowerCase())){return e[d.toLowerCase()]}var b=undefined;if(typeof(d)==Array){if(d.length!=1){return undefined}b=d[0]}else{if(typeof(d)=="string"){b=d}}while(!e.hasOwnProperty(b)&&e.base){e=e.base}if(e){return e[b]}return undefined};a.MLjqui.serialize=function(e){var b="";if(a.isArray(e)){b="[";for(var d=0;d0){b+=", "}b+=a.MLjqui.serialize(e[d])}b+="]"}else{if(typeof(e)=="object"){b="{";var c=0;for(var d in e){if(c++>0){b+=", "}b+=d+": "+a.MLjqui.serialize(e[d])}b+="}"}else{b=e.toString()}}return b};a.MLjqui.propertySetterValidation=true;a.MLjqui.MLjquiWidgetProxy=function(g,c,b){var d=a(c);var f=a.data(c,g);if(f==undefined){return undefined}var e=f.instance;if(a.MLjqui.hasFunction(e,b)){return a.MLjqui.invoke(e,b)}if(a.MLjqui.isPropertySetter(e,b)){if(a.MLjqui.validatePropertySetter(e,b)){a.MLjqui.set(e,b);return undefined}}else{if(typeof(b)=="object"&&b.length==0){return}else{if(typeof(b)=="object"&&b.length==1&&a.MLjqui.hasProperty(e,b[0])){return a.MLjqui.get(e,b[0])}else{if(typeof(b)=="string"&&a.MLjqui.hasProperty(e,b[0])){return a.MLjqui.get(e,b)}}}}throw"MLjquiCore: Invalid parameter '"+a.MLjqui.serialize(b)+"' does not exist.";return undefined};a.MLjqui.applyWidget=function(c,d,k,l){var g=false;try{g=window.MSApp!=undefined}catch(f){}var m=a(c);if(!l){l=new a.MLjqui["_"+d]()}else{l.host=m;l.element=c}if(c.id==""){c.id=a.MLjqui.utilities.createId()}var j={host:m,element:c,instance:l,initArgs:k};l.widgetName=d;a.data(c,d,j);a.data(c,"MLjquiWidget",j.instance);var h=new Array();var l=j.instance;while(l){l.isInitialized=false;h.push(l);l=l.base}h.reverse();h[0].theme=a.MLjqui.theme||"";a.MLjqui.MLjquiWidgetProxy(d,c,k);for(var b in h){l=h[b];if(b==0){l.host=m;l.element=c;l.WinJS=g}if(l!=undefined){if(l.definedInstance){l.definedInstance()}if(l.createInstance!=null){if(g){MSApp.execUnsafeLocalFunction(function(){l.createInstance(k)})}else{l.createInstance(k)}}}}for(var b in h){if(h[b]!=undefined){h[b].isInitialized=true}}if(g){MSApp.execUnsafeLocalFunction(function(){j.instance.refresh(true)})}else{j.instance.refresh(true)}};a.MLjqui.MLjquiWidget=function(b,c,f){var j=false;try{MLjquiArgs=Array.prototype.slice.call(f,0)}catch(h){MLjquiArgs=""}try{j=window.MSApp!=undefined}catch(h){}var g=b;var l="";if(c){l="_"+c}a.MLjqui.define(a.MLjqui,"_"+g,l);var k=new Array();if(!window[g]){var d=function(m){if(m==null){return""}var e=a.type(m);switch(e){case"string":case"number":case"date":case"boolean":case"bool":if(m===null){return""}return m.toString()}var n="";a.each(m,function(p){var r=this;if(p>0){n+=", "}n+="[";var o=0;if(a.type(r)=="object"){for(var q in r){if(o>0){n+=", "}n+="{"+q+":"+r[q]+"}";o++}}else{if(o>0){n+=", "}n+="{"+p+":"+r+"}";o++}n+="]"});return n};window[g]=function(e,r){var m=[];if(!r){r={}}m.push(r);var n=e;if(a.type(n)==="object"&&e[0]){n=e[0].id;if(n===""){n=e[0].id=a.MLjqui.utilities.createId()}}if(window.MLjquiWidgets&&window.MLjquiWidgets[n]){if(r){a.each(window.MLjquiWidgets[n],function(s){var t=a(this.element).data();if(t&&t.MLjquiWidget){a(this.element)[g](r)}})}if(window.MLjquiWidgets[n].length==1){var p=a(window.MLjquiWidgets[n][0].widgetInstance.element).data();if(p&&p.MLjquiWidget){return window.MLjquiWidgets[n][0]}}var p=a(window.MLjquiWidgets[n][0].widgetInstance.element).data();if(p&&p.MLjquiWidget){return window.MLjquiWidgets[n]}}var o=a(e);if(o.length===0){throw new Error("Invalid Selector - "+e+"! Please, check whether the used ID or CSS Class name is correct.")}var q=[];a.each(o,function(v){var x=o[v];var u=null;if(!k[g]){var y=x.id;x.id="";u=a(x).clone();x.id=y}a.MLjqui.applyWidget(x,g,m,undefined);if(!k[g]){var t=a.data(x,"MLjquiWidget");var w=u[g]().data().MLjquiWidget.defineInstance();var s=function(A){var z=a.data(A,"MLjquiWidget");this.widgetInstance=z;var B=a.extend(this,z);B.on=function(C,D){B.addHandler(B.host,C,D)};B.off=function(C){B.removeHandler(B.host,C)};return B};k[g]=s;a.each(w,function(A,z){Object.defineProperty(s.prototype,A,{get:function(){if(this.widgetInstance){return this.widgetInstance[A]}return z},set:function(C){if(this.widgetInstance&&this.widgetInstance[A]!=C){if(this.widgetInstance[A]!=C&&d(this.widgetInstance[A])!=d(C)){var B={};B[A]=C;this.widgetInstance.host[g](B);this.widgetInstance[A]=C}}}})})}var t=new k[g](x);q.push(t);if(!window.MLjquiWidgets){window.MLjquiWidgets=new Array()}if(!window.MLjquiWidgets[n]){window.MLjquiWidgets[n]=new Array()}window.MLjquiWidgets[n].push(t)});if(q.length===1){return q[0]}return q}}a.fn[g]=function(){var e=Array.prototype.slice.call(arguments,0);if(e.length==0||(e.length==1&&typeof(e[0])=="object")){if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}return this.each(function(){var p=a(this);var o=this;var q=a.data(o,g);if(q==null){a.MLjqui.applyWidget(o,g,e,undefined)}else{a.MLjqui.MLjquiWidgetProxy(g,this,e)}})}else{if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}var n=null;var m=0;this.each(function(){var o=a.MLjqui.MLjquiWidgetProxy(g,this,e);if(m==0){n=o;m++}else{if(m==1){var p=[];p.push(n);n=p}n.push(o)}})}return n};try{a.extend(a.MLjqui["_"+g].prototype,Array.prototype.slice.call(f,0)[0])}catch(h){}a.extend(a.MLjqui["_"+g].prototype,{toThemeProperty:function(e,m){return a.MLjqui.toThemeProperty(this,e,m)}});a.MLjqui["_"+g].prototype.refresh=function(){if(this.base){this.base.refresh(true)}};a.MLjqui["_"+g].prototype.createInstance=function(){};a.MLjqui["_"+g].prototype.applyTo=function(n,m){if(!(m instanceof Array)){var e=[];e.push(m);m=e}a.MLjqui.applyWidget(n,g,m,this)};a.MLjqui["_"+g].prototype.getInstance=function(){return this};a.MLjqui["_"+g].prototype.propertyChangeMap={};a.MLjqui["_"+g].prototype.addHandler=function(o,e,m,n){a.MLjqui.addHandler(o,e,m,n)};a.MLjqui["_"+g].prototype.removeHandler=function(n,e,m){a.MLjqui.removeHandler(n,e,m)}};a.MLjqui.toThemeProperty=function(c,d,h){if(c.theme==""){return d}var g=d.split(" ");var b="";for(var f=0;f0){b+=" "}var e=g[f];if(h!=null&&h){b+=e+"-"+c.theme}else{b+=e+" "+e+"-"+c.theme}}return b};a.MLjqui.addHandler=function(g,h,e,f){var c=h.split(" ");for(var b=0;b=0){if(f.length>0){b.push(h[c]);j.push(h[c].replace(f,g))}else{j.push(h[c].replace("-"+g,"")+"-"+g)}}}this._removeOldClasses(b,e);this._addNewClasses(j,e);for(var c=0;cH){return 1}}catch(L){var M=L}return 0};var w=function(I){if(k.hiddenWidgets.length>0){k.hiddenWidgets.sort(u);var H=function(){var K=false;var M=new Array();for(var L=0;L0){w(false)}k.hiddenWidgets=new Array();k.resizeHandlers.sort(u);for(var A=0;A=0){k.hiddenWidgets.splice(k.hiddenWidgets.indexOf(G),1)}}if(z.MLjquiWidget.element){var x=z.MLjquiWidget.element.className;if(x.indexOf("dropdownlist")>=0||x.indexOf("datetimeinput")>=0||x.indexOf("combobox")>=0||x.indexOf("menu")>=0){if(z.MLjquiWidget.isOpened){var y=z.MLjquiWidget.isOpened();if(y){if(D&&D=="resize"&&a.MLjqui.mobile.isTouchDevice()){continue}z.MLjquiWidget.close()}}}}}}}w()};if(!this.resizeHandlers){this.resizeHandlers=new Array();var n=a(window);if(n.on){this._resizeTimer=null;this._initResize=null;n.on("resize.MLjqui",function(t){if(k._resizeTimer!=undefined){clearTimeout(k._resizeTimer)}if(!k._initResize){k._initResize=true;m(null,"resize")}else{k._resizeTimer=setTimeout(function(){m(null,"resize")},a.MLjqui.resizeDelay)}});n.on("orientationchange.MLjqui",function(t){m(null,"orientationchange")});n.on("orientationchanged.MLjqui",function(t){m(null,"orientationchange")})}else{n.bind("resize.MLjqui",function(t){m(null,"orientationchange")});n.bind("orientationchange.MLjqui",function(t){m(null,"orientationchange")});n.bind("orientationchanged.MLjqui",function(t){m(null,"orientationchange")})}}var e=g.data();if(o){if(l===-1){this.resizeHandlers.push({id:g[0].id,widget:g,callback:s,data:e})}}try{var c=e.MLjquiWidget.width;var r=e.MLjquiWidget.height;if(e.MLjquiWidget.base){if(c==undefined){c=e.MLjquiWidget.base.width}if(r==undefined){r=e.MLjquiWidget.base.height}}if(c===undefined&&r===undefined){c=e.MLjquiWidget.element.style.width;r=e.MLjquiWidget.element.style.height}var j=false;if(c!=null&&c.toString().indexOf("%")!=-1){j=true}if(r!=null&&r.toString().indexOf("%")!=-1){j=true}if(j){if(!this.watchedElementData){this.watchedElementData=[]}var k=this;var f=function(t){if(k.watchedElementData.forEach){k.watchedElementData.forEach(function(u){if(u.element.offsetWidth!==u.offsetWidth||u.element.offsetHeight!==u.offsetHeight){u.offsetWidth=u.element.offsetWidth;u.offsetHeight=u.element.offsetHeight;if(u.timer){clearTimeout(u.timer)}u.timer=setTimeout(function(){if(!a.MLjqui.isHidden(a(u.element))){u.callback()}})}})}};k.watchedElementData.push({element:g[0],offsetWidth:g[0].offsetWidth,offsetHeight:g[0].offsetHeight,callback:s});if(!k.observer){k.observer=new MutationObserver(f);k.observer.observe(document.body,{attributes:true,childList:true,characterData:true})}}}catch(q){}if(a.MLjqui.isHidden(g)&&o===true){m(true)}a.MLjqui.resize=function(){m(null,"resize")}},html:function(c,d){if(!a(c).on){return a(c).html(d)}try{return a.access(c,function(s){var f=c[0]||{},m=0,j=c.length;if(s===undefined){return f.nodeType===1?f.innerHTML.replace(rinlinejQuery,""):undefined}var r=/<(?:script|style|link)/i,n="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",h=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,p=/<([\w:]+)/,g=/<(?:script|object|embed|option|style)/i,k=new RegExp("<(?:"+n+")[\\s/>]","i"),q=/^\s+/,t={option:[1,""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]};if(typeof s==="string"&&!r.test(s)&&(a.support.htmlSerialize||!k.test(s))&&(a.support.leadingWhitespace||!q.test(s))&&!t[(p.exec(s)||["",""])[1].toLowerCase()]){s=s.replace(h,"<$1>");try{for(;m=0&&c.indexOf(".net4.0c")>=0){d.browser="msie";d.version="11";b[1]="msie"}if(c.indexOf("edge")>=0){d.browser="msie";d.version="12";b[1]="msie"}d[b[1]]=b[1];return d}});a.MLjqui.browser=a.MLjqui.utilities.getBrowser();a.MLjqui.isHidden=function(c){if(!c||!c[0]){return false}var b=c[0].offsetWidth,d=c[0].offsetHeight;if(b===0||d===0){return true}else{return false}};a.MLjqui.ariaEnabled=true;a.MLjqui.aria=function(c,e,d){if(!a.MLjqui.ariaEnabled){return}if(e==undefined){a.each(c.aria,function(g,h){var k=!c.base?c.host.attr(g):c.base.host.attr(g);if(k!=undefined&&!a.isFunction(k)){var j=k;switch(h.type){case"number":j=new Number(k);if(isNaN(j)){j=k}break;case"boolean":j=k=="true"?true:false;break;case"date":j=new Date(k);if(j=="Invalid Date"||isNaN(j)){j=k}break}c[h.name]=j}else{var k=c[h.name];if(a.isFunction(k)){k=c[h.name]()}if(k==undefined){k=""}try{!c.base?c.host.attr(g,k.toString()):c.base.host.attr(g,k.toString())}catch(f){}}})}else{try{if(c.host){if(!c.base){if(c.host){if(c.element.setAttribute){c.element.setAttribute(e,d.toString())}else{c.host.attr(e,d.toString())}}else{c.attr(e,d.toString())}}else{if(c.base.host){c.base.host.attr(e,d.toString())}else{c.attr(e,d.toString())}}}else{if(c.setAttribute){c.setAttribute(e,d.toString())}}}catch(b){}}};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(c){var b=this.length;var d=Number(arguments[1])||0;d=(d<0)?Math.ceil(d):Math.floor(d);if(d<0){d+=b}for(;d=0||f.indexOf("WPDesktop")>=0||f.indexOf("IEMobile")>=0||f.indexOf("ZuneWP7")>=0){this.touchDevice=true;return true}else{if(f.indexOf("Touch")>=0){var b=("MSPointerDown" in window)||("pointerdown" in window);if(b){this.touchDevice=true;return true}if(f.indexOf("ARM")>=0){this.touchDevice=true;return true}this.touchDevice=false;return false}}}if(navigator.platform.toLowerCase().indexOf("win")!=-1){this.touchDevice=false;return false}if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){this.touchDevice=true}return this.touchDevice}catch(g){this.touchDevice=false;return false}},getLeftPos:function(b){var c=b.offsetLeft;while((b=b.offsetParent)!=null){if(b.tagName!="HTML"){c+=b.offsetLeft;if(document.all){c+=b.clientLeft}}}return c},getTopPos:function(c){var e=c.offsetTop;var b=a(c).coord();while((c=c.offsetParent)!=null){if(c.tagName!="HTML"){e+=(c.offsetTop-c.scrollTop);if(document.all){e+=c.clientTop}}}var d=navigator.userAgent.toLowerCase();var f=(d.indexOf("windows phone")!=-1||d.indexOf("WPDesktop")!=-1||d.indexOf("ZuneWP7")!=-1||d.indexOf("msie 9")!=-1||d.indexOf("msie 11")!=-1||d.indexOf("msie 10")!=-1)&&d.indexOf("touch")!=-1;if(f){return b.top}if(this.isSafariMobileBrowser()){if(this.isSafari4MobileBrowser()&&this.isIPadSafariMobileBrowser()){return e}if(d.indexOf("version/7")!=-1){return b.top}if(d.indexOf("version/6")!=-1||d.indexOf("version/5")!=-1){e=e+a(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return e+a(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return e+a(window).scrollTop()}return b.top}return e},isChromeMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("android")!=-1;return b},isOperaMiniMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("opera mini")!=-1||c.indexOf("opera mobi")!=-1;return b},isOperaMiniBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("opera mini")!=-1;return b},isNewSafariMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("ipod")!=-1;b=b&&(c.indexOf("version/5")!=-1);return b},isSafari4MobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("ipod")!=-1;b=b&&(c.indexOf("version/4")!=-1);return b},isWindowsPhone:function(){var c=navigator.userAgent.toLowerCase();var b=(c.indexOf("windows phone")!=-1||c.indexOf("WPDesktop")!=-1||c.indexOf("ZuneWP7")!=-1||c.indexOf("msie 9")!=-1||c.indexOf("msie 11")!=-1||c.indexOf("msie 10")!=-1&&c.indexOf("touch")!=-1);return b},isSafariMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return true}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return true}var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("ipod")!=-1||c.indexOf("mobile safari")!=-1;return b},isIPadSafariMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1;return b},isMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("android")!=-1;return b},getTouches:function(b){if(b.originalEvent){if(b.originalEvent.touches&&b.originalEvent.touches.length){return b.originalEvent.touches}else{if(b.originalEvent.changedTouches&&b.originalEvent.changedTouches.length){return b.originalEvent.changedTouches}}}if(!b.touches){b.touches=new Array();b.touches[0]=b.originalEvent!=undefined?b.originalEvent:b;if(b.originalEvent!=undefined&&b.pageX){b.touches[0]=b}if(b.type=="mousemove"){b.touches[0]=b}}return b.touches},getTouchEventName:function(b){if(this.isWindowsPhone()){var c=navigator.userAgent.toLowerCase();if(c.indexOf("windows phone 7")!=-1){if(b.toLowerCase().indexOf("start")!=-1){return"MSPointerDown"}if(b.toLowerCase().indexOf("move")!=-1){return"MSPointerMove"}if(b.toLowerCase().indexOf("end")!=-1){return"MSPointerUp"}}if(b.toLowerCase().indexOf("start")!=-1){return"pointerdown"}if(b.toLowerCase().indexOf("move")!=-1){return"pointermove"}if(b.toLowerCase().indexOf("end")!=-1){return"pointerup"}}else{return b}},dispatchMouseEvent:function(b,f,d){if(this.simulatetouches){return}var c=document.createEvent("MouseEvent");c.initMouseEvent(b,true,true,f.view,1,f.screenX,f.screenY,f.clientX,f.clientY,false,false,false,false,0,null);if(d!=null){d.dispatchEvent(c)}},getRootNode:function(b){while(b.nodeType!==1){b=b.parentNode}return b},setTouchScroll:function(b,c){if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[c]=b},touchScroll:function(B,L,V,G,x,m){if(B==null){return}var F=this;var e=0;var q=0;var f=0;var g=0;var s=0;var h=0;if(!this.scrolling){this.scrolling=[]}this.scrolling[G]=false;var j=false;var o=a(B);var P=["select","input","textarea"];var T=0;var I=0;if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[G]=true;var G=G;var u=this.getTouchEventName("touchstart")+".touchScroll";var C=this.getTouchEventName("touchend")+".touchScroll";var X=this.getTouchEventName("touchmove")+".touchScroll";x.fadeOut(0);m.fadeOut(0);var k,S,z,U,ac,O,W,c,E,Z,t,d,w,v,Q,b,D,ab,n;O=L;ac=0;W=0;xoffset=0;U=x.MLjquiScrollBar("max");n=325;function A(af){if(af.targetTouches&&(af.targetTouches.length>=1)){return af.targetTouches[0].clientY}else{if(af.originalEvent&&af.originalEvent.clientY!==undefined){return af.originalEvent.clientY}else{var ae=F.getTouches(af);return ae[0].clientY}}return af.clientY}function aa(af){if(af.targetTouches&&(af.targetTouches.length>=1)){return af.targetTouches[0].clientX}else{if(af.originalEvent&&af.originalEvent.clientX!==undefined){return af.originalEvent.clientX}else{var ae=F.getTouches(af);return ae[0].clientX}}return af.clientX}var H=function(){var ag,ae,ah,af;ag=Date.now();ae=ag-w;w=ag;ah=W-d;xdelta=xoffset-xframe;d=W;xframe=xoffset;E=true;af=1000*ah/(1+ae);xv=1000*xdelta/(1+ae);t=0.8*af+0.2*t;xvelocity=0.8*xv+0.2*xvelocity};var T=function(af){if(!F.enableScrolling[G]){return true}if(a.inArray(af.target.tagName.toLowerCase(),P)!==-1){return}W=m.MLjquiScrollBar("value");xoffset=x.MLjquiScrollBar("value");var ag=F.getTouches(af);var ah=ag[0];if(ag.length==1){F.dispatchMouseEvent("mousedown",ah,F.getRootNode(ah.target))}function ae(ai){E=true;c=A(ai);ab=aa(ai);t=Q=xvelocity=0;d=W;xframe=xoffset;w=Date.now();clearInterval(v);v=setInterval(H,100);ai.preventDefault()}ae(af);j=false;q=ah.pageY;s=ah.pageX;if(F.simulatetouches){if(ah._pageY!=undefined){q=ah._pageY;s=ah._pageX}}F.scrolling[G]=true;U=x.MLjquiScrollBar("max");O=m.MLjquiScrollBar("max");e=0;g=0;return true};if(o.on){o.on(u,T)}else{o.bind(u,T)}var Y=function(af,ae){W=(af>O)?O:(afU)?U:(af0.5||af<-0.5){Y(b+af,event);requestAnimationFrame(R)}else{Y(b);m.fadeOut("fast")}}}function M(){var ae,af;if(Q){ae=Date.now()-w;af=-Q*Math.exp(-ae/n);if(af>0.5||af<-0.5){l(D+af);requestAnimationFrame(M)}else{l(D);x.fadeOut("fast")}}}var y=function(ae){if(!F.enableScrolling[G]){return true}if(!F.scrolling[G]){return true}var aj=F.getTouches(ae);if(aj.length>1){return true}var af=aj[0].pageY;var ah=aj[0].pageX;if(F.simulatetouches){if(aj[0]._pageY!=undefined){af=aj[0]._pageY;ah=aj[0]._pageX}}var al=af-q;var am=ah-s;I=af;touchHorizontalEnd=ah;f=al-e;h=am-g;j=true;e=al;g=am;var ag=x!=null?x[0].style.visibility!="hidden":true;var ak=m!=null?m[0].style.visibility!="hidden":true;function ai(ao){var aq,ap,an;if(E){aq=A(ao);an=aa(ao);ap=c-aq;xdelta=ab-an;if(ap>2||ap<-2){c=aq;Y(W+ap,ao);H();ao.preventDefault();ao.stopPropagation();return false}else{if(xdelta>2||xdelta<-2){ab=an;l(xoffset+xdelta,ao);H();ao.preventDefault();ao.stopPropagation();return false}}ao.preventDefault()}}if(ag||ak){if((ag)||(ak)){ai(ae)}}};if(o.on){o.on(X,y)}else{o.bind(X,y)}var r=function(af){if(!F.enableScrolling[G]){return true}var ag=F.getTouches(af)[0];if(!F.scrolling[G]){return true}E=false;clearInterval(v);if(t>10||t<-10){Q=0.8*t;b=Math.round(W+Q);w=Date.now();requestAnimationFrame(R);m.fadeIn(100)}else{if(xvelocity>10||xvelocity<-10){Q=0.8*xvelocity;D=Math.round(xoffset+Q);w=Date.now();requestAnimationFrame(M);x.fadeIn(100)}else{x.fadeOut(100);m.fadeOut(100)}}F.scrolling[G]=false;if(j){F.dispatchMouseEvent("mouseup",ag,af.target)}else{var ag=F.getTouches(af)[0],ae=F.getRootNode(ag.target);F.dispatchMouseEvent("mouseup",ag,ae);F.dispatchMouseEvent("click",ag,ae);return true}};if(this.simulatetouches){var p=a(window).on!=undefined||a(window).bind;var N=function(ae){try{r(ae)}catch(af){}F.scrolling[G]=false};a(window).on!=undefined?a(document).on("mouseup.touchScroll",N):a(document).bind("mouseup.touchScroll",N);if(window.frameElement){if(window.top!=null){var K=function(ae){try{r(ae)}catch(af){}F.scrolling[G]=false};if(window.top.document){a(window.top.document).on?a(window.top.document).on("mouseup",K):a(window.top.document).bind("mouseup",K)}}}var ad=a(document).on!=undefined||a(document).bind;var J=function(ae){if(!F.scrolling[G]){return true}F.scrolling[G]=false;var ag=F.getTouches(ae)[0],af=F.getRootNode(ag.target);F.dispatchMouseEvent("mouseup",ag,af);F.dispatchMouseEvent("click",ag,af)};a(document).on!=undefined?a(document).on("touchend",J):a(document).bind("touchend",J)}if(o.on){o.on("dragstart",function(ae){ae.preventDefault()});o.on("selectstart",function(ae){ae.preventDefault()})}o.on?o.on(C+" touchcancel.touchScroll",r):o.bind(C+" touchcancel.touchScroll",r)}});a.MLjqui.cookie=a.MLjqui.cookie||{};a.extend(a.MLjqui.cookie,{cookie:function(e,f,c){if(arguments.length>1&&String(f)!=="[object Object]"){c=a.extend({},c);if(f===null||f===undefined){c.expires=-1}if(typeof c.expires==="number"){var h=c.expires,d=c.expires=new Date();d.setDate(d.getDate()+h)}f=String(f);return(document.cookie=[encodeURIComponent(e),"=",c.raw?f:encodeURIComponent(f),c.expires?"; expires="+c.expires.toUTCString():"",c.path?"; path="+c.path:"",c.domain?"; domain="+c.domain:"",c.secure?"; secure":""].join(""))}c=f||{};var b,g=c.raw?function(j){return j}:decodeURIComponent;return(b=new RegExp("(?:^|; )"+encodeURIComponent(e)+"=([^;]*)").exec(document.cookie))?g(b[1]):null}});a.MLjqui.string=a.MLjqui.string||{};a.extend(a.MLjqui.string,{replace:function(f,d,e){if(d===e){return this}var b=f;var c=b.indexOf(d);while(c!=-1){b=b.replace(d,e);c=b.indexOf(d)}return b},contains:function(b,c){if(b==null||c==null){return false}return b.indexOf(c)!=-1},containsIgnoreCase:function(b,c){if(b==null||c==null){return false}return b.toString().toUpperCase().indexOf(c.toString().toUpperCase())!=-1},equals:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);if(c.length==b.length){return b.slice(0,c.length)==c}return false},equalsIgnoreCase:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);if(c.length==b.length){return b.toUpperCase().slice(0,c.length)==c.toUpperCase()}return false},startsWith:function(b,c){if(b==null||c==null){return false}return b.slice(0,c.length)==c},startsWithIgnoreCase:function(b,c){if(b==null||c==null){return false}return b.toUpperCase().slice(0,c.length)==c.toUpperCase()},normalize:function(b){if(b.charCodeAt(b.length-1)==65279){b=b.substring(0,b.length-1)}return b},endsWith:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);return b.slice(-c.length)==c},endsWithIgnoreCase:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);return b.toUpperCase().slice(-c.length)==c.toUpperCase()}});a.extend(a.easing,{easeOutBack:function(f,g,e,k,j,h){if(h==undefined){h=1.70158}return k*((g=g/j-1)*g*((h+1)*g+h)+1)+e},easeInQuad:function(f,g,e,j,h){return j*(g/=h)*g+e},easeInOutCirc:function(f,g,e,j,h){if((g/=h/2)<1){return -j/2*(Math.sqrt(1-g*g)-1)+e}return j/2*(Math.sqrt(1-(g-=2)*g)+1)+e},easeInOutSine:function(f,g,e,j,h){return -j/2*(Math.cos(Math.PI*g/h)-1)+e},easeInCubic:function(f,g,e,j,h){return j*(g/=h)*g*g+e},easeOutCubic:function(f,g,e,j,h){return j*((g=g/h-1)*g*g+1)+e},easeInOutCubic:function(f,g,e,j,h){if((g/=h/2)<1){return j/2*g*g*g+e}return j/2*((g-=2)*g*g+2)+e},easeInSine:function(f,g,e,j,h){return -j*Math.cos(g/h*(Math.PI/2))+j+e},easeOutSine:function(f,g,e,j,h){return j*Math.sin(g/h*(Math.PI/2))+e},easeInOutSine:function(f,g,e,j,h){return -j/2*(Math.cos(Math.PI*g/h)-1)+e}})})(MLjquiBaseFramework);(function(b){b.extend(b.event.special,{close:{noBubble:true},open:{noBubble:true},cellclick:{noBubble:true},rowclick:{noBubble:true},tabclick:{noBubble:true},selected:{noBubble:true},expanded:{noBubble:true},collapsed:{noBubble:true},valuechanged:{noBubble:true},expandedItem:{noBubble:true},collapsedItem:{noBubble:true},expandingItem:{noBubble:true},collapsingItem:{noBubble:true}});b.fn.extend({ischildof:function(f){var d=b(this).parents().get();for(var c=0;c>>0;if(typeof N!=="function"){throw TypeError()}var P=arguments[1],O;for(O=0;O=0){if(NK.length){I.push.apply(I,new Array(N-K.length))}}}else{throw new RangeError("Invalid array length")}return M}});i.MLjqui.observableArray.prototype.fromArray=function(O,N){var M=new i.MLjqui.observableArray(O,N);return M};i.MLjqui.observableArray.prototype.clone=function(){var M=new i.MLjqui.observableArray(K,J);M.observing=I.observing;M.changes=I.changes;M.notifier=I.notifier;return M};I.remove=function(N){if(N<0||N>=I.length){throw new Error("Invalid index : "+N)}if(I.hasOwnProperty(N)){var M=I[N];I[N]=undefined;K[N]=undefined;if(typeof H==="function"){H({object:I,type:"delete",index:N,name:"index",newValue:undefined,oldValue:M})}return true}return false};I.concat=function(N,P){var M=K.concat(N);var O=new i.MLjqui.observableArray(M,P);return O};Object.getOwnPropertyNames(Array.prototype).forEach(function(M){if(!(M in I)){var N=function(){var Q=I.observing;I.observing=false;var P=K[M];var O=P.apply(K,arguments);I.observing=Q;return O};Object.defineProperty(I,M,{configurable:false,enumerable:true,writeable:false,value:N})}});I.set=function(N,P){if(i.type(N)=="string"&&N.split(".").length>1){var M=N.split(".");var Q=I;for(var O=0;O=I.length){throw new Error("Invalid Index: "+N)}}if(O=I.length){I.push(P)}else{I[N]=P}return true};I.get=function(M){return I[M]};if(e instanceof Array){I.push.apply(I,e)}H=function(){if(!I.observing){return}if(arguments&&arguments[0]){I.changes.push(arguments[0])}if(J){J.apply(I,arguments)}if(I.notifier){I.notifier.apply(I,arguments)}};return I};i.MLjqui.formatDate=function(H,J,I){var e=i.MLjqui.dataFormat.formatdate(H,J,I);return e};i.MLjqui.formatNumber=function(H,J,I){var e=i.MLjqui.dataFormat.formatnumber(H,J,I);return e};i.MLjqui.dataAdapter=function(J,e){if(J!=undefined){if(J.dataFields!==undefined){J.datafields=J.dataFields}if(J.dataType!==undefined){J.datatype=J.dataType}if(J.localData!==undefined){J.localdata=J.localData}if(J.sortColumn!==undefined){J.sortcolumn=J.sortColumn}if(J.sortDirection!==undefined){J.sortdirection=J.sortDirection}if(J.sortOrder!==undefined){J.sortdirection=J.sortOrder}if(J.formatData!==undefined){J.formatdata=J.formatData}if(J.processData!==undefined){J.processdata=J.processData}if(J.pageSize!==undefined){J.pagesize=J.pageSize}if(J.pageNum!==undefined){J.pagenum=J.pageNum}if(J.updateRow!==undefined){J.updaterow=J.updateRow}if(J.addRow!==undefined){J.addrow=J.addRow}if(J.deleteRow!==undefined){J.deleterow=J.deleteRow}if(J.contentType!==undefined){J.contenttype=J.contentType}if(J.totalRecords!=undefined){J.totalrecords=J.totalRecords}if(J.loadError!=undefined){J.loadError=J.loadError}if(J.sortComparer!=undefined){J.sortcomparer=J.sortComparer}}this._source=J;this._options=e||{};if(J.beforeLoadComplete!=undefined){this._options.beforeLoadComplete=this._source.beforeLoadComplete}if(J.downloadComplete!=undefined){this._options.downloadComplete=this._source.downloadComplete}if(J.loadComplete!=undefined){this._options.loadComplete=this._source.loadComplete}if(J.autoBind!=undefined){this._options.downloadComplete=this._source.autoBind}if(J.formatData!=undefined){this._options.formatData=this._source.formatData}if(J.loadError!=undefined){this._options.loadError=this._source.loadError}if(J.beforeSend!=undefined){this._options.beforeSend=this._source.beforeSend}if(J.contentType!=undefined){this._options.contentType=this._source.contentType}if(J.async!=undefined){this._options.async=this._source.async}if(J.loadServerData!=undefined){this._options.loadServerData=this._source.loadServerData}if(J.uniqueDataFields!=undefined){this._options.uniqueDataFields=this._source.uniqueDataFields}this.records=new Array();this._downloadComplete=new Array();this._bindingUpdate=new Array();if(J!=undefined&&J.localdata!=null&&typeof J.localdata=="function"){var I=J.localdata();if(I!=null){J._localdata=J.localdata;var H=this;if(J._localdata.subscribe){H._oldlocaldata=[];J._localdata.subscribe(function(K){var L=function(M){if(i.isArray(M)){return i.makeArray(L(i(M)))}return i.extend(true,{},M)};if(H.suspendKO==false||H.suspendKO==undefined||H._oldlocaldata.length==0){H._oldlocaldata=L(K)}},J._localdata,"beforeChange");J._localdata.subscribe(function(L){if(H.suspendKO==false||H.suspendKO==undefined){var K="";H._oldrecords=H.records;if(H._oldlocaldata.length==0){J.localdata=J._localdata()}if(H._oldlocaldata.length==0){K="change"}else{if(L){if(H._oldlocaldata.length==L.length){K="update"}if(H._oldlocaldata.length>L.length){K="remove"}if(H._oldlocaldata.length0){this.callBindingUpdate("update");this._changedrecords=[]}else{this.dataBind(null,"")}}},formatDate:function(H,J,I){var e=i.MLjqui.dataFormat.formatdate(H,J,I);return e},formatNumber:function(H,J,I){var e=i.MLjqui.dataFormat.formatnumber(H,J,I);return e},dataBind:function(R,aa){if(this.isUpdating==true){return}var W=this._source;if(!W){return}if(W.generatedfields){W.datafields=null;W.generatedfields=null}i.MLjqui.dataFormat.datescache=new Array();if(W.dataFields!=null){W.datafields=W.dataFields}if(W.recordstartindex==undefined){W.recordstartindex=0}if(W.recordendindex==undefined){W.recordendindex=0}if(W.loadallrecords==undefined){W.loadallrecords=true}if(W.root==undefined){W.root=""}if(W.record==undefined){W.record=""}if(W.sort!=undefined){this.sort=W.sort}if(W.filter!=undefined){this.filter=W.filter}else{this.filter=null}if(W.sortcolumn!=undefined){this.sortcolumn=W.sortcolumn}if(W.sortdirection!=undefined){this.sortdirection=W.sortdirection}if(W.sortcomparer!=undefined){this.sortcomparer=W.sortcomparer}this.records=new Array();var K=this._options||{};this.virtualmode=K.virtualmode!=undefined?K.virtualmode:false;this.totalrecords=K.totalrecords!=undefined?K.totalrecords:0;this.pageable=K.pageable!=undefined?K.pageable:false;this.pagesize=K.pagesize!=undefined?K.pagesize:0;this.pagenum=K.pagenum!=undefined?K.pagenum:0;this.cachedrecords=K.cachedrecords!=undefined?K.cachedrecords:new Array();this.originaldata=new Array();this.recordids=new Array();this.updaterow=K.updaterow!=undefined?K.updaterow:null;this.addrow=K.addrow!=undefined?K.addrow:null;this.deleterow=K.deleterow!=undefined?K.deleterow:null;this.cache=K.cache!=undefined?K.cache:false;this.unboundmode=false;if(W.formatdata!=undefined){K.formatData=W.formatdata}if(W.data!=undefined){if(K.data==undefined){K.data={}}i.extend(K.data,W.data)}if(W.mapchar!=undefined){this.mapChar=W.mapchar?W.mapchar:">"}else{this.mapChar=K.mapChar?K.mapChar:">"}if(K.unboundmode||W.unboundmode){this.unboundmode=K.unboundmode||W.unboundmode}if(W.cache!=undefined){this.cache=W.cache}if(this.koSubscriptions){for(var ac=0;ac0){for(var Z=0;Z0){var an=ao;for(var ak=0;ak0){var aG=false;var aB=false;for(var ax=0;ax=0)){aG=true;at=aw.map;aE=aw.type;aC=aw.name;aB=true;var aF=an[ay];if(at!=null){var ar=at.split(ah.mapChar);if(ar.length>0){var az=an;for(var au=0;au0){var az=an;for(var au=0;au0){var aj=this;var am=H(aj,ad);am.uid=ak;ah.records[ah.records.length]=am}else{this.uid=ak;ah.records[ah.records.length]=this}})}else{if(ad==0){var V=0;var T=new Array();i.each(W.localdata,function(al,an){var aj=new Object(this);if(typeof an==="string"){ah.records=W.localdata;return false}else{var ak=ah.getid(W.id,aj,al);if(typeof(ak)==="object"){ak=al}aj.uid=ak;if(al==0){for(var ao in this){V++;var ap=i.type(this[ao]);T.push({name:ao,type:ap})}ad=V;W.datafields=T;W.generatedfields=T}if(ad>0){var am=H(aj,ad);am.uid=ak;ah.records[ah.records.length]=am}else{ah.records[ah.records.length]=aj}}})}else{i.each(W.localdata,function(al){var aj=this;var am=H(aj,ad);var ak=ah.getid(W.id,am,al);if(typeof(ak)==="object"){ak=al}var aj=new Object(am);aj.uid=ak;ah.records[ah.records.length]=aj})}}}this.originaldata=W.localdata;this.cachedrecords=this.records;this.addForeignValues(W);if(K.uniqueDataFields){var S=this.getUniqueRecords(this.records,K.uniqueDataFields);this.records=S;this.cachedrecords=S}if(K.beforeLoadComplete){var ae=K.beforeLoadComplete(ah.records,this.originaldata);if(ae!=undefined){ah.records=ae;ah.cachedrecords=ae}}if(K.autoSort&&K.autoSortField){var O=Object.prototype.toString;Object.prototype.toString=(typeof field=="function")?field:function(){return this[K.autoSortField]};ah.records.sort(function(ak,aj){if(ak===undefined){ak=null}if(aj===undefined){aj=null}if(ak===null&&aj===null){return 0}if(ak===null&&aj!==null){return 1}if(ak!==null&&aj===null){return -1}ak=ak.toString();aj=aj.toString();if(ak===null&&aj===null){return 0}if(ak===null&&aj!==null){return 1}if(ak!==null&&aj===null){return -1}if(i.MLjqui.dataFormat.isNumber(ak)&&i.MLjqui.dataFormat.isNumber(aj)){if(akaj){return 1}return 0}else{if(i.MLjqui.dataFormat.isDate(ak)&&i.MLjqui.dataFormat.isDate(aj)){if(akaj){return 1}return 0}else{if(!i.MLjqui.dataFormat.isNumber(ak)&&!i.MLjqui.dataFormat.isNumber(aj)){ak=String(ak).toLowerCase();aj=String(aj).toLowerCase()}}}try{if(akaj){return 1}}catch(al){var am=al}return 0});Object.prototype.toString=O}ah.loadedData=W.localdata;ah.buildHierarchy();if(i.isFunction(K.loadComplete)){K.loadComplete(W.localdata,ah.records)}break;case"json":case"jsonp":case"xml":case"xhtml":case"script":case"text":case"ics":if(W.localdata!=null&&!W.url){if(i.isFunction(W.beforeprocessing)){W.beforeprocessing(W.localdata)}if(W.datatype==="xml"){ah.loadxml(W.localdata,W.localdata,W)}else{if(Q==="text"){ah.loadtext(W.localdata,W)}else{if(Q==="ics"){ah.loadics(W.localdata,W)}else{ah.loadjson(W.localdata,W.localdata,W)}}}ah.addForeignValues(W);if(K.uniqueDataFields){var S=ah.getUniqueRecords(ah.records,K.uniqueDataFields);ah.records=S;ah.cachedrecords=S}if(K.beforeLoadComplete){var ae=K.beforeLoadComplete(ah.records,this.originaldata);if(ae!=undefined){ah.records=ae;ah.cachedrecords=ae}}ah.loadedData=W.localdata;ah.buildHierarchy.call(ah);if(i.isFunction(K.loadComplete)){K.loadComplete(W.localdata,ah.records)}ah.callBindingUpdate(aa);return}var af=K.data!=undefined?K.data:{};if(W.processdata){W.processdata(af)}if(i.isFunction(K.processData)){K.processData(af)}if(i.isFunction(K.formatData)){var e=K.formatData(af);if(e!=undefined){af=e}}var ab="application/x-www-form-urlencoded";if(K.contentType){ab=K.contentType}var J="GET";if(W.type){J=W.type}if(K.type){J=K.type}var X=Q;if(Q=="ics"){X="text"}if(W.url&&W.url.length>0){if(i.isFunction(K.loadServerData)){ah._requestData(af,W,K)}else{this.xhr=i.MLjqui.data.ajax({dataType:X,cache:this.cache,type:J,url:W.url,async:N,timeout:W.timeout,contentType:ab,data:af,success:function(am,aj,ap){if(i.isFunction(W.beforeprocessing)){var ao=W.beforeprocessing(am,aj,ap);if(ao!=undefined){am=ao}}if(i.isFunction(K.downloadComplete)){var ao=K.downloadComplete(am,aj,ap);if(ao!=undefined){am=ao}}if(am==null){ah.records=new Array();ah.cachedrecords=new Array();ah.originaldata=new Array();ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){K.loadComplete(new Array())}return}var ak=am;if(am.records){ak=am.records}if(am.totalrecords!=undefined){W.totalrecords=am.totalrecords}else{if(am.totalRecords!=undefined){W.totalrecords=am.totalRecords}}if(W.datatype==="xml"){ah.loadxml(null,ak,W)}else{if(Q==="text"){ah.loadtext(ak,W)}else{if(Q==="ics"){ah.loadics(ak,W)}else{ah.loadjson(null,ak,W)}}}ah.addForeignValues(W);if(K.uniqueDataFields){var al=ah.getUniqueRecords(ah.records,K.uniqueDataFields);ah.records=al;ah.cachedrecords=al}if(K.beforeLoadComplete){var an=K.beforeLoadComplete(ah.records,am);if(an!=undefined){ah.records=an;ah.cachedrecords=an}}ah.loadedData=am;ah.buildHierarchy.call(ah);ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){K.loadComplete(am,aj,ap,ah.records)}},error:function(al,aj,ak){if(i.isFunction(W.loaderror)){W.loaderror(al,aj,ak)}if(i.isFunction(K.loadError)){K.loadError(al,aj,ak)}al=null;ah.callDownloadComplete()},beforeSend:function(ak,aj){if(i.isFunction(K.beforeSend)){K.beforeSend(ak,aj)}if(i.isFunction(W.beforesend)){W.beforesend(ak,aj)}}})}}else{ah.buildHierarchy(new Array());ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){if(!ai){var ai={}}K.loadComplete(ai)}}break}this.callBindingUpdate(aa)},buildHierarchy:function(K){var e=this._source;var P=new Array();if(!e.datafields){return}if(e.hierarchy&&!e.hierarchy.reservedNames){e.hierarchy.reservedNames={leaf:"leaf",parent:"parent",expanded:"expanded",checked:"checked",selected:"selected",level:"level",icon:"icon",data:"data"}}else{if(e.hierarchy){var O=e.hierarchy.reservedNames;if(!O.leaf){O.leaf="leaf"}if(!O.parent){O.parent="parent"}if(!O.expanded){O.expanded="expanded"}if(!O.checked){O.checked="checked"}if(!O.selected){O.selected="selected"}if(!O.level){O.level="level"}if(!O.data){O.data="data"}}}if(!e.hierarchy){return}var N=this;var O=e.hierarchy.reservedNames;if(e.hierarchy.root){if(e.dataType=="xml"){var P=this.getRecordsHierarchy("uid","parentuid","records",null,K);this.hierarchy=P;return P}else{this.hierarchy=this.records;var R=e.hierarchy.root;for(var L=0;L1){var W=S;for(var V=0;V0){var K=function(O){if(O){for(var P=0;P=0&&(this._source.hierarchy||I)){var L=(J._source&&J._source.hierarchy)?J._source.hierarchy.reservedNames:null;if(L==null){L=N()}H[L.level]=0;if(e=="last"){this.hierarchy.push(H)}else{if(typeof e==="number"&&isFinite(e)){this.hierarchy.splice(e,0,H)}else{this.hierarchy.splice(0,0,H)}}}else{if(e=="last"){this.records.push(H)}else{if(typeof e==="number"&&isFinite(e)){this.records.splice(e,0,H)}else{this.records.splice(0,0,H)}}}return true}}return false},deleteRecord:function(H){var J=this;if(this.hierarchy.length>0){var K=function(L){if(L){for(var O=0;OQ.totalrecords){M=Q.totalrecords}}else{if(Q.virtualmode){K=H.recordstartindex;M=H.recordendindex;if(M>Q.totalrecords){M=Q.totalrecords}}else{K=0;M=Q.records.length}}for(var O=K;O0){V(af+1,ae)}else{if(!P){ac[ad].leaf=true}else{ac[ad][P.leaf]=true}}}else{if(!P){ac[ad].leaf=true}else{ac[ad][P.leaf]=true}}}};V(0,e)}return e},bindBindingUpdate:function(H,e){this._bindingUpdate[this._bindingUpdate.length]={id:H,func:e}},unbindBindingUpdate:function(H){for(var e=0;e0){return e}else{if(N.map){try{var e=i(H).attr(N.map);if(e!=null&&e.toString().length>0){return e}else{if(i(N.map,H).length>0){return i(N.map,H).text()}else{if(i(N.name,H).length>0){return i(N.name,H).text()}}}}catch(J){return K}}}return}}if(i(N,H).length>0){return i(N,H).text()}if(N){if(N.toString().length>0){var e=i(H).attr(N);if(e!=null&&e.toString().length>0){return i.trim(e).split(" ").join("").replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,"")}else{var I=N.split(this.mapChar);if(I.length>1){var M=H;for(var L=0;L1){var aa=ae;for(var Q=0;Q0){var aa=ae;for(var Q=0;Q0){var Z=I;for(var Q=0;Q0){var al=am;for(var ah=0;ah0){W=ag[0]}}}else{var ad=Q.map.substring(0,M-1);var O=Q.map.indexOf("]");var R=Q.map.substring(M+1,O);W=i(ad,I).attr(R);if(W==undefined){W=i(I).attr(R)}if(W==undefined){W=""}}if(W==""){W=i(I).attr(Q.map);if(W==undefined){W=""}}}}if(W==""){W=i(Q.name,I);if(W.length==1){W=W.text()}else{var ag=new Array();for(var ab=0;ab0){W=ag[0]}}if(W==""){W=i(I).attr(Q.name);if(W==undefined){W=""}}if(W==""){if(I.nodeName&&I.nodeName==Q.name&&I.firstChild){W=i(I.firstChild).text()}}}var V=W;W=this.getvaluebytype(W,Q);if(Q.displayname!=undefined){L[Q.displayname]=W}else{L[Q.name]=W}}if(U.recordendindex<=0||X0){var ah=this.getid(U.id,i(I).parents(U.hierarchy.record+":first"));N.parentuid=ah}else{N.parentuid=null}}}this.records=aa;this.cachedrecords=this.records},loadics:function(N,H){if(N==null){return}var S=H.rowDelimiter||this.rowDelimiter||"\n";var R=N.split(S);var K=R.length;var Q=N.split("\r");if(K==1&&Q.length>1){R=Q;K=R.length}this.records=new Array();this.originaldata=new Array();var L=this.records;this.recordids=new Array();var I=0;var P=function(V){var T=/^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z)?$/;var U=T.exec(V);if(!U){throw new Error("Invalid UNTIL value: "+V)}return new Date(Date.UTC(U[1],U[2]-1,U[3],U[5]||0,U[6]||0,U[7]||0))};for(var M=0;M=0){e.SUMMARY=O.substring(O.indexOf("SUMMARY")+8);continue}if(O.indexOf("LOCATION")>=0){e.LOCATION=O.substring(O.indexOf("LOCATION")+9);continue}if(O.indexOf("DESCRIPTION")>=0){e.DESCRIPTION=O.substring(O.indexOf("DESCRIPTION")+12);continue}if(O.indexOf("RRULE")>=0){e.RRULE=O.substring(O.indexOf("RRULE")+6);continue}if(O.indexOf("EXDATE")>=0){var J=O.substring(O.indexOf("EXDATE")+7);e.EXDATE=J;continue}if(O.indexOf("DTEND")>=0){e.DTEND=P(O.substring(O.indexOf("DTEND")+6));continue}if(O.indexOf("DTSTART")>=0){e.DTSTART=P(O.substring(O.indexOf("DTSTART")+8));continue}if(O.indexOf("UID")>=0){e.uid=e.UID=O.substring(O.indexOf("UID")+4);continue}if(O.indexOf("STATUS")>=0){e.STATUS=O.substring(O.indexOf("STATUS")+7);continue}if(O=="END:VEVENT"){L.push(e);continue}}this.records=L;this.cachedrecords=this.records},loadtext:function(Y,P){if(Y==null){return}var e=P.rowDelimiter||this.rowDelimiter||"\n";var L=Y.split(e);var J=L.length;var X=Y.split("\r");if(J==1&&X.length>1){L=X;J=L.length}this.totalrecords=this.virtualmode?(P.totalrecords||J):J;this.records=new Array();this.originaldata=new Array();var U=this.records;var R=!this.pageable?P.recordstartindex:this.pagesize*this.pagenum;this.recordids=new Array();if(P.loadallrecords){R=0;J=this.totalrecords}var N=0;if(this.virtualmode){R=!this.pageable?P.recordstartindex:this.pagesize*this.pagenum;N=R;R=0;J=this.totalrecords}var V=P.datafields.length;var O=P.columnDelimiter||this.columnDelimiter;if(!O){O=(P.datatype==="tab"||P.datatype==="tsv")?"\t":","}for(var T=R;T=H.length){continue}var M=P.datafields[S];var Q=H[S];if(M.map&&i.isFunction(M.map)){Q=M.map(I)}if(M.type){Q=this.getvaluebytype(Q,M)}var Z=M.map||M.name||S.toString();K[Z]=Q;if(P.id!=null){if(P.id===M.name){W=Q;this.recordids[W]=I}}}if(W==null){W=T}U[N+T]=i.extend({},K);U[N+T].uid=W;this.originaldata[N+T]=i.extend({},U[T])}}this.records=U;this.cachedrecords=this.records},getvaluebytype:function(L,H){var J=L;if(L==null){return L}if(i.isArray(L)&&H.type!="array"){for(var I=0;I=L){return J}}return 0},toUpper:function(e){return e.split("\u00A0").join(" ").toUpperCase()},toUpperArray:function(e){var J=[];for(var I=0,H=e.length;I'+e+""}return''+e+""},formatemail:function(e){return''+e+""},formatNumber:function(e,I,H){return this.formatnumber(e,I,H)},formatnumber:function(T,S,O){if(O==undefined||O==null||O==""){O=this.defaultcalendar()}if(S===""||S===null){return T}if(!this.isNumber(T)){T*=1}var P;if(S.length>1){P=parseInt(S.slice(1),10)}var V={};var Q=S.charAt(0).toUpperCase();V.thousandsSeparator=O.thousandsseparator;V.decimalSeparator=O.decimalseparator;switch(Q){case"D":case"d":case"F":case"f":V.decimalPlaces=P;break;case"N":case"n":V.decimalPlaces=0;break;case"C":case"c":V.decimalPlaces=P;if(O.currencysymbolposition=="before"){V.prefix=O.currencysymbol}else{V.suffix=O.currencysymbol}break;case"P":case"p":V.suffix=O.percentsymbol;V.decimalPlaces=P;break;default:throw"Bad number format specifier: "+Q}if(this.isNumber(T)){var K=(T<0);var I=T+"";var R=(V.decimalSeparator)?V.decimalSeparator:".";var e;if(this.isNumber(V.decimalPlaces)){var L=V.decimalPlaces;var N=Math.pow(10,L);I=(T*N).toFixed(0)/N+"";e=I.lastIndexOf(".");if(L>0){if(e<0){I+=R;e=I.length-1}else{if(R!=="."){I=I.replace(".",R)}}while((I.length-1-e)0&&L==undefined){if(R!=="."){I=I.replace(".",R)}}}if(V.thousandsSeparator){var U=V.thousandsSeparator;e=I.lastIndexOf(R);e=(e>-1)?e:I.length;var J=I.substring(e);var H=-1;for(var M=e;M>0;M--){H++;if((H%3===0)&&(M!==e)&&(!K||(M>1))){J=U+J}J=I.charAt(M-1)+J}I=J}I=(V.prefix)?V.prefix+I:I;I=(V.suffix)?I+V.suffix:I;return I}else{return T}},tryparsedate:function(ai,aj){if(aj==undefined||aj==null){aj=this.defaultcalendar()}var O=this;if(ai==""){return null}if(ai!=null&&!ai.substring){ai=ai.toString()}if(ai!=null&&ai.substring(0,6)=="/Date("){var ar=/^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/;var ap=new Date(+ai.replace(/\/Date\((\d+)\)\//,"$1"));if(ap=="Invalid Date"){var al=ai.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/);var ap=null;if(al){ap=new Date(1*al[1]+3600000*al[2]+60000*al[3])}}if(ap==null||ap=="Invalid Date"||isNaN(ap)){var P=ar.exec(ai);if(P){var R=new Date(parseInt(P[1]));if(P[2]){var X=parseInt(P[3]);if(P[2]==="-"){X=-X}var T=R.getUTCMinutes();R.setUTCMinutes(T-X)}if(!isNaN(R.valueOf())){return R}}}return ap}patterns=aj.patterns;for(prop in patterns){ap=O.parsedate(ai,patterns[prop],aj);if(ap){if(prop=="ISO"){var aa=O.parsedate(ai,patterns.ISO2,aj);if(aa){return aa}}return ap}}if(ai!=null){var aa=null;var L=[":","/","-"];var an=true;for(var N=0;N=0){I=ai.substring(ai.indexOf(":")-2);I=ae.trim(I);W=ai.substring(0,ai.indexOf(":")-2)}else{if(ai.toUpperCase().indexOf("AM")>=0){I=ai.substring(ai.toUpperCase().indexOf("AM")-2);I=ae.trim(I);W=ai.substring(0,ai.toUpperCase().indexOf("AM")-2)}else{if(ai.toUpperCase().indexOf("PM")>=0){I=ai.substring(ai.toUpperCase().indexOf("PM")-2);I=ae.trim(I);W=ai.substring(0,ai.toUpperCase().indexOf("PM")-2)}}}var e=new Date();var ag=false;if(W){for(var ao=0;ao=0){L=W.split(ak[ao]);break}}var H=new Array();var U=new Array();var ac=new Array();var Q=null;var au=null;for(var ao=0;ao2){au=ao;break}}}for(var ao=0;ao0){e=am[0];ag=true}}if(I){var af=I.indexOf(":")>=0?I.split(":"):I;var K=ae.parsedate(I,"h:mm tt",aj)||ae.parsedate(I,"h:mm:ss tt",aj)||ae.parsedate(I,"HH:mm:ss.fff",aj)||ae.parsedate(I,"HH:mm:ss.ff",aj)||ae.parsedate(I,"HH:mm:ss.tttt",aj)||ae.parsedate(I,"HH:mm:ss",aj)||ae.parsedate(I,"HH:mm",aj)||ae.parsedate(I,"HH",aj);var V=0,J=0,Y=0,Z=0;if(K&&K.getTime()!=NaN){V=K.getHours();J=K.getMinutes();Y=K.getSeconds();Z=K.getMilliseconds()}else{if(af.length==1){V=parseInt(af[0])}if(af.length==2){V=parseInt(af[0]);J=parseInt(af[1])}if(af.length==3){V=parseInt(af[0]);J=parseInt(af[1]);if(af[2].indexOf(".")>=0){Y=parseInt(af[2].toString().split(".")[0]);Z=parseInt(af[2].toString().split(".")[1])}else{Y=parseInt(af[2])}}if(af.length==4){V=parseInt(af[0]);J=parseInt(af[1]);Y=parseInt(af[2]);Z=parseInt(af[3])}}if(e&&!isNaN(V)&&!isNaN(J)&&!isNaN(Y)&&!isNaN(Z)){e.setHours(V,J,Y,Z);ag=true}}if(ag){return e}}return null},getparseregexp:function(e,R){var T=e._parseRegExp;if(!T){e._parseRegExp=T={}}else{var K=T[R];if(K){return K}}var Q=this.expandFormat(e,R).replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1"),O=["^"],H=[],N=0,J=0,W=this.getTokenRegExp(),L;while((L=W.exec(Q))!==null){var V=Q.slice(N,L.index);N=W.lastIndex;J+=this.appendPreOrPostMatch(V,O);if(J%2){O.push(L[0]);continue}var I=L[0],M=I.length,S;switch(I){case"dddd":case"ddd":case"MMMM":case"MMM":case"gg":case"g":S="(\\D+)";break;case"tt":case"t":S="(\\D*)";break;case"yyyy":case"fff":case"ff":case"f":S="(\\d{"+M+"})";break;case"dd":case"d":case"MM":case"M":case"yy":case"y":case"HH":case"H":case"hh":case"h":case"mm":case"m":case"ss":case"s":S="(\\d\\d?)";break;case"zzz":S="([+-]?\\d\\d?:\\d{2})";break;case"zz":case"z":S="([+-]?\\d\\d?)";break;case"/":S="(\\"+e["/"]+")";break;default:throw"Invalid date format pattern '"+I+"'.";break}if(S){O.push(S)}H.push(L[0])}this.appendPreOrPostMatch(Q.slice(N),O);O.push("$");var U=O.join("").replace(/\s+/g,"\\s+"),P={regExp:U,groups:H};return T[R]=P},outOfRange:function(I,e,H){return IH},expandYear:function(L,J){var H=new Date(),e=this.getEra(H);if(J<100){var I=L.twoDigitYearMax;I=typeof I==="string"?new Date().getFullYear()%100+parseInt(I,10):I;var K=this.getEraYear(H,L,e);J+=K-(K%100);if(J>I){J-=100}}return J},parsedate:function(ab,ai,W){if(W==undefined||W==null){W=this.defaultcalendar()}ab=this.trim(ab);var T=W,an=this.getparseregexp(T,ai),N=new RegExp(an.regExp).exec(ab);if(N===null){return null}var aj=an.groups,Z=null,R=null,am=null,al=null,S=null,L=0,ae,ad=0,ak=0,e=0,I=null,U=false;for(var af=0,ah=aj.length;af1&&ah.length)<[^<]*)*<\/script>/gi,d=/([?&])_=[^&]*/,h=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,t=/\s+/,F=i.fn.load,G={},C={},q=["*/"]+["*"];try{E=location.href}catch(A){E=document.createElement("a");E.href="";E=E.href}l=h.exec(E.toLowerCase())||[];function r(e){return function(K,M){if(typeof K!=="string"){M=K;K="*"}var H,N,O,J=K.toLowerCase().split(t),I=0,L=J.length;if(i.isFunction(M)){for(;I0?4:0;if(al){aj=B(Q,W,al)}if(ak>=200&&ak<300||ak===304){if(Q.ifModified){an=W.getResponseHeader("Last-Modified");if(an){i.lastModified[P]=an}an=W.getResponseHeader("Etag");if(an){i.etag[P]=an}}if(ak===304){ah="notmodified";e=true}else{e=c(Q,aj);ah=e.state;ao=e.data;am=e.error;e=!am}}else{am=ah;if(!ah||ak){ah="error";if(ak<0){ak=0}}}W.status=ak;W.statusText=(ag||ah)+"";if(e){ae.resolveWith(af,[ao,ah,W])}else{ae.rejectWith(af,[W,ah,am])}W.statusCode(N);N=undefined;if(I){T.trigger("ajax"+(e?"Success":"Error"),[W,Q,e?ao:am])}aa.fireWith(af,[W,ah]);if(I){T.trigger("ajaxComplete",[W,Q]);if(!(--i.active)){i.event.trigger("ajaxStop")}}}ae.promise(W);W.success=W.done;W.error=W.fail;W.complete=aa.add;W.statusCode=function(ag){if(ag){var e;if(L<2){for(e in ag){N[e]=[N[e],ag[e]]}}else{e=ag[W.status];W.always(e)}}return this};Q.url=((M||Q.url)+"").replace(p,"").replace(o,l[1]+"//");Q.dataTypes=i.trim(Q.dataType||"*").toLowerCase().split(t);if(Q.crossDomain==null){V=h.exec(Q.url.toLowerCase());Q.crossDomain=!!(V&&(V[1]!==l[1]||V[2]!==l[2]||(V[3]||(V[1]==="http:"?80:443))!=(l[3]||(l[1]==="http:"?80:443))))}if(Q.data&&Q.processData&&typeof Q.data!=="string"){Q.data=i.param(Q.data,Q.traditional)}v(G,Q,J,W);if(L===2){return W}I=Q.global;Q.type=Q.type.toUpperCase();Q.hasContent=!j.test(Q.type);if(I&&i.active++===0){i.event.trigger("ajaxStart")}if(!Q.hasContent){if(Q.data){Q.url+=(k.test(Q.url)?"&":"?")+Q.data;delete Q.data}P=Q.url;if(Q.cache===false){var H=i.now(),ac=Q.url.replace(d,"$1_="+H);Q.url=ac+((ac===Q.url)?(k.test(Q.url)?"&":"?")+"_="+H:"")}}if(Q.data&&Q.hasContent&&Q.contentType!==false||J.contentType){W.setRequestHeader("Content-Type",Q.contentType)}if(Q.ifModified){P=P||Q.url;if(i.lastModified[P]){W.setRequestHeader("If-Modified-Since",i.lastModified[P])}if(i.etag[P]){W.setRequestHeader("If-None-Match",i.etag[P])}}W.setRequestHeader("Accept",Q.dataTypes[0]&&Q.accepts[Q.dataTypes[0]]?Q.accepts[Q.dataTypes[0]]+(Q.dataTypes[0]!=="*"?", "+q+"; q=0.01":""):Q.accepts["*"]);for(X in Q.headers){W.setRequestHeader(X,Q.headers[X])}if(Q.beforeSend&&(Q.beforeSend.call(af,W,Q)===false||L===2)){return W.abort()}O="abort";for(X in {success:1,error:1,complete:1}){W[X](Q[X])}Y=v(C,Q,J,W);if(!Y){S(-1,"No Transport")}else{W.readyState=1;if(I){T.trigger("ajaxSend",[W,Q])}if(Q.async&&Q.timeout>0){R=setTimeout(function(){W.abort("timeout")},Q.timeout)}try{L=1;Y.send(U,S)}catch(Z){if(L<2){S(-1,Z)}else{throw Z}}}return W},active:0,lastModified:{},etag:{}});function B(P,O,L){var K,M,J,e,H=P.contents,N=P.dataTypes,I=P.responseFields;for(M in I){if(M in L){O[I[M]]=L[M]}}while(N[0]==="*"){N.shift();if(K===undefined){K=P.mimeType||O.getResponseHeader("content-type")}}if(K){for(M in H){if(H[M]&&H[M].test(K)){N.unshift(M);break}}}if(N[0] in L){J=N[0]}else{for(M in L){if(!N[0]||P.converters[M+" "+N[0]]){J=M;break}if(!e){e=M}}J=J||e}if(J){if(J!==N[0]){N.unshift(J)}return L[J]}}function c(R,J){var P,H,N,L,O=R.dataTypes.slice(),I=O[0],Q={},K=0;if(R.dataFilter){J=R.dataFilter(J,R.dataType)}if(O[1]){for(P in R.converters){Q[P.toLowerCase()]=R.converters[P]}}for(;(N=O[++K]);){if(N!=="*"){if(I!=="*"&&I!==N){P=Q[I+" "+N]||Q["* "+N];if(!P){for(H in Q){L=H.split(" ");if(L[1]===N){P=Q[I+" "+L[0]]||Q["* "+L[0]];if(P){if(P===true){P=Q[H]}else{if(Q[H]!==true){N=L[0];O.splice(K--,0,N)}}break}}}}if(P!==true){if(P&&R["throws"]){J=P(J)}else{try{J=P(J)}catch(M){return{state:"parsererror",error:P?M:"No conversion from "+I+" to "+N}}}}}I=N}}return{state:"success",data:J}}var y=[],n=/\?/,D=/(=)\?(?=&|$)|\?\?/,z=i.now();i.MLjqui.data.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=y.pop()||(i.expando+"_"+(z++));this[e]=true;return e}});i.MLjqui.data.ajaxPrefilter("json jsonp",function(Q,L,P){var O,e,N,J=Q.data,H=Q.url,I=Q.jsonp!==false,M=I&&D.test(H),K=I&&!M&&typeof J==="string"&&!(Q.contentType||"").indexOf("application/x-www-form-urlencoded")&&D.test(J);if(Q.dataTypes[0]==="jsonp"||M||K){O=Q.jsonpCallback=i.isFunction(Q.jsonpCallback)?Q.jsonpCallback():Q.jsonpCallback;e=window[O];if(M){Q.url=H.replace(D,"$1"+O)}else{if(K){Q.data=J.replace(D,"$1"+O)}else{if(I){Q.url+=(n.test(H)?"&":"?")+Q.jsonp+"="+O}}}Q.converters["script json"]=function(){if(!N){i.error(O+" was not called")}return N[0]};Q.dataTypes[0]="json";window[O]=function(){N=arguments};P.always(function(){window[O]=e;if(Q[O]){Q.jsonpCallback=L.jsonpCallback;y.push(O)}if(N&&i.isFunction(e)){e(N[0])}N=e=undefined});return"script"}});i.MLjqui.data.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){i.globalEval(e);return e}}});i.MLjqui.data.ajaxPrefilter("script",function(e){if(e.cache===undefined){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});i.MLjqui.data.ajaxTransport("script",function(I){if(I.crossDomain){var e,H=document.head||document.getElementsByTagName("head")[0]||document.documentElement;return{send:function(J,K){e=document.createElement("script");e.async="async";if(I.scriptCharset){e.charset=I.scriptCharset}e.src=I.url;e.onload=e.onreadystatechange=function(M,L){if(L||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(H&&e.parentNode){H.removeChild(e)}e=undefined;if(!L){K(200,"success")}}};H.insertBefore(e,H.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var w,x=window.ActiveXObject?function(){for(var e in w){w[e](0,1)}}:false,m=0;function g(){try{return new window.XMLHttpRequest()}catch(H){}}function s(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(H){}}i.MLjqui.data.ajaxSettings.xhr=window.ActiveXObject?function(){return !this.isLocal&&g()||s()}:g;(function(e){i.extend(i.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(i.MLjqui.data.ajaxSettings.xhr());if(i.support.ajax){i.MLjqui.data.ajaxTransport(function(e){if(!e.crossDomain||i.support.cors){var H;return{send:function(N,I){var L,K,M=e.xhr();if(e.username){M.open(e.type,e.url,e.async,e.username,e.password)}else{M.open(e.type,e.url,e.async)}if(e.xhrFields){for(K in e.xhrFields){M[K]=e.xhrFields[K]}}if(e.mimeType&&M.overrideMimeType){M.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!N["X-Requested-With"]){N["X-Requested-With"]="XMLHttpRequest"}try{for(K in N){M.setRequestHeader(K,N[K])}}catch(J){}M.send((e.hasContent&&e.data)||null);H=function(W,Q){var R,P,O,U,T;try{if(H&&(Q||M.readyState===4)){H=undefined;if(L){M.onreadystatechange=i.noop;if(x){delete w[L]}}if(Q){if(M.readyState!==4){M.abort()}}else{R=M.status;O=M.getAllResponseHeaders();U={};T=M.responseXML;if(T&&T.documentElement){U.xml=T}try{U.text=M.responseText}catch(V){}try{P=M.statusText}catch(V){P=""}if(!R&&e.isLocal&&!e.crossDomain){R=U.text?200:404}else{if(R===1223){R=204}}}}}catch(S){if(!Q){I(-1,S)}}if(U){I(R,P,U,O)}};if(!e.async){H()}else{if(M.readyState===4){setTimeout(H,0)}else{L=++m;if(x){if(!w){w={};i(window).unload(x)}w[L]=H}M.onreadystatechange=H}}},abort:function(){if(H){H(0,1)}}}}})}i.MLjqui.filter=function(){this.operator="and";var M=0;var J=1;var P=["EMPTY","NOT_EMPTY","CONTAINS","CONTAINS_CASE_SENSITIVE","DOES_NOT_CONTAIN","DOES_NOT_CONTAIN_CASE_SENSITIVE","STARTS_WITH","STARTS_WITH_CASE_SENSITIVE","ENDS_WITH","ENDS_WITH_CASE_SENSITIVE","EQUAL","EQUAL_CASE_SENSITIVE","NULL","NOT_NULL"];var R=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"];var S=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"];var L=["EQUAL","NOT_EQUAL"];var K=new Array();var Q=new Array();this.evaluate=function(X){var V=true;for(var W=0;WK.length){return null}return Q[U]};this.setoperatorat=function(V,U){if(V==undefined||V==null){return null}if(V<0||V>K.length){return null}Q[U]=U};this.getfilterat=function(U){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}return K[U]};this.setfilterat=function(U,V){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}V.key=O();K[U]=V};this.clear=function(){K=new Array();Q=new Array()};var T=function(V,U){this.filtervalue=V;this.comparisonoperator=U;this.type="stringfilter";this.evaluate=function(af){var ae=this.filtervalue;var al=this.comparisonoperator;if(af==null||af==undefined||af==""){if(al=="NULL"){return true}if(al=="EQUAL"&&af==ae){return true}if(al=="NOT_EQUAL"&&af!=ae){return true}if(al!="EMPTY"){return false}else{if(af==""){return true}}}var an="";try{an=af.toString()}catch(ag){return true}var am=function(ap,ao){switch(al){case"EQUAL":return i.MLjqui.string.equalsIgnoreCase(ap,ao);case"EQUAL_CASE_SENSITIVE":return i.MLjqui.string.equals(ap,ao);case"NOT_EQUAL":return !i.MLjqui.string.equalsIgnoreCase(ap,ao);case"NOT_EQUAL_CASE_SENSITIVE":return !i.MLjqui.string.equals(ap,ao);case"CONTAINS":return i.MLjqui.string.containsIgnoreCase(ap,ao);case"CONTAINS_CASE_SENSITIVE":return i.MLjqui.string.contains(ap,ao);case"DOES_NOT_CONTAIN":return !i.MLjqui.string.containsIgnoreCase(ap,ao);case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return !i.MLjqui.string.contains(ap,ao);case"EMPTY":return ap=="";case"NOT_EMPTY":return ap!="";case"NOT_NULL":return ap!=null;case"STARTS_WITH":return i.MLjqui.string.startsWithIgnoreCase(ap,ao);case"ENDS_WITH":return i.MLjqui.string.endsWithIgnoreCase(ap,ao);case"ENDS_WITH_CASE_SENSITIVE":return i.MLjqui.string.endsWith(ap,ao);case"STARTS_WITH_CASE_SENSITIVE":return i.MLjqui.string.startsWith(ap,ao);default:return false}};var Z=new Array();if(ae&&ae.indexOf){if(ae.indexOf("|")>=0||ae.indexOf(" AND ")>=0||ae.indexOf(" OR ")>=0||ae.indexOf(" and ")>=0||ae.indexOf(" or ")>=0){var aa=am(an,ae);if(aa){return aa}var ab=ae.indexOf(" AND ")>=0?ae.split(" AND "):new Array();var Y=ae.indexOf(" OR ")>=0?ae.split(" OR "):new Array();var X=ae.indexOf(" and ")>=0?ae.split(" and "):new Array();var ac=ae.indexOf(" or ")>=0?ae.split(" or "):new Array();var W=ae.indexOf("|")>=0?ae.split("|"):new Array();if(W.length>0){for(var ak=0;ak=0?ae.split(" "):new Array();if(aj.length>0){for(var ak=0;ak0){for(var ak=0;ak=0){Z.push(ab[ak])}}}if(Y.length>0){for(var ak=0;ak=0){Z.push(Y[ak])}}}var ai=undefined;for(var ah=0;ahao;case"GREATER_THAN_OR_EQUAL":return ap>=ao;case"LESS_THAN":return ap=0||af.indexOf(" AND ")>=0||af.indexOf(" OR ")>=0||af.indexOf(" and ")>=0||af.indexOf(" or ")>=0){var ab=am(an,af);if(ab){return ab}af=af.toString();var ac=af.indexOf(" AND ")>=0?af.split(" AND "):new Array();var Z=af.indexOf(" OR ")>=0?af.split(" OR "):new Array();var Y=af.indexOf(" and ")>=0?af.split(" and "):new Array();var ad=af.indexOf(" or ")>=0?af.split(" or "):new Array();ac=ac.concat(Y);Z=Z.concat(ad);var X=af.indexOf("|")>=0?af.split("|"):new Array();if(X.length>0){for(var ak=0;ak0){for(var ak=0;ak=0){aa.push(ac[ak])}}}if(Z.length>0){for(var ak=0;ak=0){aa.push(Z[ak])}}}var aj=undefined;for(var ai=0;ai=0){var W=ag.toString().split("..");if(W.length==2){ab=an>=W[0]&&an<=W[1]}}else{var ab=am(an,ag)}var ae=ai=0){aa=af.toString().split("..");if(aa.length==2){return an>=aa[0]&&an<=aa[1]}}return am(an,af)}};var H=function(X,V,W,ab){this.filtervalue=X;this.type="datefilter";var Z=this;if(W!=undefined&&ab!=undefined){var Y=i.MLjqui.dataFormat.parsedate(X,W,ab);if(Y!=null){this.filterdate=Y}else{var U=i.MLjqui.dataFormat.tryparsedate(X,ab);if(U!=null){this.filterdate=U}}}else{var aa=new Date(X);if(aa.toString()=="NaN"||aa.toString()=="Invalid Date"){this.filterdate=i.MLjqui.dataFormat.tryparsedate(X)}else{this.filterdate=aa}}if(!this.filterdate){var aa=new Date(X);if(aa.toString()=="NaN"||aa.toString()=="Invalid Date"){this.filterdate=i.MLjqui.dataFormat.tryparsedate(X)}else{this.filterdate=aa}}this.comparisonoperator=V;this.evaluate=function(ao){var an=this.filtervalue;var aw=this.comparisonoperator;if(ao==null||ao==undefined||ao==""){if(aw=="NOT_NULL"){return false}if(aw=="NULL"){return true}else{switch(aw){case"EQUAL":return ao==an;case"NOT_EQUAL":return ao!=an}return false}}else{if(aw=="NULL"){return false}if(aw=="NOT_NULL"){return true}}var ay=new Date();ay.setFullYear(1900,0,1);ay.setHours(12,0,0,0);try{var av=new Date(ao);if(av.toString()=="NaN"||av.toString()=="Invalid Date"){ao=i.MLjqui.dataFormat.tryparsedate(ao)}else{ao=av}ay=ao;var at=false;if(W!=undefined&&ab!=undefined){if(W.indexOf("t")>=0||W.indexOf("T")>=0||W.indexOf(":")>=0||W.indexOf("f")>=0){at=true;if(an&&an.toString().indexOf(":")==-1){var aj=i.MLjqui.dataFormat.tryparsedate(an.toString()+":00",ab);if(aj!=null){Z.filterdate=aj}}}}if(!at){ay.setHours(0);ay.setMinutes(0);ay.setSeconds(0)}}catch(ap){if(ao.toString()!=""){return false}}if(Z.filterdate!=null){an=Z.filterdate}else{if(an&&an.indexOf){if(an.indexOf(":")!=-1||!isNaN(parseInt(an))){var ai=new Date(ay);ai.setHours(12,0,0,0);var ah=an.split(":");for(var au=0;auaz;case"GREATER_THAN_OR_EQUAL":return aA>=az;case"LESS_THAN":return aA=0||an.indexOf(" AND ")>=0||an.indexOf(" OR ")>=0||an.indexOf(" and ")>=0||an.indexOf(" or ")>=0){var aj=ax(ay,an);if(aj){return aj}var ak=an.indexOf(" AND ")>=0?an.split(" AND "):new Array();var af=an.indexOf(" OR ")>=0?an.split(" OR "):new Array();var ae=an.indexOf(" and ")>=0?an.split(" and "):new Array();var al=an.indexOf(" or ")>=0?an.split(" or "):new Array();ak=ak.concat(ae);af=af.concat(al);var ad=an.indexOf("|")>=0?an.split("|"):new Array();if(ad.length>0){for(var au=0;au0){for(var au=0;au=0){ag.push(ak[au])}}}if(af.length>0){for(var au=0;au=0){ag.push(af[au])}}}var ar=undefined;for(var aq=0;aq=0){var ac=ao.toString().split("..");if(ac.length==2){aj=ay>=ac[0]&&ay<=ac[1]}}else{var aj=ax(ay,ao)}var am=aq=0){ag=an.toString().split("..");if(ag.length==2){return ay>=ag[0]&&ay<=ag[1]}}return ax(ay,an)}};var e=function(V,U,W){this.filtervalue=V;this.comparisonoperator=U;this.evaluate=function(Y,X){return W(this.filtervalue,Y,this.comparisonoperator)}}}})(MLjquiBaseFramework); -/* MLjquidatatable.js */ -(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u
          ");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){l.host.attr("tabindex","0")}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e
          ');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return !this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return -1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart" in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y
          ";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart" in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return -1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"
          ");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x
          ");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();for(var am=0;am';var E='';if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group" in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row" in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details" in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight" in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized" in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded" in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';l+=this.gridlocalization.emptydatastring;l+="
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l
          ');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f
          ');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); -/* MLjquiscrollbar.js */ -(function(a){a.MLjqui.MLjquiWidget("MLjquiScrollBar","",{});a.extend(a.MLjqui._MLjquiScrollBar.prototype,{defineInstance:function(){var b={height:null,width:null,vertical:false,min:0,max:1000,value:0,step:10,largestep:50,thumbMinSize:10,thumbSize:0,thumbStep:"auto",roundedCorners:"all",showButtons:true,disabled:false,touchMode:"auto",touchModeStyle:"auto",thumbTouchSize:0,_triggervaluechanged:true,rtl:false,areaDownCapture:false,areaUpCapture:false,_initialLayout:false,offset:0,reference:0,velocity:0,frame:0,timestamp:0,ticker:null,amplitude:0,target:0};a.extend(true,this,b);return b},createInstance:function(b){this.render()},render:function(){this._mouseup=new Date();var c=this;var d="
          ";if(a.MLjqui.utilities&&a.MLjqui.utilities.scrollBarButtonsVisibility=="hidden"){this.showButtons=false}if(c.WinJS){MSApp.execUnsafeLocalFunction(function(){c.host.html(d)})}else{this.element.innerHTML=d}if(this.width!=undefined&&parseInt(this.width)>0){this.host.width(parseInt(this.width))}if(this.height!=undefined&&parseInt(this.height)>0){this.host.height(parseInt(this.height))}this.isPercentage=false;if(this.width!=null&&this.width.toString().indexOf("%")!=-1){this.host.width(this.width);this.isPercentage=true}if(this.height!=null&&this.height.toString().indexOf("%")!=-1){this.host.height(this.height);this.isPercentage=true}if(this.isPercentage){var e=this;a.MLjqui.utilities.resize(this.host,function(){e._arrange()},false)}this.thumbCapture=false;this.scrollOuterWrap=a(this.element.firstChild);this.scrollWrap=a(this.scrollOuterWrap[0].firstChild);this.btnUp=a(this.scrollWrap[0].firstChild);this.areaUp=a(this.btnUp[0].nextSibling);this.btnThumb=a(this.areaUp[0].nextSibling);this.arrowUp=a(this.btnUp[0].firstChild);this.areaDown=a(this.btnThumb[0].nextSibling);this.btnDown=a(this.areaDown[0].nextSibling);this.arrowDown=a(this.btnDown[0].firstChild);var b=this.element.id;this.btnUp[0].id="MLjquiScrollBtnUp"+b;this.btnDown[0].id="MLjquiScrollBtnDown"+b;this.btnThumb[0].id="MLjquiScrollThumb"+b;this.areaUp[0].id="MLjquiScrollAreaUp"+b;this.areaDown[0].id="MLjquiScrollAreaDown"+b;this.scrollWrap[0].id="MLjquiScrollWrap"+b;this.scrollOuterWrap[0].id="MLjquiScrollOuterWrap"+b;if(!this.host.MLjquiRepeatButton){throw new Error("MLjquiScrollBar: Missing reference to MLjquibuttons.js.");return}this.btnUp.MLjquiRepeatButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.btnDown.MLjquiRepeatButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.btnDownInstance=a.data(this.btnDown[0],"MLjquiRepeatButton").instance;this.btnUpInstance=a.data(this.btnUp[0],"MLjquiRepeatButton").instance;this.areaUp.MLjquiRepeatButton({_scrollAreaButton:true,_ariaDisabled:true,overrideTheme:true});this.areaDown.MLjquiRepeatButton({_scrollAreaButton:true,_ariaDisabled:true,overrideTheme:true});this.btnThumb.MLjquiButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.propertyChangeMap.value=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.setPosition(parseFloat(i),true)}}};this.propertyChangeMap.width=function(f,h,g,i){if(f.width!=undefined&&parseInt(f.width)>0){f.host.width(parseInt(f.width));f._arrange()}};this.propertyChangeMap.height=function(f,h,g,i){if(f.height!=undefined&&parseInt(f.height)>0){f.host.height(parseInt(f.height));f._arrange()}};this.propertyChangeMap.theme=function(f,h,g,i){f.setTheme()};this.propertyChangeMap.max=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.max=parseInt(i);if(f.min>f.max){f.max=f.min+1}f._arrange();f.setPosition(f.value)}}};this.propertyChangeMap.min=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.min=parseInt(i);if(f.min>f.max){f.max=f.min+1}f._arrange();f.setPosition(f.value)}}};this.propertyChangeMap.disabled=function(f,h,g,i){if(g!=i){if(i){f.host.addClass(f.toThemeProperty("MLjqui-fill-state-disabled"))}else{f.host.removeClass(f.toThemeProperty("MLjqui-fill-state-disabled"))}f.btnUp.MLjquiRepeatButton("disabled",f.disabled);f.btnDown.MLjquiRepeatButton("disabled",f.disabled);f.btnThumb.MLjquiButton("disabled",f.disabled)}};this.propertyChangeMap.touchMode=function(f,h,g,i){if(g!=i){f._updateTouchBehavior();if(i===true){f.showButtons=false;f.refresh()}else{if(i===false){f.showButtons=true;f.refresh()}}}};this.propertyChangeMap.rtl=function(f,h,g,i){if(g!=i){f.refresh()}};this.buttonUpCapture=false;this.buttonDownCapture=false;this._updateTouchBehavior();this.setPosition(this.value);this._addHandlers();this.setTheme()},resize:function(c,b){this.width=c;this.height=b;this._arrange()},_updateTouchBehavior:function(){this.isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(this.touchMode==true){if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9){this.setTheme();return}this.isTouchDevice=true;a.MLjqui.mobile.setMobileSimulator(this.btnThumb[0]);this._removeHandlers();this._addHandlers();this.setTheme()}else{if(this.touchMode==false){this.isTouchDevice=false}}},_addHandlers:function(){var j=this;var e=false;try{if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){e=true;this._touchSupport=true}}catch(f){}if(j.isTouchDevice||e){this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchend"),function(k){var l=j.vertical?j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");var m=j.toThemeProperty("MLjqui-fill-state-pressed");j.btnThumb.removeClass(l);j.btnThumb.removeClass(m);if(!j.disabled){j.handlemouseup(j,k)}return false});this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchstart"),function(k){if(!j.disabled){if(j.touchMode==true){k.clientX=k.originalEvent.clientX;k.clientY=k.originalEvent.clientY}else{var l=k;if(l.originalEvent.touches&&l.originalEvent.touches.length){k.clientX=l.originalEvent.touches[0].clientX;k.clientY=l.originalEvent.touches[0].clientY}else{k.clientX=k.originalEvent.clientX;k.clientY=k.originalEvent.clientY}}j.handlemousedown(k);if(k.preventDefault){k.preventDefault()}}});a.MLjqui.mobile.touchScroll(this.element,j.max,function(q,p,l,k,m){if(j.host.css("visibility")=="visible"){if(j.touchMode==true){m.clientX=m.originalEvent.clientX;m.clientY=m.originalEvent.clientY}else{var o=m;if(o.originalEvent.touches&&o.originalEvent.touches.length){m.clientX=o.originalEvent.touches[0].clientX;m.clientY=o.originalEvent.touches[0].clientY}else{m.clientX=m.originalEvent.clientX;m.clientY=m.originalEvent.clientY}}var n=j.vertical?j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");j.btnThumb.addClass(n);j.btnThumb.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.thumbCapture=true;j.handlemousemove(m)}},j.element.id,j.host,j.host)}if(!this.isTouchDevice){try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var b=null;if(window.parent&&document.referrer){b=document.referrer}if(b&&b.indexOf(document.location.host)!=-1){var g=function(k){if(!j.disabled){j.handlemouseup(j,k)}};if(window.top.document.addEventListener){window.top.document.addEventListener("mouseup",g,false)}else{if(window.top.document.attachEvent){window.top.document.attachEvent("onmouseup",g)}}}}}}catch(i){}var c="click mouseup mousedown";this.addHandler(this.btnDown,c,function(l){var k=j.step;if(Math.abs(j.max-j.min)<=k){k=1}if(j.rtl&&!j.vertical){k=-j.step}switch(l.type){case"click":if(j.buttonDownCapture&&!j.isTouchDevice){if(!j.disabled){j.setPosition(j.value+k)}}else{if(!j.disabled&&j.isTouchDevice){j.setPosition(j.value+k)}}break;case"mouseup":if(!j.btnDownInstance.base.disabled&&j.buttonDownCapture){j.buttonDownCapture=false;j.btnDown.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j.btnDown.removeClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j._removeArrowClasses("pressed","down");j.handlemouseup(j,l);j.setPosition(j.value+k);return false}break;case"mousedown":if(!j.btnDownInstance.base.disabled){j.buttonDownCapture=true;j.btnDown.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.btnDown.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j._addArrowClasses("pressed","down");return false}break}});this.addHandler(this.btnUp,c,function(l){var k=j.step;if(Math.abs(j.max-j.min)<=k){k=1}if(j.rtl&&!j.vertical){k=-j.step}switch(l.type){case"click":if(j.buttonUpCapture&&!j.isTouchDevice){if(!j.disabled){j.setPosition(j.value-k)}}else{if(!j.disabled&&j.isTouchDevice){j.setPosition(j.value-k)}}break;case"mouseup":if(!j.btnUpInstance.base.disabled&&j.buttonUpCapture){j.buttonUpCapture=false;j.btnUp.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j.btnUp.removeClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j._removeArrowClasses("pressed","up");j.handlemouseup(j,l);j.setPosition(j.value-k);return false}break;case"mousedown":if(!j.btnUpInstance.base.disabled){j.buttonUpCapture=true;j.btnUp.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.btnUp.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j._addArrowClasses("pressed","up");return false}break}})}var h="click";if(this.isTouchDevice){h=a.MLjqui.mobile.getTouchEventName("touchend")}this.addHandler(this.areaUp,h,function(l){if(!j.disabled){var k=j.largestep;if(j.rtl&&!j.vertical){k=-j.largestep}j.setPosition(j.value-k);return false}});this.addHandler(this.areaDown,h,function(l){if(!j.disabled){var k=j.largestep;if(j.rtl&&!j.vertical){k=-j.largestep}j.setPosition(j.value+k);return false}});this.addHandler(this.areaUp,"mousedown",function(k){if(!j.disabled){j.areaUpCapture=true;return false}});this.addHandler(this.areaDown,"mousedown",function(k){if(!j.disabled){j.areaDownCapture=true;return false}});this.addHandler(this.btnThumb,"mousedown dragstart",function(k){if(k.type==="dragstart"){return false}if(!j.disabled){j.handlemousedown(k)}if(k.preventDefault){k.preventDefault()}});this.addHandler(a(document),"mouseup."+this.element.id,function(k){if(!j.disabled){j.handlemouseup(j,k)}});if(!this.isTouchDevice){this.mousemoveFunc=function(k){if(!j.disabled){j.handlemousemove(k)}};this.addHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc);this.addHandler(a(document),"mouseleave."+this.element.id,function(k){if(!j.disabled){j.handlemouseleave(k)}});this.addHandler(a(document),"mouseenter."+this.element.id,function(k){if(!j.disabled){j.handlemouseenter(k)}});if(!j.disabled){this.addHandler(this.btnUp,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&!j.btnUpInstance.base.disabled&&j.touchMode!=true){j.btnUp.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnUp.addClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._addArrowClasses("hover","up")}}else{if(!j.disabled&&!j.btnUpInstance.base.disabled&&j.touchMode!=true){j.btnUp.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnUp.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._removeArrowClasses("hover","up")}}});var d=j.toThemeProperty("MLjqui-scrollbar-thumb-state-hover");if(!j.vertical){d=j.toThemeProperty("MLjqui-scrollbar-thumb-state-hover-horizontal")}this.addHandler(this.btnThumb,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&j.touchMode!=true){j.btnThumb.addClass(d);j.btnThumb.addClass(j.toThemeProperty("MLjqui-fill-state-hover"))}}else{if(!j.disabled&&j.touchMode!=true){j.btnThumb.removeClass(d);j.btnThumb.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"))}}});this.addHandler(this.btnDown,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&!j.btnDownInstance.base.disabled&&j.touchMode!=true){j.btnDown.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnDown.addClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._addArrowClasses("hover","down")}}else{if(!j.disabled&&!j.btnDownInstance.base.disabled&&j.touchMode!=true){j.btnDown.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnDown.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._removeArrowClasses("hover","down")}}})}}},destroy:function(){var b=this.btnUp;var f=this.btnDown;var d=this.btnThumb;var c=this.scrollWrap;var h=this.areaUp;var e=this.areaDown;this.arrowUp.remove();delete this.arrowUp;this.arrowDown.remove();delete this.arrowDown;e.removeClass();h.removeClass();f.removeClass();b.removeClass();d.removeClass();b.MLjquiRepeatButton("destroy");f.MLjquiRepeatButton("destroy");h.MLjquiRepeatButton("destroy");e.MLjquiRepeatButton("destroy");d.MLjquiButton("destroy");var g=a.data(this.element,"MLjquiScrollBar");this._removeHandlers();this.btnUp=null;this.btnDown=null;this.scrollWrap=null;this.areaUp=null;this.areaDown=null;this.scrollOuterWrap=null;delete this.mousemoveFunc;delete this.btnDownInstance;delete this.btnUpInstance;delete this.scrollOuterWrap;delete this.scrollWrap;delete this.btnDown;delete this.areaDown;delete this.areaUp;delete this.btnDown;delete this.btnUp;delete this.btnThumb;delete this.propertyChangeMap.value;delete this.propertyChangeMap.min;delete this.propertyChangeMap.max;delete this.propertyChangeMap.touchMode;delete this.propertyChangeMap.disabled;delete this.propertyChangeMap.theme;delete this.propertyChangeMap;if(g){delete g.instance}this.host.removeData();this.host.remove();delete this.host;delete this.set;delete this.get;delete this.call;delete this.element},_removeHandlers:function(){this.removeHandler(this.btnUp,"mouseenter");this.removeHandler(this.btnDown,"mouseenter");this.removeHandler(this.btnThumb,"mouseenter");this.removeHandler(this.btnUp,"mouseleave");this.removeHandler(this.btnDown,"mouseleave");this.removeHandler(this.btnThumb,"mouseleave");this.removeHandler(this.btnUp,"click");this.removeHandler(this.btnDown,"click");this.removeHandler(this.btnDown,"mouseup");this.removeHandler(this.btnUp,"mouseup");this.removeHandler(this.btnDown,"mousedown");this.removeHandler(this.btnUp,"mousedown");this.removeHandler(this.areaUp,"mousedown");this.removeHandler(this.areaDown,"mousedown");this.removeHandler(this.areaUp,"click");this.removeHandler(this.areaDown,"click");this.removeHandler(this.btnThumb,"mousedown");this.removeHandler(this.btnThumb,"dragstart");this.removeHandler(a(document),"mouseup."+this.element.id);if(!this.mousemoveFunc){this.removeHandler(a(document),"mousemove."+this.element.id)}else{this.removeHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc)}this.removeHandler(a(document),"mouseleave."+this.element.id);this.removeHandler(a(document),"mouseenter."+this.element.id);var b=this},_addArrowClasses:function(c,b){if(c=="pressed"){c="selected"}if(c!=""){c="-"+c}if(this.vertical){if(b=="up"||b==undefined){this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-up"+c))}if(b=="down"||b==undefined){this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"+c))}}else{if(b=="up"||b==undefined){this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"+c))}if(b=="down"||b==undefined){this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"+c))}}},_removeArrowClasses:function(c,b){if(c=="pressed"){c="selected"}if(c!=""){c="-"+c}if(this.vertical){if(b=="up"||b==undefined){this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-up"+c))}if(b=="down"||b==undefined){this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"+c))}}else{if(b=="up"||b==undefined){this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"+c))}if(b=="down"||b==undefined){this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"+c))}}},setTheme:function(){var o=this.btnUp;var m=this.btnDown;var p=this.btnThumb;var e=this.scrollWrap;var g=this.areaUp;var h=this.areaDown;var f=this.arrowUp;var i=this.arrowDown;this.scrollWrap[0].className=this.toThemeProperty("MLjqui-reset");this.scrollOuterWrap[0].className=this.toThemeProperty("MLjqui-reset");var k=this.toThemeProperty("MLjqui-reset");this.areaDown[0].className=k;this.areaUp[0].className=k;var d=this.toThemeProperty("MLjqui-scrollbar")+" "+this.toThemeProperty("MLjqui-widget")+" "+this.toThemeProperty("MLjqui-widget-content");this.host.addClass(d);if(this.isTouchDevice){this.host.addClass(this.toThemeProperty("MLjqui-scrollbar-mobile"))}m[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");o[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");var q="";if(this.vertical){f[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-up");i[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-down");q=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal")}else{f[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-left");i[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-right");q=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-horizontal")}q+=" "+this.toThemeProperty("MLjqui-fill-state-normal");p[0].className=q;if(this.disabled){e.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));e.removeClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"))}else{e.addClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}if(this.roundedCorners=="all"){this.host.addClass(this.toThemeProperty("MLjqui-rc-all"));if(this.vertical){var j=a.MLjqui.cssroundedcorners("top");j=this.toThemeProperty(j);o.addClass(j);var c=a.MLjqui.cssroundedcorners("bottom");c=this.toThemeProperty(c);m.addClass(c)}else{var n=a.MLjqui.cssroundedcorners("left");n=this.toThemeProperty(n);o.addClass(n);var l=a.MLjqui.cssroundedcorners("right");l=this.toThemeProperty(l);m.addClass(l)}}else{var b=a.MLjqui.cssroundedcorners(this.roundedCorners);b=this.toThemeProperty(b);elBtnUp.addClass(b);elBtnDown.addClass(b)}var b=a.MLjqui.cssroundedcorners(this.roundedCorners);b=this.toThemeProperty(b);if(!p.hasClass(b)){p.addClass(b)}if(this.isTouchDevice&&this.touchModeStyle!=false){this.showButtons=false;p.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-touch"))}},isScrolling:function(){if(this.thumbCapture==undefined||this.buttonDownCapture==undefined||this.buttonUpCapture==undefined||this.areaDownCapture==undefined||this.areaUpCapture==undefined){return false}return this.thumbCapture||this.buttonDownCapture||this.buttonUpCapture||this.areaDownCapture||this.areaUpCapture},track:function(){var d,b,e,c;d=Date.now();b=d-this.timestamp;this.timestamp=d;e=this.offset-this.frame;this.frame=this.offset;c=1000*e/(1+b);this.velocity=0.2*c+0.2*this.velocity},handlemousedown:function(e){if(this.thumbCapture==undefined||this.thumbCapture==false){this.thumbCapture=true;var c=this.btnThumb;if(c!=null){c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(this.vertical){c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"))}else{c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"))}}}var d=this;function b(f){d.reference=parseInt(d.btnThumb[0].style.top);d.offset=parseInt(d.btnThumb[0].style.top);if(!d.vertical){d.reference=parseInt(d.btnThumb[0].style.left);d.offset=parseInt(d.btnThumb[0].style.left)}d.velocity=d.amplitude=0;d.frame=d.offset;d.timestamp=Date.now();clearInterval(d.ticker);d.ticker=setInterval(function(){d.track()},100)}if(this.thumbCapture&&a.MLjqui.scrollAnimation){b(e)}this.dragStartX=e.clientX;this.dragStartY=e.clientY;this.dragStartValue=this.value},toggleHover:function(c,b){},refresh:function(){this._arrange()},_setElementPosition:function(c,b,d){if(!isNaN(b)){if(parseInt(c[0].style.left)!=parseInt(b)){c[0].style.left=b+"px"}}if(!isNaN(d)){if(parseInt(c[0].style.top)!=parseInt(d)){c[0].style.top=d+"px"}}},_setElementTopPosition:function(b,c){if(!isNaN(c)){b[0].style.top=c+"px"}},_setElementLeftPosition:function(c,b){if(!isNaN(b)){c[0].style.left=b+"px"}},handlemouseleave:function(e){var b=this.btnUp;var d=this.btnDown;if(this.buttonDownCapture||this.buttonUpCapture){b.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));d.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));this._removeArrowClasses("pressed")}if(this.thumbCapture!=true){return}var c=this.btnThumb;var f=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");c.removeClass(f);c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"))},handlemouseenter:function(e){var b=this.btnUp;var d=this.btnDown;if(this.buttonUpCapture){b.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));b.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._addArrowClasses("pressed","up")}if(this.buttonDownCapture){d.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));d.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._addArrowClasses("pressed","down")}if(this.thumbCapture!=true){return}var c=this.btnThumb;if(this.vertical){c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"))}else{c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"))}c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"))},handlemousemove:function(b){var i=this.btnUp;var e=this.btnDown;var d=0;if(e==null||i==null){return}if(i!=null&&e!=null&&this.buttonDownCapture!=undefined&&this.buttonUpCapture!=undefined){if(this.buttonDownCapture&&b.which==d){e.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed","down");this.buttonDownCapture=false}else{if(this.buttonUpCapture&&b.which==d){i.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed","up");this.buttonUpCapture=false}}}if(this.thumbCapture!=true){return false}var k=this.btnThumb;if(b.which==d&&!this.isTouchDevice&&!this._touchSupport){this.thumbCapture=false;this._arrange();var j=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");k.removeClass(j);k.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));return true}if(b.preventDefault!=undefined){b.preventDefault()}if(b.originalEvent!=null){b.originalEvent.mouseHandled=true}if(b.stopPropagation!=undefined){b.stopPropagation()}var l=0;try{if(!this.vertical){l=b.clientX-this.dragStartX}else{l=b.clientY-this.dragStartY}var f=this._btnAndThumbSize;if(!this._btnAndThumbSize){f=(this.vertical)?i.height()+e.height()+k.height():i.width()+e.width()+k.width()}var g=(this.max-this.min)/(this.scrollBarSize-f);if(this.thumbStep=="auto"){l*=g}else{l*=g;if(Math.abs(this.dragStartValue+l-this.value)>=parseInt(this.thumbStep)){var c=Math.round(parseInt(l)/this.thumbStep)*this.thumbStep;if(this.rtl&&!this.vertical){this.setPosition(this.dragStartValue-c)}else{this.setPosition(this.dragStartValue+c)}return false}else{return false}}var c=l;if(this.rtl&&!this.vertical){c=-l}this.setPosition(this.dragStartValue+c);this.offset=parseInt(k[0].style.left);if(this.vertical){this.offset=parseInt(k[0].style.top)}}catch(h){alert(h)}return false},handlemouseup:function(j,b){var g=false;if(this.thumbCapture){this.thumbCapture=false;var i=this.btnThumb;var h=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");i.removeClass(h);i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));g=true;this._mouseup=new Date();if(a.MLjqui.scrollAnimation){var d=this;function f(){var k,o;if(d.amplitude){k=Date.now()-d.timestamp;o=-d.amplitude*Math.exp(-k/325);if(o>0.5||o<-0.5){var l=(d.max-d.min)/(d.scrollBarSize-d._btnAndThumbSize);var n=l*(d.target+o);var m=n;if(d.rtl&&!d.vertical){m=-n}d.setPosition(d.dragStartValue+m);requestAnimationFrame(f)}else{var l=(d.max-d.min)/(d.scrollBarSize-d._btnAndThumbSize);var n=l*(d.target+o);var m=n;if(d.rtl&&!d.vertical){m=-n}d.setPosition(d.dragStartValue+m)}}}clearInterval(this.ticker);if(this.velocity>25||this.velocity<-25){this.amplitude=0.8*this.velocity;this.target=Math.round(this.offset+this.amplitude);if(!this.vertical){this.target-=this.reference}else{this.target-=this.reference}this.timestamp=Date.now();requestAnimationFrame(f)}}}this.areaDownCapture=this.areaUpCapture=false;if(this.buttonUpCapture||this.buttonDownCapture){var e=this.btnUp;var c=this.btnDown;this.buttonUpCapture=false;this.buttonDownCapture=false;e.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));c.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed");g=true;this._mouseup=new Date()}if(g){if(b.preventDefault!=undefined){b.preventDefault()}if(b.originalEvent!=null){b.originalEvent.mouseHandled=true}if(b.stopPropagation!=undefined){b.stopPropagation()}}},setPosition:function(b,g){var d=this.element;if(b==undefined||b==NaN){b=this.min}if(b>=this.max){b=this.max}if(b1){d=(c/(b+c)*c)}else{if(b==1){d=c-1}else{if(b==0){d=c}}}if(this.thumbSize>0){d=this.thumbSize}if(d=0){e[0].style.width=m-k-i+"px"}else{e[0].style.width="0px"}this._setElementLeftPosition(n,l);this._setElementLeftPosition(o,l+k);this._setElementLeftPosition(e,2+l+k+d)}},_arrange:function(){var m=this;if(m._initialLayout){m._initialLayout=false;return}if(m.min>m.max){var x=m.min;m.min=m.max;m.max=x}if(m.min<0){var k=m.max-m.min;m.min=0;m.max=k}var d=m.element;var g=m.areaUp;var t=m.areaDown;var c=m.btnUp;var l=m.btnDown;var u=m.btnThumb;var p=m.scrollWrap;var n=parseInt(m.element.style.height);var q=parseInt(m.element.style.width);if(m.isPercentage){var n=m.host.height();var q=m.host.width()}if(isNaN(n)){n=0}if(isNaN(q)){q=0}m._width=q;m._height=n;var b=(!m.vertical)?n:q;if(!m.showButtons){b=0}c[0].style.width=b+"px";c[0].style.height=b+"px";l[0].style.width=b+"px";l[0].style.height=b+"px";if(m.vertical){p[0].style.width=q+2+"px"}else{p[0].style.height=n+2+"px"}m._setElementPosition(c,0,0);var s=b+2;if(m.vertical){m._setElementPosition(l,0,n-s)}else{m._setElementPosition(l,q-s,0)}var f=(!m.vertical)?q:n;m.scrollBarSize=f;var h=m._getThumbSize(f-2*s);h=Math.floor(h-2);if(h0){g[0].style.width=w+"px"}if(n>0){g[0].style.height=n+"px"}var j=(f-w-e);if(j<0){j=0}t[0].style.width=j+"px";t[0].style.height=n+"px";var r=parseInt(m.element.style.width);if(m.isPercentage){r=m.host.width()}u[0].style.visibility="inherit";if((r-3*parseInt(b)<0)||(r0&&e._contentList[e.selectedItem]){e._contentList[e.selectedItem].find("div").trigger(h)}},50+e.selectionTrackerAnimationDuration)}else{var f=new a.Event("loadContent");if(!e._initTabContentList[e.selectedItem]){if(e.initTabContent){e.initTabContent(e.selectedItem);e._initTabContentList[e.selectedItem]=true}}f.owner=this;var f=new a.Event("resize");this.host.trigger(f)}}}catch(c){if(c&&console){console.log(c)}}return b},_getArrowsDisplacement:function(){if(!this._needScroll){return 0}var d;var c=this.arrowButtonSize;var b=this.arrowButtonSize;if(this.scrollPosition==="left"){d=c+b}else{if(this.scrollPosition==="both"){d=c}else{d=0}}return d},_scrollRight:function(e,h){this._unorderedList.stop();this._unlockAnimation("unorderedList");var f=parseInt(this._unorderedList.width()+parseInt(this._unorderedList.css("margin-left")),10),i=parseInt(this.host.width(),10),g,j,b=parseInt(this._unorderedList.css("left"),10),c=this._getArrowsDisplacement(),d=0,k=undefined;if(this.scrollable){g=parseInt(this._leftArrow.outerWidth(),10);j=parseInt(this._rightArrow.outerWidth(),10)}else{g=0;j=0}e=(this.enableScrollAnimation)?e:0;if(parseInt(this._headerWrapper.width(),10)>parseInt(this._unorderedList.css("margin-left"))+parseInt(this._unorderedList.width(),10)){d=c}else{if(Math.abs(b)+this.scrollStepparseInt(this._unorderedList.css("left"),10)+4){k=i-f-g-j+parseInt(this._titleList[this._selectedItem].position().left)}}}this._performScrollAnimation(d,k,e)},_scrollLeft:function(f,g){this._unorderedList.stop();this._unlockAnimation("unorderedList");var b=parseInt(this._unorderedList.css("left")),c=this._getArrowsDisplacement(),e=0,d=undefined;f=(this.enableScrollAnimation)?f:0;if(parseInt(this._headerWrapper.width())>=parseInt(this._unorderedList.width())){e=c}else{if(b+this.scrollStepparseInt(this._unorderedList.css("left"))+4){d=parseInt(this._titleList[this._selectedItem].position().left)}}}this._performScrollAnimation(e,d,f)},_performScrollAnimation:function(e,d,c){var b=this;if(d!==undefined){this._moveSelectionTrack(this._selectedItem,0,d)}this._lockAnimation("unorderedList");this._unorderedList.animate({left:e},c,function(){b._moveSelectionTrack(b.selectedItem,0);b._unlockAnimation("unorderedList")})},_addKeyboardHandlers:function(){var b=this;if(this.keyboardNavigation){this.addHandler(this.host,"keydown",function(e){if(!b._activeAnimation()){var f=b._selectedItem;var d=b.selectionTracker;var c=b.getContentAt(f);if(a(e.target).ischildof(c)){return true}switch(e.keyCode){case 37:if(b.rtl){b.next()}else{b.previous()}return false;case 39:if(b.rtl){b.previous()}else{b.next()}return false;case 36:b.first();return false;case 35:b.last();return false;case 27:if(b._tabCaptured){b._cancelClick=true;b._uncapture(null,b.selectedItem);b._tabCaptured=false}break}b.selectionTracker=d}return true})}},_addScrollHandlers:function(){var b=this;this.addHandler(this._leftArrow,"mousedown",function(){b._startScrollRepeat(true,b.scrollAnimationDuration)});this.addHandler(this._rightArrow,"mousedown",function(){b._startScrollRepeat(false,b.scrollAnimationDuration)});this.addHandler(this._rightArrow,"mouseleave",function(){clearTimeout(b._scrollTimeout)});this.addHandler(this._leftArrow,"mouseleave",function(){clearTimeout(b._scrollTimeout)});this.addHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpScrollDocumentHandler,this);this.addHandler(a(document),"mouseleave.tab"+this.element.id,this._mouseLeaveScrollDocumentHandler,this)},_mouseLeaveScrollDocumentHandler:function(c){var b=c.data;if(!b._scrollTimeout){return}clearTimeout(b._scrollTimeout)},_mouseUpScrollDocumentHandler:function(c){var b=c.data;clearTimeout(b._scrollTimeout)},_mouseUpDragDocumentHandler:function(c){var b=c.data;if(b._tabCaptured&&b._dragStarted){b._uncapture(c)}b._tabCaptured=false},_addReorderHandlers:function(){var b=this;this.addHandler(a(document),"mousemove.tab"+this.element.id,this._moveElement,this);this.addHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpDragDocumentHandler,this)},_addEventHandlers:function(){var e=this.length();while(e){e--;this._addEventListenerAt(e)}if(this.keyboardNavigation){this._addKeyboardHandlers()}if(this.scrollable){this._addScrollHandlers()}if(this.reorder&&!this._isTouchDevice){this._addReorderHandlers()}var d=this;try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var c=function(g){if(d._tabCaptured){d._cancelClick=true;d._uncapture(null,d.selectedItem);d._tabCaptured=false}};var f=null;if(window.parent&&document.referrer){f=document.referrer}if(f&&f.indexOf(document.location.host)!=-1){if(window.top.document){this.addHandler(a(window.top.document),"mouseup",c)}}}}}catch(b){}},focus:function(){try{this.host.focus();var c=this;setTimeout(function(){c.host.focus()},25)}catch(b){}},_getFocusedItem:function(f,e){var i=this.length();while(i){i--;var h=this._titleList[i],g=parseInt(h.outerWidth(true)),d=parseInt(h.offset().left),c=parseInt(this._unorderedList.offset().left),j=parseInt(this.host.offset().left),b=d;if((b<=f&&b+g>=f)&&(h!==this._capturedElement)&&(!this._titleList[i].locked)&&(this._titleList[i].disabled!==true)){return i}}return -1},_uncapture:function(e){var d=this.selectionTracker;this._unorderedListLeftBackup=this._unorderedList.css("left");this._dragStarted=false;this._tabCaptured=false;var b=this._indexOf(this._capturedElement);if(!this._capturedElement){return}switch(this.position){case"top":this._capturedElement.css("bottom",0);break;case"bottom":this._capturedElement.css("top",0);break}if(e){var c=this._getFocusedItem(e.clientX,e.clientY)}if(c===-1||!e){this._capturedElement.css("left",0)}else{this._raiseEvent(10,{item:b,dropIndex:c});this._reorderItems(c,b)}a.each(this._titleList,function(){this.css("position","static")});this._reorderHeaderElements();this._unorderedList.css({position:"relative",top:"0px"});this._prepareTabs();if(c===-1||!e){this._selectedItem=b;this._moveSelectionTrack(b,0);this._addSelectStyle(this._selectedItem,true)}else{this._moveSelectionTrack(this._selectedItem,0);this._addSelectStyle(this._selectedItem,true)}if(document.selection){document.selection.clear()}this._unorderedList.css("left",this._unorderedListLeftBackup);this.selectionTracker=d},_reorderItems:function(c,b){var d=this._titleList[this.selectedItem];var e=this._contentList[b];if(typeof this._capturedElement==="undefined"){this._capturedElement=this._titleList[b]}this._titleList[b].remove();if(b=d;c--){this._titleList[c]=this._titleList[c-1];this._contentList[c]=this._contentList[c-1]}this._contentList[d]=f;this._titleList[d]=this._capturedElement}},getSelectedItem:function(){return this.selectedItem},_getSelectedItem:function(c){var b=this.length();while(b){b--;if(this._titleList[b]===c){this._selectedItem=this.selectedItem=b;break}}},_moveElement:function(c,b){var b=c.data;if(b._tabCaptured){if(document.selection){document.selection.clear()}if(!b._dragStarted){unorderedListLeft=-parseInt(b._unorderedList.css("left"),10);if(c.clientX+unorderedListLeft>b._startX+3||c.clientX+unorderedListLeftthis._headerWrapper.offset().left+parseInt(this._headerWrapper.width(),10)){this._scrollRight(this.scrollAnimationDuration);this._capturedElement.css("left",parseInt(this._capturedElement.css("left"))+this._lastUnorderedListPosition-c)}else{this._unorderedList.stop();this._unlockAnimation("unorderedList");clearTimeout(this._scrollTimeout)}}var b=this;this._scrollTimeout=setTimeout(function(){b._dragScroll(d)},this.scrollAnimationDuration);this._lastUnorderedListPosition=c},_captureElement:function(c,b){if(!this._tabCaptured&&!this._titleList[b].locked&&this._titleList[b].disabled!==true&&!this._activeAnimation()){unorderedListLeft=-parseInt(this._unorderedList.css("left"),10);this._startX=unorderedListLeft+c.clientX;this._startY=c.clientY;this._lastX=c.clientX;this._lastY=c.clientY;this._tabCaptured=true;this._capturedElement=this._titleList[b]}},_titleInteractionTrigger:function(b){if(this._headerExpandingBalance>0){this._removeOppositeBorder()}if(this._selectedItem!==b){this.select(this._titleList[b],"toggle");this._titleList[b].collapsed=false;if(!this.collapsible){if(this.height!=="auto"){this._contentWrapper.css("visibility","visible")}else{this._contentWrapper.css("display","block")}}}else{if(this.collapsible){if(this.isCollapsed){this.expand()}else{this.collapse()}}}},collapse:function(){var c=this._selectedItem,b=this;this.isCollapsed=true;if(b.height!=="auto"){b._contentWrapper.css("visibility","hidden")}else{b._contentWrapper.hide()}b._raiseEvent(13,{item:c});if(this.position=="top"){b._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-collapsed"));b.host.addClass(this.toThemeProperty("MLjqui-tabs-collapsed"))}else{b._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-collapsed-bottom"));b.host.addClass(this.toThemeProperty("MLjqui-tabs-collapsed-bottom"))}},expand:function(){var c=this._selectedItem,b=this;this.isCollapsed=false;this._select(c,b.contentTransitionDuration,null,false,true);if(b.height!=="auto"){b._contentWrapper.css("visibility","visible")}else{b._contentWrapper.show()}b._raiseEvent(14,{item:c});if(this.position=="top"){b._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-collapsed"));b.host.removeClass(this.toThemeProperty("MLjqui-tabs-collapsed"))}else{b._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-collapsed-bottom"));b.host.removeClass(this.toThemeProperty("MLjqui-tabs-collapsed-bottom"))}},_addSelectHandler:function(c){var b=this;this.addHandler(this._titleList[c],"selectstart",function(d){return false});this.addHandler(this._titleList[c],this.toggleMode,function(d){return function(){b._raiseEvent("15",{item:d});if(!b._tabCaptured&&!b._cancelClick){b._titleInteractionTrigger(d)}return true}}(c))},_addDragDropHandlers:function(c){var b=this;this.addHandler(this._titleList[c],"mousedown",function(d){b._captureElement(d,c);return false});this.addHandler(this._titleList[c],"mouseup",function(d){if(b._tabCaptured&&b._dragStarted){b._cancelClick=true;b._uncapture(d,c)}else{b._cancelClick=false}b._tabCaptured=false;return false})},_removeHoverStates:function(){var b=this;a.each(this._titleList,function(){this.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-top"));this.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))})},_addHoverHandlers:function(c){var b=this;var d=this._titleList[c];this.addHandler(d,"mouseenter",function(f){if(c!=b._selectedItem){if(b.position=="top"){d.addClass(b.toThemeProperty("MLjqui-tabs-title-hover-top"))}else{d.addClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))}d.addClass(b.toThemeProperty("MLjqui-fill-state-hover"));if(b.showCloseButtons){var e=d.children(0).children(b.toThemeProperty(".MLjqui-tabs-close-button",true));e.addClass(b.toThemeProperty("MLjqui-tabs-close-button-hover",true))}}});this.addHandler(d,"mouseleave",function(f){if(c!=b._selectedItem){if(b.position=="top"){d.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-top"))}else{d.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))}d.removeClass(b.toThemeProperty("MLjqui-fill-state-hover"));if(b.showCloseButtons){var e=d.children(0).children(b.toThemeProperty(".MLjqui-tabs-close-button",true));e.removeClass(b.toThemeProperty("MLjqui-tabs-close-button-hover",true))}}})},_addEventListenerAt:function(d){var c=this;if(this._titleList[d].disabled){return}if(this.reorder&&!this._isTouchDevice){this._addDragDropHandlers(d)}this._addSelectHandler(d);if(this.enabledHover){this._addHoverHandlers(d)}var b=this._titleList[d].find(this.toThemeProperty(".MLjqui-tabs-close-button",true));this.removeHandler(b,"click");this.addHandler(b,"click",function(e){c.removeAt(d);return false})},_removeEventHandlers:function(){var b=this;var c=this.length();while(c){c--;this._removeEventListenerAt(c)}if(this.scrollable){this.removeHandler(this._leftArrow,"mousedown");this.removeHandler(this._rightArrow,"mousedown")}this.removeHandler(a(document),"mousemove.tab"+this.element.id,this._moveElement);this.removeHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpScrollDocumentHandler);this.removeHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpDragDocumentHandler);this.removeHandler(this.host,"keydown")},_removeEventListenerAt:function(d){var c=this;this.removeHandler(this._titleList[d],this.toggleMode);this.removeHandler(this._titleList[d],"mouseenter");this.removeHandler(this._titleList[d],"mouseleave");this.removeHandler(this._titleList[d],"mousedown");this.removeHandler(this._titleList[d],"mouseup");var b=this._titleList[d].children(0).children(this.toThemeProperty(".MLjqui-tabs-close-button",true));this.removeHandler(b,"click")},_moveSelectionTrack:function(l,c,b){var m=this;if(l==-1){return}if(this._titleList.length==0){return}if(l>=this._titleList.length){return}if(this.selectionTracker&&this._selectionTracker){this._selectionTracker.stop();this._unlockAnimation("selectionTracker");if(b===undefined){var h=parseInt(this._titleList[l].position().left);if(!isNaN(parseInt(this._unorderedList.css("left")))){h+=parseInt(this._unorderedList.css("left"))}if(!isNaN(parseInt(this._unorderedList.css("margin-left")))){h+=parseInt(this._unorderedList.css("margin-left"))}if(!isNaN(parseInt(this._titleList[l].css("margin-left")))){h+=parseInt(this._titleList[l].css("margin-left"))}if(!isNaN(parseInt(this._titleList[l].css("margin-right")))){}}else{var h=b}var g=0;var e=0;if(this.position==="top"){g=parseInt(this._headerWrapper.height())-parseInt(this._titleList[l].outerHeight());if(!this.autoHeight){e+=parseInt(this._titleList[l].css("margin-top"))}}this._lockAnimation("selectionTracker");var k=parseInt(this._titleList[l].css("padding-left"))+parseInt(this._titleList[l].css("padding-right"));var f=this.position=="top"?0:1;var j=parseInt(this._headerWrapper.css("padding-top"));var i=parseInt(this._titleList[l].css("padding-top"))+parseInt(this._titleList[l].css("padding-bottom"));this._selectionTracker.css("visibility","visible");this._moveSelectionTrackerContainer.css("visibility","visible");var d=parseInt(this._titleList[l].css("margin-top"));if(isNaN(d)){d=0}this._selectionTracker.animate({top:j+d-f,left:h+"px",height:parseInt(this._titleList[l].height()+i),width:this._titleList[l].width()+k},c,function(){m._unlockAnimation("selectionTracker");m._selectionTracker.css("visibility","hidden");m._addSelectStyle(l,true);m._moveSelectionTrackerContainer.css("visibility","hidden")})}},destroy:function(){a.MLjqui.utilities.resize(this.host,null,true);this.host.remove()},_switchTabs:function(b,d){if(b!==d&&!this._activeAnimation()&&!this._tabCaptured){var c=this;this._raiseEvent(7,{item:d});this._raiseEvent(6,{item:b});if(this._currentEvent){if(this._currentEvent.cancel){this._currentEvent=null;return}}this._unselect(d,null,true);this._select(b,c.contentTransitionDuration,null,true);return true}return false},_activeAnimation:function(){for(child in this._isAnimated){if(this._isAnimated.hasOwnProperty(child)){if(this._isAnimated[child]){return true}}}return false},_indexOf:function(c){var b=this.length();while(b){b--;if(this._titleList[b][0]===c[0]||this._contentList[b][0]===c[0]){return b}}return -1},_validateProperties:function(){try{if(this.scrollAnimationDuration<0||isNaN(this.scrollAnimationDuration)){throw new Error(this._invalidArgumentExceptions.invalidScrollAnimationDuration)}if(parseInt(this.width)<0&&this.width!=="auto"){throw new Error(this._invalidArgumentExceptions.invalidWidth)}if(parseInt(this.height)<0&&this.height!=="auto"){throw new Error(this._invalidArgumentExceptions.invalidHeight)}if(this.animationType!=="none"&&this.animationType!=="fade"){throw new Error(this._invalidArgumentExceptions.invalidAnimationType)}if(this.contentTransitionDuration<0||isNaN(this.contentTransitionDuration)){throw new Error(this._invalidArgumentExceptions.invalidcontentTransitionDuration)}if(this.toggleMode!=="click"&&this.toggleMode!=="dblclick"&&this.toggleMode!=="mouseenter"&&this.toggleMode!=="none"){throw new Error(this._invalidArgumentExceptions.invalidToggleMode)}if(this.position!=="top"&&this.position!=="bottom"){throw new Error(this._invalidArgumentExceptions.invalidPosition)}if(this.scrollPosition!=="left"&&this.scrollPosition!=="right"&&this.scrollPosition!=="both"){throw new Error(this._invalidArgumentExceptions.invalidScrollPosition)}if(this.scrollStep<0||isNaN(this.scrollStep)){throw new Error(this._invalidArgumentExceptions.invalidScrollStep)}if(this._titleList.length!==this._contentList.length||this._titleList.length==0){throw new Error(this._invalidArgumentExceptions.invalidStructure)}if(this.arrowButtonSize<0||isNaN(this.arrowButtonSize)){throw new Error(this._invalidArgumentExceptions.invalidArrowSize)}if(this.closeButtonSize<0||isNaN(this.closeButtonSize)){throw new Error(this._invalidArgumentExceptions.invalidCloseSize)}}catch(b){alert(b)}},_startScrollRepeat:function(d,c){var b=this;if(d){this._scrollLeft(c)}else{this._scrollRight(c)}if(this._scrollTimeout){clearTimeout(this._scrollTimeout)}this._scrollTimeout=setTimeout(function(){b._startScrollRepeat(d,b.scrollAnimationDuration)},c)},_performLayout:function(){var b=this.length();while(b){b--;if(this.position==="top"||this.position==="bottom"){if(this.rtl){this._titleList[b].css("float","right")}else{this._titleList[b].css("float","left")}}}this._fitToSize();this._performHeaderLayout();this._fitToSize()},updatetabsheader:function(){this._performHeaderLayout()},_setSize:function(){var b=this;this._fitToSize();this._positionArrows(this._totalItemsWidth);if(this._totalItemsWidth>this.element.offsetWidth){this._unorderedList.width(this._totalItemsWidth)}else{this._unorderedList[0].style.width=this.element.offsetWidth-2+"px"}this._fitToSize()},_addArrows:function(){if(this._leftArrow&&this._rightArrow){this._leftArrow.remove();this._rightArrow.remove()}this._leftArrow=a('
          ');this._rightArrow=a('
          ');this._leftArrow.addClass(this.toThemeProperty("MLjqui-tabs-arrow-background"));this._rightArrow.addClass(this.toThemeProperty("MLjqui-tabs-arrow-background"));this._leftArrow.addClass(this.toThemeProperty("MLjqui-widget-header"));this._rightArrow.addClass(this.toThemeProperty("MLjqui-widget-header"));this._headerWrapper.append(this._leftArrow);this._headerWrapper.append(this._rightArrow);this._leftArrow.width(this.arrowButtonSize);this._leftArrow.height("100%");this._rightArrow.width(this.arrowButtonSize);this._rightArrow.height("100%");this._leftArrow.css({"z-index":"30"});this._rightArrow.css({"z-index":"30"});this._leftArrow.css("display","none");this._rightArrow.css("display","none")},_tabsWithVisibleCloseButtons:function(){if(!this.showCloseButtons){return 0}var c=this.length();var b=this;a.each(this._titleList,function(){var d=this.attr("hasclosebutton");if(d!=undefined&&d!=null){if(d=="false"||d==false){c--}}});return c},_calculateTitlesSize:function(){var g=0;var d=0;var c=this.length();if(this.rtl&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<8){this._measureItem=a("");a(document.body).append(this._measureItem)}while(c){c--;if(this._measureItem){this._measureItem.html(this._titleList[c].html());this._titleList[c].width(this._measureItem.width())}this._titleList[c].css("position","static");this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).css("display","none");d+=parseInt(this._titleList[c].outerWidth(true));if(g1)){var e=false;if(this.hiddenCloseButtons){if(this.hiddenCloseButtons[c]==1){this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).css("display","none");e=true}}if(!e){d+=this.closeButtonSize;this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).css("display","block")}}}this._titleList[c].height(this._titleList[c].height())}if(this._measureItem){this._measureItem.remove()}return{height:g,width:10+d}},_reorderHeaderElements:function(){if(this.selectionTracker){this._moveSelectionTrackerContainer.css({position:"absolute",height:"100%",top:"0px",left:"0px",width:"100%"})}this._headerWrapper.css({position:"relative",left:"0px",top:"0px"});if(this.scrollable){this._rightArrow.css({width:this.arrowButtonSize,position:"absolute",top:"0px"});this._leftArrow.css({width:this.arrowButtonSize,position:"absolute",top:"0px"});var c=this.theme&&this.theme.indexOf("ui-")!=-1?3:0;if(c>0){this._rightArrow.addClass(this.toThemeProperty("MLjqui-rc-r"));this._leftArrow.addClass(this.toThemeProperty("MLjqui-rc-l"))}var b=this.scrollPosition;if(this.rtl){if(b=="left"){b="right"}if(b=="right"){b="left"}}switch(b){case"both":this._rightArrow.css("right","0px");this._leftArrow.css("left","0px");break;case"left":this._rightArrow.css("left",this.arrowButtonSize+"px");this._leftArrow.css("left","0px");break;case"right":this._rightArrow.css("right",-c+"px");this._leftArrow.css("right",(this.arrowButtonSize-c)+"px");break}}},_positionArrows:function(b){if(b>=parseInt(this._headerWrapper[0].offsetWidth)&&this.scrollable){this._needScroll=true;if(this._unorderedList.position().left===0){this._unorderedListLeftBackup=this._getArrowsDisplacement()+"px"}this._leftArrow.css("display","block");this._rightArrow.css("display","block")}else{this._needScroll=false;this._leftArrow[0].style.display="none";this._rightArrow[0].style.display="none";this._unorderedList[0].style.left="0px"}},_performHeaderLayout:function(){this._removeSelectStyle();var b=this._calculateTitlesSize();var d=b.height;var c=b.width;this._headerWrapper.height(d);this._unorderedList.height(d);if(this.headerHeight!=null&&this.headerHeight!="auto"){this._headerWrapper.height(this.headerHeight);this._unorderedList.height(this.headerHeight)}if(c>this.host.width()){this._unorderedList.width(c)}else{this._unorderedList.width(this.host.width())}if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<8){this._unorderedList.css("position","relative");this._headerWrapper.css("overflow","hidden")}this._reorderHeaderElements();c=c+parseInt(this._unorderedList.css("margin-left"));this._totalItemsWidth=c;this._positionArrows(c);this._unorderedList.css({position:"relative",top:"0px"});this._verticalAlignElements();this._moveSelectionTrack(this._selectedItem,0);this._addSelectStyle(this.selectedItem)},_verticalAlignElements:function(){var k=this.length();var p=this._maxHeightTab();while(k){k--;var b=this._titleList[k].find(".MLjqui-tabs-titleContentWrapper"),l=b.height(),o=this._titleList[k].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)),m=parseInt(this._titleList[k].css("padding-top"));if(!m){m=0}if(this.autoHeight){var h=this._titleList[k].outerHeight(true)-this._titleList[k].height();var c=parseInt(this._titleList[k].css("padding-top"));var q=parseInt(this._titleList[k].css("padding-bottom"));var j=parseInt(this._titleList[k].css("border-top-width"));var f=parseInt(this._titleList[k].css("border-bottom-width"));this._titleList[k].height(this._unorderedList.outerHeight()-c-q-j-f)}else{if(this.position==="top"){var i=parseInt(this._unorderedList.height())-parseInt(this._titleList[k].outerHeight(true));if(parseInt(this._titleList[k].css("margin-top"))!==i&&i!==0){this._titleList[k].css("margin-top",i)}}else{this._titleList[k].height(this._titleList[k].height())}}this._titleList[k].children(0).height("100%");var e=parseInt(this._titleList[k].height());var g=parseInt(e)/2-parseInt(o.height())/2;o.css("margin-top",1+g);var n=parseInt(e)/2-parseInt(b.height())/2;b.css("margin-top",n)}if(this.scrollable){var h=parseInt(this._headerWrapper.outerHeight())-this.arrowButtonSize;var d=h/2;this._rightArrow.children(0).css("margin-top",d);this._rightArrow.height("100%");this._leftArrow.height("100%");this._leftArrow.children(0).css("margin-top",d)}},_getImageUrl:function(c){var b=c.css("background-image");b=b.replace('url("',"");b=b.replace('")',"");b=b.replace("url(","");b=b.replace(")","");return b},_fitToSize:function(){var c=false;var e=false;var d=this;if(d.width!=null&&d.width.toString().indexOf("%")!=-1){c=true}if(d.height!=null&&d.height.toString().indexOf("%")!=-1){e=true}if(c){this.host[0].style.width=this.width;this._contentWrapper[0].style.width="100%"}if(e){this.host[0].style.height=this.height;this._contentWrapper[0].style.width="100%";this._contentWrapper[0].style.height="auto";var b=this.element.offsetHeight-this._headerWrapper[0].offsetHeight;this._contentWrapper[0].style.height=b+"px"}if(!c){this.host.width(this.width);if(this.width!="auto"){this._contentWrapper.css("width","100%")}}if(!e){if(this.height!=="auto"){this.host.height(this.height);var b=this.host.height()-this._headerWrapper.outerHeight();this._contentWrapper.height(b)}else{this._contentWrapper.css("height","auto")}}},_maxHeightTab:function(){var c=this.length();var d=-1;var b=-1;while(c){c--;if(d');var b=this.toThemeProperty("MLjqui-tabs-selection-tracker-"+this.position);this._selectionTracker=a('
          ');this._selectionTracker.css("color","inherit");this._moveSelectionTrackerContainer.append(this._selectionTracker);this._headerWrapper.append(this._moveSelectionTrackerContainer);this._selectionTracker.css({position:"absolute","z-index":"10",left:"0px",top:"0px",display:"inline-block"})},_addContentWrapper:function(){var d="none";var b=this._contentWrapper==undefined;this._contentWrapper=this._contentWrapper||a('
          ');this._contentWrapper.addClass(this.toThemeProperty("MLjqui-widget-content"));var c=this.length();while(c){c--;this._contentList[c].addClass(this.toThemeProperty("MLjqui-tabs-content-element"))}if(b){this.host.find(".MLjqui-tabs-content-element").wrapAll(this._contentWrapper);this._contentWrapper=this.host.find(".MLjqui-tabs-content")}if(this.roundedCorners){if(this.position=="top"){this._contentWrapper.addClass(this.toThemeProperty("MLjqui-rc-b"))}else{this._contentWrapper.addClass(this.toThemeProperty("MLjqui-rc-t"))}this.host.addClass(this.toThemeProperty("MLjqui-rc-all"))}},_addHeaderWrappers:function(){var b=this.length();this._unorderedList.remove();this._headerWrapper=this._headerWrapper||a('
          ');this._headerWrapper.remove();if(this.position=="top"){this._headerWrapper.prependTo(this.host)}else{this._headerWrapper.appendTo(this.host)}this._unorderedList.appendTo(this._headerWrapper);this._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header"));this._headerWrapper.addClass(this.toThemeProperty("MLjqui-widget-header"));if(this.position=="bottom"){this._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-bottom"))}else{this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-bottom"))}if(this.roundedCorners){if(this.position=="top"){this._headerWrapper.addClass(this.toThemeProperty("MLjqui-rc-t"));this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-rc-b"))}else{this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-rc-t"));this._headerWrapper.addClass(this.toThemeProperty("MLjqui-rc-b"))}}while(b){b--;if(this._titleList[b].children(".MLjqui-tabs-titleWrapper").length<=0){var c=a('
          ');c.append(this._titleList[b].html());this._titleList[b].empty();c.appendTo(this._titleList[b])}this._titleList[b].children(".MLjqui-tabs-titleWrapper").css("z-index","15")}},_render:function(){this._addCloseButtons();this._addHeaderWrappers();this._addContentWrapper();if(this.selectionTracker){this._addSelectionTracker()}this._addArrows()},_addCloseButton:function(c){var f=c;if(this._titleList[f].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).length<=0&&this._titleList[f].find(".MLjqui-tabs-titleContentWrapper").length<=0){var d=a('
          ');var g="left";if(this.rtl){g="right"}d.css("float",g);d.addClass("MLjqui-disableselect");d.append(this._titleList[f].html());this._titleList[f].html("");var b=a('
          ');b.css({height:this.closeButtonSize,width:this.closeButtonSize,"float":g,"font-size":"1px"});var e=this;this._titleList[f].append(d);this._titleList[f].append(b);if(!this.showCloseButtons){b.css("display","none")}else{if(this.hiddenCloseButtons){if(this.hiddenCloseButtons[c]==1){b.css("display","none")}}}}},_addCloseButtons:function(){var b=this.length();while(b){b--;this._addCloseButton(b)}},_prepareTabs:function(){var c=this.length();var b=this.selectionTracker;this.selectionTracker=false;while(c){c--;if(this._selectedItem!==c){this._unselect(c,null,false)}}this._select(this._selectedItem,0,null,false);this.selectionTracker=b;if(this.initTabContent){if(!this._initTabContentList[this.selectedItem]){if(!this._hiddenParent()){this.initTabContent(this.selectedItem);this._initTabContentList[this.selectedItem]=true}}}},_isValidIndex:function(b){return(b>=0&&b=0&&this._titleList[c]!=undefined){var b=null;if(this.showCloseButtons){var b=this._titleList[c].children(0).children(this.toThemeProperty(".MLjqui-tabs-close-button",true));if(this.hiddenCloseButtons){if(this.hiddenCloseButtons[c]==1){b=null}}}this._titleList[c].removeClass(this.toThemeProperty("MLjqui-fill-state-hover"));if(this.position=="top"){this._titleList[c].removeClass(this.toThemeProperty("MLjqui-tabs-title-hover-top"));this._titleList[c].addClass(this.toThemeProperty("MLjqui-tabs-title-selected-top"))}else{this._titleList[c].removeClass(this.toThemeProperty("MLjqui-tabs-title-hover-bottom"));this._titleList[c].addClass(this.toThemeProperty("MLjqui-tabs-title-selected-bottom"))}this._titleList[c].addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(b!=null){b.addClass(this.toThemeProperty("MLjqui-tabs-close-button-selected"))}}}},_addItemTo:function(g,c,e){if(c=0){if(!this._tabCaptured){var c=this;this._contentList[d].stop();if(this.animationType=="fade"){this._contentList[d].css("display","none");a.MLjqui.aria(c._titleList[d],"aria-selected",false);a.MLjqui.aria(c._contentList[d],"aria-hidden",true)}else{if(this.selectionTracker){setTimeout(function(){c._contentList[d].css("display","none");a.MLjqui.aria(c._titleList[d],"aria-selected",false);a.MLjqui.aria(c._contentList[d],"aria-hidden",true)},this.selectionTrackerAnimationDuration)}else{this._contentList[d].css("display","none");a.MLjqui.aria(c._titleList[d],"aria-selected",false);a.MLjqui.aria(c._contentList[d],"aria-hidden",true)}}this._unselectCallback(d,e,b);if(!this.selectionTracker){this._titleList[d].removeClass(this.toThemeProperty("MLjqui-tabs-title-selected"));this._titleList[d].removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"))}}}},_unselectCallback:function(c,d,b){if(b){this._raiseEvent(8,{item:c})}if(d){d()}},disable:function(){var b=this.length();while(b){b--;this.disableAt(b)}},enable:function(){var b=this.length();while(b){b--;this.enableAt(b)}},getEnabledTabsCount:function(){var b=0;a.each(this._titleList,function(){if(!this.disabled){b++}});return b},getDisabledTabsCount:function(){var b=0;a.each(this._titleList,function(){if(this.disabled){b++}});return b},removeAt:function(d){if(this._isValidIndex(d)&&(this.canCloseAllTabs||this.length()>1)){this._removeHoverStates();var b=this,c=this._titleList[this._selectedItem],e=parseInt(this._titleList[d].outerWidth(true)),i=this.getTitleAt(d);this._unorderedList.width(parseInt(this._unorderedList.width())-e);this._titleList[d].remove();this._contentList[d].remove();var h=0;this._titleList.splice(d,1);this._contentList.splice(d,1);this._addStyles();this._performHeaderLayout();this._removeEventHandlers();this._addEventHandlers();this._raiseEvent(3,{item:d,title:i});this._isAnimated={};if(this.selectedItem>0){this._selectedItem=-1;var g=this._getPreviousIndex(this.selectedItem);this.select(g)}else{this._selectedItem=-1;var g=this._getNextIndex(this.selectedItem);this.select(g)}if(parseInt(this._unorderedList.css("left"))>this._getArrowsDisplacement()){this._unorderedList.css("left",this._getArrowsDisplacement())}if(parseInt(this._unorderedList.width())<=parseInt(this._headerWrapper.width())){var f=(this.enableScrollAnimation)?this.scrollAnimationDuration:0;this._lockAnimation("unorderedList");this._unorderedList.animate({left:0},f,function(){b._unlockAnimation("unorderedList")})}}},removeFirst:function(){this.removeAt(0)},removeLast:function(){this.removeAt(this.length()-1)},disableAt:function(b){if(!this._titleList[b].disabled||this._titleList[b].disabled===undefined){if(this.selectedItem==b){var c=this.next();if(!c){c=this.previous()}}this._titleList[b].disabled=true;this.removeHandler(this._titleList[b],this.toggleMode);if(this.enabledHover){this._titleList[b].off("mouseenter").off("mouseleave")}this._removeEventListenerAt(b);this._titleList[b].addClass(this.toThemeProperty("MLjqui-tabs-title-disable"));this._titleList[b].addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));this._raiseEvent(5,{item:b})}},enableAt:function(b){if(this._titleList[b].disabled){this._titleList[b].disabled=false;this._addEventListenerAt(b);this._titleList[b].removeClass(this.toThemeProperty("MLjqui-tabs-title-disable"));this._titleList[b].removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"));this._raiseEvent(4,{item:b})}},addAt:function(d,g,e){if(d>=0||d<=this.length()){this._removeHoverStates();var b=a("
        • "+g+"
        • ");var f=a("
          "+e+"
          ");b.addClass(this.toThemeProperty("MLjqui-tabs-title"));b.addClass(this.toThemeProperty("MLjqui-item"));f.addClass(this.toThemeProperty("MLjqui-tabs-content-element"));if(this.position=="bottom"){b.addClass(this.toThemeProperty("MLjqui-tabs-title-bottom"))}var c=false;if(this._titleList.length==0){this._unorderedList.append(b)}else{if(d=0){this._titleList[d].before(b)}else{this._titleList[this.length()-1].after(b)}}f.appendTo(this._contentWrapper);this._addItemTo(this._titleList,d,b);this._addItemTo(this._contentList,d,f);if(this._selectedItem>d){this._selectedItem++}this._switchTabs(d,this._selectedItem);this._selectedItem=d;if(this.showCloseButtons&&this._titleList.length>0){this._addCloseButton(d)}this._uiRefresh(c);this._raiseEvent(2,{item:d});this._moveSelectionTrack(this._selectedItem,0)}},addFirst:function(c,b){this.addAt(0,c,b)},addLast:function(c,b){this.addAt(this.length(),c,b)},val:function(b){if(arguments.length==0||typeof(b)=="object"){return this._selectedItem}this.select(b);return this._selectedItem},select:function(c,b){if(typeof(c)==="object"){c=this._indexOf(c)}var e=c>=0&&c0&&b0&&c<=this._titleList.length){c--;if(!this._titleList[c].disabled){return c;break}}return b}else{return 0}},_getNextIndex:function(c){if(c!=undefined&&!isNaN(c)){var b=c;while(c>=0&&c=0&&bb-this._getArrowsDisplacement()){g=-j+i-e-((this.scrollable)?(2*this.arrowButtonSize-this._getArrowsDisplacement()):0);c=i-e-this._getArrowsDisplacement()}else{this._moveSelectionTrack(d,this.selectionTrackerAnimationDuration);return true}}this._lockAnimation("unorderedList");this._unorderedList.animate({left:g},this.scrollAnimationDuration,function(){k._unlockAnimation("unorderedList");k._moveSelectionTrack(k._selectedItem,0);return true});this._moveSelectionTrack(d,this.selectionTrackerAnimationDuration,c);return true},isVisibleAt:function(d){var k=this;if(d==undefined||d==-1||d==null){d=this.selectedItem}if(!this._isValidIndex(d)){return false}var j=parseInt(this._titleList[d].position().left)+parseInt(this._unorderedList.css("margin-left"));var f=parseInt(this._unorderedList.css("left"));var i=parseInt(this._headerWrapper.outerWidth(true));var e=parseInt(this._titleList[d].outerWidth(true));var h=f-this._getArrowsDisplacement();var b=i-this._getArrowsDisplacement()-h;var g,c;if(j<-h){return false}else{if(j+e>b){return false}else{return true}}return true},isDisabled:function(b){return this._titleList[b].disabled},_lockAnimation:function(b){if(this._isAnimated){this._isAnimated[b]=true}},_unlockAnimation:function(b){if(this._isAnimated){this._isAnimated[b]=false}},propertiesChangedHandler:function(d,b,c){if(c&&c.width&&c.height&&Object.keys(c).length==2){d._setSize()}},propertyChangedHandler:function(b,c,e,d){if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}this._validateProperties();switch(c){case"touchMode":if(d){b.enabledHover=false;b.keyboardNavigation=false}break;case"width":case"height":b._setSize();return;case"disabled":if(d){this.disable()}else{this.enable()}return;case"showCloseButtons":if(d){this.showAllCloseButtons()}else{this.hideAllCloseButtons()}this._moveSelectionTrack(this._selectedItem,this.selectionTrackerAnimationDuration);return;case"selectedItem":if(this._isValidIndex(d)){this.select(d)}return;case"scrollStep":case"contentTransitionDuration":case"scrollAnimationDuration":case"enableScrollAnimation":return;case"selectionTracker":if(d){this._refresh();this.select(this._selectedItem)}else{if(this._selectionTracker!=null){this._selectionTracker.remove()}}return;case"scrollable":if(d){this._refresh();this.select(this._selectedItem)}else{this._leftArrow.remove();this._rightArrow.remove();this._performHeaderLayout()}return;case"autoHeight":this._performHeaderLayout();return;case"theme":a.MLjqui.utilities.setTheme(e,d,this.host);return}this._unorderedList.css("left","0px");this._refresh();this.select(this._selectedItem);this._addSelectStyle(this._selectedItem,true)}})}(MLjquiBaseFramework)); -/* MLjquibuttons.js */ -(function(a){a.MLjqui.cssroundedcorners=function(b){var c={all:"MLjqui-rc-all",top:"MLjqui-rc-t",bottom:"MLjqui-rc-b",left:"MLjqui-rc-l",right:"MLjqui-rc-r","top-right":"MLjqui-rc-tr","top-left":"MLjqui-rc-tl","bottom-right":"MLjqui-rc-br","bottom-left":"MLjqui-rc-bl"};for(prop in c){if(!c.hasOwnProperty(prop)){continue}if(b==prop){return c[prop]}}};a.MLjqui.MLjquiWidget("MLjquiButton","",{});a.extend(a.MLjqui._MLjquiButton.prototype,{defineInstance:function(){var b={cursor:"arrow",roundedCorners:"all",disabled:false,height:null,width:null,overrideTheme:false,enableHover:true,enableDefault:true,enablePressed:true,imgPosition:"center",imgSrc:"",imgWidth:16,imgHeight:16,value:null,textPosition:"",textImageRelation:"overlay",rtl:false,_ariaDisabled:false,_scrollAreaButton:false,template:"default",aria:{"aria-disabled":{name:"disabled",type:"boolean"}}};a.extend(true,this,b);return b},_addImage:function(c){var g=this;if(g.element.nodeName.toLowerCase()=="input"||g.element.nodeName.toLowerCase()=="button"||g.element.nodeName.toLowerCase()=="div"){if(!g._img){g.field=g.element;if(g.field.className){g._className=g.field.className}var h={title:g.field.title};var i=null;if(g.field.getAttribute("value")){var i=g.field.getAttribute("value")}else{if(g.element.nodeName.toLowerCase()!="input"){var i=g.element.innerHTML}}if(g.value){i=g.value}if(g.field.id.length){h.id=g.field.id.replace(/[^\w]/g,"_")+"_"+c}else{h.id=a.MLjqui.utilities.createId()+"_"+c}var b=a("
          ",h);b[0].style.cssText=g.field.style.cssText;b.css("box-sizing","border-box");var f=a("");f[0].setAttribute("src",g.imgSrc);f[0].setAttribute("width",g.imgWidth);f[0].setAttribute("height",g.imgHeight);b.append(f);g._img=f;var j=a("");if(i){j.html(i);g.value=i}b.append(j);g._text=j;a(g.field).hide().after(b);var e=g.host.data();g.host=b;g.host.data(e);g.element=b[0];g.element.id=g.field.id;g.field.id=h.id;if(g._className){g.host.addClass(g._className);a(g.field).removeClass(g._className)}if(g.field.tabIndex){var d=g.field.tabIndex;g.field.tabIndex=-1;g.element.tabIndex=d}}else{g._img[0].setAttribute("src",g.imgSrc);g._img[0].setAttribute("width",g.imgWidth);g._img[0].setAttribute("height",g.imgHeight);g._text.html(g.value)}if(!g.imgSrc){g._img.hide()}else{g._img.show()}if(!g.value){g._text.hide()}else{g._text.show()}g._positionTextAndImage()}},_positionTextAndImage:function(){var k=this;var r=k.host.outerWidth();var q=k.host.outerHeight();var m=k.imgWidth;var v=k.imgHeight;if(k.imgSrc==""){m=0;v=0}var f=k._text.width();var b=k._text.height();var i=4;var c=4;var l=4;var n=0;var u=0;switch(k.textImageRelation){case"imageBeforeText":case"textBeforeImage":n=m+f+2*l+i+2*c;u=Math.max(v,b)+2*l+i+2*c;break;case"imageAboveText":case"textAboveImage":n=Math.max(m,f)+2*l;u=v+b+i+2*l+2*c;break;case"overlay":n=Math.max(m,f)+2*l;u=Math.max(v,b)+2*l;break}if(!k.width){k.host.width(n);r=n}if(!k.height){k.host.height(u);q=u}k._img.css("position","absolute");k._text.css("position","absolute");k.host.css("position","relative");k.host.css("overflow","hidden");var e={};var z={};var s=function(E,D,G,C,F){if(D.width=0)||b.value!=null){b.refresh();b._addImage("MLjquiButton")}if(!b._ariaDisabled){b.host.attr("role","button")}if(!b.overrideTheme){b.host.addClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(b.roundedCorners)));if(b.enableDefault){b.host.addClass(b.toThemeProperty("MLjqui-button"))}b.host.addClass(b.toThemeProperty("MLjqui-widget"))}b.isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(!b._ariaDisabled){a.MLjqui.aria(this)}if(b.cursor!="arrow"){if(!b.disabled){b.host.css({cursor:b.cursor})}else{b.host.css({cursor:"arrow"})}}var g="mouseenter mouseleave mousedown focus blur";if(b._scrollAreaButton){var g="mousedown"}if(b.isTouchDevice){b.addHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart"),function(h){b.isPressed=true;b.refresh()});b.addHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id,function(h){b.isPressed=false;b.refresh()})}b.addHandler(b.host,g,function(h){switch(h.type){case"mouseenter":if(!b.isTouchDevice){if(!b.disabled&&b.enableHover){b.isMouseOver=true;b.refresh()}}break;case"mouseleave":if(!b.isTouchDevice){if(!b.disabled&&b.enableHover){b.isMouseOver=false;b.refresh()}}break;case"mousedown":if(!b.disabled){b.isPressed=true;b.refresh()}break;case"focus":if(!b.disabled){b.isFocused=true;b.refresh()}break;case"blur":if(!b.disabled){b.isFocused=false;b.refresh()}break}});b.mouseupfunc=function(h){if(!b.disabled){if(b.isPressed||b.isMouseOver){b.isPressed=false;b.refresh()}}};b.addHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc);try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var f="";if(window.parent&&document.referrer){f=document.referrer}if(f.indexOf(document.location.host)!=-1){var e=function(h){b.isPressed=false;b.refresh()};if(window.top.document){b.addHandler(a(window.top.document),"mouseup",e)}}}}}catch(c){}b.propertyChangeMap.roundedCorners=function(h,j,i,k){h.host.removeClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(i)));h.host.addClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(k)))};b.propertyChangeMap.disabled=function(h,j,i,k){if(i!=k){h.refresh();h.host[0].disabled=k;h.host.attr("disabled",k);if(!k){h.host.css({cursor:h.cursor})}else{h.host.css({cursor:"default"})}a.MLjqui.aria(h,"aria-disabled",h.disabled)}};b.propertyChangeMap.rtl=function(h,j,i,k){if(i!=k){h.refresh()}};b.propertyChangeMap.template=function(h,j,i,k){if(i!=k){h.host.removeClass(h.toThemeProperty("MLjqui-"+i));h.refresh()}};b.propertyChangeMap.theme=function(h,j,i,k){h.host.removeClass();if(h.enableDefault){h.host.addClass(h.toThemeProperty("MLjqui-button"))}h.host.addClass(h.toThemeProperty("MLjqui-widget"));if(!h.overrideTheme){h.host.addClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(h.roundedCorners)))}h._oldCSSCurrent=null;h.refresh()};if(b.disabled){b.element.disabled=true;b.host.attr("disabled",true)}},resize:function(c,b){this.width=c;this.height=b;this._setSize()},val:function(){var c=this;var b=c.host.find("input");if(b.length>0){if(arguments.length==0||typeof(value)=="object"){return b.val()}b.val(value);c.refresh();return b.val()}if(arguments.length==0||typeof(value)=="object"){if(c.element.nodeName.toLowerCase()=="button"){return a(c.element).text()}return c.element.value}c.element.value=arguments[0];if(c.element.nodeName.toLowerCase()=="button"){a(c.element).text(arguments[0])}c.refresh()},_setSize:function(){var b=this;if(b.width!=null&&(b.width.toString().indexOf("px")!=-1||b.width.toString().indexOf("%")!=-1)){b.host.css("width",b.width)}else{if(b.width!=undefined&&!isNaN(b.width)){b.host.css("width",b.width)}}if(b.height!=null&&(b.height.toString().indexOf("px")!=-1||b.height.toString().indexOf("%")!=-1)){b.host.css("height",b.height)}else{if(b.height!=undefined&&!isNaN(b.height)){b.host.css("height",parseInt(b.height))}}},_removeHandlers:function(){var b=this;b.removeHandler(b.host,"selectstart");b.removeHandler(b.host,"click");b.removeHandler(b.host,"focus");b.removeHandler(b.host,"blur");b.removeHandler(b.host,"mouseenter");b.removeHandler(b.host,"mouseleave");b.removeHandler(b.host,"mousedown");b.removeHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc);if(b.isTouchDevice){b.removeHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart"));b.removeHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id)}b.mouseupfunc=null;delete b.mouseupfunc},focus:function(){this.host.focus()},destroy:function(){var b=this;b._removeHandlers();var c=a.data(b.element,"MLjquiButton");if(c){delete c.instance}b.host.removeClass();b.host.removeData();b.host.remove();delete b.set;delete b.get;delete b.call;delete b.element;delete b.host},render:function(){this.refresh()},propertiesChangedHandler:function(d,b,c){if(c&&c.width&&c.height&&Object.keys(c).length==2){d._setSize();d.refresh()}},propertyChangedHandler:function(b,c,e,d){if(this.isInitialized==undefined||this.isInitialized==false){return}if(d==e){return}if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}if(c=="textImageRelation"||c=="textPosition"||c=="imgPosition"){if(b._img){b._positionTextAndImage()}else{b._addImage("MLjquiButton")}}if(c=="imgSrc"||c=="imgWidth"||c=="imgHeight"||c=="value"){b._addImage("MLjquiButton")}if(c=="width"||c=="height"){b._setSize();b.refresh()}},refresh:function(){var c=this;if(c.overrideTheme){return}var e=c.toThemeProperty("MLjqui-fill-state-focus");var i=c.toThemeProperty("MLjqui-fill-state-disabled");var b=c.toThemeProperty("MLjqui-fill-state-normal");if(!c.enableDefault){b=""}var h=c.toThemeProperty("MLjqui-fill-state-hover");var f=c.toThemeProperty("MLjqui-fill-state-pressed");var g=c.toThemeProperty("MLjqui-fill-state-pressed");if(!c.enablePressed){f=""}var d="";if(!c.host){return}c.host[0].disabled=c.disabled;if(c.disabled){if(c._oldCSSCurrent){c.host.removeClass(c._oldCSSCurrent)}d=b+" "+i;if(c.template!=="default"&&c.template!==""){d+=" MLjqui-"+c.template;if(c.theme!=""){d+=" MLjqui-"+c.template+"-"+c.theme}}c.host.addClass(d);c._oldCSSCurrent=d;return}else{if(c.isMouseOver&&!c.isTouchDevice){if(c.isPressed){d=g}else{d=h}}else{if(c.isPressed){d=f}else{d=b}}}if(c.isFocused){d+=" "+e}if(c.template!=="default"&&c.template!==""){d+=" MLjqui-"+c.template;if(c.theme!=""){d+=" MLjqui-"+c.template+"-"+c.theme}}if(d!=c._oldCSSCurrent){if(c._oldCSSCurrent){c.host.removeClass(c._oldCSSCurrent)}c.host.addClass(d);c._oldCSSCurrent=d}if(c.rtl){c.host.addClass(c.toThemeProperty("MLjqui-rtl"));c.host.css("direction","rtl")}}});a.MLjqui.MLjquiWidget("MLjquiLinkButton","",{});a.extend(a.MLjqui._MLjquiLinkButton.prototype,{defineInstance:function(){this.disabled=false;this.height=null;this.width=null;this.rtl=false;this.href=null},createInstance:function(d){var c=this;this.host.onselectstart=function(){return false};this.host.attr("role","button");var b=this.height||this.host.height();var e=this.width||this.host.width();this.href=this.host.attr("href");this.target=this.host.attr("target");this.content=this.host.text();this.element.innerHTML="";this.host.append("");var f=this.host.find("input");f.addClass(this.toThemeProperty("MLjqui-reset"));f.width(e);f.height(b);f.val(this.content);this.host.find("tr").addClass(this.toThemeProperty("MLjqui-reset"));this.host.find("td").addClass(this.toThemeProperty("MLjqui-reset"));this.host.find("tbody").addClass(this.toThemeProperty("MLjqui-reset"));this.host.css("color","inherit");this.host.addClass(this.toThemeProperty("MLjqui-link"));f.css({width:e});f.css({height:b});var g=d==undefined?{}:d[0]||{};f.MLjquiButton(g);if(this.disabled){this.host[0].disabled=true}this.propertyChangeMap.disabled=function(h,j,i,k){h.host[0].disabled=k;h.host.find("input").MLjquiButton({disabled:k})};this.addHandler(f,"click",function(h){if(!this.disabled){c.onclick(h)}return false})},onclick:function(b){if(this.target!=null){window.open(this.href,this.target)}else{window.location=this.href}}});a.MLjqui.MLjquiWidget("MLjquiRepeatButton","MLjquiButton",{});a.extend(a.MLjqui._MLjquiRepeatButton.prototype,{defineInstance:function(){this.delay=50},createInstance:function(e){var c=this;var d=a.MLjqui.mobile.isTouchDevice();var b=!d?"mouseup."+this.base.element.id:"touchend."+this.base.element.id;var f=!d?"mousedown."+this.base.element.id:"touchstart."+this.base.element.id;this.addHandler(a(document),b,function(g){if(c.timeout!=null){clearTimeout(c.timeout);c.timeout=null;c.refresh()}if(c.timer!=undefined){clearInterval(c.timer);c.timer=null;c.refresh()}});this.addHandler(this.base.host,f,function(g){if(c.timer!=null){clearInterval(c.timer)}c.timeout=setTimeout(function(){clearInterval(c.timer);c.timer=setInterval(function(h){c.ontimer(h)},c.delay)},150)});this.mousemovefunc=function(g){if(!d){if(g.which==0){if(c.timer!=null){clearInterval(c.timer);c.timer=null}}}};this.addHandler(this.base.host,"mousemove",this.mousemovefunc)},destroy:function(){var c=a.MLjqui.mobile.isTouchDevice();var b=!c?"mouseup."+this.base.element.id:"touchend."+this.base.element.id;var e=!c?"mousedown."+this.base.element.id:"touchstart."+this.base.element.id;this.removeHandler(this.base.host,"mousemove",this.mousemovefunc);this.removeHandler(this.base.host,e);this.removeHandler(a(document),b);this.timer=null;delete this.mousemovefunc;delete this.timer;var d=a.data(this.base.element,"MLjquiRepeatButton");if(d){delete d.instance}a(this.base.element).removeData();this.base.destroy();delete this.base},stop:function(){clearInterval(this.timer);this.timer=null},ontimer:function(b){var b=new a.Event("click");if(this.base!=null&&this.base.host!=null){this.base.host.trigger(b)}}});a.MLjqui.MLjquiWidget("MLjquiToggleButton","MLjquiButton",{});a.extend(a.MLjqui._MLjquiToggleButton.prototype,{defineInstance:function(){this.toggled=false;this.uiToggle=true;this.aria={"aria-checked":{name:"toggled",type:"boolean"},"aria-disabled":{name:"disabled",type:"boolean"}}},createInstance:function(c){var b=this;b.base.overrideTheme=true;b.isTouchDevice=a.MLjqui.mobile.isTouchDevice();a.MLjqui.aria(this);b.propertyChangeMap.roundedCorners=function(d,f,e,g){d.base.host.removeClass(d.toThemeProperty(a.MLjqui.cssroundedcorners(e)));d.base.host.addClass(d.toThemeProperty(a.MLjqui.cssroundedcorners(g)))};b.propertyChangeMap.toggled=function(d,f,e,g){d.refresh()};b.propertyChangeMap.disabled=function(d,f,e,g){d.base.disabled=g;d.refresh()};b.addHandler(b.base.host,"click",function(d){if(!b.base.disabled&&b.uiToggle){b.toggle()}});if(!b.isTouchDevice){b.addHandler(b.base.host,"mouseenter",function(d){if(!b.base.disabled){b.refresh()}});b.addHandler(b.base.host,"mouseleave",function(d){if(!b.base.disabled){b.refresh()}})}b.addHandler(b.base.host,"mousedown",function(d){if(!b.base.disabled){b.refresh()}});b.addHandler(a(document),"mouseup.togglebutton"+b.base.element.id,function(d){if(!b.base.disabled){b.refresh()}})},destroy:function(){this._removeHandlers();this.base.destroy()},_removeHandlers:function(){this.removeHandler(this.base.host,"click");this.removeHandler(this.base.host,"mouseenter");this.removeHandler(this.base.host,"mouseleave");this.removeHandler(this.base.host,"mousedown");this.removeHandler(a(document),"mouseup.togglebutton"+this.base.element.id)},toggle:function(){this.toggled=!this.toggled;this.refresh();a.MLjqui.aria(this,"aria-checked",this.toggled)},unCheck:function(){this.toggled=false;this.refresh()},check:function(){this.toggled=true;this.refresh()},refresh:function(){var c=this;var h=c.base.toThemeProperty("MLjqui-fill-state-disabled");var b=c.base.toThemeProperty("MLjqui-fill-state-normal");if(!c.base.enableDefault){b=""}var g=c.base.toThemeProperty("MLjqui-fill-state-hover");var e=c.base.toThemeProperty("MLjqui-fill-state-pressed");var f=c.base.toThemeProperty("MLjqui-fill-state-pressed");var d="";c.base.host[0].disabled=c.base.disabled;if(c.base.disabled){d=b+" "+h;c.base.host.addClass(d);return}else{if(c.base.isMouseOver&&!c.isTouchDevice){if(c.base.isPressed||c.toggled){d=f}else{d=g}}else{if(c.base.isPressed||c.toggled){d=e}else{d=b}}}if(c.base.template!=="default"&&c.base.template!==""){d+=" MLjqui-"+c.base.template;if(c.base.theme!=""){d+=" MLjqui-"+c.template+"-"+c.base.theme}}if(c.base.host.hasClass(h)&&h!=d){c.base.host.removeClass(h)}if(c.base.host.hasClass(b)&&b!=d){c.base.host.removeClass(b)}if(c.base.host.hasClass(g)&&g!=d){c.base.host.removeClass(g)}if(c.base.host.hasClass(e)&&e!=d){c.base.host.removeClass(e)}if(c.base.host.hasClass(f)&&f!=d){c.base.host.removeClass(f)}if(!c.base.host.hasClass(d)){c.base.host.addClass(d)}}})})(MLjquiBaseFramework); -/* MLjquiloader.js */ -(function(a){a.MLjqui.MLjquiWidget("MLjquiLoader","",{});a.extend(a.MLjqui._MLjquiLoader.prototype,{defineInstance:function(){var b={width:200,height:150,text:"Loading...",html:null,textPosition:"bottom",imagePosition:"center",isModal:false,autoOpen:false,rtl:false,events:["create"]};a.extend(true,this,b)},createInstance:function(b){var c=this;c._render(true);c._raiseEvent("0")},render:function(){this._render()},open:function(d,c){var b=this;if(this.width!==null&&this.width.toString().indexOf("%")!==-1){b.host.css("width",this.width)}if(this.height!==null&&this.height.toString().indexOf("%")!==-1){b.host.css("height",this.height)}b.host.show();b.host.css("left",-b.host.width()/2);b.host.css("top",-b.host.height()/2);if(d&&c){b.host.css("left",d);b.host.css("top",c)}if(b.isModal){b._modal.show()}},close:function(){var b=this;b.host.hide();if(b.isModal){b._modal.hide()}},_checkBrowser:function(){var b=this;if(a.MLjqui.browser.browser==="msie"){if(a.MLjqui.browser.version==="7.0"){if(b.isModal===false){b.host.addClass(b.toThemeProperty("MLjqui-loader-ie-transparency"))}b.host.css("top",Math.max(0,((a(window).height()-a(b.host).outerHeight())/2)+a(window).scrollTop())+"px");b.host.css("left",Math.max(0,((a(window).width()-a(b.host).outerWidth())/2)+a(window).scrollLeft())+"px");a(window).resize(function(){b.host.css("top",Math.max(0,((a(window).height()-a(b.host).outerHeight())/2)+a(window).scrollTop())+"px");b.host.css("left",Math.max(0,((a(window).width()-a(b.host).outerWidth())/2)+a(window).scrollLeft())+"px")});this.host.css({"margin-top":"0","margin-left":"0"})}else{if(a.MLjqui.browser.version==="8.0"){if(b.isModal===false){b.host.addClass(b.toThemeProperty("MLjqui-loader-ie-transparency"))}}}}},_textPos:function(){var b=this;this._text=b.host.children("div:eq(1)");if(this._image){this._image.css("background-position-y",b.imagePosition)}if(b.textPosition==="top"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-bottom"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-right"))}else{if(b.textPosition==="bottom"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-bottom"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-right"))}else{if(b.textPosition==="left"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-right"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-bottom"))}else{if(b.textPosition==="right"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-right"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-bottom"))}}}}},refresh:function(b){if(b!==true){this._render(false)}},destroy:function(){var b=this;b._removeHandlers();b.host.remove()},propertyChangedHandler:function(b,c,e,d){if(d!==e){switch(c){case"width":b.host.width(d);break;case"height":b.host.height(d);break;case"text":b._text.text(d);break;case"html":b.host.html(d);break;case"textPosition":b._textPos(d);break;case"rtl":if(d===true){b._text.addClass(b.toThemeProperty("MLjqui-loader-rtl"))}else{b._text.removeClass(b.toThemeProperty("MLjqui-loader-rtl"))}break}}},_raiseEvent:function(h,e){var g=this;var c=g.events[h];var f=new a.Event(c);f.owner=g;f.args=e;try{var b=g.host.trigger(f)}catch(d){}return b},_render:function(b){var c=this;c.host.width(c.width);c.host.height(c.height);if(c.autoOpen===false){c.host.hide()}if(b){if(c.html===null){c.host.append('
          '+c.text+"
          ");c._image=c.host.children("div:eq(0)");c._text=c.host.children("div:eq(1)")}else{c.host.html(this.html)}if(c.isModal===true){var d=c.host.css("display");c._modal=a('
          ');a("body").append(c._modal)}}c._checkBrowser();c._textPos();c._addClass();c._removeHandlers();c._addHandlers()},_addHandlers:function(){var b=this;if(b.isModal===true){b.addHandler(a(document),"keyup.loader"+b.element.id,function(c){if(c.keyCode===27){b.close()}})}},_removeHandlers:function(){var b=this;b.removeHandler(a(document),"keyup.loader"+b.element.id)},_addClass:function(){var b=this;b.host.addClass(b.toThemeProperty("MLjqui-widget"));b.host.addClass(b.toThemeProperty("MLjqui-loader"));b.host.addClass(b.toThemeProperty("MLjqui-rc-all"));b.host.addClass(b.toThemeProperty("MLjqui-fill-state-normal"));if(b.rtl){b._text.addClass(b.toThemeProperty("MLjqui-loader-rtl"))}if(a.MLjqui.browser.msie){b.host.addClass(this.toThemeProperty("MLjqui-noshadow"))}b.host.addClass(this.toThemeProperty("MLjqui-rc-t"));b.host.addClass(this.toThemeProperty("MLjqui-rc-b"));b.host.addClass(this.toThemeProperty("MLjqui-popup"))}})})(MLjquiBaseFramework); -/* MLjquiwindow.js */ -!function(a){function b(b,d){var e=b.nodeName.toLowerCase();if("area"===e){var f,g=b.parentNode,h=g.name;return b.href&&h&&"map"===g.nodeName.toLowerCase()?(f=a("img[usemap=#"+h+"]")[0],!!f&&c(f)):!1}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||d:d)&&c(b)}function c(b){return!a(b).parents().andSelf().filter(function(){return"hidden"===a.css(this,"visibility")||a.expr.filters.hidden(this)}).length}function d(c){var d=a.attr(c,"tabindex"),e=isNaN(d);return(e||d>=0)&&b(c,!e)}a.MLjqui.MLjquiWidget("MLjquiWindow","",{}),a.extend(a.MLjqui._MLjquiWindow.prototype,{defineInstance:function(){var b={height:"auto",width:200,minHeight:50,maxHeight:600,minWidth:50,maxWidth:800,showCloseButton:!0,disabled:!1,autoOpen:!0,keyboardCloseKey:"esc",title:"",content:"",draggable:!0,resizable:!0,animationType:"fade",closeAnimationDuration:250,showAnimationDuration:250,isModal:!1,position:"center",closeButtonSize:16,closeButtonAction:"hide",modalOpacity:.3,dragArea:null,okButton:null,cancelButton:null,dialogResult:{OK:!1,Cancel:!1,None:!0},collapsed:!1,showCollapseButton:!1,collapseAnimationDuration:150,collapseButtonSize:16,rtl:!1,keyboardNavigation:!0,headerHeight:null,_events:["created","closed","moving","moved","open","collapse","expand","open","close","resize"],initContent:null,enableResize:!0,restricter:null,autoFocus:!0,closing:null,_invalidArgumentExceptions:{invalidHeight:"Invalid height!",invalidWidth:"Invalid width!",invalidMinHeight:"Invalid minHeight!",invalidMaxHeight:"Invalid maxHeight!",invalidMinWidth:"Invalid minWidth!",invalidMaxWidth:"Invalid maxWidth",invalidKeyCode:"Invalid keyCode!",invalidAnimationType:"Invalid animationType!",invalidCloseAnimationDuration:"Invalid closeAnimationDuration!",invalidShowAnimationDuration:"Invalid showAnimationDuration!",invalidPosition:"Invalid position!",invalidCloseButtonSize:"Invalid closeButtonSize!",invalidCollapseButtonSize:"Invalid collapseButtonSize!",invalidCloseButtonAction:"Invalid cluseButtonAction!",invalidModalOpacity:"Invalid modalOpacity!",invalidDragArea:"Invalid dragArea!",invalidDialogResult:"Invalid dialogResult!",invalidIsModal:"You can have just one modal window!"},_enableResizeCollapseBackup:null,_enableResizeBackup:void 0,_heightBeforeCollapse:null,_minHeightBeforeCollapse:null,_mouseDown:!1,_isDragging:!1,_rightContentWrapper:null,_leftContentWrapper:null,_headerContentWrapper:null,_closeButton:null,_collapseButton:null,_title:null,_content:null,_mousePosition:{},_windowPosition:{},_modalBackground:null,_SCROLL_WIDTH:21,_visible:!0,modalBackgroundZIndex:12990,modalZIndex:18e3,zIndex:9001,_touchEvents:{mousedown:a.MLjqui.mobile.getTouchEventName("touchstart"),mouseup:a.MLjqui.mobile.getTouchEventName("touchend"),mousemove:a.MLjqui.mobile.getTouchEventName("touchmove"),mouseenter:"mouseenter",mouseleave:"mouseleave",click:a.MLjqui.mobile.getTouchEventName("touchstart")}};return a.extend(!0,this,b),b},createInstance:function(){this.host.attr("role","dialog"),this.host.removeAttr("data-bind"),this.host.detach(),a(document.body).append(this.host);var b=this,c=function(){var c=parseInt(a(b.restricter).css("padding-top")),d=parseInt(a(b.restricter).css("padding-left")),e=parseInt(a(b.restricter).css("padding-bottom")),f=parseInt(a(b.restricter).css("padding-right")),g=a(b.restricter).coord();b.dragArea={left:d+g.left,top:c+g.top,width:1+f+a(b.restricter).width(),height:1+e+a(b.restricter).height()}};if(this.restricter&&c(),this.restricter&&(this.addHandler(a(window),"resize."+this.element.id,function(){c()}),this.addHandler(a(window),"orientationchanged."+this.element.id,function(){c()}),this.addHandler(a(window),"orientationchange."+this.element.id,function(){c()})),this._isTouchDevice=a.MLjqui.mobile.isTouchDevice(),this._validateProperties(),this._createStructure(),this._refresh(),this.autoOpen||this.host.css("display","none"),a.MLjqui.browser.msie&&this.host.addClass(this.toThemeProperty("MLjqui-noshadow")),this.isModal||this._fixWindowZIndex(),this._setStartupSettings(),this._positionWindow(),this._raiseEvent(0),this.autoOpen){this._performLayout();var d=this;this.isModal&&this._fixWindowZIndex("modal-show"),d.initContent&&(d.initContent(),d._contentInitialized=!0),this._raiseEvent(7),this._raiseEvent(9)}},refresh:function(){this._performLayout()},_setStartupSettings:function(){this.disabled&&this.disable(),this.collapsed&&(this.collapsed=!1,this.collapse(0)),this.autoOpen||(this.hide(null,.001,!0),this._visible=!1),null!==this.title&&""!==this.title&&this.setTitle(this.title),null!==this.content&&""!==this.content&&this.setContent(this.content),this.title=this._headerContentWrapper.html(),this.content=this._content.html()},_fixWindowZIndex:function(b){var c=a.data(document.body,"MLjquiwindows-list")||[],d=this.zIndex;if(this.isModal){c&&(c=this._removeFromArray(this.host,c),a.data(document.body,"MLjquiwindows-list",c));var e=a.data(document.body,"MLjquiwindows-modallist");if(e)if("modal-show"==b)e.push(this.host);else{var f=e.indexOf(this.host);-1!=f&&e.splice(f,1)}else if("modal-show"==b){var g=new Array;g.push(this.host),a.data(document.body,"MLjquiwindows-modallist",g),e=g}else a.data(document.body,"MLjquiwindows-modallist",new Array),e=new Array;d=this.modalZIndex;return a.each(e,function(a){if(this.data()&&this.data().MLjquiWindow){var b=this.data().MLjquiWindow.instance;b._modalBackground.css("z-index",d),b.host.css("z-index",d+1),d+=2}}),void a.data(document.body,"MLjquiwindow-modal",this.host)}if(this._indexOf(this.host,c)<0&&c.push(this.host),a.data(document.body,"MLjquiwindows-list",c),c.length>1){var h=c[c.length-2];if("auto"==h.css("z-index"))d=this.zIndex+c.length+1;else{var i=this.zIndex;d=parseInt(h.css("z-index"),10)+1,i>d&&(d=i)}}this.host.css("z-index",d),this._sortByStyle("z-index",c)},_validateProperties:function(){try{if(this._validateSize(),this._validateAnimationProperties(),this._validateInteractionProperties(),this._validateModalProperties(),!this.position)throw new Error(this._invalidArgumentExceptions.invalidPosition);if(isNaN(this.closeButtonSize)||parseInt(this.closeButtonSize)<0)throw new Error(this._invalidArgumentExceptions.invalidCloseButtonSize);if(isNaN(this.collapseButtonSize)||parseInt(this.collapseButtonSize)<0)throw new Error(this._invalidArgumentExceptions.invalidCollapseButtonSize)}catch(a){alert(a)}},_validateModalProperties:function(){if(this.modalOpacity<0||this.modalOpacity>1)throw new Error(this._invalidArgumentExceptions.invalidModalOpacity);if(this.isModal&&!this._singleModalCheck())throw new Error(this._invalidArgumentExceptions.invalidIsModal)},_validateSize:function(){if(this._validateSizeLimits(),"auto"!==this.height&&isNaN(parseInt(this.height)))throw new Error(this._invalidArgumentExceptions.invalidHeight);if("auto"!==this.width&&isNaN(parseInt(this.width)))throw new Error(this._invalidArgumentExceptions.invalidWidth);"auto"!==this.height&&this.heightthis.maxHeight&&(this.height=this.maxHeight),this.width>this.maxWidth&&(this.width=this.maxWidth),null!==this.dragArea&&(this.dragArea&&(null!==this.dragArea.height&&this.host.height()>this.dragArea.height||parseInt(this.height,10)>this.dragArea.height)||null!==this.dragArea.width&&this.width>this.dragArea.width||this.maxHeight>this.dragArea.height||this.maxWidth>this.dragArea.width)},_validateSizeLimits:function(){if(null==this.maxHeight&&(this.maxHeight=9999),null==this.minWidth&&(this.minWidth=0),null==this.maxWidth&&(this.maxWidth=9999),null==this.minHeight&&(this.minHeight=0),isNaN(parseInt(this.minHeight)))throw new Error(this._invalidArgumentExceptions.invalidMinHeight);if(isNaN(parseInt(this.maxHeight)))throw new Error(this._invalidArgumentExceptions.invalidMaxHeight);if(isNaN(parseInt(this.minWidth)))throw new Error(this._invalidArgumentExceptions.invalidMinWidth);if(isNaN(parseInt(this.maxWidth)))throw new Error(this._invalidArgumentExceptions.invalidMaxWidth);if(this.minHeight>this.maxHeight)throw new Error(this._invalidArgumentExceptions.invalidMinHeight);if(this.minWidth>this.maxWidth)throw new Error(this._invalidArgumentExceptions.invalidMinWidth)},_validateAnimationProperties:function(){if("fade"!==this.animationType&&"slide"!==this.animationType&&"combined"!==this.animationType&&"none"!==this.animationType)throw new Error(this._invalidArgumentExceptions.invalidAnimationType);if(isNaN(parseInt(this.closeAnimationDuration),10)||this.closeAnimationDuration<0)throw new Error(this._invalidArgumentExceptions.invalidCloseAnimationDuration);if(isNaN(parseInt(this.showAnimationDuration),10)||this.showAnimationDuration<0)throw new Error(this._invalidArgumentExceptions.invalidShowAnimationDuration)},_validateInteractionProperties:function(){if(parseInt(this.keyCode,10)<0||parseInt(this.keyCode,10)>130&&"esc"!==this.keyCode)throw new Error(this._invalidArgumentExceptions.invalidKeyCode);if(null!==this.dragArea&&("undefined"==typeof this.dragArea.width||"undefined"==typeof this.dragArea.height||"undefined"==typeof this.dragArea.left||"undefined"==typeof this.dragArea.top))throw new Error(this._invalidArgumentExceptions.invalidDragArea);if(!this.dialogResult||!this.dialogResult.OK&&!this.dialogResult.Cancel&&!this.dialogResult.None)throw new Error(this._invalidArgumentExceptions.invalidDialogResult);if("hide"!==this.closeButtonAction&&"close"!==this.closeButtonAction&&"destroy"!==this.closeButtonAction)throw new Error(this._invalidArgumentExceptions.invalidCloseButtonAction)},_singleModalCheck:function(){for(var b=a.data(document.body,"MLjquiwindows-list")||[],c=b.length;c;)if(c-=1,a(b[c].attr("id")).length>0&&a(b[c].attr("id")).MLjquiWindow("isModal"))return!1;return!0},_createStructure:function(){var b=this.host.children("DIV");if(1===b.length)this._header=a("
          "+this.host.attr("caption")+"
          "),this.host.prepend(this._header),this.host.attr("caption",""),this._content=a(b[0]);else{if(2!==b.length)throw new Error("Invalid structure!");this._header=a(b[0]),this._content=a(b[1])}},_refresh:function(){this._render(),this._addStyles(),this._performLayout(),this._removeEventHandlers(),this._addEventHandlers(),this._initializeResize()},_render:function(){this._addHeaderWrapper(),this._addCloseButton(),this._addCollapseButton(),this._removeModal(),this._makeModal()},_addHeaderWrapper:function(){this._headerContentWrapper||(this._header.wrapInner('
          '),this._headerContentWrapper=this._header.children(0),null!==this.headerHeight&&this._header.height(this.headerHeight))},_addCloseButton:function(){this._closeButton||(this._closeButtonWrapper=a('
          '),this._closeButton=a('
          '),this._closeButtonWrapper.append(this._closeButton),this._header.append(this._closeButtonWrapper))},_addCollapseButton:function(){this._collapseButton||(this._collapseButtonWrapper=a('
          '),this._collapseButton=a('
          '),this._collapseButtonWrapper.append(this._collapseButton),this._header.append(this._collapseButtonWrapper))},_removeModal:function(){!this.isModal&&"object"==typeof this._modalBackground&&null!==this._modalBackground&&this._modalBackground.length>=1&&(a("."+this.toThemeProperty("MLjqui-window-modal")).remove(),this._modalBackground=null)},focus:function(){try{this.host.focus();var a=this;setTimeout(function(){a.host.focus()},10)}catch(b){}},_makeModal:function(){if(this.isModal&&(!this._modalBackground||this._modalBackground.length<1)){var b=a.data(document.body,"MLjquiwindows-list");b&&(this._removeFromArray(this.host,b),a.data(document.body,"MLjquiwindows-list",b)),this._modalBackground=a("
          "),this._modalBackground.addClass(this.toThemeProperty("MLjqui-window-modal")),this._setModalBackgroundStyles(),a(document.body).append(this._modalBackground),this.addHandler(this._modalBackground,this._getEvent("click"),function(){return!1});var c=this,d=function(b,c){var d=a(b).parents().get();for(j=0;j0&&(b[0].focus(1),setTimeout(function(){b[0].focus(1)},100)),a.preventDefault(),!1}),this.addHandler(a(document),"keydown.window"+this.element.id,function(b){if(9===b.keyCode){var e=a.data(document.body,"MLjquiwindows-modallist");if(!(e.length>1&&e[e.length-1][0]!=c.element)){var f=c._getTabbables(),g=null,h=null;if(f.length>0&&(g=f[0],h=f[f.length-1]),b.target!=c.element&&null!=g)return d(b.target,c.host)&&(b.target!==h||b.shiftKey)?b.target===g&&b.shiftKey?(h.focus(1),!1):void 0:(g.focus(1),!1)}}})}},_addStyles:function(){this.host.addClass(this.toThemeProperty("MLjqui-rc-all")),this.host.addClass(this.toThemeProperty("MLjqui-window")),this.host.addClass(this.toThemeProperty("MLjqui-popup")),a.MLjqui.browser.msie&&this.host.addClass(this.toThemeProperty("MLjqui-noshadow")),this.host.addClass(this.toThemeProperty("MLjqui-widget")),this.host.addClass(this.toThemeProperty("MLjqui-widget-content")),this._header.addClass(this.toThemeProperty("MLjqui-window-header")),this._content.addClass(this.toThemeProperty("MLjqui-window-content")),this._header.addClass(this.toThemeProperty("MLjqui-widget-header")),this._content.addClass(this.toThemeProperty("MLjqui-widget-content")),this._header.addClass(this.toThemeProperty("MLjqui-disableselect")),this._header.addClass(this.toThemeProperty("MLjqui-rc-t")),this._content.addClass(this.toThemeProperty("MLjqui-rc-b")),this.host.attr("tabindex")||(this.element.tabIndex=0,this.host.children().css("tab-index",0)),this.host.attr("hideFocus","true").css("outline","none")},_performHeaderLayout:function(){this._handleHeaderButtons(),this._header.css("position","relative"),this.rtl?(this._headerContentWrapper.css("direction","rtl"),this._headerContentWrapper.css("float","right")):(this._headerContentWrapper.css("direction","ltr"),this._headerContentWrapper.css("float","left")),this._performHeaderCloseButtonLayout(),this._performHeaderCollapseButtonLayout(),this._centerElement(this._headerContentWrapper,this._header,"y","margin"),this.headerHeight&&(this._centerElement(this._closeButtonWrapper,this._header,"y","margin"),this._centerElement(this._collapseButtonWrapper,this._header,"y","margin"))},_handleHeaderButtons:function(){this._closeButtonWrapper&&(this.showCloseButton?(this._closeButtonWrapper.css("visibility","visible"),this._closeButtonWrapper.width(this.closeButtonSize),this._closeButtonWrapper.height(this.closeButtonSize)):this._closeButtonWrapper.css("visibility","hidden"),this.showCollapseButton?(this._collapseButtonWrapper.css("visibility","visible"),this._collapseButtonWrapper.width(this.collapseButtonSize),this._collapseButtonWrapper.height(this.collapseButtonSize)):this._collapseButtonWrapper.css("visibility","hidden"))},_performHeaderCloseButtonLayout:function(){if(this._closeButtonWrapper){var a=parseInt(this._header.css("padding-right"),10);isNaN(a)||(this._closeButtonWrapper.width(this._closeButton.width()),this.rtl?(this._closeButtonWrapper.css("margin-left",a),this._closeButtonWrapper.css("margin-right","0px")):(this._closeButtonWrapper.css("margin-right",a),this._closeButtonWrapper.css("margin-left","0px"))),this.rtl?this._closeButtonWrapper.css({position:"absolute",left:"0px",right:""}):this._closeButtonWrapper.css({position:"absolute",right:"0px",left:""})}},_performHeaderCollapseButtonLayout:function(){if(this._closeButtonWrapper){var a=parseInt(this._header.css("padding-right"),10);isNaN(a)||(this._collapseButtonWrapper.width(this.collapseButtonSize),this._collapseButtonWrapper.height(this.collapseButtonSize),this.rtl?(this._collapseButtonWrapper.css("margin-left",a),this._collapseButtonWrapper.css("margin-right","0px")):(this._collapseButtonWrapper.css("margin-right",a),this._collapseButtonWrapper.css("margin-left","0px"))),this.rtl?this._collapseButtonWrapper.css({position:"absolute",left:this.showCloseButton?this._closeButton.outerWidth(!0):0,right:""}):this._collapseButtonWrapper.css({position:"absolute",right:this.showCloseButton?this._closeButton.outerWidth(!0):0,left:""}),this._centerElement(this._collapseButton,this._collapseButton.parent(),"y")}},_performWidgetLayout:function(){var a;"auto"!==this.width&&this.host.css("width",this.width),this.collapsed||("auto"!==this.height?this.host.height(this.height):this.host.height(this.host.height()),this.host.css("min-height",this.minHeight)),this._setChildrenLayout(),a=this._validateMinSize(),this.host.css({"max-height":this.maxHeight,"min-width":this.minWidth,"max-width":this.maxWidth}),a||this._setChildrenLayout()},_setChildrenLayout:function(){this._header.width(this.host.width()-(this._header.outerWidth(!0)-this._header.width())),this._content.width(this.host.width()-(this._content.outerWidth(!0)-this._content.width())),this._content.height(this.host.height()-this._header.outerHeight(!0)-(this._content.outerHeight(!0)-this._content.height()))},_validateMinSize:function(){var a=!0;this.minHeight=0){var e=a.outerHeight(!0),f=b.height(),g=Math.max(0,f-e)/2;a.css(d+"top",g+"px")}if(c.indexOf("x")>=0){var h=a.outerWidth(!0),i=b.width(),j=Math.max(0,i-h)/2;a.css(d+"left",j+"px")}},_centerElementInArea:function(a,b,c){if(c=c.toLowerCase(),c.indexOf("y")>=0){var d=a.outerHeight(!0),e=b.height,f=(e-d)/2;a.css("top",f+b.top+"px")}if(c.indexOf("x")>=0){var g=a.outerWidth(!0),h=b.width,i=(h-g)/2;a.css("left",i+b.left+"px")}},_removeEventHandlers:function(){this.removeHandler(this._header,this._getEvent("mousedown")),this.removeHandler(this._header,this._getEvent("mousemove")),this.removeHandler(this._header,"focus"),this.removeHandler(a(document),this._getEvent("mousemove")+"."+this.host.attr("id")),this.removeHandler(a(document),this._getEvent("mouseup")+"."+this.host.attr("id")),this.removeHandler(this.host,"keydown"),this.removeHandler(this._closeButton,this._getEvent("click")),this.removeHandler(this._closeButton,this._getEvent("mouseenter")),this.removeHandler(this._closeButton,this._getEvent("mouseleave")),this.removeHandler(this._collapseButton,this._getEvent("click")),this.removeHandler(this._collapseButton,this._getEvent("mouseenter")),this.removeHandler(this._collapseButton,this._getEvent("mouseleave")),this.removeHandler(this.host,this._getEvent("mousedown")),this.removeHandler(a(this.okButton),this._getEvent("click"),this._setDialogResultHandler),this.removeHandler(a(this.cancelButton),this._getEvent("click"),this._setDialogResultHandler),this.removeHandler(this._header,this._getEvent("mouseenter")),this.removeHandler(this._header,this._getEvent("mouseleave")),this.removeHandler(this.host,"resizing",this._windowResizeHandler)},_removeFromArray:function(a,b){var c=this._indexOf(a,b);return c>=0?b.splice(this._indexOf(a,b),1):b},_sortByStyle:function(a,b){for(var c=0;cc;d--){var e,f=b[d],g=b[d-1];parseInt(f.css(a),10)document.body.clientHeight&&b&&(c=this._SCROLL_WIDTH),document.body.scrollWidth>document.body.clientWidth&&b&&(d=this._SCROLL_WIDTH),{width:a(document).width()-c,height:a(document).height()-d}},_closeButtonHover:function(){var a=this;this.addHandler(this._closeButton,this._getEvent("mouseenter"),function(){a._closeButton.addClass(a.toThemeProperty("MLjqui-window-close-button-hover"))}),this.addHandler(this._closeButton,this._getEvent("mouseleave"),function(){a._closeButton.removeClass(a.toThemeProperty("MLjqui-window-close-button-hover"))})},_collapseButtonHover:function(){var a=this;this.addHandler(this._collapseButton,this._getEvent("mouseenter"),function(){a._collapseButton.addClass(a.toThemeProperty("MLjqui-window-collapse-button-hover"))}),this.addHandler(this._collapseButton,this._getEvent("mouseleave"),function(){a._collapseButton.removeClass(a.toThemeProperty("MLjqui-window-collapse-button-hover"))})},_setModalBackgroundStyles:function(){this.isModal&&(this._modalBackground.fadeTo(0,this.modalOpacity),this._modalBackground.css({position:"absolute",top:"0px",left:"0px",width:this._getDocumentSize().width,height:this._getDocumentSize().height,"z-index":this.modalBackgroundZIndex}),this.autoOpen||this._modalBackground.css("display","none"))},_addFocusHandlers:function(){var a=this;this.addHandler(this.host,this._getEvent("mousedown"),function(){a.isModal||a.bringToFront()})},_indexOf:function(a,b){for(var c=0;c=0&&this.move(f-l,g),k=!1;break;case 38:c?this.resizable&&this.resize(i,j-l):this.draggable&&g-l>=0&&this.move(f,g-l),k=!1;break;case 39:c?this.resizable&&this.resize(i+l,j):this.draggable&&f+i+l<=h.width&&this.move(f+l,g),k=!1;break;case 40:c?this.resizable&&this.resize(i,j+l):this.draggable&&g+j+l<=h.height&&this.move(f,g+l),k=!1}return k||(b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation()),k}},_addCollapseHandlers:function(){var a=this;this.addHandler(this._collapseButton,this._getEvent("click"),function(){a.collapsed?a.expand():a.collapse()})},_closeWindow:function(a){return this.closeWindow(),!1},_addHeaderCursorHandlers:function(a){return a.resizeArea&&a.resizable&&!a.collapsed?void a._header.css("cursor",a._resizeWrapper.css("cursor")):a.draggable?void a._header.css("cursor","move"):(a._header.css("cursor","default"),void(a._resizeWrapper&&a._resizeWrapper.length>0&&a._resizeWrapper.css("cursor","default")))},_addDragDropHandlers:function(){if(this.draggable){var b=this;this.addHandler(this.host,"focus",function(){b._headerFocused=!0}),this.addHandler(this.host,"blur",function(){b._headerFocused=!1}),this.addHandler(this._header,"focus",function(){return b._headerFocused=!0,!1}),this.addHandler(this._header,this._getEvent("mousedown"),function(a,c,d){return c&&(a.pageX=c),d&&(a.pageY=d),b._headerMouseDownHandler(b,a),!0}),this.addHandler(this._header,"dragstart",function(a){return a.preventDefault&&a.preventDefault(),!1}),this.addHandler(this._header,this._getEvent("mousemove"),function(a){return b._headerMouseMoveHandler(b,a)}),this.addHandler(a(document),this._getEvent("mousemove")+"."+this.host.attr("id"),function(a){return b._dragHandler(b,a)}),this.addHandler(a(document),this._getEvent("mouseup")+"."+this.host.attr("id"),function(a){return b._dropHandler(b,a)});try{if(""!=document.referrer||window.frameElement){var c=null;if(null!=window.top&&window.top!=window.self&&window.parent&&document.referrer&&(c=document.referrer),c&&-1!=c.indexOf(document.location.host)){var d=function(a){b._dropHandler(b,a)};window.top.document.addEventListener?window.top.document.addEventListener("mouseup",d,!1):window.top.document.attachEvent&&window.top.document.attachEvent("onmouseup",d)}}}catch(e){}}},_headerMouseDownHandler:function(b,c){if(b.isModal||b.bringToFront(),null==b._resizeDirection){var d=a.MLjqui.mobile.getTouches(c),e=(d[0],a.MLjqui.position(c));b._mousePosition.x=e.left,b._mousePosition.y=e.top,b._mouseDown=!0,b._isDragging=!1}},_headerMouseMoveHandler:function(b,c){if(b._mouseDown&&!b._isDragging){var d=a.MLjqui.mobile.getTouches(c),e=d[0],f=e.pageX,g=e.pageY,h=a.MLjqui.position(c);return f=h.left,g=h.top,(f+3b._mousePosition.x||g+3b._mousePosition.y)&&(b._isDragging=!0,b._mousePosition={x:f,y:g},b._windowPosition={x:b.host.coord().left,y:b.host.coord().top},a(document.body).addClass(b.toThemeProperty("MLjqui-disableselect"))),b._isTouchDevice?(c.preventDefault(),!0):!1}return b._isDragging?b._isTouchDevice?(c.preventDefault(),!0):!1:!0},_dropHandler:function(b,c){var d=!0;if(b._isDragging&&!b.isResizing&&!b._resizeDirection){var e=parseInt(b.host.css("left"),10),f=parseInt(b.host.css("top"),10),g=b._isTouchDevice?0:c.pageX,h=b._isTouchDevice?0:c.pageY;b.enableResize=b._enableResizeBackup,b._enableResizeBackup="undefined",b._raiseEvent(3,e,f,g,h),d=!1,"undefined"!=c.preventDefault&&c.preventDefault(),null!=c.originalEvent&&(c.originalEvent.mouseHandled=!0),"undefined"!=c.stopPropagation&&c.stopPropagation()}return b._isDragging=!1,b._mouseDown=!1,a(document.body).removeClass(b.toThemeProperty("MLjqui-disableselect")),d},_dragHandler:function(b,c){if(b._isDragging&&!b.isResizing&&!b._resizeDirection){var d=b._isTouchDevice?c.originalEvent.which:c.which;if("undefined"==typeof b._enableResizeBackup&&(b._enableResizeBackup=b.enableResize),b.enableResize=!1,0===d&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<8)return b._dropHandler(b,c);var e=a.MLjqui.mobile.getTouches(c),f=(e[0],a.MLjqui.position(c)),g=f.left,h=f.top,i=g-b._mousePosition.x,j=h-b._mousePosition.y,k=b._windowPosition.x+i,l=b._windowPosition.y+j;return b.move(k,l,c),c.preventDefault(),!1}return!0},_validateCoordinates:function(a,b,c,d){var e=this._getDraggingArea();a=a=e.width+e.left-2*d&&(a=e.width+e.left-f-d),b+g>=e.height+e.top-c&&(b=e.height+e.top-g-c),{x:a,y:b}},_performLayout:function(){this._performHeaderLayout(),this._performWidgetLayout()},_parseDragAreaAttributes:function(){null!==this.dragArea&&(this.dragArea.height=parseInt(this.dragArea.height,10),this.dragArea.width=parseInt(this.dragArea.width,10),this.dragArea.top=parseInt(this.dragArea.top,10),this.dragArea.left=parseInt(this.dragArea.left,10))},_positionWindow:function(){if(this._parseDragAreaAttributes(),this.position instanceof Array&&2===this.position.length&&"number"==typeof this.position[0]&&"number"==typeof this.position[1])this.host.css({left:this.position[0],top:this.position[1]});else if(this.position instanceof Object){if(this.position.left)this.host.offset(this.position);else if(void 0!==this.position.x&&void 0!=this.position.y)this.host.css({left:this.position.x,top:this.position.y});else if(this.position.center){this._centerElement(this.host,this.position.center,"xy");var a=this.position.center.coord(),b=parseInt(this.host.css("left")),c=parseInt(this.host.css("top"));this.host.css({left:b+a.left,top:c+a.top})}}else this._positionFromLiteral()},_getDraggingArea:function(){var a={};return a.left=this.dragArea&&this.dragArea.left?this.dragArea.left:0,a.top=this.dragArea&&this.dragArea.top?this.dragArea.top:0,a.width=this.dragArea&&this.dragArea.width?this.dragArea.width:this._getDocumentSize().width,a.height=this.dragArea&&this.dragArea.height?this.dragArea.height:this._getDocumentSize().height,a},_positionFromLiteral:function(){this.position instanceof Array||(this.position=this.position.split(","));for(var b=this.position.length,c=this._getDraggingArea();b;)switch(b-=1,this.position[b]=this.position[b].replace(/ /g,""),this.position[b]){case"top":this.host.css("top",c.top);break;case"left":this.host.css("left",c.left);break;case"bottom":this.host.css("top",c.height-this.host.height()+c.top);break;case"right":this.host.css("left",c.left+c.width-this.host.width());break;default:this.dragArea||(c=a(window)),this._centerElement(this.host,c,"xy")}},_raiseEvent:function(b){var c=this._events[b],d=a.Event(c),e={};return 2!==b&&3!==b||(e.x=arguments[1],e.y=arguments[2],e.pageX=arguments[3],e.pageY=arguments[4]),"closed"!==c&&"close"!==c||(e.dialogResult=this.dialogResult),d.args=e,this.host.trigger(d); -},destroy:function(){this.removeHandler(a(window),"resize.window"+this.element.id),this._removeEventHandlers(),this._destroy()},_destroy:function(){this.restricter&&(this.removeHandler(a(window),"resize."+this.element.id),this.removeHandler(a(window),"orientationchanged."+this.element.id),this.removeHandler(a(window),"orientationchange."+this.element.id)),this.host.remove(),null!==this._modalBackground&&this._modalBackground.remove()},_toClose:function(a,b){return a&&b[0]===this.element||b[0]!==this.element&&"object"==typeof b[0]},propertyChangedHandler:function(b,c,d,e){switch(this._validateProperties(),c){case"rtl":this._performLayout();break;case"dragArea":this._positionWindow();break;case"collapseButtonSize":this._performLayout();break;case"closeButtonSize":this._performLayout();break;case"isModal":this._refresh(),this._fixWindowZIndex();break;case"keyboardCloseKey":this._removeEventHandlers(),this._addEventHandlers();break;case"disabled":e?this.disable():(this.disabled=!0,this.enable());break;case"showCloseButton":case"showCollapseButton":this._performLayout();break;case"height":this._performLayout();break;case"width":this._performLayout();break;case"title":this.setTitle(e),this.title=e;break;case"content":this.setContent(e);break;case"draggable":this._removeEventHandlers(),this._addEventHandlers(),this._removeResize(),this._initializeResize();break;case"resizable":this.enableResize=e,e?this._initializeResize():this._removeResize();break;case"position":this._positionWindow();break;case"modalOpacity":this._setModalBackgroundStyles();break;case"okButton":e?this._addDialogButtonsHandlers():this.removeHandler(this.okButton);break;case"cancelButton":e?this._addDialogButtonsHandlers():this.removeHandler(this.cancelButton);break;case"collapsed":e?d||(this.collapsed=!1,this.collapse(0)):d&&(this.collapsed=!0,this.expand(0));case"theme":a.MLjqui.utilities.setTheme(d,e,this.host);break;case"enableResize":return;case"maxWidth":case"maxHeight":case"minWidth":case"minHeight":return b._performLayout(),b._removeResize(),void b._initializeResize();default:return}},collapse:function(b){if(!this.collapsed&&!this.host.is(":animated")){if("none"==this.host.css("display"))return;var c=this,d=this._header.outerHeight(!0),e=parseInt(this._header.css("border-bottom-width"),10),f=parseInt(this._header.css("margin-bottom"),10),b=isNaN(parseInt(b))?this.collapseAnimationDuration:b;isNaN(e)||(d-=2*e),isNaN(f)||(d+=f),this._heightBeforeCollapse=this.host.height(),this._minHeightBeforeCollapse=this.host.css("min-height"),this.host.css("min-height",d),this.host.animate({height:d},b,function(){c.collapsed=!0,c._collapseButton.addClass(c.toThemeProperty("MLjqui-window-collapse-button-collapsed")),c._collapseButton.addClass(c.toThemeProperty("MLjqui-icon-arrow-down")),c._content.css("display","none"),c._raiseEvent(5),c._raiseEvent(9),a.MLjqui.aria(c,"aria-expanded",!1)})}},expand:function(b){if(this.collapsed&&!this.host.is(":animated")){var c=this,b=isNaN(parseInt(b))?this.collapseAnimationDuration:b;this.host.animate({height:this._heightBeforeCollapse},b,function(){c.collapsed=!1,c.host.css("min-height",c._minHeightBeforeCollapse),c._collapseButton.removeClass(c.toThemeProperty("MLjqui-window-collapse-button-collapsed")),c._collapseButton.removeClass(c.toThemeProperty("MLjqui-icon-arrow-down")),c._content.css("display","block"),c._raiseEvent(6),c._performWidgetLayout(),c._raiseEvent(9),a.MLjqui.aria(c,"aria-expanded",!0)})}},closeAll:function(b){for(var b=!0,c=a.data(document.body,"MLjquiwindows-list"),d=c.length,e=a.data(document.body,"MLjquiwindow-modal")||[];d;)d-=1,this._toClose(b,c[d])&&(c[d].MLjquiWindow("closeWindow","close"),c.splice(d,1));this._toClose(b,e)&&(e.MLjquiWindow("closeWindow","close"),a.data(document.body,"MLjquiwindow-modal",[])),a.data(document.body,"MLjquiwindows-list",c)},setTitle:function(b){a.MLjqui.utilities.html(this._headerContentWrapper,b),this.title=b,this._performLayout()},setContent:function(b){this._contentInitialized=!1;for(var c=this._content,d=!1;!d;)c.css("height","auto"),c.css("width","auto"),c.is(".MLjqui-window")?d=!0:c=c.parent();a.MLjqui.utilities.html(this._content,b),this._performLayout()},disable:function(){console.log("dddddddddddddddddddddddddddddddddddddd"),this.disabled=!0,this._removeEventHandlers(),this._header.addClass(this.toThemeProperty("MLjqui-window-header-disabled")),this._closeButton.addClass(this.toThemeProperty("MLjqui-window-close-button-disabled")),this._collapseButton.addClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")),this._content.addClass(this.toThemeProperty("MLjqui-window-content-disabled")),this.host.addClass(this.toThemeProperty("MLjqui-window-disabled")),this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this._removeResize()},enable:function(){this.disabled&&(this._addEventHandlers(),this._header.removeClass(this.toThemeProperty("MLjqui-window-header-disabled")),this._content.removeClass(this.toThemeProperty("MLjqui-window-content-disabled")),this._closeButton.removeClass(this.toThemeProperty("MLjqui-window-close-button-disabled")),this._collapseButton.removeClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")),this.host.removeClass(this.toThemeProperty("MLjqui-window-disabled")),this.host.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled")),this.disabled=!1,this._initializeResize())},isOpen:function(){return this._visible},closeWindow:function(a){var b=this;a="undefined"==typeof a?this.closeButtonAction:a,this.hide(function(){"close"===a&&b._destroy()})},bringToFront:function(){var b=a.data(document.body,"MLjquiwindows-list");if(this.isModal)return b=a.data(document.body,"MLjquiwindows-modallist"),this._fixWindowZIndex("modal-hide"),void this._fixWindowZIndex("modal-show");for(var c=b[b.length-1],d=parseInt(c.css("z-index"),10),e=this._indexOf(this.host,b),f=b.length-1;f>e;f-=1){var g=parseInt(b[f].css("z-index"),10)-1;b[f].css("z-index",g)}this.host.css("z-index",d),this._sortByStyle("z-index",b)},hide:function(a,b,c){if(this.closing){var d=this.closing();if(0==d)return}switch(b=b||this.closeAnimationDuration,this.animationType){case"none":this.host.css("display","none");break;case"fade":this.host.fadeOut(b,function(){a instanceof Function&&a()});case"slide":this.host.slideUp(b,function(){a instanceof Function&&a()});case"combined":this.host.hide(b,function(){a instanceof Function&&a()})}this._visible=!1,this.isModal&&(this._modalBackground.hide(),this._fixWindowZIndex("modal-hide")),c!==!0&&(this._raiseEvent(1),this._raiseEvent(8))},open:function(a,b){this.show(a,b)},close:function(a,b,c){this.hide(a,b,c)},show:function(a,b){switch(this._setDialogResult("none"),b=b||this.showAnimationDuration,this.animationType){case"none":this.host.css("display","block");break;case"fade":this.host.fadeIn(b,function(){a instanceof Function&&a()});break;case"slide":this.host.slideDown(b,function(){a instanceof Function&&a()});break;case"combined":this.host.show(b,function(){a instanceof Function&&a()})}this.isModal&&(this._modalBackground.show(),this._fixWindowZIndex("modal-show"));var c=this;if(this._visible||(b>150&&"none"!=this.animationType?setTimeout(function(){c._contentInitialized||c.initContent&&(c.initContent(),c._contentInitialized=!0),c._raiseEvent(7),c._raiseEvent(9)},b-150):(c._contentInitialized||c.initContent&&(c.initContent(),c._contentInitialized=!0),this._raiseEvent(7),c._raiseEvent(9))),this._visible=!0,this._performLayout(),this.autoFocus){var d=function(){c._isTouchDevice||c._content.focus()};d(),setTimeout(function(){d()},100)}},_getTabbables:function(){var b=this._content.find("*"),c=new Array;return a.each(b,function(){d(this)&&(c[c.length]=this)}),c},move:function(b,c,d,e){var f,g,h,i=0,j=0,b=parseInt(b,10),c=parseInt(c,10);if(a.MLjqui.browser.msie&&(a(window).width()>a(document).width()&&!this.dragArea&&(j=this._SCROLL_WIDTH),a(window).height()document.documentElement.scrollWidth&&!this.dragArea&&(i=this._SCROLL_WIDTH)),f=this._validateCoordinates(b,c,j,i),parseInt(this.host.css("left"),10)!==f.x||parseInt(this.host.css("top"),10)!==f.y){if(d){var k=a.MLjqui.mobile.getTouches(d),l=(k[0],a.MLjqui.position(d));g=l.left,h=l.top}void 0==g&&(g=b),void 0==h&&(h=c),e!==!1&&this._raiseEvent(2,f.x,f.y,g,h)}this.element.style.left=f.x+"px",this.element.style.top=f.y+"px",this._moved=!0}})}(MLjquiBaseFramework),function(a){var b=function(a){return{resizeConfig:function(){this.resizeTarget=null,this.resizeIndicatorSize=5,this.resizeTargetChildren=null,this.isResizing=!1,this.resizeArea=!1,this.minWidth=1,this.maxWidth=100,this.minHeight=1,this.maxHeight=100,this.resizeParent=null,this.enableResize=!0,this._cursorBackup,this._resizeEvents=["resizing","resized","resize"],this._resizeMouseDown=!1,this._resizeCurrentMode=null,this._mouseResizePosition={},this._resizeMethods=null,this._SCROLL_WIDTH=21},_resizeExceptions:{invalidTarget:"Invalid target!",invalidMinHeight:"Invalid minimal height!",invalidMaxHeight:"Invalid maximum height!",invalidMinWidth:"Invalid minimum width!",invalidMaxWidth:"Invalid maximum width!",invalidIndicatorSize:"Invalid indicator size!",invalidSize:"Invalid size!"},removeResize:function(){if(this.resizeTarget){var b=a(this.resizeTarget.children(".MLjqui-resize"));b.detach();var c=b.children();this._removeResizeEventListeners();for(var d=0;dthis.minWidth?3*this.resizeIndicatorSize:this.minWidth,this.resizeTarget.maxHeight=this.maxHeight,this.resizeTarget.minHeight=3*this.resizeIndicatorSize>this.minHeight?3*this.resizeIndicatorSize:this.minHeight},_parseResizeParentProperties:function(){this.resizeParent&&(this.resizeParent.left=parseInt(this.resizeParent.left,10),this.resizeParent.top=parseInt(this.resizeParent.top,10),this.resizeParent.width=parseInt(this.resizeParent.width,10),this.resizeParent.height=parseInt(this.resizeParent.height,10))},_getChildren:function(b,c,d,e,f){this.resizeTargetChildren=a(f),this.resizeTargetChildren.toArray();for(var g=this.resizeTargetChildren.length;g;)g-=1,this.resizeTargetChildren[g]=a(this.resizeTargetChildren[g])},_refreshResize:function(){this._renderResize(),this._performResizeLayout(),this._removeResizeEventListeners(),this._addResizeEventHandlers()},_renderResize:function(){this.resizeTarget.wrapInner(a("
          ")),this._resizeWrapper=this.resizeTarget.children(0),this._resizeWrapper.addClass("MLjqui-resize"),this._resizeWrapper.addClass("MLjqui-rc-all"),this._resizeWrapper.css("z-index",8e3)},_performResizeLayout:function(){this._resizeWrapper.height(this.resizeTarget.height()),this._resizeWrapper.width(this.resizeTarget.width())},_removeResizeEventListeners:function(){var b=this.resizeTarget.attr("id");this.removeHandler(this._resizeWrapper,"mousemove.resize"+b),this.removeHandler(this._resizeWrapper,"mousedown.resize"+b),this.removeHandler(a(document),"mousemove.resize"+b),this.removeHandler(a(document),"mouseup.resize"+b)},_addResizeEventHandlers:function(){var b=this.resizeTarget.attr("id"),c=this;this.addHandler(this._resizeWrapper,"mousemove.resize."+b,function(a){c._resizeCursorChangeHandler(c,a)}),this.addHandler(this._resizeWrapper,"mousedown.resize."+b,function(a){c._resizeMouseDownHandler(c,a)}),this.addHandler(a(document),"mousemove.resize."+b,function(a){return c._resizeHandler(c,a)}),this.addHandler(a(document),"mouseup.resize."+b,function(a){c._stopResizing(c,a)});try{if(""!=document.referrer||window.frameElement){var d=function(a){c._stopResizing(c,a)};window.top.document.addEventListener?window.top.document.addEventListener("mouseup",d,!1):window.top.document.attachEvent&&window.top.document.attachEvent("onmouseup",d)}}catch(e){}},_stopResizing:function(a,b){a.enableResize&&(a.isResizing&&a._raiseResizeEvent(1),a._resizeMouseDown=!1,a.isResizing=!1,a._resizeDirection=null,a.resizeTarget&&a.resizeTarget.removeClass("MLjqui-disableselect")),"undefined"==a._cursorBackup&&(a._cursorBackup="default"),a._resizeWrapper&&a._resizeWrapper.css("cursor",a._cursorBackup)},_resizeHandler:function(b,c){return b.enableResize&&!b.collapsed?b.isResizing&&b._resizeDirection?(0===c.which&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<9&&b._stopResizing(c),b._performResize(c.pageX,c.pageY),!1):b._resizeCaptureCursor(c.pageX,c.pageY):void 0},_resizeCaptureCursor:function(a,b){return this._resizeMouseDown&&!this.isResizing&&this._resizeDirection&&(a+3this._mouseResizePosition.x||b+3this._mouseResizePosition.y)?(this._changeCursor(a-parseInt(this.resizeTarget.css("left")),b-parseInt(this.resizeTarget.css("top"))),this._mouseResizePosition={x:a,y:b},this._prepareResizeMethods(this._resizeDirection),this._resizeBackupData(),this.isResizing=!0,this.resizeTarget.addClass("MLjqui-disableselect"),!1):void 0},_resizeBackupData:function(){this.resizeTarget.lastWidth=this.resizeTarget.width(),this.resizeTarget.lastHeight=this.resizeTarget.height(),this.resizeTarget.x=parseInt(this.resizeTarget.css("left"),10),this.resizeTarget.y=parseInt(this.resizeTarget.css("top"),10),this._resizeBackupChildrenSize()},_resizeBackupChildrenSize:function(){for(var a,b=this.resizeTargetChildren.length;b;)b-=1,a=this.resizeTargetChildren[b],this.resizeTargetChildren[b].lastWidth=a.width(),this.resizeTargetChildren[b].lastHeight=a.height()},_performResize:function(a,b){var c=a-this._mouseResizePosition.x,d=b-this._mouseResizePosition.y;this._resizeDirection&&this._resize(this.resizeTarget,c,d)},_resizeCursorChangeHandler:function(a,b){a.enableResize&&!a.collapsed&&(a.isResizing||a._changeCursor(b.pageX-parseInt(a.resizeTarget.css("left")),b.pageY-parseInt(a.resizeTarget.css("top"))))},_resizeMouseDownHandler:function(a,b){a.enableResize&&null!==a._resizeDirection&&(a._resizeMouseDown=!0,a._mouseResizePosition.x=b.pageX,a._mouseResizePosition.y=b.pageY,b.preventDefault())},_validateResizeProperties:function(){try{if(!this.resizeTarget||1!==this.resizeTarget.length)throw new Error(this._resizeExceptions.invalidTarget);if(this.minHeight<0||isNaN(parseInt(this.minHeight)))throw new Error(this._resizeExceptions.invalidMinHeight);if(this.maxHeight<=0||isNaN(parseInt(this.maxHeight)))throw new Error(this._resizeExceptions.invalidMaxHeight);if(this.minWidth<0||isNaN(parseInt(this.minWidth)))throw new Error(this._resizeExceptions.invalidMinWidth);if(this.maxWidth<0||isNaN(parseInt(this.maxWidth)))throw new Error(this._resizeExceptions.invalidMaxWidth);if(this.resizeIndicatorSize<0||isNaN(parseInt(this.resizeIndicatorSize)))throw new Error(this._resizeExceptions.invalidIndicatorSize);if(this.minHeight>this.maxHeight||this.minWidth>this.maxWidth)throw new Error(this._resizeExceptions.invalidSize)}catch(a){alert(a)}},_changeCursor:function(a,b){this.isResizing||this._resizeMouseDown||(this.resizeArea=!0,a<=this.resizeIndicatorSize&&a>=0&&b<=this.resizeIndicatorSize&&b>0?(this._resizeWrapper.css("cursor","nw-resize"),this._resizeDirection="topleft"):b<=this.resizeIndicatorSize&&b>0&&a>=this.resizeTarget.width()-this.resizeIndicatorSize?(this._resizeWrapper.css("cursor","ne-resize"),this._resizeDirection="topright"):b>=this.resizeTarget.height()-this.resizeIndicatorSize&&b=0?(this._resizeWrapper.css("cursor","sw-resize"),this._resizeDirection="bottomleft"):b>=this.resizeTarget.height()-this.resizeIndicatorSize&&b=this.resizeTarget.width()-this.resizeIndicatorSize&&a=0?(this._resizeWrapper.css("cursor","e-resize"),this._resizeDirection="left"):b<=this.resizeIndicatorSize&&b>0?(this._resizeWrapper.css("cursor","n-resize"),this._resizeDirection="top"):b>=this.resizeTarget.height()-this.resizeIndicatorSize&&b=this.resizeTarget.width()-this.resizeIndicatorSize&&a=0&&this._resizeMethods.push(this._resizeLeft),a.indexOf("top")>=0&&this._resizeMethods.push(this._resizeTop),a.indexOf("right")>=0&&this._resizeMethods.push(this._resizeRight),a.indexOf("bottom")>=0&&this._resizeMethods.push(this._resizeBottom)},_validateResize:function(a,b,c,d,e){return"horizontal"===c||"both"===c?this._validateWidth(a,d,e):"vertical"===c||"both"===c?this._validateHeight(b,d,e):{result:!1,fix:0}},_getParent:function(){return null!==this.resizeParent&&"undefined"!==this.resizeParent&&this.resizeParent.height&&this.resizeParent.width&&this.resizeParent.top&&this.resizeParent.left?this.resizeParent:{left:0,top:0,width:a(document).width(),height:a(document).height()}},_validateHeight:function(b,c,d){var e=0,f=2,g=this._getParent();return a(window).width()>a(document).width()&&a.MLjqui.browser.msie&&g.height===a(document).height()&&(e=this._SCROLL_WIDTH),"bottom"===d&&b+c.position().top+e+f>g.height+g.top?{fix:g.height-c.position().top-e-f+g.top,result:!1}:"top"===d&&c.lastHeight-b+c.yc.maxHeight?{fix:c.maxHeight,result:!1}:{result:!0,fix:b}},_validateWidth:function(b,c,d){var e=0,f=2,g=this._getParent();return a(window).height()=document.documentElement.scrollWidth&&g.width===a(document).width()&&(e=this._SCROLL_WIDTH),"right"===d&&b+c.position().left+e+f>g.width+g.left?{fix:g.width-c.position().left-e-f+g.left,result:!1}:"left"===d&&c.lastWidth-b+c.xc.maxWidth?{fix:c.maxWidth,result:!1}:{result:!0,fix:b}},_resize:function(a,b,c){for(var d=(this._resizeDirection,this._resizeMethods.length),e=0;d>e;e++)if(this._resizeMethods[e]instanceof Function){var f={element:a,x:b,y:c,self:this};this._resizeMethods[e](f)}this._performResizeLayout()},resize:function(a,b){if(this.resizable){var c=a-this.host.width(),d=b-this.host.height(),e="right";0!=d&&(e="bottom"),this._resizeDirection=e,this._prepareResizeMethods(this._resizeDirection),this._resizeBackupData(),this.isResizing=!0,this._resize(this.resizeTarget,c,d),this.isResizing=!1}},_setResizeChildrenSize:function(a,b){for(var c=this.resizeTargetChildren.length;c;)if(c--,"width"===b){var d=this.resizeTargetChildren[c].lastWidth-(this.resizeTarget.lastWidth-a);d0&&this.resizeTargetChildren[c].width(d)}else{var e=this.resizeTargetChildren[c].lastHeight-(this.resizeTarget.lastHeight-a);e0&&this.resizeTargetChildren[c].height(e)}},_resizeRight:function(a){var b=a.element.lastWidth+a.x,c=a.self._validateResize(b,0,"horizontal",a.element,"right");return c.result||(b=c.fix),a.element.width()!==b&&(a.self._setResizeChildrenSize(b,"width"),a.element.width(b),a.self._raiseResizeEvent(0)),b},_resizeLeft:function(a){var b=a.element.lastWidth-a.x,c=a.self._validateResize(b,0,"horizontal",a.element,"left"),d=a.element.x+a.x;return c.result?(a.element.width()!==b&&(a.self._setResizeChildrenSize(b,"width"),a.element.width(b),a.element.css("left",d),a.self._raiseResizeEvent(0)),b):(d=a.element.x+(a.element.lastWidth-c.fix),void(b=c.fix))},_resizeBottom:function(a){var b=a.element.lastHeight+a.y,c=a.self._validateResize(0,b,"vertical",a.element,"bottom");return c.result||(b=c.fix),a.element.height()!==b&&(a.self._setResizeChildrenSize(b,"height"),a.element.height(b),a.self._raiseResizeEvent(0)),b},_resizeTop:function(a){var b=a.element.lastHeight-a.y,c=a.self._validateResize(0,b,"vertical",a.element,"top"),d=a.element.y+a.y;return c.result?(a.element.height()!==b&&(a.self._setResizeChildrenSize(b,"height"),a.element.height(b),a.element.css("top",d),a.self._raiseResizeEvent(0)),b):(d=a.element.y+(a.element.lastHeight-c.fix),void(b=c.fix))},_raiseResizeEvent:function(b){var c=this._resizeEvents[b],d=a.Event(c),e={};if(e.width=parseInt(this.resizeTarget[0].style.width),e.height=parseInt(this.resizeTarget[0].style.height),d.args=e,0==b){var c=this._resizeEvents[2],f=a.Event(c);f.args=e,this.resizeTarget.trigger(f)}return this.resizeTarget.trigger(d)}}}(MLjquiBaseFramework);a.extend(a.MLjqui._MLjquiWindow.prototype,b)}(MLjquiBaseFramework); -/* owl.carousel.js */ -"function"!=typeof Object.create&&(Object.create=function(a){function b(){}return b.prototype=a,new b}),function(a,b,c){var d={init:function(b,c){var d=this;d.$elem=a(c),d.options=a.extend({},a.fn.owlCarousel.options,d.$elem.data(),b),d.userOptions=b,d.loadContent()},loadContent:function(){function b(a){var b,c="";if("function"==typeof d.options.jsonSuccess)d.options.jsonSuccess.apply(this,[a]);else{for(b in a.owl)a.owl.hasOwnProperty(b)&&(c+=a.owl[b].item);d.$elem.html(c)}d.logIn()}var c,d=this;"function"==typeof d.options.beforeInit&&d.options.beforeInit.apply(this,[d.$elem]),"string"==typeof d.options.jsonPath?(c=d.options.jsonPath,a.getJSON(c,b)):d.logIn()},logIn:function(){var a=this;a.$elem.data("owl-originalStyles",a.$elem.attr("style")).data("owl-originalClasses",a.$elem.attr("class")),a.$elem.css({opacity:0}),a.orignalItems=a.options.items,a.checkBrowser(),a.wrapperWidth=0,a.checkVisible=null,a.setVars()},setVars:function(){var a=this;return 0===a.$elem.children().length?!1:(a.baseClass(),a.eventTypes(),a.$userItems=a.$elem.children(),a.itemsAmount=a.$userItems.length,a.wrapItems(),a.$owlItems=a.$elem.find(".owl-item"),a.$owlWrapper=a.$elem.find(".owl-wrapper"),a.playDirection="next",a.prevItem=0,a.prevArr=[0],a.currentItem=0,a.customEvents(),void a.onStartup())},onStartup:function(){var a=this;a.updateItems(),a.calculateAll(),a.buildControls(),a.updateControls(),a.response(),a.moveEvents(),a.stopOnHover(),a.owlStatus(),a.options.transitionStyle!==!1&&a.transitionTypes(a.options.transitionStyle),a.options.autoPlay===!0&&(a.options.autoPlay=5e3),a.play(),a.$elem.find(".owl-wrapper").css("display","block"),a.$elem.is(":visible")?a.$elem.css("opacity",1):a.watchVisibility(),a.onstartup=!1,a.eachMoveUpdate(),"function"==typeof a.options.afterInit&&a.options.afterInit.apply(this,[a.$elem])},eachMoveUpdate:function(){var a=this;a.options.lazyLoad===!0&&a.lazyLoad(),a.options.autoHeight===!0&&a.autoHeight(),a.onVisibleItems(),"function"==typeof a.options.afterAction&&a.options.afterAction.apply(this,[a.$elem])},updateVars:function(){var a=this;"function"==typeof a.options.beforeUpdate&&a.options.beforeUpdate.apply(this,[a.$elem]),a.watchVisibility(),a.updateItems(),a.calculateAll(),a.updatePosition(),a.updateControls(),a.eachMoveUpdate(),"function"==typeof a.options.afterUpdate&&a.options.afterUpdate.apply(this,[a.$elem])},reload:function(){var a=this;b.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;return a.$elem.is(":visible")!==!1?!1:(a.$elem.css({opacity:0}),b.clearInterval(a.autoPlayInterval),b.clearInterval(a.checkVisible),void(a.checkVisible=b.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),b.clearInterval(a.checkVisible))},500)))},wrapItems:function(){var a=this;a.$userItems.wrapAll('
          ').wrap('
          '),a.$elem.find(".owl-wrapper").wrap('
          '),a.wrapperOuter=a.$elem.find(".owl-wrapper-outer"),a.$elem.css("display","block")},baseClass:function(){var a=this,b=a.$elem.hasClass(a.options.baseClass),c=a.$elem.hasClass(a.options.theme);b||a.$elem.addClass(a.options.baseClass),c||a.$elem.addClass(a.options.theme)},updateItems:function(){var b,c,d=this;if(d.options.responsive===!1)return!1;if(d.options.singleItem===!0)return d.options.items=d.orignalItems=1,d.options.itemsCustom=!1,d.options.itemsDesktop=!1,d.options.itemsDesktopSmall=!1,d.options.itemsTablet=!1,d.options.itemsTabletSmall=!1,d.options.itemsMobile=!1,!1;if(b=a(d.options.responsiveBaseWidth).width(),b>(d.options.itemsDesktop[0]||d.orignalItems)&&(d.options.items=d.orignalItems),d.options.itemsCustom!==!1)for(d.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),c=0;cd.itemsAmount&&d.options.itemsScaleUp===!0&&(d.options.items=d.itemsAmount)},response:function(){var c,d,e=this;return e.options.responsive!==!0?!1:(d=a(b).width(),e.resizer=function(){a(b).width()!==d&&(e.options.autoPlay!==!1&&b.clearInterval(e.autoPlayInterval),b.clearTimeout(c),c=b.setTimeout(function(){d=a(b).width(),e.updateVars()},e.options.responsiveRefreshRate))},void a(b).resize(e.resizer))},updatePosition:function(){var a=this;a.jumpTo(a.currentItem),a.options.autoPlay!==!1&&a.checkAp()},appendItemsSizes:function(){var b=this,c=0,d=b.itemsAmount-b.options.items;b.$owlItems.each(function(e){var f=a(this);f.css({width:b.itemWidth}).data("owl-item",Number(e)),e%b.options.items!==0&&e!==d||e>d||(c+=1),f.data("owl-roundPages",c)})},appendWrapperSizes:function(){var a=this,b=a.$owlItems.length*a.itemWidth;a.$owlWrapper.css({width:2*b,left:0}),a.appendItemsSizes()},calculateAll:function(){var a=this;a.calculateWidth(),a.appendWrapperSizes(),a.loops(),a.max()},calculateWidth:function(){var a=this;a.itemWidth=Math.round(a.$elem.width()/a.options.items)},max:function(){var a=this,b=-1*(a.itemsAmount*a.itemWidth-a.options.items*a.itemWidth);return a.options.items>a.itemsAmount?(a.maximumItem=0,b=0,a.maximumPixels=0):(a.maximumItem=a.itemsAmount-a.options.items,a.maximumPixels=b),b},min:function(){return 0},loops:function(){var b,c,d,e=this,f=0,g=0;for(e.positionsInArray=[0],e.pagesInArray=[],b=0;b').toggleClass("clickable",!b.browser.isTouch).appendTo(b.$elem)),b.options.pagination===!0&&b.buildPagination(),b.options.navigation===!0&&b.buildButtons()},buildButtons:function(){var b=this,c=a('
          ');b.owlControls.append(c),c.append(b.buttonPrev).append(b.buttonNext),c.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()}),c.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(c){c.preventDefault(),a(this).hasClass("owl-next")&&b.next()})},buildPagination:function(){var b=this;b.paginationWrapper=a('
          '),b.owlControls.append(b.paginationWrapper),b.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(c){c.preventDefault(),Number(a(this).data("owl-page"))!==b.currentItem&&b.goTo(Number(a(this).data("owl-page")),!0)})},updatePagination:function(){var b,c,d,e,f,g,h=this;if(h.options.pagination===!1)return!1;for(h.paginationWrapper.html(""),b=0,c=h.itemsAmount-h.itemsAmount%h.options.items,e=0;e",{"class":"owl-page"}),g=a("",{text:h.options.paginationNumbers===!0?b:"","class":h.options.paginationNumbers===!0?"owl-numbers":""}),f.append(g),f.data("owl-page",c===e?d:e),f.data("owl-roundPages",b),h.paginationWrapper.append(f));h.checkPagination()},checkPagination:function(){var b=this;return b.options.pagination===!1?!1:void b.paginationWrapper.find(".owl-page").each(function(){a(this).data("owl-roundPages")===a(b.$owlItems[b.currentItem]).data("owl-roundPages")&&(b.paginationWrapper.find(".owl-page").removeClass("active"),a(this).addClass("active"))})},checkNavigation:function(){var a=this;return a.options.navigation===!1?!1:void(a.options.rewindNav===!1&&(0===a.currentItem&&0===a.maximumItem?(a.buttonPrev.addClass("disabled"),a.buttonNext.addClass("disabled")):0===a.currentItem&&0!==a.maximumItem?(a.buttonPrev.addClass("disabled"),a.buttonNext.removeClass("disabled")):a.currentItem===a.maximumItem?(a.buttonPrev.removeClass("disabled"),a.buttonNext.addClass("disabled")):0!==a.currentItem&&a.currentItem!==a.maximumItem&&(a.buttonPrev.removeClass("disabled"),a.buttonNext.removeClass("disabled"))))},updateControls:function(){var a=this;a.updatePagination(),a.checkNavigation(),a.owlControls&&(a.options.items>=a.itemsAmount?a.owlControls.hide():a.owlControls.show())},destroyControls:function(){var a=this;a.owlControls&&a.owlControls.remove()},next:function(a){var b=this;if(b.isTransition)return!1;if(b.currentItem+=b.options.scrollPerPage===!0?b.options.items:1,b.currentItem>b.maximumItem+(b.options.scrollPerPage===!0?b.options.items-1:0)){if(b.options.rewindNav!==!0)return b.currentItem=b.maximumItem,!1;b.currentItem=0,a="rewind"}b.goTo(b.currentItem,a)},prev:function(a){var b=this;if(b.isTransition)return!1;if(b.options.scrollPerPage===!0&&b.currentItem>0&&b.currentItem=f.maximumItem?a=f.maximumItem:0>=a&&(a=0),f.currentItem=f.owl.currentItem=a,f.options.transitionStyle!==!1&&"drag"!==d&&1===f.options.items&&f.browser.support3d===!0?(f.swapSpeed(0),f.browser.support3d===!0?f.transition3d(f.positionsInArray[a]):f.css2slide(f.positionsInArray[a],1),f.afterGo(),f.singleItemTransition(),!1):(e=f.positionsInArray[a],f.browser.support3d===!0?(f.isCss3Finish=!1,c===!0?(f.swapSpeed("paginationSpeed"),b.setTimeout(function(){f.isCss3Finish=!0},f.options.paginationSpeed)):"rewind"===c?(f.swapSpeed(f.options.rewindSpeed),b.setTimeout(function(){f.isCss3Finish=!0},f.options.rewindSpeed)):(f.swapSpeed("slideSpeed"),b.setTimeout(function(){f.isCss3Finish=!0},f.options.slideSpeed)),f.transition3d(e)):c===!0?f.css2slide(e,f.options.paginationSpeed):"rewind"===c?f.css2slide(e,f.options.rewindSpeed):f.css2slide(e,f.options.slideSpeed),void f.afterGo()))},jumpTo:function(a){var b=this;"function"==typeof b.options.beforeMove&&b.options.beforeMove.apply(this,[b.$elem]),a>=b.maximumItem||-1===a?a=b.maximumItem:0>=a&&(a=0),b.swapSpeed(0),b.browser.support3d===!0?b.transition3d(b.positionsInArray[a]):b.css2slide(b.positionsInArray[a],1),b.currentItem=b.owl.currentItem=a,b.afterGo()},afterGo:function(){var a=this;a.prevArr.push(a.currentItem),a.prevItem=a.owl.prevItem=a.prevArr[a.prevArr.length-2],a.prevArr.shift(0),a.prevItem!==a.currentItem&&(a.checkPagination(),a.checkNavigation(),a.eachMoveUpdate(),a.options.autoPlay!==!1&&a.checkAp()),"function"==typeof a.options.afterMove&&a.prevItem!==a.currentItem&&a.options.afterMove.apply(this,[a.$elem])},stop:function(){var a=this;a.apStatus="stop",b.clearInterval(a.autoPlayInterval)},checkAp:function(){var a=this;"stop"!==a.apStatus&&a.play()},play:function(){var a=this;return a.apStatus="play",a.options.autoPlay===!1?!1:(b.clearInterval(a.autoPlayInterval),void(a.autoPlayInterval=b.setInterval(function(){a.next(!0)},a.options.autoPlay)))},swapSpeed:function(a){var b=this;"slideSpeed"===a?b.$owlWrapper.css(b.addCssSpeed(b.options.slideSpeed)):"paginationSpeed"===a?b.$owlWrapper.css(b.addCssSpeed(b.options.paginationSpeed)):"string"!=typeof a&&b.$owlWrapper.css(b.addCssSpeed(a))},addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){var b=this;b.$owlWrapper.css(b.doTranslate(a))},css2move:function(a){var b=this;b.$owlWrapper.css({left:a})},css2slide:function(a,b){var c=this;c.isCssFinish=!1,c.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||c.options.slideSpeed,complete:function(){c.isCssFinish=!0}})},checkBrowser:function(){var a,d,e,f,g=this,h="translate3d(0px, 0px, 0px)",i=c.createElement("div");i.style.cssText=" -moz-transform:"+h+"; -ms-transform:"+h+"; -o-transform:"+h+"; -webkit-transform:"+h+"; transform:"+h,a=/translate3d\(0px, 0px, 0px\)/g,d=i.style.cssText.match(a),e=null!==d&&1===d.length,f="ontouchstart"in b||b.navigator.msMaxTouchPoints,g.browser={support3d:e,isTouch:f}},moveEvents:function(){var a=this;a.options.mouseDrag===!1&&a.options.touchDrag===!1||(a.gestures(),a.disabledEvents())},eventTypes:function(){var a=this,b=["s","e","x"];a.ev_types={},a.options.mouseDrag===!0&&a.options.touchDrag===!0?b=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:a.options.mouseDrag===!1&&a.options.touchDrag===!0?b=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:a.options.mouseDrag===!0&&a.options.touchDrag===!1&&(b=["mousedown.owl","mousemove.owl","mouseup.owl"]),a.ev_types.start=b[0],a.ev_types.move=b[1],a.ev_types.end=b[2]},disabledEvents:function(){var b=this;b.$elem.on("dragstart.owl",function(a){a.preventDefault()}),b.$elem.on("mousedown.disableTextSelect",function(b){return a(b.target).is("input, textarea, select, option")})},gestures:function(){function d(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function e(b){"on"===b?(a(c).on(i.ev_types.move,g),a(c).on(i.ev_types.end,h)):"off"===b&&(a(c).off(i.ev_types.move),a(c).off(i.ev_types.end))}function f(c){var f,g=c.originalEvent||c||b.event;if(3===g.which)return!1;if(!(i.itemsAmount<=i.options.items)){if(i.isCssFinish===!1&&!i.options.dragBeforeAnimFinish)return!1;if(i.isCss3Finish===!1&&!i.options.dragBeforeAnimFinish)return!1;i.options.autoPlay!==!1&&b.clearInterval(i.autoPlayInterval),i.browser.isTouch===!0||i.$owlWrapper.hasClass("grabbing")||i.$owlWrapper.addClass("grabbing"),i.newPosX=0,i.newRelativeX=0,a(this).css(i.removeTransition()),f=a(this).position(),j.relativePos=f.left,j.offsetX=d(g).x-f.left,j.offsetY=d(g).y-f.top,e("on"),j.sliding=!1,j.targetElement=g.target||g.srcElement}}function g(e){var f,g,h=e.originalEvent||e||b.event;i.newPosX=d(h).x-j.offsetX,i.newPosY=d(h).y-j.offsetY,i.newRelativeX=i.newPosX-j.relativePos,"function"==typeof i.options.startDragging&&j.dragging!==!0&&0!==i.newRelativeX&&(j.dragging=!0,i.options.startDragging.apply(i,[i.$elem])),(i.newRelativeX>8||i.newRelativeX<-8)&&i.browser.isTouch===!0&&(void 0!==h.preventDefault?h.preventDefault():h.returnValue=!1,j.sliding=!0),(i.newPosY>10||i.newPosY<-10)&&j.sliding===!1&&a(c).off("touchmove.owl"),f=function(){return i.newRelativeX/5},g=function(){return i.maximumPixels+i.newRelativeX/5},i.newPosX=Math.max(Math.min(i.newPosX,f()),g()),i.browser.support3d===!0?i.transition3d(i.newPosX):i.css2move(i.newPosX)}function h(c){var d,f,g,h=c.originalEvent||c||b.event;h.target=h.target||h.srcElement,j.dragging=!1,i.browser.isTouch!==!0&&i.$owlWrapper.removeClass("grabbing"),i.newRelativeX<0?i.dragDirection=i.owl.dragDirection="left":i.dragDirection=i.owl.dragDirection="right",0!==i.newRelativeX&&(d=i.getNewPosition(),i.goTo(d,!1,"drag"),j.targetElement===h.target&&i.browser.isTouch!==!0&&(a(h.target).on("click.disable",function(b){b.stopImmediatePropagation(),b.stopPropagation(),b.preventDefault(),a(b.target).off("click.disable")}),f=a._data(h.target,"events").click,g=f.pop(),f.splice(0,0,g))),e("off")}var i=this,j={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};i.isCssFinish=!0,i.$elem.on(i.ev_types.start,".owl-wrapper",f)},getNewPosition:function(){var a=this,b=a.closestItem();return b>a.maximumItem?(a.currentItem=a.maximumItem,b=a.maximumItem):a.newPosX>=0&&(b=0,a.currentItem=0),b},closestItem:function(){var b=this,c=b.options.scrollPerPage===!0?b.pagesInArray:b.positionsInArray,d=b.newPosX,e=null;return a.each(c,function(f,g){d-b.itemWidth/20>c[f+1]&&d-b.itemWidth/20(c[f+1]||c[f]-b.itemWidth)&&"right"===b.moveDirection()&&(b.options.scrollPerPage===!0?(e=c[f+1]||c[c.length-1],b.currentItem=a.inArray(e,b.positionsInArray)):(e=c[f+1],b.currentItem=f+1))}),b.currentItem},moveDirection:function(){var a,b=this;return b.newRelativeX<0?(a="right",b.playDirection="next"):(a="left",b.playDirection="prev"),a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()}),a.$elem.on("owl.prev",function(){a.prev()}),a.$elem.on("owl.play",function(b,c){a.options.autoPlay=c,a.play(),a.hoverStatus="play"}),a.$elem.on("owl.stop",function(){a.stop(),a.hoverStatus="stop"}),a.$elem.on("owl.goTo",function(b,c){a.goTo(c)}),a.$elem.on("owl.jumpTo",function(b,c){a.jumpTo(c)})},stopOnHover:function(){var a=this;a.options.stopOnHover===!0&&a.browser.isTouch!==!0&&a.options.autoPlay!==!1&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var b,c,d,e,f,g=this;if(g.options.lazyLoad===!1)return!1;for(b=0;b=g.currentItem:!0,f&&d=h?b.setTimeout(e,100):d()}var f,g=this,h=0;"DIV"===c.prop("tagName")?(c.css("background-image","url("+c.data("src")+")"),f=!0):c[0].src=c.data("src"),e()},autoHeight:function(){function c(){var c=a(f.$owlItems[f.currentItem]).height();f.wrapperOuter.css("height",c+"px"),f.wrapperOuter.hasClass("autoHeight")||b.setTimeout(function(){f.wrapperOuter.addClass("autoHeight")},0)}function d(){e+=1,f.completeImg(g.get(0))?c():100>=e?b.setTimeout(d,100):f.wrapperOuter.css("height","")}var e,f=this,g=a(f.$owlItems[f.currentItem]).find("img");void 0!==g.get(0)?(e=0,d()):c()},completeImg:function(a){var b;return a.complete?(b=typeof a.naturalWidth,"undefined"===b||0!==a.naturalWidth):!1},onVisibleItems:function(){var b,c=this;for(c.options.addClassActive===!0&&c.$owlItems.removeClass("active"),c.visibleItems=[],b=c.currentItem;b=d.$userItems.length||-1===c?d.$userItems.eq(-1).after(a):d.$userItems.eq(c).before(a),void d.setVars()):!1},removeItem:function(a){var b,c=this;return 0===c.$elem.children().length?!1:(b=void 0===a||-1===a?-1:a,c.unWrap(),c.$userItems.eq(b).remove(),void c.setVars())}};a.fn.owlCarousel=function(b){return this.each(function(){if(a(this).data("owl-init")===!0)return!1;a(this).data("owl-init",!0);var c=Object.create(d);c.init(b,this),a.data(this,"owlCarousel",c)})},a.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1e3,autoPlay:3e3,stopOnHover:!0,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:b,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}}(jQuery,window,document); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui_nec.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui_nec.js deleted file mode 100644 index e9d60c51..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjqui_nec.js +++ /dev/null @@ -1,2442 +0,0 @@ -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ -//(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u
          ");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){l.host.attr("tabindex","0")}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e
          ');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);this.host.prepend('인증서목록');if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return!this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return-1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart"in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y
          ";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart"in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return-1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"
          ");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x
          ");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();for(var am=0;am';var E='';if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group"in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row"in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details"in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight"in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized"in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded"in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';if(magiclineUtil.isMobile(magiclineUtil.getOS())){l+=this.gridlocalization.emptydatastring.substr(0,13)}else{l+=this.gridlocalization.emptydatastring}l+="
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l
          ');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f
          ');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); -//(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){l.host.attr("tabindex","0")}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return!this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return-1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"keyup");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}var count=0;for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart"in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart"in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return-1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();var readtrs='';var readth='';for(var i=0;i'+rData.Cn+' '+rData.Policy+' '+rData.Issuer+' '+rData.enddate+''}else{readth+=''}}var readtre='';var read=readtrs+readth+readtre;for(var am=0;am';var E='';if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";if(am==0){B+=read}B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group"in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row"in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details"in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight"in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized"in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded"in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';if(magiclineUtil.isMobile(magiclineUtil.getOS())){l+=this.gridlocalization.emptydatastring.substr(0,13)}else{l+=this.gridlocalization.emptydatastring}l+="
          '+rData.Cn+' '+rData.Policy+' '+rData.Issuer+' '+rData.enddate+'
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); -//(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return!this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return-1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"keyup");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}var count=0;for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart"in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart"in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return-1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();var readtrs='';var readth='';for(var i=0;i'+rData.Cn+' '+rData.Policy+' '+rData.Issuer+' '+rData.enddate+''}else{readth+=''}}var readtre='';var read=readtrs+readth+readtre;for(var am=0;am';var E='';if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";if(am==0){B+=read}B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group"in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row"in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details"in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight"in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized"in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded"in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';if(magiclineUtil.isMobile(magiclineUtil.getOS())){l+=this.gridlocalization.emptydatastring.substr(0,13)}else{l+=this.gridlocalization.emptydatastring}l+="
          '+rData.Cn+' '+rData.Policy+' '+rData.Issuer+' '+rData.enddate+'
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); - -//20200701 -//(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return!this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return-1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"keyup");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}var count=0;for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart"in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart"in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return-1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();for(var am=0;am';var E=''}else{var o='';var E=''}if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group"in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row"in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details"in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight"in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized"in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded"in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';if(magiclineUtil.isMobile(magiclineUtil.getOS())){l+=this.gridlocalization.emptydatastring.substr(0,13)}else{l+=this.gridlocalization.emptydatastring}l+="
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); - -//20200721 -(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);this.host.prepend('인증서목록');if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return!this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return-1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"keyup");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart"in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart"in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return-1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();for(var am=0;am';var E='';if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}if(al==0){if(am==0){var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group"in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row"in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details"in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight"in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized"in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded"in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';if(magiclineUtil.isMobile(magiclineUtil.getOS())){l+=this.gridlocalization.emptydatastring.substr(0,13)}else{l+=this.gridlocalization.emptydatastring}l+="
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); - -/* -jQWidgets v4.1.1 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a) { - a.MLjqui.MLjquiWidget("MLjquiWindow", "", {}); - a.extend(a.MLjqui._MLjquiWindow.prototype, { - defineInstance: function() { - var e = { - height: "auto", - width: 200, - minHeight: 50, - maxHeight: 600, - minWidth: 50, - maxWidth: 800, - showCloseButton: true, - disabled: false, - autoOpen: true, - keyboardCloseKey: "esc", - title: "", - content: "", - draggable: true, - resizable: true, - animationType: "fade", - closeAnimationDuration: 250, - showAnimationDuration: 250, - isModal: false, - position: "center", - closeButtonSize: 16, - closeButtonAction: "hide", - modalOpacity: 0.3, - dragArea: null, - okButton: null, - cancelButton: null, - dialogResult: { - OK: false, - Cancel: false, - None: true - }, - collapsed: false, - showCollapseButton: false, - collapseAnimationDuration: 150, - collapseButtonSize: 16, - rtl: false, - keyboardNavigation: true, - headerHeight: null, - _events: ["created", "closed", "moving", "moved", "open", "collapse", "expand", "open", "close", "resize"], - initContent: null, - enableResize: true, - restricter: null, - autoFocus: true, - closing: null, - _invalidArgumentExceptions: { - invalidHeight: "Invalid height!", - invalidWidth: "Invalid width!", - invalidMinHeight: "Invalid minHeight!", - invalidMaxHeight: "Invalid maxHeight!", - invalidMinWidth: "Invalid minWidth!", - invalidMaxWidth: "Invalid maxWidth", - invalidKeyCode: "Invalid keyCode!", - invalidAnimationType: "Invalid animationType!", - invalidCloseAnimationDuration: "Invalid closeAnimationDuration!", - invalidShowAnimationDuration: "Invalid showAnimationDuration!", - invalidPosition: "Invalid position!", - invalidCloseButtonSize: "Invalid closeButtonSize!", - invalidCollapseButtonSize: "Invalid collapseButtonSize!", - invalidCloseButtonAction: "Invalid cluseButtonAction!", - invalidModalOpacity: "Invalid modalOpacity!", - invalidDragArea: "Invalid dragArea!", - invalidDialogResult: "Invalid dialogResult!", - invalidIsModal: "You can have just one modal window!" - }, - _enableResizeCollapseBackup: null, - _enableResizeBackup: undefined, - _heightBeforeCollapse: null, - _minHeightBeforeCollapse: null, - _mouseDown: false, - _isDragging: false, - _rightContentWrapper: null, - _leftContentWrapper: null, - _headerContentWrapper: null, - _closeButton: null, - _collapseButton: null, - _title: null, - _content: null, - _mousePosition: {}, - _windowPosition: {}, - _modalBackground: null, - _SCROLL_WIDTH: 21, - _visible: true, - modalBackgroundZIndex: 12990, - modalZIndex: 18000, - zIndex: 9001, - _touchEvents: { - mousedown: a.MLjqui.mobile.getTouchEventName("touchstart"), - mouseup: a.MLjqui.mobile.getTouchEventName("touchend"), - mousemove: a.MLjqui.mobile.getTouchEventName("touchmove"), - mouseenter: "mouseenter", - mouseleave: "mouseleave", - click: a.MLjqui.mobile.getTouchEventName("touchstart") - } - }; - a.extend(true, this, e); - return e - }, - createInstance: function() { - this.host.attr("role", "dialog"); - this.host.removeAttr("data-bind"); - this.host.detach(); - a(document.body).append(this.host); - var f = this; - var g = function() { - var i = parseInt(a(f.restricter).css("padding-top")); - var h = parseInt(a(f.restricter).css("padding-left")); - var k = parseInt(a(f.restricter).css("padding-bottom")); - var m = parseInt(a(f.restricter).css("padding-right")); - var l = a(f.restricter).coord(); - f.dragArea = { - left: h + l.left, - top: i + l.top, - width: 1 + m + a(f.restricter).width(), - height: 1 + k + a(f.restricter).height() - } - }; - if (this.restricter) { - g() - } - if (this.restricter) { - this.addHandler(a(window), "resize." + this.element.id, function() { - g() - }); - this.addHandler(a(window), "orientationchanged." + this.element.id, function() { - g() - }); - this.addHandler(a(window), "orientationchange." + this.element.id, function() { - g() - }) - } - this._isTouchDevice = a.MLjqui.mobile.isTouchDevice(); - this._validateProperties(); - this._createStructure(); - this._refresh(); - if (!this.autoOpen) { - this.host.css("display", "none") - } - if (a.MLjqui.browser.msie) { - this.host.addClass(this.toThemeProperty("MLjqui-noshadow")) - } - if (!this.isModal) { - this._fixWindowZIndex() - } - this._setStartupSettings(); - this._positionWindow(); - this._raiseEvent(0); - if (this.autoOpen) { - this._performLayout(); - var e = this; - if (this.isModal) { - this._fixWindowZIndex("modal-show") - } - if (e.initContent) { - e.initContent(); - e._contentInitialized = true - } - this._raiseEvent(7); - this._raiseEvent(9) - } - }, - refresh: function() { - this._performLayout() - }, - _setStartupSettings: function() { - if (this.disabled) { - this.disable() - } - if (this.collapsed) { - this.collapsed = false; - this.collapse(0) - } - if (!this.autoOpen) { - this.hide(null, 0.001, true); - this._visible = false - } - if (this.title !== null && this.title !== "") { - this.setTitle(this.title) - } - if (this.content !== null && this.content !== "") { - this.setContent(this.content) - } - this.title = this._headerContentWrapper.html(); - this.content = this._content.html() - }, - _fixWindowZIndex: function(n) { - var f = a.data(document.body, "MLjquiwindows-list") || [], - o = this.zIndex, - i; - if (!this.isModal) { - if (this._indexOf(this.host, f) < 0) { - f.push(this.host) - } - a.data(document.body, "MLjquiwindows-list", f); - if (f.length > 1) { - var g = f[f.length - 2]; - if (g.css("z-index") == "auto") { - o = this.zIndex + f.length + 1 - } else { - var e = this.zIndex; - o = parseInt(g.css("z-index"), 10) + 1; - if (o < e) { - o = e - } - } - } - } else { - if (f) { - f = this._removeFromArray(this.host, f); - a.data(document.body, "MLjquiwindows-list", f) - } - var h = a.data(document.body, "MLjquiwindows-modallist"); - if (!h) { - if (n == "modal-show") { - var l = new Array(); - l.push(this.host); - a.data(document.body, "MLjquiwindows-modallist", l); - h = l - } else { - a.data(document.body, "MLjquiwindows-modallist", new Array()); - h = new Array() - } - } else { - if (n == "modal-show") { - h.push(this.host) - } else { - var k = h.indexOf(this.host); - if (k != -1) { - h.splice(k, 1) - } - } - } - o = this.modalZIndex; - var m = this; - a.each(h, function(r) { - if (this.data()) { - if (this.data().MLjquiWindow) { - var q = this.data().MLjquiWindow.instance; - q._modalBackground.css("z-index", o); - q.host.css("z-index", o + 1); - o += 2 - } - } - }); - a.data(document.body, "MLjquiwindow-modal", this.host); - return - } - this.host.css("z-index", o); - this._sortByStyle("z-index", f) - }, - _validateProperties: function() { - try { - this._validateSize(); - this._validateAnimationProperties(); - this._validateInteractionProperties(); - this._validateModalProperties(); - if (!this.position) { - throw new Error(this._invalidArgumentExceptions.invalidPosition) - } - if (isNaN(this.closeButtonSize) || parseInt(this.closeButtonSize) < 0) { - throw new Error(this._invalidArgumentExceptions.invalidCloseButtonSize) - } - if (isNaN(this.collapseButtonSize) || parseInt(this.collapseButtonSize) < 0) { - throw new Error(this._invalidArgumentExceptions.invalidCollapseButtonSize) - } - } catch (e) { - alert(e) - } - }, - _validateModalProperties: function() { - if (this.modalOpacity < 0 || this.modalOpacity > 1) { - throw new Error(this._invalidArgumentExceptions.invalidModalOpacity) - } - if (this.isModal && !this._singleModalCheck()) { - throw new Error(this._invalidArgumentExceptions.invalidIsModal) - } - }, - _validateSize: function() { - this._validateSizeLimits(); - if (this.height !== "auto" && isNaN(parseInt(this.height))) { - throw new Error(this._invalidArgumentExceptions.invalidHeight) - } - if (this.width !== "auto" && isNaN(parseInt(this.width))) { - throw new Error(this._invalidArgumentExceptions.invalidWidth) - } - if (this.height !== "auto" && this.height < this.minHeight) { - this.height = this.minHeight - } - if (this.width < this.minWidth) { - this.width = this.minWidth - } - if (this.height !== "auto" && this.height > this.maxHeight) { - this.height = this.maxHeight - } - if (this.width > this.maxWidth) { - this.width = this.maxWidth - } - if (this.dragArea === null) { - return - } - if (this.dragArea && ((this.dragArea.height !== null && this.host.height() > this.dragArea.height) || (parseInt(this.height, 10) > this.dragArea.height)) || (this.dragArea.width !== null && this.width > this.dragArea.width) || (this.maxHeight > this.dragArea.height || this.maxWidth > this.dragArea.width)) {} - }, - _validateSizeLimits: function() { - if (this.maxHeight == null) { - this.maxHeight = 9999 - } - if (this.minWidth == null) { - this.minWidth = 0 - } - if (this.maxWidth == null) { - this.maxWidth = 9999 - } - if (this.minHeight == null) { - this.minHeight = 0 - } - if (isNaN(parseInt(this.minHeight))) { - throw new Error(this._invalidArgumentExceptions.invalidMinHeight) - } - if (isNaN(parseInt(this.maxHeight))) { - throw new Error(this._invalidArgumentExceptions.invalidMaxHeight) - } - if (isNaN(parseInt(this.minWidth))) { - throw new Error(this._invalidArgumentExceptions.invalidMinWidth) - } - if (isNaN(parseInt(this.maxWidth))) { - throw new Error(this._invalidArgumentExceptions.invalidMaxWidth) - } - if (this.minHeight > this.maxHeight) { - throw new Error(this._invalidArgumentExceptions.invalidMinHeight) - } - if (this.minWidth > this.maxWidth) { - throw new Error(this._invalidArgumentExceptions.invalidMinWidth) - } - }, - _validateAnimationProperties: function() { - if (this.animationType !== "fade" && this.animationType !== "slide" && this.animationType !== "combined" && this.animationType !== "none") { - throw new Error(this._invalidArgumentExceptions.invalidAnimationType) - } - if (isNaN(parseInt(this.closeAnimationDuration), 10) || this.closeAnimationDuration < 0) { - throw new Error(this._invalidArgumentExceptions.invalidCloseAnimationDuration) - } - if (isNaN(parseInt(this.showAnimationDuration), 10) || this.showAnimationDuration < 0) { - throw new Error(this._invalidArgumentExceptions.invalidShowAnimationDuration) - } - }, - _validateInteractionProperties: function() { - if (parseInt(this.keyCode, 10) < 0 || parseInt(this.keyCode, 10) > 130 && this.keyCode !== "esc") { - throw new Error(this._invalidArgumentExceptions.invalidKeyCode) - } - if (this.dragArea !== null && (typeof this.dragArea.width === "undefined" || typeof this.dragArea.height === "undefined" || typeof this.dragArea.left === "undefined" || typeof this.dragArea.top === "undefined")) { - throw new Error(this._invalidArgumentExceptions.invalidDragArea) - } - if (!this.dialogResult || (!this.dialogResult.OK && !this.dialogResult.Cancel && !this.dialogResult.None)) { - throw new Error(this._invalidArgumentExceptions.invalidDialogResult) - } - if (this.closeButtonAction !== "hide" && this.closeButtonAction !== "close" && this.closeButtonAction !== "destroy") { - throw new Error(this._invalidArgumentExceptions.invalidCloseButtonAction) - } - }, - _singleModalCheck: function() { - var e = a.data(document.body, "MLjquiwindows-list") || [], - f = e.length; - while (f) { - f -= 1; - if (a(e[f].attr("id")).length > 0) { - if (a(e[f].attr("id")).MLjquiWindow("isModal")) { - return false - } - } - } - return true - }, - _createStructure: function() { - var e = this.host.children("DIV"); - if (e.length === 1) { - this._header = a("
          " + this.host.attr("caption") + "
          "); - this.host.prepend(this._header); - this.host.attr("caption", ""); - this._content = a(e[0]) - } else { - if (e.length === 2) { - this._header = a(e[0]); - this._content = a(e[1]) - } else { - throw new Error("Invalid structure!") - } - } - }, - _refresh: function() { - this._render(); - this._addStyles(); - this._performLayout(); - this._removeEventHandlers(); - this._addEventHandlers(); - this._initializeResize() - }, - _render: function() { - this._addHeaderWrapper(); - this._addCloseButton(); - this._addCollapseButton(); - this._removeModal(); - this._makeModal(); - }, - _addHeaderWrapper: function() { - if (!this._headerContentWrapper) { - this._header.wrapInner('
          '); - this._headerContentWrapper = this._header.children(0); - if (this.headerHeight !== null) { - this._header.height(this.headerHeight) - } - } - }, - _addCloseButton: function() { - if (!this._closeButton) { - this._closeButtonWrapper = a('
          '); - this._closeButton = a('
          '); - this._closeButtonWrapper.append(this._closeButton); - this._header.append(this._closeButtonWrapper) - } - }, - _addCollapseButton: function() { - if (!this._collapseButton) { - this._collapseButtonWrapper = a('
          '); - this._collapseButton = a('
          '); - this._collapseButtonWrapper.append(this._collapseButton); - this._header.append(this._collapseButtonWrapper) - } - }, - _removeModal: function() { - if (!this.isModal && typeof this._modalBackground === "object" && this._modalBackground !== null && this._modalBackground.length >= 1) { - a("." + this.toThemeProperty("MLjqui-window-modal")).remove(); - this._modalBackground = null - } - }, - focus: function() { - try { - this.host.focus(); - var f = this; - setTimeout(function() { - f.host.focus() - }, 10) - } catch (e) {} - }, - _makeModal: function() { - if (this.isModal && (!this._modalBackground || this._modalBackground.length < 1)) { - var g = a.data(document.body, "MLjquiwindows-list"); - if (g) { - this._removeFromArray(this.host, g); - a.data(document.body, "MLjquiwindows-list", g) - } - this._modalBackground = a("
          "); - this._modalBackground.addClass(this.toThemeProperty("MLjqui-window-modal")); - this._setModalBackgroundStyles(); - a(document.body).append(this._modalBackground); - this.addHandler(this._modalBackground, this._getEvent("click"), function() { - return false - }); - var f = this; - var e = function(i, k) { - var h = a(i).parents().get(); - for (j = 0; j < h.length; j++) { - if (a(h[j]).is(k)) { - return true - } - } - return false - }; - this.addHandler(this._modalBackground, "mouseup", function(h) { - f._stopResizing(f); - h.preventDefault() - }); - this.addHandler(this._modalBackground, "mousedown", function(i) { - var h = f._getTabbables(); - if (h.length > 0) { - h[0].focus(1); - setTimeout(function() { - h[0].focus(1) - }, 100) - } - i.preventDefault(); - return false - }); - this.addHandler(a(document), "keydown.window" + this.element.id, function(l) { - if (l.keyCode !== 9) { - return - } - var h = a.data(document.body, "MLjquiwindows-modallist"); - if (h.length > 1) { - if (h[h.length - 1][0] != f.element) { - return - } - } - var k = f._getTabbables(); - var m = null; - var i = null; - if (k.length > 0) { - m = k[0]; - i = k[k.length - 1] - } - if (l.target == f.element) { - return - } - if (m == null) { - return - } - if (!e(l.target, f.host)) { - m.focus(1); - return false - } - if (l.target === i && !l.shiftKey) { - m.focus(1); - return false - } else { - if (l.target === m && l.shiftKey) { - i.focus(1); - return false - } - } - }) - } - }, - _addStyles: function() { - this.host.addClass(this.toThemeProperty("MLjqui-rc-all")); - this.host.addClass(this.toThemeProperty("MLjqui-window")); - this.host.addClass(this.toThemeProperty("MLjqui-popup")); - if (a.MLjqui.browser.msie) { - this.host.addClass(this.toThemeProperty("MLjqui-noshadow")) - } - this.host.addClass(this.toThemeProperty("MLjqui-widget")); - this.host.addClass(this.toThemeProperty("MLjqui-widget-content")); - this._header.addClass(this.toThemeProperty("MLjqui-window-header")); - this._content.addClass(this.toThemeProperty("MLjqui-window-content")); - this._header.addClass(this.toThemeProperty("MLjqui-widget-header")); - this._content.addClass(this.toThemeProperty("MLjqui-widget-content")); - this._header.addClass(this.toThemeProperty("MLjqui-disableselect")); - this._header.addClass(this.toThemeProperty("MLjqui-rc-t")); - this._content.addClass(this.toThemeProperty("MLjqui-rc-b")); - if (!this.host.attr("tabindex")) { - this.element.tabIndex = 0; - this.host.children().css("tab-index", 0) - } - this.host.attr("hideFocus", "true").css("outline", "none") - }, - _performHeaderLayout: function() { - this._handleHeaderButtons(); - this._header.css("position", "relative"); - if (this.rtl) { - this._headerContentWrapper.css("direction", "rtl"); - this._headerContentWrapper.css("float", "right") - } else { - this._headerContentWrapper.css("direction", "ltr"); - this._headerContentWrapper.css("float", "left") - } - this._performHeaderCloseButtonLayout(); - this._performHeaderCollapseButtonLayout(); - this._centerElement(this._headerContentWrapper, this._header, "y", "margin"); - if (this.headerHeight) { - this._centerElement(this._closeButtonWrapper, this._header, "y", "margin"); - this._centerElement(this._collapseButtonWrapper, this._header, "y", "margin") - } - }, - _handleHeaderButtons: function() { - if (!this._closeButtonWrapper) { - return - } - if (!this.showCloseButton) { - this._closeButtonWrapper.css("visibility", "hidden") - } else { - this._closeButtonWrapper.css("visibility", "visible"); - this._closeButtonWrapper.width(this.closeButtonSize); - this._closeButtonWrapper.height(this.closeButtonSize) - } - if (!this.showCollapseButton) { - this._collapseButtonWrapper.css("visibility", "hidden") - } else { - this._collapseButtonWrapper.css("visibility", "visible"); - this._collapseButtonWrapper.width(this.collapseButtonSize); - this._collapseButtonWrapper.height(this.collapseButtonSize) - } - }, - _performHeaderCloseButtonLayout: function() { - if (!this._closeButtonWrapper) { - return - } - var e = parseInt(this._header.css("padding-right"), 10); - if (!isNaN(e)) { - this._closeButtonWrapper.width(this._closeButton.width()); - if (!this.rtl) { - this._closeButtonWrapper.css("margin-right", e); - this._closeButtonWrapper.css("margin-left", "0px") - } else { - this._closeButtonWrapper.css("margin-left", e); - this._closeButtonWrapper.css("margin-right", "0px") - } - } - if (!this.rtl) { - this._closeButtonWrapper.css({ - position: "absolute", - right: "0px", - left: "" - }) - } else { - this._closeButtonWrapper.css({ - position: "absolute", - left: "0px", - right: "" - }) - } - }, - _performHeaderCollapseButtonLayout: function() { - if (!this._closeButtonWrapper) { - return - } - var e = parseInt(this._header.css("padding-right"), 10); - if (!isNaN(e)) { - this._collapseButtonWrapper.width(this.collapseButtonSize); - this._collapseButtonWrapper.height(this.collapseButtonSize); - if (!this.rtl) { - this._collapseButtonWrapper.css("margin-right", e); - this._collapseButtonWrapper.css("margin-left", "0px") - } else { - this._collapseButtonWrapper.css("margin-left", e); - this._collapseButtonWrapper.css("margin-right", "0px") - } - } - if (!this.rtl) { - this._collapseButtonWrapper.css({ - position: "absolute", - right: (this.showCloseButton) ? this._closeButton.outerWidth(true) : 0, - left: "" - }) - } else { - this._collapseButtonWrapper.css({ - position: "absolute", - left: (this.showCloseButton) ? this._closeButton.outerWidth(true) : 0, - right: "" - }) - } - this._centerElement(this._collapseButton, this._collapseButton.parent(), "y") - }, - _performWidgetLayout: function() { - var e; - if (this.width !== "auto") { - this.host.css("width", this.width) - } - if (!this.collapsed) { - if (this.height !== "auto") { - this.host.height(this.height) - } else { - this.host.height(this.host.height()) - } - this.host.css("min-height", this.minHeight) - } - this._setChildrenLayout(); - e = this._validateMinSize(); - this.host.css({ - "max-height": this.maxHeight, - "min-width": this.minWidth, - "max-width": this.maxWidth - }); - if (!e) { - this._setChildrenLayout() - } - }, - _setChildrenLayout: function() { - this._header.width(this.host.width() - (this._header.outerWidth(true) - this._header.width())); - this._content.width(this.host.width() - (this._content.outerWidth(true) - this._content.width())); - this._content.height(this.host.height() - this._header.outerHeight(true) - (this._content.outerHeight(true) - this._content.height())) - }, - _validateMinSize: function() { - var f = true; - if (this.minHeight < this._header.height()) { - this.minHeight = this._header.height(); - f = false - } - var h = this._header.children(0).outerWidth(true), - e = this._header.children(1).outerWidth(true), - g = h + e; - if (this.minWidth < 100) { - this.minWidth = Math.min(g, 100); - f = false - } - return f - }, - _centerElement: function(h, f, e, g) { - if (typeof f.left === "number" && typeof f.top === "number" && typeof f.height === "number" && typeof f.width === "number") { - this._centerElementInArea(h, f, e) - } else { - this._centerElementInParent(h, f, e, g) - } - }, - _centerElementInParent: function(e, m, h, f) { - h = h.toLowerCase(); - if (f) { - f += "-" - } else { - f = "" - } - if (h.indexOf("y") >= 0) { - var g = e.outerHeight(true), - k = m.height(), - i = (Math.max(0, k - g)) / 2; - e.css(f + "top", i + "px") - } - if (h.indexOf("x") >= 0) { - var o = e.outerWidth(true); - var n = m.width(); - var l = (Math.max(0, n - o)) / 2; - e.css(f + "left", l + "px") - } - }, - _centerElementInArea: function(f, e, h) { - h = h.toLowerCase(); - if (h.indexOf("y") >= 0) { - var g = f.outerHeight(true); - var k = e.height; - var i = (k - g) / 2; - f.css("top", i + e.top + "px") - } - if (h.indexOf("x") >= 0) { - var n = f.outerWidth(true); - var m = e.width; - var l = (m - n) / 2; - f.css("left", l + e.left + "px") - } - }, - _removeEventHandlers: function() { - this.removeHandler(this._header, this._getEvent("mousedown")); - this.removeHandler(this._header, this._getEvent("mousemove")); - this.removeHandler(this._header, "focus"); - this.removeHandler(a(document), this._getEvent("mousemove") + "." + this.host.attr("id")); - this.removeHandler(a(document), this._getEvent("mouseup") + "." + this.host.attr("id")); - this.removeHandler(this.host, "keydown"); - this.removeHandler(this.host, "keyup"); - this.removeHandler(this._closeButton, this._getEvent("click")); - this.removeHandler(this._closeButton, this._getEvent("mouseenter")); - this.removeHandler(this._closeButton, this._getEvent("mouseleave")); - this.removeHandler(this._collapseButton, this._getEvent("click")); - this.removeHandler(this._collapseButton, this._getEvent("mouseenter")); - this.removeHandler(this._collapseButton, this._getEvent("mouseleave")); - this.removeHandler(this.host, this._getEvent("mousedown")); - this.removeHandler(a(this.okButton), this._getEvent("click"), this._setDialogResultHandler); - this.removeHandler(a(this.cancelButton), this._getEvent("click"), this._setDialogResultHandler); - this.removeHandler(this._header, this._getEvent("mouseenter")); - this.removeHandler(this._header, this._getEvent("mouseleave")); - this.removeHandler(this.host, "resizing", this._windowResizeHandler) - }, - _removeFromArray: function(e, g) { - var f = this._indexOf(e, g); - if (f >= 0) { - return g.splice(this._indexOf(e, g), 1) - } else { - return g - } - }, - _sortByStyle: function(e, l) { - for (var h = 0; h < l.length; h++) { - for (var f = l.length - 1; f > h; f--) { - var m = l[f], - k = l[f - 1], - g; - if (parseInt(m.css(e), 10) < parseInt(k.css(e), 10)) { - g = m; - l[f] = k; - l[f - 1] = g - } - } - } - }, - _initializeResize: function() { - if (this.resizable) { - var e = this; - this.initResize({ - target: this.host, - alsoResize: e._content, - maxWidth: e.maxWidth, - minWidth: e.minWidth, - maxHeight: e.maxHeight, - minHeight: e.minHeight, - indicatorSize: 10, - resizeParent: e.dragArea - }) - } - }, - _removeResize: function() { - this.removeResize() - }, - _getEvent: function(e) { - if (this._isTouchDevice) { - return this._touchEvents[e] - } else { - return e - } - }, - _addEventHandlers: function() { - this._addDragDropHandlers(); - this._addCloseHandlers(); - this._addCollapseHandlers(); - this._addFocusHandlers(); - this._documentResizeHandlers(); - this._closeButtonHover(); - this._collapseButtonHover(); - this._addDialogButtonsHandlers(); - this._addHeaderHoverEffect(); - this._addResizeHandlers(); - var e = this; - this.addHandler(this._header, this._getEvent("mousemove"), function(f) { - e._addHeaderCursorHandlers(e) - }) - }, - _addResizeHandlers: function() { - var e = this; - this.addHandler(this.host, "resizing", this._windowResizeHandler, { - self: this - }) - }, - _windowResizeHandler: function(f) { - var e = f.data.self; - e._header.width(e.host.width() - (e._header.outerWidth(true) - e._header.width())); - e.width = f.args.width; - e.height = f.args.height - }, - _addHeaderHoverEffect: function() { - var e = this; - this.addHandler(this._header, this._getEvent("mouseenter"), function() { - a(this).addClass(e.toThemeProperty("MLjqui-window-header-hover")) - }); - this.addHandler(this._header, this._getEvent("mouseleave"), function() { - a(this).removeClass(e.toThemeProperty("MLjqui-window-header-hover")) - }) - }, - _addDialogButtonsHandlers: function() { - if (this.okButton) { - this.addHandler(a(this.okButton), this._getEvent("click"), this._setDialogResultHandler, { - self: this, - result: "ok" - }) - } - if (this.cancelButton) { - this.addHandler(a(this.cancelButton), this._getEvent("click"), this._setDialogResultHandler, { - self: this, - result: "cancel" - }) - } - }, - _documentResizeHandlers: function() { - var e = this; - if (this.isModal) { - this.addHandler(a(window), "resize.window" + this.element.id, function() { - if (typeof e._modalBackground === "object" && e._modalBackground !== null) { - if (e.isOpen()) { - e._modalBackground.hide() - } - if (!e.restricter) { - e._modalBackground.width(e._getDocumentSize().width); - e._modalBackground.height(e._getDocumentSize().height) - } else { - e._modalBackground.css("left", e.dragArea.left); - e._modalBackground.css("top", e.dragArea.top); - e._modalBackground.width(e.dragArea.width); - e._modalBackground.height(e.dragArea.height) - } - if (e.isOpen()) { - e._modalBackground.show() - } - } - }) - } - }, - _setDialogResultHandler: function(f) { - var e = f.data.self; - e._setDialogResult(f.data.result); - e.closeWindow(); - }, - _setDialogResult: function(e) { - this.dialogResult.OK = false; - this.dialogResult.None = false; - this.dialogResult.Cancel = false; - e = e.toLowerCase(); - switch (e) { - case "ok": - this.dialogResult.OK = true; - break; - case "cancel": - this.dialogResult.Cancel = true; - break; - default: - this.dialogResult.None = true - } - }, - _getDocumentSize: function() { - var e = a.MLjqui.browser.msie && a.MLjqui.browser.version < 9; - var f = e ? 4 : 0; - var g = f; - if (document.body.scrollHeight > document.body.clientHeight && e) { - f = this._SCROLL_WIDTH - } - if (document.body.scrollWidth > document.body.clientWidth && e) { - g = this._SCROLL_WIDTH - } - return { - width: a(document).width() - f, - height: a(document).height() - g - } - }, - _closeButtonHover: function() { - var e = this; - this.addHandler(this._closeButton, this._getEvent("mouseenter"), function() { - e._closeButton.addClass(e.toThemeProperty("MLjqui-window-close-button-hover")) - }); - this.addHandler(this._closeButton, this._getEvent("mouseleave"), function() { - e._closeButton.removeClass(e.toThemeProperty("MLjqui-window-close-button-hover")) - }) - }, - _collapseButtonHover: function() { - var e = this; - this.addHandler(this._collapseButton, this._getEvent("mouseenter"), function() { - e._collapseButton.addClass(e.toThemeProperty("MLjqui-window-collapse-button-hover")) - }); - this.addHandler(this._collapseButton, this._getEvent("mouseleave"), function() { - e._collapseButton.removeClass(e.toThemeProperty("MLjqui-window-collapse-button-hover")) - }) - }, - _setModalBackgroundStyles: function() { - if (this.isModal) { - this._modalBackground.fadeTo(0, this.modalOpacity); - this._modalBackground.css({ - position: "absolute", - top: "0px", - left: "0px", - width: this._getDocumentSize().width, - height: this._getDocumentSize().height, - "z-index": this.modalBackgroundZIndex - }); - if (!this.autoOpen) { - this._modalBackground.css("display", "none") - } - } - }, - _addFocusHandlers: function() { - var e = this; - this.addHandler(this.host, this._getEvent("mousedown"), function() { - if (!e.isModal) { - e.bringToFront() - } - }) - }, - _indexOf: function(f, g) { - for (var e = 0; e < g.length; e++) { - if (g[e][0] === f[0]) { - return e - } - } - return -1 - }, - _addCloseHandlers: function() { - var e = this; - this.addHandler(this._closeButton, this._getEvent("click"), function(f) { - return e._closeWindow(f) - }); - if (this.keyboardCloseKey !== "none") { - if (typeof this.keyboardCloseKey !== "number" && this.keyboardCloseKey.toLowerCase() === "esc") { - this.keyboardCloseKey = 27 - } - } - this.addHandler(this.host, "keydown", function(f) { - if (f.keyCode === e.keyboardCloseKey && e.keyboardCloseKey != null && e.keyboardCloseKey != "none") { - e._closeWindow(f) - } else { - e._handleKeys(f) - } - }, { - self: this - }); - this.addHandler(this.host, "keyup", function(f) { - if (!e.keyboardNavigation) { - return - } - if (e._moved) { - var i = e.host.coord(); - var h = i.left; - var g = i.top; - e._raiseEvent(3, h, g, h, g); - e._moved = false - } - }) - }, - _handleKeys: function(f) { - if (!this.keyboardNavigation) { - return - } - if (!this._headerFocused) { - return - } - if (a(document.activeElement).ischildof(this._content)) { - return - } - var e = f.ctrlKey; - var n = f.keyCode; - var l = this.host.coord(); - var k = l.left; - var m = l.top; - var g = this._getDraggingArea(); - var h = this.host.width(); - var o = this.host.height(); - var p = true; - var i = 10; - switch (n) { - case 37: - if (!e) { - if (this.draggable) { - if (k - i >= 0) { - this.move(k - i, m) - } - } - } else { - if (this.resizable) { - this.resize(h - i, o) - } - } - p = false; - break; - case 38: - if (!e) { - if (this.draggable) { - if (m - i >= 0) { - this.move(k, m - i) - } - } - } else { - if (this.resizable) { - this.resize(h, o - i) - } - } - p = false; - break; - case 39: - if (!e) { - if (this.draggable) { - if (k + h + i <= g.width) { - this.move(k + i, m) - } - } - } else { - if (this.resizable) { - this.resize(h + i, o) - } - } - p = false; - break; - case 40: - if (!e) { - if (this.draggable) { - if (m + o + i <= g.height) { - this.move(k, m + i) - } - } - } else { - if (this.resizable) { - this.resize(h, o + i) - } - } - p = false; - break - } - if (!p) { - if (f.preventDefault) { - f.preventDefault() - } - if (f.stopPropagation) { - f.stopPropagation() - } - } - return p - }, - _addCollapseHandlers: function() { - var e = this; - this.addHandler(this._collapseButton, this._getEvent("click"), function() { - if (!e.collapsed) { - e.collapse() - } else { - e.expand() - } - }) - }, - _closeWindow: function(e) { - this.closeWindow(); - return false - }, - _addHeaderCursorHandlers: function(e) { - if (e.resizeArea && e.resizable && !e.collapsed) { - e._header.css("cursor", e._resizeWrapper.css("cursor")); - return - } else { - if (e.draggable) { - e._header.css("cursor", "move"); - return - } - } - e._header.css("cursor", "default"); - if (e._resizeWrapper && e._resizeWrapper.length > 0) { - e._resizeWrapper.css("cursor", "default") - } - }, - _addDragDropHandlers: function() { - if (this.draggable) { - var e = this; - this.addHandler(this.host, "focus", function() { - e._headerFocused = true - }); - this.addHandler(this.host, "blur", function() { - e._headerFocused = false - }); - this.addHandler(this._header, "focus", function() { - e._headerFocused = true; - return false - }); - this.addHandler(this._header, this._getEvent("mousedown"), function(k, i, l) { - if (i) { - k.pageX = i - } - if (l) { - k.pageY = l - } - e._headerMouseDownHandler(e, k); - return true - }); - this.addHandler(this._header, "dragstart", function(i) { - if (i.preventDefault) { - i.preventDefault() - } - return false - }); - this.addHandler(this._header, this._getEvent("mousemove"), function(i) { - return e._headerMouseMoveHandler(e, i) - }); - this.addHandler(a(document), this._getEvent("mousemove") + "." + this.host.attr("id"), function(i) { - return e._dragHandler(e, i) - }); - this.addHandler(a(document), this._getEvent("mouseup") + "." + this.host.attr("id"), function(i) { - return e._dropHandler(e, i) - }); - try { - if (document.referrer != "" || window.frameElement) { - var h = null; - if (window.top != null && window.top != window.self) { - if (window.parent && document.referrer) { - h = document.referrer - } - } - if (h && h.indexOf(document.location.host) != -1) { - var g = function(i) { - e._dropHandler(e, i) - }; - if (window.top.document.addEventListener) { - window.top.document.addEventListener("mouseup", g, false) - } else { - if (window.top.document.attachEvent) { - window.top.document.attachEvent("onmouseup", g) - } - } - } - } - } catch (f) {} - } - }, - _headerMouseDownHandler: function(f, g) { - if (!f.isModal) { - f.bringToFront() - } - if (f._resizeDirection == null) { - var h = a.MLjqui.mobile.getTouches(g); - var i = h[0]; - var e = a.MLjqui.position(g); - f._mousePosition.x = e.left; - f._mousePosition.y = e.top; - f._mouseDown = true; - f._isDragging = false - } - }, - _headerMouseMoveHandler: function(f, i) { - if (f._mouseDown && !f._isDragging) { - var k = a.MLjqui.mobile.getTouches(i); - var l = k[0]; - var h = l.pageX, - g = l.pageY; - var e = a.MLjqui.position(i); - h = e.left; - g = e.top; - if ((h + 3 < f._mousePosition.x || h - 3 > f._mousePosition.x) || (g + 3 < f._mousePosition.y || g - 3 > f._mousePosition.y)) { - f._isDragging = true; - f._mousePosition = { - x: h, - y: g - }; - f._windowPosition = { - x: f.host.coord().left, - y: f.host.coord().top - }; - a(document.body).addClass(f.toThemeProperty("MLjqui-disableselect")) - } - if (f._isTouchDevice) { - i.preventDefault(); - return true - } - return false - } - if (f._isDragging) { - if (f._isTouchDevice) { - i.preventDefault(); - return true - } - return false - } - return true - }, - _dropHandler: function(g, k) { - var f = true; - if (g._isDragging && !g.isResizing && !g._resizeDirection) { - var e = parseInt(g.host.css("left"), 10), - l = parseInt(g.host.css("top"), 10), - i = (g._isTouchDevice) ? 0 : k.pageX, - h = (g._isTouchDevice) ? 0 : k.pageY; - g.enableResize = g._enableResizeBackup; - g._enableResizeBackup = "undefined"; - g._raiseEvent(3, e, l, i, h); - f = false; - if (k.preventDefault != "undefined") { - k.preventDefault() - } - if (k.originalEvent != null) { - k.originalEvent.mouseHandled = true - } - if (k.stopPropagation != "undefined") { - k.stopPropagation() - } - } - g._isDragging = false; - g._mouseDown = false; - a(document.body).removeClass(g.toThemeProperty("MLjqui-disableselect")); - return f - }, - _dragHandler: function(p, h) { - if (p._isDragging && !p.isResizing && !p._resizeDirection) { - var o = (p._isTouchDevice) ? h.originalEvent.which : h.which; - if (typeof p._enableResizeBackup === "undefined") { - p._enableResizeBackup = p.enableResize - } - p.enableResize = false; - if (o === 0 && a.MLjqui.browser.msie && a.MLjqui.browser.version < 8) { - return p._dropHandler(p, h) - } - var m = a.MLjqui.mobile.getTouches(h); - var l = m[0]; - var n = a.MLjqui.position(h); - var k = n.left, - i = n.top, - g = k - p._mousePosition.x, - f = i - p._mousePosition.y, - e = p._windowPosition.x + g, - q = p._windowPosition.y + f; - p.move(e, q, h); - h.preventDefault(); - return false - } - return true - }, - _validateCoordinates: function(e, l, i, k) { - var h = this._getDraggingArea(); - e = (e < h.left) ? h.left : e; - l = (l < h.top) ? h.top : l; - var f = this.host.outerWidth(true); - var g = this.host.outerHeight(true); - if (e + f >= h.width + h.left - 2 * k) { - e = h.width + h.left - f - k - } - if (l + g >= h.height + h.top - i) { - l = h.height + h.top - g - i - } - return { - x: e, - y: l - } - }, - _performLayout: function() { - this._performHeaderLayout(); - this._performWidgetLayout() - }, - _parseDragAreaAttributes: function() { - if (this.dragArea !== null) { - this.dragArea.height = parseInt(this.dragArea.height, 10); - this.dragArea.width = parseInt(this.dragArea.width, 10); - this.dragArea.top = parseInt(this.dragArea.top, 10); - this.dragArea.left = parseInt(this.dragArea.left, 10) - } - }, - _positionWindow: function() { - this._parseDragAreaAttributes(); - if (this.position instanceof Array && this.position.length === 2 && typeof this.position[0] === "number" && typeof this.position[1] === "number") { - this.host.css({ - left: this.position[0], - top: this.position[1] - }) - } else { - if (this.position instanceof Object) { - if (this.position.left) { - this.host.offset(this.position) - } else { - if (this.position.x !== undefined && this.position.y != undefined) { - this.host.css({ - left: this.position.x, - top: this.position.y - }) - } else { - if (this.position.center) { - this._centerElement(this.host, this.position.center, "xy"); - var g = this.position.center.coord(); - var f = parseInt(this.host.css("left")); - var e = parseInt(this.host.css("top")); - this.host.css({ - left: f + g.left, - top: e + g.top - }) - } - } - } - } else { - this._positionFromLiteral() - } - } - }, - _getDraggingArea: function() { - var e = {}; - e.left = ((this.dragArea && this.dragArea.left) ? this.dragArea.left : 0); - e.top = ((this.dragArea && this.dragArea.top) ? this.dragArea.top : 0); - e.width = ((this.dragArea && this.dragArea.width) ? this.dragArea.width : this._getDocumentSize().width); - e.height = ((this.dragArea && this.dragArea.height) ? this.dragArea.height : this._getDocumentSize().height); - return e - }, - _positionFromLiteral: function() { - if (!(this.position instanceof Array)) { - this.position = this.position.split(",") - } - var e = this.position.length, - f = this._getDraggingArea(); - while (e) { - e -= 1; - this.position[e] = this.position[e].replace(/ /g, ""); - switch (this.position[e]) { - case "top": - this.host.css("top", f.top); - break; - case "left": - this.host.css("left", f.left); - break; - case "bottom": - this.host.css("top", f.height - this.host.height() + f.top); - break; - case "right": - this.host.css("left", f.left + f.width - this.host.width()); - break; - default: - if (!this.dragArea) { - f = a(window) - } - this._centerElement(this.host, f, "xy"); - break - } - } - }, - _raiseEvent: function(g) { - var f = this._events[g], - h = a.Event(f), - e = {}; - if (g === 2 || g === 3) { - e.x = arguments[1]; - e.y = arguments[2]; - e.pageX = arguments[3]; - e.pageY = arguments[4] - } - if (f === "closed" || f === "close") { - e.dialogResult = this.dialogResult - } - h.args = e; - return this.host.trigger(h) - }, - destroy: function() { - this.removeHandler(a(window), "resize.window" + this.element.id); - this._removeEventHandlers(); - this._destroy() - }, - _destroy: function() { - if (this.restricter) { - this.removeHandler(a(window), "resize." + this.element.id); - this.removeHandler(a(window), "orientationchanged." + this.element.id); - this.removeHandler(a(window), "orientationchange." + this.element.id) - } - this.host.remove(); - if (this._modalBackground !== null) { - this._modalBackground.remove() - } - }, - _toClose: function(f, e) { - return ((f && e[0] === this.element) || (e[0] !== this.element && typeof e[0] === "object")) - }, - propertyChangedHandler: function(e, f, h, g) { - this._validateProperties(); - switch (f) { - case "rtl": - this._performLayout(); - break; - case "dragArea": - this._positionWindow(); - break; - case "collapseButtonSize": - this._performLayout(); - break; - case "closeButtonSize": - this._performLayout(); - break; - case "isModal": - this._refresh(); - this._fixWindowZIndex(); - break; - case "keyboardCloseKey": - this._removeEventHandlers(); - this._addEventHandlers(); - break; - case "disabled": - if (g) { - this.disable() - } else { - this.disabled = true; - this.enable() - } - break; - case "showCloseButton": - case "showCollapseButton": - this._performLayout(); - break; - case "height": - this._performLayout(); - break; - case "width": - this._performLayout(); - break; - case "title": - this.setTitle(g); - this.title = g; - break; - case "content": - this.setContent(g); - break; - case "draggable": - this._removeEventHandlers(); - this._addEventHandlers(); - this._removeResize(); - this._initializeResize(); - break; - case "resizable": - this.enableResize = g; - if (g) { - this._initializeResize() - } else { - this._removeResize() - } - break; - case "position": - this._positionWindow(); - break; - case "modalOpacity": - this._setModalBackgroundStyles(); - break; - case "okButton": - if (g) { - this._addDialogButtonsHandlers() - } else { - this.removeHandler(this.okButton) - } - break; - case "cancelButton": - if (g) { - this._addDialogButtonsHandlers() - } else { - this.removeHandler(this.cancelButton) - } - break; - case "collapsed": - if (g) { - if (!h) { - this.collapsed = false; - this.collapse(0) - } - } else { - if (h) { - this.collapsed = true; - this.expand(0) - } - } - case "theme": - a.MLjqui.utilities.setTheme(h, g, this.host); - break; - case "enableResize": - return; - case "maxWidth": - case "maxHeight": - case "minWidth": - case "minHeight": - e._performLayout(); - e._removeResize(); - e._initializeResize(); - return; - default: - return - } - }, - collapse: function(g) { - if (!this.collapsed && !this.host.is(":animated")) { - if (this.host.css("display") == "none") { - return - } - var e = this, - h = this._header.outerHeight(true), - i = parseInt(this._header.css("border-bottom-width"), 10), - f = parseInt(this._header.css("margin-bottom"), 10), - g = !isNaN(parseInt(g)) ? g : this.collapseAnimationDuration; - if (!isNaN(i)) { - h -= 2 * i - } - if (!isNaN(f)) { - h += f - } - this._heightBeforeCollapse = this.host.height(); - this._minHeightBeforeCollapse = this.host.css("min-height"); - this.host.css("min-height", h); - this.host.animate({ - height: h - }, g, function() { - e.collapsed = true; - e._collapseButton.addClass(e.toThemeProperty("MLjqui-window-collapse-button-collapsed")); - e._collapseButton.addClass(e.toThemeProperty("MLjqui-icon-arrow-down")); - e._content.css("display", "none"); - e._raiseEvent(5); - e._raiseEvent(9); - a.MLjqui.aria(e, "aria-expanded", false) - }) - } - }, - expand: function(f) { - if (this.collapsed && !this.host.is(":animated")) { - var e = this, - f = !isNaN(parseInt(f)) ? f : this.collapseAnimationDuration; - this.host.animate({ - height: this._heightBeforeCollapse - }, f, function() { - e.collapsed = false; - e.host.css("min-height", e._minHeightBeforeCollapse); - e._collapseButton.removeClass(e.toThemeProperty("MLjqui-window-collapse-button-collapsed")); - e._collapseButton.removeClass(e.toThemeProperty("MLjqui-icon-arrow-down")); - e._content.css("display", "block"); - e._raiseEvent(6); - e._performWidgetLayout(); - e._raiseEvent(9); - a.MLjqui.aria(e, "aria-expanded", true) - }) - } - }, - closeAll: function(h) { - var h = true; - var g = a.data(document.body, "MLjquiwindows-list"), - f = g.length, - e = a.data(document.body, "MLjquiwindow-modal") || []; - while (f) { - f -= 1; - if (this._toClose(h, g[f])) { - g[f].MLjquiWindow("closeWindow", "close"); - g.splice(f, 1) - } - } - if (this._toClose(h, e)) { - e.MLjquiWindow("closeWindow", "close"); - a.data(document.body, "MLjquiwindow-modal", []) - } - a.data(document.body, "MLjquiwindows-list", g) - }, - setTitle: function(e) { - a.MLjqui.utilities.html(this._headerContentWrapper, e); - this.title = e; - this._performLayout() - }, - setContent: function(f) { - this._contentInitialized = false; - var e = this._content, - g = false; - while (!g) { - e.css("height", "auto"); - e.css("width", "auto"); - if (e.is(".MLjqui-window")) { - g = true - } else { - e = e.parent() - } - } - a.MLjqui.utilities.html(this._content, f); - this._performLayout() - }, - disable: function() { - console.log("dddddddddddddddddddddddddddddddddddddd"); - this.disabled = true; - this._removeEventHandlers(); - this._header.addClass(this.toThemeProperty("MLjqui-window-header-disabled")); - this._closeButton.addClass(this.toThemeProperty("MLjqui-window-close-button-disabled")); - this._collapseButton.addClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")); - this._content.addClass(this.toThemeProperty("MLjqui-window-content-disabled")); - this.host.addClass(this.toThemeProperty("MLjqui-window-disabled")); - this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled")); - this._removeResize() - }, - enable: function() { - if (this.disabled) { - this._addEventHandlers(); - this._header.removeClass(this.toThemeProperty("MLjqui-window-header-disabled")); - this._content.removeClass(this.toThemeProperty("MLjqui-window-content-disabled")); - this._closeButton.removeClass(this.toThemeProperty("MLjqui-window-close-button-disabled")); - this._collapseButton.removeClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")); - this.host.removeClass(this.toThemeProperty("MLjqui-window-disabled")); - this.host.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled")); - this.disabled = false; - this._initializeResize() - } - }, - isOpen: function() { - return this._visible - }, - closeWindow: function(f) { - var e = this; - f = (typeof f === "undefined") ? this.closeButtonAction : f; - this.hide(function() { - if (f === "close") { - e._destroy(); - } - }) - }, - bringToFront: function() { - var f = a.data(document.body, "MLjquiwindows-list"); - if (this.isModal) { - f = a.data(document.body, "MLjquiwindows-modallist"); - this._fixWindowZIndex("modal-hide"); - this._fixWindowZIndex("modal-show"); - return - } - var l = f[f.length - 1], - k = parseInt(l.css("z-index"), 10), - g = this._indexOf(this.host, f); - for (var e = f.length - 1; e > g; e -= 1) { - var h = parseInt(f[e].css("z-index"), 10) - 1; - f[e].css("z-index", h) - } - this.host.css("z-index", k); - this._sortByStyle("z-index", f) - }, - hide: function(h, g, e) { - if (this.closing) { - var f = this.closing(); - if (f == false) { - return - } - } - g = g || this.closeAnimationDuration; - switch (this.animationType) { - case "none": - this.host.css("display", "none"); - break; - case "fade": - this.host.fadeOut(g, function() { - if (h instanceof Function) { - h() - } - }); - case "slide": - this.host.slideUp(g, function() { - if (h instanceof Function) { - h() - } - }); - case "combined": - this.host.hide(g, function() { - if (h instanceof Function) { - h() - } - }) - } - this._visible = false; - if (this.isModal) { - this._modalBackground.hide(); - this._fixWindowZIndex("modal-hide") - } - if (e !== true) { - this._raiseEvent(1); - this._raiseEvent(8) - } - }, - open: function(f, e) { - this.show(f, e) - }, - close: function(g, f, e) { - this.hide(g, f, e) - }, - show: function(h, g) { - this._setDialogResult("none"); - g = g || this.showAnimationDuration; - switch (this.animationType) { - case "none": - this.host.css("display", "block"); - break; - case "fade": - this.host.fadeIn(g, function() { - if (h instanceof Function) { - h() - } - }); - break; - case "slide": - this.host.slideDown(g, function() { - if (h instanceof Function) { - h() - } - }); - break; - case "combined": - this.host.show(g, function() { - if (h instanceof Function) { - h() - } - }); - break - } - if (this.isModal) { - this._modalBackground.show(); - this._fixWindowZIndex("modal-show") - } - var f = this; - if (!this._visible) { - if (g > 150 && this.animationType != "none") { - setTimeout(function() { - if (!f._contentInitialized) { - if (f.initContent) { - f.initContent(); - f._contentInitialized = true - } - } - f._raiseEvent(7); - f._raiseEvent(9) - }, g - 150) - } else { - if (!f._contentInitialized) { - if (f.initContent) { - f.initContent(); - f._contentInitialized = true - } - } - this._raiseEvent(7); - f._raiseEvent(9) - } - } - this._visible = true; - this._performLayout(); - if (this.autoFocus) { - var e = function() { - if (!f._isTouchDevice) { - f._content.focus() - } - }; - e(); - setTimeout(function() { - e() - }, 100) - } - }, - _getTabbables: function() { - var f = this._content.find("*"); - var e = new Array(); - a.each(f, function() { - if (d(this)) { - e[e.length] = this - } - }); - return e - }, - move: function(q, p, e, h) { - var g = 0, - f = 0, - n, k, i, q = parseInt(q, 10), - p = parseInt(p, 10); - if (a.MLjqui.browser.msie) { - if (a(window).width() > a(document).width() && !this.dragArea) { - f = this._SCROLL_WIDTH - } - if (a(window).height() < a(document).height() && document.documentElement.clientWidth > document.documentElement.scrollWidth && !this.dragArea) { - g = this._SCROLL_WIDTH - } - } - n = this._validateCoordinates(q, p, f, g); - if (parseInt(this.host.css("left"), 10) !== n.x || parseInt(this.host.css("top"), 10) !== n.y) { - if (e) { - var m = a.MLjqui.mobile.getTouches(e); - var l = m[0]; - var o = a.MLjqui.position(e); - k = o.left; - i = o.top - } - if (k == undefined) { - k = q - } - if (i == undefined) { - i = p - } - if (h !== false) { - this._raiseEvent(2, n.x, n.y, k, i) - } - } - this.element.style.left = n.x + "px"; - this.element.style.top = n.y + "px"; - this._moved = true - } - }); - - function c(g, e) { - var k = g.nodeName.toLowerCase(); - if ("area" === k) { - var i = g.parentNode, - h = i.name, - f; - if (!g.href || !h || i.nodeName.toLowerCase() !== "map") { - return false - } - f = a("img[usemap=#" + h + "]")[0]; - return !!f && b(f) - } - return (/input|select|textarea|button|object/.test(k) ? !g.disabled : "a" == k ? g.href || e : e) && b(g) - } - - function b(e) { - return !a(e).parents().andSelf().filter(function() { - return a.css(this, "visibility") === "hidden" || a.expr.filters.hidden(this) - }).length - } - - function d(g) { - var e = a.attr(g, "tabindex"), - f = isNaN(e); - return (f || e >= 0) && c(g, !f) - } -}(MLjquiBaseFramework)); -(function(b) { - var a = (function(c) { - return { - resizeConfig: function() { - this.resizeTarget = null; - this.resizeIndicatorSize = 5; - this.resizeTargetChildren = null; - this.isResizing = false; - this.resizeArea = false; - this.minWidth = 1; - this.maxWidth = 100; - this.minHeight = 1; - this.maxHeight = 100; - this.resizeParent = null; - this.enableResize = true; - this._cursorBackup; - this._resizeEvents = ["resizing", "resized", "resize"]; - this._resizeMouseDown = false; - this._resizeCurrentMode = null; - this._mouseResizePosition = {}; - this._resizeMethods = null; - this._SCROLL_WIDTH = 21 - }, - _resizeExceptions: { - invalidTarget: "Invalid target!", - invalidMinHeight: "Invalid minimal height!", - invalidMaxHeight: "Invalid maximum height!", - invalidMinWidth: "Invalid minimum width!", - invalidMaxWidth: "Invalid maximum width!", - invalidIndicatorSize: "Invalid indicator size!", - invalidSize: "Invalid size!" - }, - removeResize: function() { - if (this.resizeTarget) { - var f = c(this.resizeTarget.children(".MLjqui-resize")); - f.detach(); - var e = f.children(); - this._removeResizeEventListeners(); - for (var d = 0; d < e.length; d += 1) { - c(e[d]).detach(); - this.resizeTarget.append(e[d]) - } - f.remove() - } - }, - initResize: function(d) { - this.resizeConfig(); - this.resizeTarget = c(d.target); - this.resizeIndicatorSize = d.indicatorSize || 10; - this.maxWidth = d.maxWidth || 100; - this.minWidth = d.minWidth || 1; - this.maxHeight = d.maxHeight || 100; - this.minHeight = d.minHeight || 1; - this.resizeParent = d.resizeParent; - this._parseResizeParentProperties(); - this._validateResizeProperties(); - this._validateResizeTargetDimensions(); - this._getChildren(this.resizeTarget.maxWidth, this.resizeTarget.minWidth, this.resizeTarget.maxHeight, this.resizeTarget.minHeight, d.alsoResize); - this._refreshResize(); - this._cursorBackup = this.resizeTarget.css("cursor"); - if (this._cursorBackup === "auto") { - this._cursorBackup = "default" - } - }, - _validateResizeTargetDimensions: function() { - this.resizeTarget.maxWidth = this.maxWidth; - this.resizeTarget.minWidth = ((3 * this.resizeIndicatorSize > this.minWidth) ? 3 * this.resizeIndicatorSize : this.minWidth); - this.resizeTarget.maxHeight = this.maxHeight; - this.resizeTarget.minHeight = ((3 * this.resizeIndicatorSize > this.minHeight) ? 3 * this.resizeIndicatorSize : this.minHeight) - }, - _parseResizeParentProperties: function() { - if (this.resizeParent) { - this.resizeParent.left = parseInt(this.resizeParent.left, 10); - this.resizeParent.top = parseInt(this.resizeParent.top, 10); - this.resizeParent.width = parseInt(this.resizeParent.width, 10); - this.resizeParent.height = parseInt(this.resizeParent.height, 10) - } - }, - _getChildren: function(h, e, g, i, d) { - this.resizeTargetChildren = c(d); - this.resizeTargetChildren.toArray(); - var f = this.resizeTargetChildren.length; - while (f) { - f -= 1; - this.resizeTargetChildren[f] = c(this.resizeTargetChildren[f]) - } - }, - _refreshResize: function() { - this._renderResize(); - this._performResizeLayout(); - this._removeResizeEventListeners(); - this._addResizeEventHandlers() - }, - _renderResize: function() { - this.resizeTarget.wrapInner(c("
          ")); - this._resizeWrapper = this.resizeTarget.children(0); - this._resizeWrapper.addClass("MLjqui-resize"); - this._resizeWrapper.addClass("MLjqui-rc-all"); - this._resizeWrapper.css("z-index", 8000) - }, - _performResizeLayout: function() { - this._resizeWrapper.height(this.resizeTarget.height()); - this._resizeWrapper.width(this.resizeTarget.width()) - }, - _removeResizeEventListeners: function() { - var d = this.resizeTarget.attr("id"); - this.removeHandler(this._resizeWrapper, "mousemove.resize" + d); - this.removeHandler(this._resizeWrapper, "mousedown.resize" + d); - this.removeHandler(c(document), "mousemove.resize" + d); - this.removeHandler(c(document), "mouseup.resize" + d) - }, - _addResizeEventHandlers: function() { - var g = this.resizeTarget.attr("id"); - var d = this; - this.addHandler(this._resizeWrapper, "mousemove.resize." + g, function(h) { - d._resizeCursorChangeHandler(d, h) - }); - this.addHandler(this._resizeWrapper, "mousedown.resize." + g, function(h) { - d._resizeMouseDownHandler(d, h) - }); - this.addHandler(c(document), "mousemove.resize." + g, function(h) { - return d._resizeHandler(d, h) - }); - this.addHandler(c(document), "mouseup.resize." + g, function(h) { - d._stopResizing(d, h) - }); - try { - if (document.referrer != "" || window.frameElement) { - var f = function(h) { - d._stopResizing(d, h) - }; - if (window.top.document.addEventListener) { - window.top.document.addEventListener("mouseup", f, false) - } else { - if (window.top.document.attachEvent) { - window.top.document.attachEvent("onmouseup", f) - } - } - } - } catch (e) {} - }, - _stopResizing: function(d, e) { - if (d.enableResize) { - if (d.isResizing) { - d._raiseResizeEvent(1) - } - d._resizeMouseDown = false; - d.isResizing = false; - d._resizeDirection = null; - if (d.resizeTarget) { - d.resizeTarget.removeClass("MLjqui-disableselect") - } - } - if (d._cursorBackup == "undefined") { - d._cursorBackup = "default" - } - if (d._resizeWrapper) { - d._resizeWrapper.css("cursor", d._cursorBackup) - } - }, - _resizeHandler: function(d, e) { - if (d.enableResize && !d.collapsed) { - if (d.isResizing && d._resizeDirection) { - if (e.which === 0 && c.MLjqui.browser.msie && c.MLjqui.browser.version < 9) { - d._stopResizing(e) - } - d._performResize(e.pageX, e.pageY); - return false - } else { - return d._resizeCaptureCursor(e.pageX, e.pageY) - } - } - }, - _resizeCaptureCursor: function(e, d) { - if (this._resizeMouseDown && !this.isResizing && this._resizeDirection) { - if ((e + 3 < this._mouseResizePosition.x || e - 3 > this._mouseResizePosition.x) || (d + 3 < this._mouseResizePosition.y || d - 3 > this._mouseResizePosition.y)) { - this._changeCursor(e - parseInt(this.resizeTarget.css("left")), d - parseInt(this.resizeTarget.css("top"))); - this._mouseResizePosition = { - x: e, - y: d - }; - this._prepareResizeMethods(this._resizeDirection); - this._resizeBackupData(); - this.isResizing = true; - this.resizeTarget.addClass("MLjqui-disableselect"); - return false - } - } - }, - _resizeBackupData: function() { - this.resizeTarget.lastWidth = this.resizeTarget.width(); - this.resizeTarget.lastHeight = this.resizeTarget.height(); - this.resizeTarget.x = parseInt(this.resizeTarget.css("left"), 10); - this.resizeTarget.y = parseInt(this.resizeTarget.css("top"), 10); - this._resizeBackupChildrenSize() - }, - _resizeBackupChildrenSize: function() { - var d = this.resizeTargetChildren.length, - e; - while (d) { - d -= 1; - e = this.resizeTargetChildren[d]; - this.resizeTargetChildren[d].lastWidth = e.width(); - this.resizeTargetChildren[d].lastHeight = e.height() - } - }, - _performResize: function(g, f) { - var e = g - this._mouseResizePosition.x, - d = f - this._mouseResizePosition.y; - if (this._resizeDirection) { - this._resize(this.resizeTarget, e, d) - } - }, - _resizeCursorChangeHandler: function(d, e) { - if (d.enableResize && !d.collapsed) { - if (!d.isResizing) { - d._changeCursor(e.pageX - parseInt(d.resizeTarget.css("left")), e.pageY - parseInt(d.resizeTarget.css("top"))) - } - } - }, - _resizeMouseDownHandler: function(d, e) { - if (d.enableResize) { - if (d._resizeDirection !== null) { - d._resizeMouseDown = true; - d._mouseResizePosition.x = e.pageX; - d._mouseResizePosition.y = e.pageY; - e.preventDefault() - } - } - }, - _validateResizeProperties: function() { - try { - if (!this.resizeTarget || this.resizeTarget.length !== 1) { - throw new Error(this._resizeExceptions.invalidTarget) - } - if (this.minHeight < 0 || isNaN(parseInt(this.minHeight))) { - throw new Error(this._resizeExceptions.invalidMinHeight) - } - if (this.maxHeight <= 0 || isNaN(parseInt(this.maxHeight))) { - throw new Error(this._resizeExceptions.invalidMaxHeight) - } - if (this.minWidth < 0 || isNaN(parseInt(this.minWidth))) { - throw new Error(this._resizeExceptions.invalidMinWidth) - } - if (this.maxWidth < 0 || isNaN(parseInt(this.maxWidth))) { - throw new Error(this._resizeExceptions.invalidMaxWidth) - } - if (this.resizeIndicatorSize < 0 || isNaN(parseInt(this.resizeIndicatorSize))) { - throw new Error(this._resizeExceptions.invalidIndicatorSize) - } - if (this.minHeight > this.maxHeight || this.minWidth > this.maxWidth) { - throw new Error(this._resizeExceptions.invalidSize) - } - } catch (d) { - alert(d) - } - }, - _changeCursor: function(d, e) { - if (this.isResizing || this._resizeMouseDown) { - return - } - this.resizeArea = true; - if (d <= this.resizeIndicatorSize && d >= 0 && e <= this.resizeIndicatorSize && e > 0) { - this._resizeWrapper.css("cursor", "nw-resize"); - this._resizeDirection = "topleft" - } else { - if (e <= this.resizeIndicatorSize && e > 0 && d >= this.resizeTarget.width() - this.resizeIndicatorSize) { - this._resizeWrapper.css("cursor", "ne-resize"); - this._resizeDirection = "topright" - } else { - if (e >= this.resizeTarget.height() - this.resizeIndicatorSize && e < this.resizeTarget.height() && d <= this.resizeIndicatorSize && d >= 0) { - this._resizeWrapper.css("cursor", "sw-resize"); - this._resizeDirection = "bottomleft" - } else { - if (e >= this.resizeTarget.height() - this.resizeIndicatorSize && e < this.resizeTarget.height() && d >= this.resizeTarget.width() - this.resizeIndicatorSize && d < this.resizeTarget.width()) { - this._resizeWrapper.css("cursor", "se-resize"); - this._resizeDirection = "bottomright" - } else { - if (d <= this.resizeIndicatorSize && d >= 0) { - this._resizeWrapper.css("cursor", "e-resize"); - this._resizeDirection = "left" - } else { - if (e <= this.resizeIndicatorSize && e > 0) { - this._resizeWrapper.css("cursor", "n-resize"); - this._resizeDirection = "top" - } else { - if (e >= this.resizeTarget.height() - this.resizeIndicatorSize && e < this.resizeTarget.height()) { - this._resizeWrapper.css("cursor", "n-resize"); - this._resizeDirection = "bottom" - } else { - if (d >= this.resizeTarget.width() - this.resizeIndicatorSize && d < this.resizeTarget.width()) { - this._resizeWrapper.css("cursor", "e-resize"); - this._resizeDirection = "right" - } else { - this._resizeWrapper.css("cursor", this._cursorBackup); - this._resizeDirection = null; - this.resizeArea = false - } - } - } - } - } - } - } - } - }, - _prepareResizeMethods: function(d) { - this._resizeMethods = []; - if (d.indexOf("left") >= 0) { - this._resizeMethods.push(this._resizeLeft) - } - if (d.indexOf("top") >= 0) { - this._resizeMethods.push(this._resizeTop) - } - if (d.indexOf("right") >= 0) { - this._resizeMethods.push(this._resizeRight) - } - if (d.indexOf("bottom") >= 0) { - this._resizeMethods.push(this._resizeBottom) - } - }, - _validateResize: function(g, d, h, f, e) { - if (h === "horizontal" || h === "both") { - return this._validateWidth(g, f, e) - } else { - if (h === "vertical" || h === "both") { - return this._validateHeight(d, f, e) - } - } - return { - result: false, - fix: 0 - } - }, - _getParent: function() { - if (this.resizeParent !== null && this.resizeParent !== "undefined" && this.resizeParent.height && this.resizeParent.width && this.resizeParent.top && this.resizeParent.left) { - return this.resizeParent - } - return { - left: 0, - top: 0, - width: c(document).width(), - height: c(document).height() - } - }, - _validateHeight: function(f, k, i) { - var l = 0, - e = 2, - d = false, - h = f, - g = this._getParent(); - if (c(window).width() > c(document).width() && c.MLjqui.browser.msie && g.height === c(document).height()) { - l = this._SCROLL_WIDTH - } - if (i === "bottom" && (f + k.position().top + l + e > g.height + g.top)) { - return { - fix: g.height - k.position().top - l - e + g.top, - result: false - } - } - if (i === "top" && k.lastHeight - f + k.y < g.top) { - return { - fix: f + (k.lastHeight - f + k.y) - g.top, - result: false - } - } - if (f < k.minHeight) { - return { - fix: k.minHeight, - result: false - } - } - if (f > k.maxHeight) { - return { - fix: k.maxHeight, - result: false - } - } - return { - result: true, - fix: f - } - }, - _validateWidth: function(k, i, h) { - var l = 0, - e = 2, - d = false, - g = k, - f = this._getParent(); - if (c(window).height() < c(document).height() && c.MLjqui.browser.msie && document.documentElement.clientWidth >= document.documentElement.scrollWidth && f.width === c(document).width()) { - l = this._SCROLL_WIDTH - } - if (h === "right" && (k + i.position().left + l + e > f.width + f.left)) { - return { - fix: f.width - i.position().left - l - e + f.left, - result: false - } - } - if (h === "left" && (i.lastWidth - k + i.x < f.left)) { - return { - fix: k + (i.lastWidth - k + i.x) - f.left, - result: false - } - } - if (k < i.minWidth) { - return { - fix: i.minWidth, - result: false - } - } - if (k > i.maxWidth) { - return { - fix: i.maxWidth, - result: false - } - } - return { - result: true, - fix: k - } - }, - _resize: function(h, e, d) { - var l = this._resizeDirection; - var k = this._resizeMethods.length; - for (var g = 0; g < k; g++) { - if (this._resizeMethods[g] instanceof Function) { - var f = { - element: h, - x: e, - y: d, - self: this - }; - this._resizeMethods[g](f) - } - } - this._performResizeLayout() - }, - resize: function(g, d) { - if (this.resizable) { - var f = g - this.host.width(); - var e = d - this.host.height(); - var h = "right"; - if (e != 0) { - h = "bottom" - } - this._resizeDirection = h; - this._prepareResizeMethods(this._resizeDirection); - this._resizeBackupData(); - this.isResizing = true; - this._resize(this.resizeTarget, f, e); - this.isResizing = false - } - }, - _setResizeChildrenSize: function(e, f) { - var h = this.resizeTargetChildren.length; - while (h) { - h--; - if (f === "width") { - var g = this.resizeTargetChildren[h].lastWidth - (this.resizeTarget.lastWidth - e); - if (g < this.resizeTarget.maxWidth && g > 0) { - this.resizeTargetChildren[h].width(g) - } - } else { - var d = this.resizeTargetChildren[h].lastHeight - (this.resizeTarget.lastHeight - e); - if (d < this.resizeTarget.maxHeight && d > 0) { - this.resizeTargetChildren[h].height(d) - } - } - } - }, - _resizeRight: function(e) { - var f = e.element.lastWidth + e.x, - d = e.self._validateResize(f, 0, "horizontal", e.element, "right"); - if (!d.result) { - f = d.fix - } - if (e.element.width() !== f) { - e.self._setResizeChildrenSize(f, "width"); - e.element.width(f); - e.self._raiseResizeEvent(0) - } - return f - }, - _resizeLeft: function(f) { - var g = f.element.lastWidth - f.x, - e = f.self._validateResize(g, 0, "horizontal", f.element, "left"), - d = f.element.x + f.x; - if (!e.result) { - d = f.element.x + (f.element.lastWidth - e.fix); - g = e.fix; - return - } - if (f.element.width() !== g) { - f.self._setResizeChildrenSize(g, "width"); - f.element.width(g); - f.element.css("left", d); - f.self._raiseResizeEvent(0) - } - return g - }, - _resizeBottom: function(f) { - var e = f.element.lastHeight + f.y, - d = f.self._validateResize(0, e, "vertical", f.element, "bottom"); - if (!d.result) { - e = d.fix - } - if (f.element.height() !== e) { - f.self._setResizeChildrenSize(e, "height"); - f.element.height(e); - f.self._raiseResizeEvent(0) - } - return e - }, - _resizeTop: function(f) { - var e = f.element.lastHeight - f.y, - d = f.self._validateResize(0, e, "vertical", f.element, "top"), - g = f.element.y + f.y; - if (!d.result) { - g = f.element.y + (f.element.lastHeight - d.fix); - e = d.fix; - return - } - if (f.element.height() !== e) { - f.self._setResizeChildrenSize(e, "height"); - f.element.height(e); - f.element.css("top", g); - f.self._raiseResizeEvent(0) - } - return e - }, - _raiseResizeEvent: function(f) { - var e = this._resizeEvents[f], - g = c.Event(e), - d = {}; - d.width = parseInt(this.resizeTarget[0].style.width); - d.height = parseInt(this.resizeTarget[0].style.height); - g.args = d; - if (f == 0) { - var e = this._resizeEvents[2], - h = c.Event(e); - h.args = d; - this.resizeTarget.trigger(h) - } - return this.resizeTarget.trigger(g) - } - } - }(MLjquiBaseFramework)); - b.extend(b.MLjqui._MLjquiWindow.prototype, a) -}(MLjquiBaseFramework)); - -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ -(function(a){a.MLjqui.cssroundedcorners=function(b){var c={all:"MLjqui-rc-all",top:"MLjqui-rc-t",bottom:"MLjqui-rc-b",left:"MLjqui-rc-l",right:"MLjqui-rc-r","top-right":"MLjqui-rc-tr","top-left":"MLjqui-rc-tl","bottom-right":"MLjqui-rc-br","bottom-left":"MLjqui-rc-bl"};for(prop in c){if(!c.hasOwnProperty(prop)){continue}if(b==prop){return c[prop]}}};a.MLjqui.MLjquiWidget("MLjquiButton","",{});a.extend(a.MLjqui._MLjquiButton.prototype,{defineInstance:function(){var b={cursor:"arrow",roundedCorners:"all",disabled:false,height:null,width:null,overrideTheme:false,enableHover:true,enableDefault:true,enablePressed:true,imgPosition:"center",imgSrc:"",imgWidth:16,imgHeight:16,value:null,textPosition:"",textImageRelation:"overlay",rtl:false,_ariaDisabled:false,_scrollAreaButton:false,template:"default",aria:{"aria-disabled":{name:"disabled",type:"boolean"}}};a.extend(true,this,b);return b},_addImage:function(c){var g=this;if(g.element.nodeName.toLowerCase()=="input"||g.element.nodeName.toLowerCase()=="button"||g.element.nodeName.toLowerCase()=="div"){if(!g._img){g.field=g.element;if(g.field.className){g._className=g.field.className}var h={title:g.field.title};var i=null;if(g.field.getAttribute("value")){var i=g.field.getAttribute("value")}else{if(g.element.nodeName.toLowerCase()!="input"){var i=g.element.innerHTML}}if(g.value){i=g.value}if(g.field.id.length){h.id=g.field.id.replace(/[^\w]/g,"_")+"_"+c}else{h.id=a.MLjqui.utilities.createId()+"_"+c}var b=a("
          ",h);b[0].style.cssText=g.field.style.cssText;b.css("box-sizing","border-box");var f=a("");f[0].setAttribute("src",g.imgSrc);f[0].setAttribute("width",g.imgWidth);f[0].setAttribute("height",g.imgHeight);b.append(f);g._img=f;var j=a("");if(i){j.html(i);g.value=i}b.append(j);g._text=j;a(g.field).hide().after(b);var e=g.host.data();g.host=b;g.host.data(e);g.element=b[0];g.element.id=g.field.id;g.field.id=h.id;if(g._className){g.host.addClass(g._className);a(g.field).removeClass(g._className)}if(g.field.tabIndex){var d=g.field.tabIndex;g.field.tabIndex=-1;g.element.tabIndex=d}}else{g._img[0].setAttribute("src",g.imgSrc);g._img[0].setAttribute("width",g.imgWidth);g._img[0].setAttribute("height",g.imgHeight);g._text.html(g.value)}if(!g.imgSrc){g._img.hide()}else{g._img.show()}if(!g.value){g._text.hide()}else{g._text.show()}g._positionTextAndImage()}},_positionTextAndImage:function(){var k=this;var r=k.host.outerWidth();var q=k.host.outerHeight();var m=k.imgWidth;var v=k.imgHeight;if(k.imgSrc==""){m=0;v=0}var f=k._text.width();var b=k._text.height();var i=4;var c=4;var l=4;var n=0;var u=0;switch(k.textImageRelation){case"imageBeforeText":case"textBeforeImage":n=m+f+2*l+i+2*c;u=Math.max(v,b)+2*l+i+2*c;break;case"imageAboveText":case"textAboveImage":n=Math.max(m,f)+2*l;u=v+b+i+2*l+2*c;break;case"overlay":n=Math.max(m,f)+2*l;u=Math.max(v,b)+2*l;break}if(!k.width){k.host.width(n);r=n}if(!k.height){k.host.height(u);q=u}k._img.css("position","absolute");k._text.css("position","absolute");k.host.css("position","relative");k.host.css("overflow","hidden");var e={};var z={};var s=function(E,D,G,C,F){if(D.width=0)||b.value!=null){b.refresh();b._addImage("MLjquiButton")}if(!b._ariaDisabled){b.host.attr("role","button")}if(!b.overrideTheme){b.host.addClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(b.roundedCorners)));if(b.enableDefault){b.host.addClass(b.toThemeProperty("MLjqui-button"))}b.host.addClass(b.toThemeProperty("MLjqui-widget"))}b.isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(!b._ariaDisabled){a.MLjqui.aria(this)}if(b.cursor!="arrow"){if(!b.disabled){b.host.css({cursor:b.cursor})}else{b.host.css({cursor:"arrow"})}}var g="mouseenter mouseleave mousedown focus blur";if(b._scrollAreaButton){var g="mousedown"}if(b.isTouchDevice){b.addHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart"),function(h){b.isPressed=true;b.refresh()});b.addHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id,function(h){b.isPressed=false;b.refresh()})}b.addHandler(b.host,g,function(h){switch(h.type){case"mouseenter":if(!b.isTouchDevice){if(!b.disabled&&b.enableHover){b.isMouseOver=true;b.refresh()}}break;case"mouseleave":if(!b.isTouchDevice){if(!b.disabled&&b.enableHover){b.isMouseOver=false;b.refresh()}}break;case"mousedown":if(!b.disabled){b.isPressed=true;b.refresh()}break;case"focus":if(!b.disabled){b.isFocused=true;b.refresh()}break;case"blur":if(!b.disabled){b.isFocused=false;b.refresh()}break}});b.mouseupfunc=function(h){if(!b.disabled){if(b.isPressed||b.isMouseOver){b.isPressed=false;b.refresh()}}};b.addHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc);try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var f="";if(window.parent&&document.referrer){f=document.referrer}if(f.indexOf(document.location.host)!=-1){var e=function(h){b.isPressed=false;b.refresh()};if(window.top.document){b.addHandler(a(window.top.document),"mouseup",e)}}}}}catch(c){}b.propertyChangeMap.roundedCorners=function(h,j,i,k){h.host.removeClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(i)));h.host.addClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(k)))};b.propertyChangeMap.disabled=function(h,j,i,k){if(i!=k){h.refresh();h.host[0].disabled=k;h.host.attr("disabled",k);if(!k){h.host.css({cursor:h.cursor})}else{h.host.css({cursor:"default"})}a.MLjqui.aria(h,"aria-disabled",h.disabled)}};b.propertyChangeMap.rtl=function(h,j,i,k){if(i!=k){h.refresh()}};b.propertyChangeMap.template=function(h,j,i,k){if(i!=k){h.host.removeClass(h.toThemeProperty("MLjqui-"+i));h.refresh()}};b.propertyChangeMap.theme=function(h,j,i,k){h.host.removeClass();if(h.enableDefault){h.host.addClass(h.toThemeProperty("MLjqui-button"))}h.host.addClass(h.toThemeProperty("MLjqui-widget"));if(!h.overrideTheme){h.host.addClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(h.roundedCorners)))}h._oldCSSCurrent=null;h.refresh()};if(b.disabled){b.element.disabled=true;b.host.attr("disabled",true)}},resize:function(c,b){this.width=c;this.height=b;this._setSize()},val:function(){var c=this;var b=c.host.find("input");if(b.length>0){if(arguments.length==0||typeof(value)=="object"){return b.val()}b.val(value);c.refresh();return b.val()}if(arguments.length==0||typeof(value)=="object"){if(c.element.nodeName.toLowerCase()=="button"){return a(c.element).text()}return c.element.value}c.element.value=arguments[0];if(c.element.nodeName.toLowerCase()=="button"){a(c.element).text(arguments[0])}c.refresh()},_setSize:function(){var b=this;if(b.width!=null&&(b.width.toString().indexOf("px")!=-1||b.width.toString().indexOf("%")!=-1)){b.host.css("width",b.width)}else{if(b.width!=undefined&&!isNaN(b.width)){b.host.css("width",b.width)}}if(b.height!=null&&(b.height.toString().indexOf("px")!=-1||b.height.toString().indexOf("%")!=-1)){b.host.css("height",b.height)}else{if(b.height!=undefined&&!isNaN(b.height)){b.host.css("height",parseInt(b.height))}}},_removeHandlers:function(){var b=this;b.removeHandler(b.host,"selectstart");b.removeHandler(b.host,"click");b.removeHandler(b.host,"focus");b.removeHandler(b.host,"blur");b.removeHandler(b.host,"mouseenter");b.removeHandler(b.host,"mouseleave");b.removeHandler(b.host,"mousedown");b.removeHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc);if(b.isTouchDevice){b.removeHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart"));b.removeHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id)}b.mouseupfunc=null;delete b.mouseupfunc},focus:function(){this.host.focus()},destroy:function(){var b=this;b._removeHandlers();var c=a.data(b.element,"MLjquiButton");if(c){delete c.instance}b.host.removeClass();b.host.removeData();b.host.remove();delete b.set;delete b.get;delete b.call;delete b.element;delete b.host},render:function(){this.refresh()},propertiesChangedHandler:function(d,b,c){if(c&&c.width&&c.height&&Object.keys(c).length==2){d._setSize();d.refresh()}},propertyChangedHandler:function(b,c,e,d){if(this.isInitialized==undefined||this.isInitialized==false){return}if(d==e){return}if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}if(c=="textImageRelation"||c=="textPosition"||c=="imgPosition"){if(b._img){b._positionTextAndImage()}else{b._addImage("MLjquiButton")}}if(c=="imgSrc"||c=="imgWidth"||c=="imgHeight"||c=="value"){b._addImage("MLjquiButton")}if(c=="width"||c=="height"){b._setSize();b.refresh()}},refresh:function(){var c=this;if(c.overrideTheme){return}var e=c.toThemeProperty("MLjqui-fill-state-focus");var i=c.toThemeProperty("MLjqui-fill-state-disabled");var b=c.toThemeProperty("MLjqui-fill-state-normal");if(!c.enableDefault){b=""}var h=c.toThemeProperty("MLjqui-fill-state-hover");var f=c.toThemeProperty("MLjqui-fill-state-pressed");var g=c.toThemeProperty("MLjqui-fill-state-pressed");if(!c.enablePressed){f=""}var d="";if(!c.host){return}c.host[0].disabled=c.disabled;if(c.disabled){if(c._oldCSSCurrent){c.host.removeClass(c._oldCSSCurrent)}d=b+" "+i;if(c.template!=="default"&&c.template!==""){d+=" MLjqui-"+c.template;if(c.theme!=""){d+=" MLjqui-"+c.template+"-"+c.theme}}c.host.addClass(d);c._oldCSSCurrent=d;return}else{if(c.isMouseOver&&!c.isTouchDevice){if(c.isPressed){d=g}else{d=h}}else{if(c.isPressed){d=f}else{d=b}}}if(c.isFocused){d+=" "+e}if(c.template!=="default"&&c.template!==""){d+=" MLjqui-"+c.template;if(c.theme!=""){d+=" MLjqui-"+c.template+"-"+c.theme}}if(d!=c._oldCSSCurrent){if(c._oldCSSCurrent){c.host.removeClass(c._oldCSSCurrent)}c.host.addClass(d);c._oldCSSCurrent=d}if(c.rtl){c.host.addClass(c.toThemeProperty("MLjqui-rtl"));c.host.css("direction","rtl")}}});a.MLjqui.MLjquiWidget("MLjquiLinkButton","",{});a.extend(a.MLjqui._MLjquiLinkButton.prototype,{defineInstance:function(){this.disabled=false;this.height=null;this.width=null;this.rtl=false;this.href=null},createInstance:function(d){var c=this;this.host.onselectstart=function(){return false};this.host.attr("role","button");var b=this.height||this.host.height();var e=this.width||this.host.width();this.href=this.host.attr("href");this.target=this.host.attr("target");this.content=this.host.text();this.element.innerHTML="";this.host.append("");var f=this.host.find("input");f.addClass(this.toThemeProperty("MLjqui-reset"));f.width(e);f.height(b);f.val(this.content);this.host.find("tr").addClass(this.toThemeProperty("MLjqui-reset"));this.host.find("td").addClass(this.toThemeProperty("MLjqui-reset"));this.host.find("tbody").addClass(this.toThemeProperty("MLjqui-reset"));this.host.css("color","inherit");this.host.addClass(this.toThemeProperty("MLjqui-link"));f.css({width:e});f.css({height:b});var g=d==undefined?{}:d[0]||{};f.MLjquiButton(g);if(this.disabled){this.host[0].disabled=true}this.propertyChangeMap.disabled=function(h,j,i,k){h.host[0].disabled=k;h.host.find("input").MLjquiButton({disabled:k})};this.addHandler(f,"click",function(h){if(!this.disabled){c.onclick(h)}return false})},onclick:function(b){if(this.target!=null){window.open(this.href,this.target)}else{window.location=this.href}}});a.MLjqui.MLjquiWidget("MLjquiRepeatButton","MLjquiButton",{});a.extend(a.MLjqui._MLjquiRepeatButton.prototype,{defineInstance:function(){this.delay=50},createInstance:function(e){var c=this;var d=a.MLjqui.mobile.isTouchDevice();var b=!d?"mouseup."+this.base.element.id:"touchend."+this.base.element.id;var f=!d?"mousedown."+this.base.element.id:"touchstart."+this.base.element.id;this.addHandler(a(document),b,function(g){if(c.timeout!=null){clearTimeout(c.timeout);c.timeout=null;c.refresh()}if(c.timer!=undefined){clearInterval(c.timer);c.timer=null;c.refresh()}});this.addHandler(this.base.host,f,function(g){if(c.timer!=null){clearInterval(c.timer)}c.timeout=setTimeout(function(){clearInterval(c.timer);c.timer=setInterval(function(h){c.ontimer(h)},c.delay)},150)});this.mousemovefunc=function(g){if(!d){if(g.which==0){if(c.timer!=null){clearInterval(c.timer);c.timer=null}}}};this.addHandler(this.base.host,"mousemove",this.mousemovefunc)},destroy:function(){var c=a.MLjqui.mobile.isTouchDevice();var b=!c?"mouseup."+this.base.element.id:"touchend."+this.base.element.id;var e=!c?"mousedown."+this.base.element.id:"touchstart."+this.base.element.id;this.removeHandler(this.base.host,"mousemove",this.mousemovefunc);this.removeHandler(this.base.host,e);this.removeHandler(a(document),b);this.timer=null;delete this.mousemovefunc;delete this.timer;var d=a.data(this.base.element,"MLjquiRepeatButton");if(d){delete d.instance}a(this.base.element).removeData();this.base.destroy();delete this.base},stop:function(){clearInterval(this.timer);this.timer=null},ontimer:function(b){var b=new a.Event("click");if(this.base!=null&&this.base.host!=null){this.base.host.trigger(b)}}});a.MLjqui.MLjquiWidget("MLjquiToggleButton","MLjquiButton",{});a.extend(a.MLjqui._MLjquiToggleButton.prototype,{defineInstance:function(){this.toggled=false;this.uiToggle=true;this.aria={"aria-checked":{name:"toggled",type:"boolean"},"aria-disabled":{name:"disabled",type:"boolean"}}},createInstance:function(c){var b=this;b.base.overrideTheme=true;b.isTouchDevice=a.MLjqui.mobile.isTouchDevice();a.MLjqui.aria(this);b.propertyChangeMap.roundedCorners=function(d,f,e,g){d.base.host.removeClass(d.toThemeProperty(a.MLjqui.cssroundedcorners(e)));d.base.host.addClass(d.toThemeProperty(a.MLjqui.cssroundedcorners(g)))};b.propertyChangeMap.toggled=function(d,f,e,g){d.refresh()};b.propertyChangeMap.disabled=function(d,f,e,g){d.base.disabled=g;d.refresh()};b.addHandler(b.base.host,"click",function(d){if(!b.base.disabled&&b.uiToggle){b.toggle()}});if(!b.isTouchDevice){b.addHandler(b.base.host,"mouseenter",function(d){if(!b.base.disabled){b.refresh()}});b.addHandler(b.base.host,"mouseleave",function(d){if(!b.base.disabled){b.refresh()}})}b.addHandler(b.base.host,"mousedown",function(d){if(!b.base.disabled){b.refresh()}});b.addHandler(a(document),"mouseup.togglebutton"+b.base.element.id,function(d){if(!b.base.disabled){b.refresh()}})},destroy:function(){this._removeHandlers();this.base.destroy()},_removeHandlers:function(){this.removeHandler(this.base.host,"click");this.removeHandler(this.base.host,"mouseenter");this.removeHandler(this.base.host,"mouseleave");this.removeHandler(this.base.host,"mousedown");this.removeHandler(a(document),"mouseup.togglebutton"+this.base.element.id)},toggle:function(){this.toggled=!this.toggled;this.refresh();a.MLjqui.aria(this,"aria-checked",this.toggled)},unCheck:function(){this.toggled=false;this.refresh()},check:function(){this.toggled=true;this.refresh()},refresh:function(){var c=this;var h=c.base.toThemeProperty("MLjqui-fill-state-disabled");var b=c.base.toThemeProperty("MLjqui-fill-state-normal");if(!c.base.enableDefault){b=""}var g=c.base.toThemeProperty("MLjqui-fill-state-hover");var e=c.base.toThemeProperty("MLjqui-fill-state-pressed");var f=c.base.toThemeProperty("MLjqui-fill-state-pressed");var d="";c.base.host[0].disabled=c.base.disabled;if(c.base.disabled){d=b+" "+h;c.base.host.addClass(d);return}else{if(c.base.isMouseOver&&!c.isTouchDevice){if(c.base.isPressed||c.toggled){d=f}else{d=g}}else{if(c.base.isPressed||c.toggled){d=e}else{d=b}}}if(c.base.template!=="default"&&c.base.template!==""){d+=" MLjqui-"+c.base.template;if(c.base.theme!=""){d+=" MLjqui-"+c.template+"-"+c.base.theme}}if(c.base.host.hasClass(h)&&h!=d){c.base.host.removeClass(h)}if(c.base.host.hasClass(b)&&b!=d){c.base.host.removeClass(b)}if(c.base.host.hasClass(g)&&g!=d){c.base.host.removeClass(g)}if(c.base.host.hasClass(e)&&e!=d){c.base.host.removeClass(e)}if(c.base.host.hasClass(f)&&f!=d){c.base.host.removeClass(f)}if(!c.base.host.hasClass(d)){c.base.host.addClass(d)}}})})(MLjquiBaseFramework); - - -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ -(function(a){a.MLjqui.MLjquiWidget("MLjquiScrollBar","",{});a.extend(a.MLjqui._MLjquiScrollBar.prototype,{defineInstance:function(){var b={height:null,width:null,vertical:false,min:0,max:1000,value:0,step:10,largestep:50,thumbMinSize:10,thumbSize:0,thumbStep:"auto",roundedCorners:"all",showButtons:true,disabled:false,touchMode:"auto",touchModeStyle:"auto",thumbTouchSize:0,_triggervaluechanged:true,rtl:false,areaDownCapture:false,areaUpCapture:false,_initialLayout:false,offset:0,reference:0,velocity:0,frame:0,timestamp:0,ticker:null,amplitude:0,target:0};a.extend(true,this,b);return b},createInstance:function(b){this.render()},render:function(){this._mouseup=new Date();var c=this;var d="
          ";if(a.MLjqui.utilities&&a.MLjqui.utilities.scrollBarButtonsVisibility=="hidden"){this.showButtons=false}if(c.WinJS){MSApp.execUnsafeLocalFunction(function(){c.host.html(d)})}else{this.element.innerHTML=d}if(this.width!=undefined&&parseInt(this.width)>0){this.host.width(parseInt(this.width))}if(this.height!=undefined&&parseInt(this.height)>0){this.host.height(parseInt(this.height))}this.isPercentage=false;if(this.width!=null&&this.width.toString().indexOf("%")!=-1){this.host.width(this.width);this.isPercentage=true}if(this.height!=null&&this.height.toString().indexOf("%")!=-1){this.host.height(this.height);this.isPercentage=true}if(this.isPercentage){var e=this;a.MLjqui.utilities.resize(this.host,function(){e._arrange()},false)}this.thumbCapture=false;this.scrollOuterWrap=a(this.element.firstChild);this.scrollWrap=a(this.scrollOuterWrap[0].firstChild);this.btnUp=a(this.scrollWrap[0].firstChild);this.areaUp=a(this.btnUp[0].nextSibling);this.btnThumb=a(this.areaUp[0].nextSibling);this.arrowUp=a(this.btnUp[0].firstChild);this.areaDown=a(this.btnThumb[0].nextSibling);this.btnDown=a(this.areaDown[0].nextSibling);this.arrowDown=a(this.btnDown[0].firstChild);var b=this.element.id;this.btnUp[0].id="MLjquiScrollBtnUp"+b;this.btnDown[0].id="MLjquiScrollBtnDown"+b;this.btnThumb[0].id="MLjquiScrollThumb"+b;this.areaUp[0].id="MLjquiScrollAreaUp"+b;this.areaDown[0].id="MLjquiScrollAreaDown"+b;this.scrollWrap[0].id="MLjquiScrollWrap"+b;this.scrollOuterWrap[0].id="MLjquiScrollOuterWrap"+b;if(!this.host.MLjquiRepeatButton){throw new Error("MLjquiScrollBar: Missing reference to MLjquibuttons.js.");return}this.btnUp.MLjquiRepeatButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.btnDown.MLjquiRepeatButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.btnDownInstance=a.data(this.btnDown[0],"MLjquiRepeatButton").instance;this.btnUpInstance=a.data(this.btnUp[0],"MLjquiRepeatButton").instance;this.areaUp.MLjquiRepeatButton({_scrollAreaButton:true,_ariaDisabled:true,overrideTheme:true});this.areaDown.MLjquiRepeatButton({_scrollAreaButton:true,_ariaDisabled:true,overrideTheme:true});this.btnThumb.MLjquiButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.propertyChangeMap.value=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.setPosition(parseFloat(i),true)}}};this.propertyChangeMap.width=function(f,h,g,i){if(f.width!=undefined&&parseInt(f.width)>0){f.host.width(parseInt(f.width));f._arrange()}};this.propertyChangeMap.height=function(f,h,g,i){if(f.height!=undefined&&parseInt(f.height)>0){f.host.height(parseInt(f.height));f._arrange()}};this.propertyChangeMap.theme=function(f,h,g,i){f.setTheme()};this.propertyChangeMap.max=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.max=parseInt(i);if(f.min>f.max){f.max=f.min+1}f._arrange();f.setPosition(f.value)}}};this.propertyChangeMap.min=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.min=parseInt(i);if(f.min>f.max){f.max=f.min+1}f._arrange();f.setPosition(f.value)}}};this.propertyChangeMap.disabled=function(f,h,g,i){if(g!=i){if(i){f.host.addClass(f.toThemeProperty("MLjqui-fill-state-disabled"))}else{f.host.removeClass(f.toThemeProperty("MLjqui-fill-state-disabled"))}f.btnUp.MLjquiRepeatButton("disabled",f.disabled);f.btnDown.MLjquiRepeatButton("disabled",f.disabled);f.btnThumb.MLjquiButton("disabled",f.disabled)}};this.propertyChangeMap.touchMode=function(f,h,g,i){if(g!=i){f._updateTouchBehavior();if(i===true){f.showButtons=false;f.refresh()}else{if(i===false){f.showButtons=true;f.refresh()}}}};this.propertyChangeMap.rtl=function(f,h,g,i){if(g!=i){f.refresh()}};this.buttonUpCapture=false;this.buttonDownCapture=false;this._updateTouchBehavior();this.setPosition(this.value);this._addHandlers();this.setTheme()},resize:function(c,b){this.width=c;this.height=b;this._arrange()},_updateTouchBehavior:function(){this.isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(this.touchMode==true){if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9){this.setTheme();return}this.isTouchDevice=true;a.MLjqui.mobile.setMobileSimulator(this.btnThumb[0]);this._removeHandlers();this._addHandlers();this.setTheme()}else{if(this.touchMode==false){this.isTouchDevice=false}}},_addHandlers:function(){var j=this;var e=false;try{if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){e=true;this._touchSupport=true}}catch(f){}if(j.isTouchDevice||e){this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchend"),function(k){var l=j.vertical?j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");var m=j.toThemeProperty("MLjqui-fill-state-pressed");j.btnThumb.removeClass(l);j.btnThumb.removeClass(m);if(!j.disabled){j.handlemouseup(j,k)}return false});this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchstart"),function(k){if(!j.disabled){if(j.touchMode==true){k.clientX=k.originalEvent.clientX;k.clientY=k.originalEvent.clientY}else{var l=k;if(l.originalEvent.touches&&l.originalEvent.touches.length){k.clientX=l.originalEvent.touches[0].clientX;k.clientY=l.originalEvent.touches[0].clientY}else{k.clientX=k.originalEvent.clientX;k.clientY=k.originalEvent.clientY}}j.handlemousedown(k);if(k.preventDefault){k.preventDefault()}}});a.MLjqui.mobile.touchScroll(this.element,j.max,function(q,p,l,k,m){if(j.host.css("visibility")=="visible"){if(j.touchMode==true){m.clientX=m.originalEvent.clientX;m.clientY=m.originalEvent.clientY}else{var o=m;if(o.originalEvent.touches&&o.originalEvent.touches.length){m.clientX=o.originalEvent.touches[0].clientX;m.clientY=o.originalEvent.touches[0].clientY}else{m.clientX=m.originalEvent.clientX;m.clientY=m.originalEvent.clientY}}var n=j.vertical?j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");j.btnThumb.addClass(n);j.btnThumb.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.thumbCapture=true;j.handlemousemove(m)}},j.element.id,j.host,j.host)}if(!this.isTouchDevice){try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var b=null;if(window.parent&&document.referrer){b=document.referrer}if(b&&b.indexOf(document.location.host)!=-1){var g=function(k){if(!j.disabled){j.handlemouseup(j,k)}};if(window.top.document.addEventListener){window.top.document.addEventListener("mouseup",g,false)}else{if(window.top.document.attachEvent){window.top.document.attachEvent("onmouseup",g)}}}}}}catch(i){}var c="click mouseup mousedown";this.addHandler(this.btnDown,c,function(l){var k=j.step;if(Math.abs(j.max-j.min)<=k){k=1}if(j.rtl&&!j.vertical){k=-j.step}switch(l.type){case"click":if(j.buttonDownCapture&&!j.isTouchDevice){if(!j.disabled){j.setPosition(j.value+k)}}else{if(!j.disabled&&j.isTouchDevice){j.setPosition(j.value+k)}}break;case"mouseup":if(!j.btnDownInstance.base.disabled&&j.buttonDownCapture){j.buttonDownCapture=false;j.btnDown.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j.btnDown.removeClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j._removeArrowClasses("pressed","down");j.handlemouseup(j,l);j.setPosition(j.value+k);return false}break;case"mousedown":if(!j.btnDownInstance.base.disabled){j.buttonDownCapture=true;j.btnDown.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.btnDown.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j._addArrowClasses("pressed","down");return false}break}});this.addHandler(this.btnUp,c,function(l){var k=j.step;if(Math.abs(j.max-j.min)<=k){k=1}if(j.rtl&&!j.vertical){k=-j.step}switch(l.type){case"click":if(j.buttonUpCapture&&!j.isTouchDevice){if(!j.disabled){j.setPosition(j.value-k)}}else{if(!j.disabled&&j.isTouchDevice){j.setPosition(j.value-k)}}break;case"mouseup":if(!j.btnUpInstance.base.disabled&&j.buttonUpCapture){j.buttonUpCapture=false;j.btnUp.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j.btnUp.removeClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j._removeArrowClasses("pressed","up");j.handlemouseup(j,l);j.setPosition(j.value-k);return false}break;case"mousedown":if(!j.btnUpInstance.base.disabled){j.buttonUpCapture=true;j.btnUp.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.btnUp.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j._addArrowClasses("pressed","up");return false}break}})}var h="click";if(this.isTouchDevice){h=a.MLjqui.mobile.getTouchEventName("touchend")}this.addHandler(this.areaUp,h,function(l){if(!j.disabled){var k=j.largestep;if(j.rtl&&!j.vertical){k=-j.largestep}j.setPosition(j.value-k);return false}});this.addHandler(this.areaDown,h,function(l){if(!j.disabled){var k=j.largestep;if(j.rtl&&!j.vertical){k=-j.largestep}j.setPosition(j.value+k);return false}});this.addHandler(this.areaUp,"mousedown",function(k){if(!j.disabled){j.areaUpCapture=true;return false}});this.addHandler(this.areaDown,"mousedown",function(k){if(!j.disabled){j.areaDownCapture=true;return false}});this.addHandler(this.btnThumb,"mousedown dragstart",function(k){if(k.type==="dragstart"){return false}if(!j.disabled){j.handlemousedown(k)}if(k.preventDefault){k.preventDefault()}});this.addHandler(a(document),"mouseup."+this.element.id,function(k){if(!j.disabled){j.handlemouseup(j,k)}});if(!this.isTouchDevice){this.mousemoveFunc=function(k){if(!j.disabled){j.handlemousemove(k)}};this.addHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc);this.addHandler(a(document),"mouseleave."+this.element.id,function(k){if(!j.disabled){j.handlemouseleave(k)}});this.addHandler(a(document),"mouseenter."+this.element.id,function(k){if(!j.disabled){j.handlemouseenter(k)}});if(!j.disabled){this.addHandler(this.btnUp,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&!j.btnUpInstance.base.disabled&&j.touchMode!=true){j.btnUp.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnUp.addClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._addArrowClasses("hover","up")}}else{if(!j.disabled&&!j.btnUpInstance.base.disabled&&j.touchMode!=true){j.btnUp.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnUp.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._removeArrowClasses("hover","up")}}});var d=j.toThemeProperty("MLjqui-scrollbar-thumb-state-hover");if(!j.vertical){d=j.toThemeProperty("MLjqui-scrollbar-thumb-state-hover-horizontal")}this.addHandler(this.btnThumb,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&j.touchMode!=true){j.btnThumb.addClass(d);j.btnThumb.addClass(j.toThemeProperty("MLjqui-fill-state-hover"))}}else{if(!j.disabled&&j.touchMode!=true){j.btnThumb.removeClass(d);j.btnThumb.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"))}}});this.addHandler(this.btnDown,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&!j.btnDownInstance.base.disabled&&j.touchMode!=true){j.btnDown.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnDown.addClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._addArrowClasses("hover","down")}}else{if(!j.disabled&&!j.btnDownInstance.base.disabled&&j.touchMode!=true){j.btnDown.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnDown.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._removeArrowClasses("hover","down")}}})}}},destroy:function(){var b=this.btnUp;var f=this.btnDown;var d=this.btnThumb;var c=this.scrollWrap;var h=this.areaUp;var e=this.areaDown;this.arrowUp.remove();delete this.arrowUp;this.arrowDown.remove();delete this.arrowDown;e.removeClass();h.removeClass();f.removeClass();b.removeClass();d.removeClass();b.MLjquiRepeatButton("destroy");f.MLjquiRepeatButton("destroy");h.MLjquiRepeatButton("destroy");e.MLjquiRepeatButton("destroy");d.MLjquiButton("destroy");var g=a.data(this.element,"MLjquiScrollBar");this._removeHandlers();this.btnUp=null;this.btnDown=null;this.scrollWrap=null;this.areaUp=null;this.areaDown=null;this.scrollOuterWrap=null;delete this.mousemoveFunc;delete this.btnDownInstance;delete this.btnUpInstance;delete this.scrollOuterWrap;delete this.scrollWrap;delete this.btnDown;delete this.areaDown;delete this.areaUp;delete this.btnDown;delete this.btnUp;delete this.btnThumb;delete this.propertyChangeMap.value;delete this.propertyChangeMap.min;delete this.propertyChangeMap.max;delete this.propertyChangeMap.touchMode;delete this.propertyChangeMap.disabled;delete this.propertyChangeMap.theme;delete this.propertyChangeMap;if(g){delete g.instance}this.host.removeData();this.host.remove();delete this.host;delete this.set;delete this.get;delete this.call;delete this.element},_removeHandlers:function(){this.removeHandler(this.btnUp,"mouseenter");this.removeHandler(this.btnDown,"mouseenter");this.removeHandler(this.btnThumb,"mouseenter");this.removeHandler(this.btnUp,"mouseleave");this.removeHandler(this.btnDown,"mouseleave");this.removeHandler(this.btnThumb,"mouseleave");this.removeHandler(this.btnUp,"click");this.removeHandler(this.btnDown,"click");this.removeHandler(this.btnDown,"mouseup");this.removeHandler(this.btnUp,"mouseup");this.removeHandler(this.btnDown,"mousedown");this.removeHandler(this.btnUp,"mousedown");this.removeHandler(this.areaUp,"mousedown");this.removeHandler(this.areaDown,"mousedown");this.removeHandler(this.areaUp,"click");this.removeHandler(this.areaDown,"click");this.removeHandler(this.btnThumb,"mousedown");this.removeHandler(this.btnThumb,"dragstart");this.removeHandler(a(document),"mouseup."+this.element.id);if(!this.mousemoveFunc){this.removeHandler(a(document),"mousemove."+this.element.id)}else{this.removeHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc)}this.removeHandler(a(document),"mouseleave."+this.element.id);this.removeHandler(a(document),"mouseenter."+this.element.id);var b=this},_addArrowClasses:function(c,b){if(c=="pressed"){c="selected"}if(c!=""){c="-"+c}if(this.vertical){if(b=="up"||b==undefined){this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-up"+c))}if(b=="down"||b==undefined){this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"+c))}}else{if(b=="up"||b==undefined){this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"+c))}if(b=="down"||b==undefined){this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"+c))}}},_removeArrowClasses:function(c,b){if(c=="pressed"){c="selected"}if(c!=""){c="-"+c}if(this.vertical){if(b=="up"||b==undefined){this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-up"+c))}if(b=="down"||b==undefined){this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"+c))}}else{if(b=="up"||b==undefined){this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"+c))}if(b=="down"||b==undefined){this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"+c))}}},setTheme:function(){var o=this.btnUp;var m=this.btnDown;var p=this.btnThumb;var e=this.scrollWrap;var g=this.areaUp;var h=this.areaDown;var f=this.arrowUp;var i=this.arrowDown;this.scrollWrap[0].className=this.toThemeProperty("MLjqui-reset");this.scrollOuterWrap[0].className=this.toThemeProperty("MLjqui-reset");var k=this.toThemeProperty("MLjqui-reset");this.areaDown[0].className=k;this.areaUp[0].className=k;var d=this.toThemeProperty("MLjqui-scrollbar")+" "+this.toThemeProperty("MLjqui-widget")+" "+this.toThemeProperty("MLjqui-widget-content");this.host.addClass(d);if(this.isTouchDevice){this.host.addClass(this.toThemeProperty("MLjqui-scrollbar-mobile"))}m[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");o[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");var q="";if(this.vertical){f[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-up");i[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-down");q=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal")}else{f[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-left");i[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-right");q=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-horizontal")}q+=" "+this.toThemeProperty("MLjqui-fill-state-normal");p[0].className=q;if(this.disabled){e.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));e.removeClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"))}else{e.addClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}if(this.roundedCorners=="all"){this.host.addClass(this.toThemeProperty("MLjqui-rc-all"));if(this.vertical){var j=a.MLjqui.cssroundedcorners("top");j=this.toThemeProperty(j);o.addClass(j);var c=a.MLjqui.cssroundedcorners("bottom");c=this.toThemeProperty(c);m.addClass(c)}else{var n=a.MLjqui.cssroundedcorners("left");n=this.toThemeProperty(n);o.addClass(n);var l=a.MLjqui.cssroundedcorners("right");l=this.toThemeProperty(l);m.addClass(l)}}else{var b=a.MLjqui.cssroundedcorners(this.roundedCorners);b=this.toThemeProperty(b);elBtnUp.addClass(b);elBtnDown.addClass(b)}var b=a.MLjqui.cssroundedcorners(this.roundedCorners);b=this.toThemeProperty(b);if(!p.hasClass(b)){p.addClass(b)}if(this.isTouchDevice&&this.touchModeStyle!=false){this.showButtons=false;p.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-touch"))}},isScrolling:function(){if(this.thumbCapture==undefined||this.buttonDownCapture==undefined||this.buttonUpCapture==undefined||this.areaDownCapture==undefined||this.areaUpCapture==undefined){return false}return this.thumbCapture||this.buttonDownCapture||this.buttonUpCapture||this.areaDownCapture||this.areaUpCapture},track:function(){var d,b,e,c;d=Date.now();b=d-this.timestamp;this.timestamp=d;e=this.offset-this.frame;this.frame=this.offset;c=1000*e/(1+b);this.velocity=0.2*c+0.2*this.velocity},handlemousedown:function(e){if(this.thumbCapture==undefined||this.thumbCapture==false){this.thumbCapture=true;var c=this.btnThumb;if(c!=null){c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(this.vertical){c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"))}else{c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"))}}}var d=this;function b(f){d.reference=parseInt(d.btnThumb[0].style.top);d.offset=parseInt(d.btnThumb[0].style.top);if(!d.vertical){d.reference=parseInt(d.btnThumb[0].style.left);d.offset=parseInt(d.btnThumb[0].style.left)}d.velocity=d.amplitude=0;d.frame=d.offset;d.timestamp=Date.now();clearInterval(d.ticker);d.ticker=setInterval(function(){d.track()},100)}if(this.thumbCapture&&a.MLjqui.scrollAnimation){b(e)}this.dragStartX=e.clientX;this.dragStartY=e.clientY;this.dragStartValue=this.value},toggleHover:function(c,b){},refresh:function(){this._arrange()},_setElementPosition:function(c,b,d){if(!isNaN(b)){if(parseInt(c[0].style.left)!=parseInt(b)){c[0].style.left=b+"px"}}if(!isNaN(d)){if(parseInt(c[0].style.top)!=parseInt(d)){c[0].style.top=d+"px"}}},_setElementTopPosition:function(b,c){if(!isNaN(c)){b[0].style.top=c+"px"}},_setElementLeftPosition:function(c,b){if(!isNaN(b)){c[0].style.left=b+"px"}},handlemouseleave:function(e){var b=this.btnUp;var d=this.btnDown;if(this.buttonDownCapture||this.buttonUpCapture){b.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));d.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));this._removeArrowClasses("pressed")}if(this.thumbCapture!=true){return}var c=this.btnThumb;var f=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");c.removeClass(f);c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"))},handlemouseenter:function(e){var b=this.btnUp;var d=this.btnDown;if(this.buttonUpCapture){b.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));b.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._addArrowClasses("pressed","up")}if(this.buttonDownCapture){d.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));d.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._addArrowClasses("pressed","down")}if(this.thumbCapture!=true){return}var c=this.btnThumb;if(this.vertical){c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"))}else{c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"))}c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"))},handlemousemove:function(b){var i=this.btnUp;var e=this.btnDown;var d=0;if(e==null||i==null){return}if(i!=null&&e!=null&&this.buttonDownCapture!=undefined&&this.buttonUpCapture!=undefined){if(this.buttonDownCapture&&b.which==d){e.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed","down");this.buttonDownCapture=false}else{if(this.buttonUpCapture&&b.which==d){i.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed","up");this.buttonUpCapture=false}}}if(this.thumbCapture!=true){return false}var k=this.btnThumb;if(b.which==d&&!this.isTouchDevice&&!this._touchSupport){this.thumbCapture=false;this._arrange();var j=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");k.removeClass(j);k.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));return true}if(b.preventDefault!=undefined){b.preventDefault()}if(b.originalEvent!=null){b.originalEvent.mouseHandled=true}if(b.stopPropagation!=undefined){b.stopPropagation()}var l=0;try{if(!this.vertical){l=b.clientX-this.dragStartX}else{l=b.clientY-this.dragStartY}var f=this._btnAndThumbSize;if(!this._btnAndThumbSize){f=(this.vertical)?i.height()+e.height()+k.height():i.width()+e.width()+k.width()}var g=(this.max-this.min)/(this.scrollBarSize-f);if(this.thumbStep=="auto"){l*=g}else{l*=g;if(Math.abs(this.dragStartValue+l-this.value)>=parseInt(this.thumbStep)){var c=Math.round(parseInt(l)/this.thumbStep)*this.thumbStep;if(this.rtl&&!this.vertical){this.setPosition(this.dragStartValue-c)}else{this.setPosition(this.dragStartValue+c)}return false}else{return false}}var c=l;if(this.rtl&&!this.vertical){c=-l}this.setPosition(this.dragStartValue+c);this.offset=parseInt(k[0].style.left);if(this.vertical){this.offset=parseInt(k[0].style.top)}}catch(h){alert(h)}return false},handlemouseup:function(j,b){var g=false;if(this.thumbCapture){this.thumbCapture=false;var i=this.btnThumb;var h=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");i.removeClass(h);i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));g=true;this._mouseup=new Date();if(a.MLjqui.scrollAnimation){var d=this;function f(){var k,o;if(d.amplitude){k=Date.now()-d.timestamp;o=-d.amplitude*Math.exp(-k/325);if(o>0.5||o<-0.5){var l=(d.max-d.min)/(d.scrollBarSize-d._btnAndThumbSize);var n=l*(d.target+o);var m=n;if(d.rtl&&!d.vertical){m=-n}d.setPosition(d.dragStartValue+m);requestAnimationFrame(f)}else{var l=(d.max-d.min)/(d.scrollBarSize-d._btnAndThumbSize);var n=l*(d.target+o);var m=n;if(d.rtl&&!d.vertical){m=-n}d.setPosition(d.dragStartValue+m)}}}clearInterval(this.ticker);if(this.velocity>25||this.velocity<-25){this.amplitude=0.8*this.velocity;this.target=Math.round(this.offset+this.amplitude);if(!this.vertical){this.target-=this.reference}else{this.target-=this.reference}this.timestamp=Date.now();requestAnimationFrame(f)}}}this.areaDownCapture=this.areaUpCapture=false;if(this.buttonUpCapture||this.buttonDownCapture){var e=this.btnUp;var c=this.btnDown;this.buttonUpCapture=false;this.buttonDownCapture=false;e.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));c.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed");g=true;this._mouseup=new Date()}if(g){if(b.preventDefault!=undefined){b.preventDefault()}if(b.originalEvent!=null){b.originalEvent.mouseHandled=true}if(b.stopPropagation!=undefined){b.stopPropagation()}}},setPosition:function(b,g){var d=this.element;if(b==undefined||b==NaN){b=this.min}if(b>=this.max){b=this.max}if(b1){d=(c/(b+c)*c)}else{if(b==1){d=c-1}else{if(b==0){d=c}}}if(this.thumbSize>0){d=this.thumbSize}if(d=0){e[0].style.width=m-k-i+"px"}else{e[0].style.width="0px"}this._setElementLeftPosition(n,l);this._setElementLeftPosition(o,l+k);this._setElementLeftPosition(e,2+l+k+d)}},_arrange:function(){var m=this;if(m._initialLayout){m._initialLayout=false;return}if(m.min>m.max){var x=m.min;m.min=m.max;m.max=x}if(m.min<0){var k=m.max-m.min;m.min=0;m.max=k}var d=m.element;var g=m.areaUp;var t=m.areaDown;var c=m.btnUp;var l=m.btnDown;var u=m.btnThumb;var p=m.scrollWrap;var n=parseInt(m.element.style.height);var q=parseInt(m.element.style.width);if(m.isPercentage){var n=m.host.height();var q=m.host.width()}if(isNaN(n)){n=0}if(isNaN(q)){q=0}m._width=q;m._height=n;var b=(!m.vertical)?n:q;if(!m.showButtons){b=0}c[0].style.width=b+"px";c[0].style.height=b+"px";l[0].style.width=b+"px";l[0].style.height=b+"px";if(m.vertical){p[0].style.width=q+2+"px"}else{p[0].style.height=n+2+"px"}m._setElementPosition(c,0,0);var s=b+2;if(m.vertical){m._setElementPosition(l,0,n-s)}else{m._setElementPosition(l,q-s,0)}var f=(!m.vertical)?q:n;m.scrollBarSize=f;var h=m._getThumbSize(f-2*s);h=Math.floor(h-2);if(h0){g[0].style.width=w+"px"}if(n>0){g[0].style.height=n+"px"}var j=(f-w-e);if(j<0){j=0}t[0].style.width=j+"px";t[0].style.height=n+"px";var r=parseInt(m.element.style.width);if(m.isPercentage){r=m.host.width()}u[0].style.visibility="inherit";if((r-3*parseInt(b)<0)||(r",h);b[0].style.cssText=g.field.style.cssText;b.css("box-sizing","border-box");var f=a("");f[0].setAttribute("src",g.imgSrc);f[0].setAttribute("width",g.imgWidth);f[0].setAttribute("height",g.imgHeight);b.append(f);g._img=f;var j=a("");if(i){j.html(i);g.value=i}b.append(j);g._text=j;a(g.field).hide().after(b);var e=g.host.data();g.host=b;g.host.data(e);g.element=b[0];g.element.id=g.field.id;g.field.id=h.id;if(g._className){g.host.addClass(g._className);a(g.field).removeClass(g._className)}if(g.field.tabIndex){var d=g.field.tabIndex;g.field.tabIndex=-1;g.element.tabIndex=d}}else{g._img[0].setAttribute("src",g.imgSrc);g._img[0].setAttribute("width",g.imgWidth);g._img[0].setAttribute("height",g.imgHeight);g._text.html(g.value)}if(!g.imgSrc){g._img.hide()}else{g._img.show()}if(!g.value){g._text.hide()}else{g._text.show()}g._positionTextAndImage()}},_positionTextAndImage:function(){var k=this;var r=k.host.outerWidth();var q=k.host.outerHeight();var m=k.imgWidth;var v=k.imgHeight;if(k.imgSrc==""){m=0;v=0}var f=k._text.width();var b=k._text.height();var i=4;var c=4;var l=4;var n=0;var u=0;switch(k.textImageRelation){case"imageBeforeText":case"textBeforeImage":n=m+f+2*l+i+2*c;u=Math.max(v,b)+2*l+i+2*c;break;case"imageAboveText":case"textAboveImage":n=Math.max(m,f)+2*l;u=v+b+i+2*l+2*c;break;case"overlay":n=Math.max(m,f)+2*l;u=Math.max(v,b)+2*l;break}if(!k.width){k.host.width(n);r=n}if(!k.height){k.host.height(u);q=u}k._img.css("position","absolute");k._text.css("position","absolute");k.host.css("position","relative");k.host.css("overflow","hidden");var e={};var z={};var s=function(E,D,G,C,F){if(D.width=0)||b.value!=null){b.refresh();b._addImage("MLjquiButton")}if(!b._ariaDisabled){b.host.attr("role","button")}if(!b.overrideTheme){b.host.addClass(b.toThemeProperty(a.MLjqui.cssroundedcorners(b.roundedCorners)));if(b.enableDefault){b.host.addClass(b.toThemeProperty("MLjqui-button"))}b.host.addClass(b.toThemeProperty("MLjqui-widget"))}b.isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(!b._ariaDisabled){a.MLjqui.aria(this)}if(b.cursor!="arrow"){if(!b.disabled){b.host.css({cursor:b.cursor})}else{b.host.css({cursor:"arrow"})}}var g="mouseenter mouseleave mousedown focus blur";if(b._scrollAreaButton){var g="mousedown"}if(b.isTouchDevice){b.addHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart"),function(h){b.isPressed=true;b.refresh()});b.addHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id,function(h){b.isPressed=false;b.refresh()})}b.addHandler(b.host,g,function(h){switch(h.type){case"mouseenter":if(!b.isTouchDevice){if(!b.disabled&&b.enableHover){b.isMouseOver=true;b.refresh()}}break;case"mouseleave":if(!b.isTouchDevice){if(!b.disabled&&b.enableHover){b.isMouseOver=false;b.refresh()}}break;case"mousedown":if(!b.disabled){b.isPressed=true;b.refresh()}break;case"focus":if(!b.disabled){b.isFocused=true;b.refresh()}break;case"blur":if(!b.disabled){b.isFocused=false;b.refresh()}break}});b.mouseupfunc=function(h){if(!b.disabled){if(b.isPressed||b.isMouseOver){b.isPressed=false;b.refresh()}}};b.addHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc);try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var f="";if(window.parent&&document.referrer){f=document.referrer}if(f.indexOf(document.location.host)!=-1){var e=function(h){b.isPressed=false;b.refresh()};if(window.top.document){b.addHandler(a(window.top.document),"mouseup",e)}}}}}catch(c){}b.propertyChangeMap.roundedCorners=function(h,j,i,k){h.host.removeClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(i)));h.host.addClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(k)))};b.propertyChangeMap.disabled=function(h,j,i,k){if(i!=k){h.refresh();h.host[0].disabled=k;h.host.attr("disabled",k);if(!k){h.host.css({cursor:h.cursor})}else{h.host.css({cursor:"default"})}a.MLjqui.aria(h,"aria-disabled",h.disabled)}};b.propertyChangeMap.rtl=function(h,j,i,k){if(i!=k){h.refresh()}};b.propertyChangeMap.template=function(h,j,i,k){if(i!=k){h.host.removeClass(h.toThemeProperty("MLjqui-"+i));h.refresh()}};b.propertyChangeMap.theme=function(h,j,i,k){h.host.removeClass();if(h.enableDefault){h.host.addClass(h.toThemeProperty("MLjqui-button"))}h.host.addClass(h.toThemeProperty("MLjqui-widget"));if(!h.overrideTheme){h.host.addClass(h.toThemeProperty(a.MLjqui.cssroundedcorners(h.roundedCorners)))}h._oldCSSCurrent=null;h.refresh()};if(b.disabled){b.element.disabled=true;b.host.attr("disabled",true)}},resize:function(c,b){this.width=c;this.height=b;this._setSize()},val:function(){var c=this;var b=c.host.find("input");if(b.length>0){if(arguments.length==0||typeof(value)=="object"){return b.val()}b.val(value);c.refresh();return b.val()}if(arguments.length==0||typeof(value)=="object"){if(c.element.nodeName.toLowerCase()=="button"){return a(c.element).text()}return c.element.value}c.element.value=arguments[0];if(c.element.nodeName.toLowerCase()=="button"){a(c.element).text(arguments[0])}c.refresh()},_setSize:function(){var b=this;if(b.width!=null&&(b.width.toString().indexOf("px")!=-1||b.width.toString().indexOf("%")!=-1)){b.host.css("width",b.width)}else{if(b.width!=undefined&&!isNaN(b.width)){b.host.css("width",b.width)}}if(b.height!=null&&(b.height.toString().indexOf("px")!=-1||b.height.toString().indexOf("%")!=-1)){b.host.css("height",b.height)}else{if(b.height!=undefined&&!isNaN(b.height)){b.host.css("height",parseInt(b.height))}}},_removeHandlers:function(){var b=this;b.removeHandler(b.host,"selectstart");b.removeHandler(b.host,"click");b.removeHandler(b.host,"focus");b.removeHandler(b.host,"blur");b.removeHandler(b.host,"mouseenter");b.removeHandler(b.host,"mouseleave");b.removeHandler(b.host,"mousedown");b.removeHandler(a(document),"mouseup.button"+b.element.id,b.mouseupfunc);if(b.isTouchDevice){b.removeHandler(b.host,a.MLjqui.mobile.getTouchEventName("touchstart"));b.removeHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchend")+"."+b.element.id)}b.mouseupfunc=null;delete b.mouseupfunc},focus:function(){this.host.focus()},destroy:function(){var b=this;b._removeHandlers();var c=a.data(b.element,"MLjquiButton");if(c){delete c.instance}b.host.removeClass();b.host.removeData();b.host.remove();delete b.set;delete b.get;delete b.call;delete b.element;delete b.host},render:function(){this.refresh()},propertiesChangedHandler:function(d,b,c){if(c&&c.width&&c.height&&Object.keys(c).length==2){d._setSize();d.refresh()}},propertyChangedHandler:function(b,c,e,d){if(this.isInitialized==undefined||this.isInitialized==false){return}if(d==e){return}if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}if(c=="textImageRelation"||c=="textPosition"||c=="imgPosition"){if(b._img){b._positionTextAndImage()}else{b._addImage("MLjquiButton")}}if(c=="imgSrc"||c=="imgWidth"||c=="imgHeight"||c=="value"){b._addImage("MLjquiButton")}if(c=="width"||c=="height"){b._setSize();b.refresh()}},refresh:function(){var c=this;if(c.overrideTheme){return}var e=c.toThemeProperty("MLjqui-fill-state-focus");var i=c.toThemeProperty("MLjqui-fill-state-disabled");var b=c.toThemeProperty("MLjqui-fill-state-normal");if(!c.enableDefault){b=""}var h=c.toThemeProperty("MLjqui-fill-state-hover");var f=c.toThemeProperty("MLjqui-fill-state-pressed");var g=c.toThemeProperty("MLjqui-fill-state-pressed");if(!c.enablePressed){f=""}var d="";if(!c.host){return}c.host[0].disabled=c.disabled;if(c.disabled){if(c._oldCSSCurrent){c.host.removeClass(c._oldCSSCurrent)}d=b+" "+i;if(c.template!=="default"&&c.template!==""){d+=" MLjqui-"+c.template;if(c.theme!=""){d+=" MLjqui-"+c.template+"-"+c.theme}}c.host.addClass(d);c._oldCSSCurrent=d;return}else{if(c.isMouseOver&&!c.isTouchDevice){if(c.isPressed){d=g}else{d=h}}else{if(c.isPressed){d=f}else{d=b}}}if(c.isFocused){d+=" "+e}if(c.template!=="default"&&c.template!==""){d+=" MLjqui-"+c.template;if(c.theme!=""){d+=" MLjqui-"+c.template+"-"+c.theme}}if(d!=c._oldCSSCurrent){if(c._oldCSSCurrent){c.host.removeClass(c._oldCSSCurrent)}c.host.addClass(d);c._oldCSSCurrent=d}if(c.rtl){c.host.addClass(c.toThemeProperty("MLjqui-rtl"));c.host.css("direction","rtl")}}});a.MLjqui.MLjquiWidget("MLjquiLinkButton","",{});a.extend(a.MLjqui._MLjquiLinkButton.prototype,{defineInstance:function(){this.disabled=false;this.height=null;this.width=null;this.rtl=false;this.href=null},createInstance:function(d){var c=this;this.host.onselectstart=function(){return false};this.host.attr("role","button");var b=this.height||this.host.height();var e=this.width||this.host.width();this.href=this.host.attr("href");this.target=this.host.attr("target");this.content=this.host.text();this.element.innerHTML="";this.host.append("");var f=this.host.find("input");f.addClass(this.toThemeProperty("MLjqui-reset"));f.width(e);f.height(b);f.val(this.content);this.host.find("tr").addClass(this.toThemeProperty("MLjqui-reset"));this.host.find("td").addClass(this.toThemeProperty("MLjqui-reset"));this.host.find("tbody").addClass(this.toThemeProperty("MLjqui-reset"));this.host.css("color","inherit");this.host.addClass(this.toThemeProperty("MLjqui-link"));f.css({width:e});f.css({height:b});var g=d==undefined?{}:d[0]||{};f.MLjquiButton(g);if(this.disabled){this.host[0].disabled=true}this.propertyChangeMap.disabled=function(h,j,i,k){h.host[0].disabled=k;h.host.find("input").MLjquiButton({disabled:k})};this.addHandler(f,"click",function(h){if(!this.disabled){c.onclick(h)}return false})},onclick:function(b){if(this.target!=null){window.open(this.href,this.target)}else{window.location=this.href}}});a.MLjqui.MLjquiWidget("MLjquiRepeatButton","MLjquiButton",{});a.extend(a.MLjqui._MLjquiRepeatButton.prototype,{defineInstance:function(){this.delay=50},createInstance:function(e){var c=this;var d=a.MLjqui.mobile.isTouchDevice();var b=!d?"mouseup."+this.base.element.id:"touchend."+this.base.element.id;var f=!d?"mousedown."+this.base.element.id:"touchstart."+this.base.element.id;this.addHandler(a(document),b,function(g){if(c.timeout!=null){clearTimeout(c.timeout);c.timeout=null;c.refresh()}if(c.timer!=undefined){clearInterval(c.timer);c.timer=null;c.refresh()}});this.addHandler(this.base.host,f,function(g){if(c.timer!=null){clearInterval(c.timer)}c.timeout=setTimeout(function(){clearInterval(c.timer);c.timer=setInterval(function(h){c.ontimer(h)},c.delay)},150)});this.mousemovefunc=function(g){if(!d){if(g.which==0){if(c.timer!=null){clearInterval(c.timer);c.timer=null}}}};this.addHandler(this.base.host,"mousemove",this.mousemovefunc)},destroy:function(){var c=a.MLjqui.mobile.isTouchDevice();var b=!c?"mouseup."+this.base.element.id:"touchend."+this.base.element.id;var e=!c?"mousedown."+this.base.element.id:"touchstart."+this.base.element.id;this.removeHandler(this.base.host,"mousemove",this.mousemovefunc);this.removeHandler(this.base.host,e);this.removeHandler(a(document),b);this.timer=null;delete this.mousemovefunc;delete this.timer;var d=a.data(this.base.element,"MLjquiRepeatButton");if(d){delete d.instance}a(this.base.element).removeData();this.base.destroy();delete this.base},stop:function(){clearInterval(this.timer);this.timer=null},ontimer:function(b){var b=new a.Event("click");if(this.base!=null&&this.base.host!=null){this.base.host.trigger(b)}}});a.MLjqui.MLjquiWidget("MLjquiToggleButton","MLjquiButton",{});a.extend(a.MLjqui._MLjquiToggleButton.prototype,{defineInstance:function(){this.toggled=false;this.uiToggle=true;this.aria={"aria-checked":{name:"toggled",type:"boolean"},"aria-disabled":{name:"disabled",type:"boolean"}}},createInstance:function(c){var b=this;b.base.overrideTheme=true;b.isTouchDevice=a.MLjqui.mobile.isTouchDevice();a.MLjqui.aria(this);b.propertyChangeMap.roundedCorners=function(d,f,e,g){d.base.host.removeClass(d.toThemeProperty(a.MLjqui.cssroundedcorners(e)));d.base.host.addClass(d.toThemeProperty(a.MLjqui.cssroundedcorners(g)))};b.propertyChangeMap.toggled=function(d,f,e,g){d.refresh()};b.propertyChangeMap.disabled=function(d,f,e,g){d.base.disabled=g;d.refresh()};b.addHandler(b.base.host,"click",function(d){if(!b.base.disabled&&b.uiToggle){b.toggle()}});if(!b.isTouchDevice){b.addHandler(b.base.host,"mouseenter",function(d){if(!b.base.disabled){b.refresh()}});b.addHandler(b.base.host,"mouseleave",function(d){if(!b.base.disabled){b.refresh()}})}b.addHandler(b.base.host,"mousedown",function(d){if(!b.base.disabled){b.refresh()}});b.addHandler(a(document),"mouseup.togglebutton"+b.base.element.id,function(d){if(!b.base.disabled){b.refresh()}})},destroy:function(){this._removeHandlers();this.base.destroy()},_removeHandlers:function(){this.removeHandler(this.base.host,"click");this.removeHandler(this.base.host,"mouseenter");this.removeHandler(this.base.host,"mouseleave");this.removeHandler(this.base.host,"mousedown");this.removeHandler(a(document),"mouseup.togglebutton"+this.base.element.id)},toggle:function(){this.toggled=!this.toggled;this.refresh();a.MLjqui.aria(this,"aria-checked",this.toggled)},unCheck:function(){this.toggled=false;this.refresh()},check:function(){this.toggled=true;this.refresh()},refresh:function(){var c=this;var h=c.base.toThemeProperty("MLjqui-fill-state-disabled");var b=c.base.toThemeProperty("MLjqui-fill-state-normal");if(!c.base.enableDefault){b=""}var g=c.base.toThemeProperty("MLjqui-fill-state-hover");var e=c.base.toThemeProperty("MLjqui-fill-state-pressed");var f=c.base.toThemeProperty("MLjqui-fill-state-pressed");var d="";c.base.host[0].disabled=c.base.disabled;if(c.base.disabled){d=b+" "+h;c.base.host.addClass(d);return}else{if(c.base.isMouseOver&&!c.isTouchDevice){if(c.base.isPressed||c.toggled){d=f}else{d=g}}else{if(c.base.isPressed||c.toggled){d=e}else{d=b}}}if(c.base.template!=="default"&&c.base.template!==""){d+=" MLjqui-"+c.base.template;if(c.base.theme!=""){d+=" MLjqui-"+c.template+"-"+c.base.theme}}if(c.base.host.hasClass(h)&&h!=d){c.base.host.removeClass(h)}if(c.base.host.hasClass(b)&&b!=d){c.base.host.removeClass(b)}if(c.base.host.hasClass(g)&&g!=d){c.base.host.removeClass(g)}if(c.base.host.hasClass(e)&&e!=d){c.base.host.removeClass(e)}if(c.base.host.hasClass(f)&&f!=d){c.base.host.removeClass(f)}if(!c.base.host.hasClass(d)){c.base.host.addClass(d)}}})})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquicheckbox.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquicheckbox.js deleted file mode 100644 index 93bfa6c1..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquicheckbox.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.1 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a){a.MLjqui.MLjquiWidget("MLjquiCheckBox","",{});a.extend(a.MLjqui._MLjquiCheckBox.prototype,{defineInstance:function(){var b={animationShowDelay:300,animationHideDelay:300,width:null,height:null,boxSize:"13px",checked:false,hasThreeStates:false,disabled:false,enableContainerClick:true,locked:false,groupName:"",keyboardCheck:true,enableHover:true,hasInput:true,rtl:false,updated:null,disabledContainer:false,changeType:null,_canFocus:true,aria:{"aria-checked":{name:"checked",type:"boolean"},"aria-disabled":{name:"disabled",type:"boolean"}},events:["checked","unchecked","indeterminate","change"]};a.extend(true,this,b);return b},createInstance:function(b){var c=this;c._createFromInput("CheckBox");c.render()},_createFromInput:function(c){var j=this;if(j.element.nodeName.toLowerCase()=="input"){j.field=j.element;if(j.field.className){j._className=j.field.className}var l={title:j.field.title};if(j.field.value){l.value=j.field.value}if(j.field.checked){l.checked=true}if(j.field.id.length){l.id=j.field.id.replace(/[^\w]/g,"_")+"_"+c}else{l.id=a.MLjqui.utilities.createId()+"_"+c}var e=j.element.nextSibling;var h=false;if(e&&(e.nodeName=="#text"||e.nodeName=="span")){h=true}var k=0;var b=a("
          ",l);if(h){b.append(e);var i=a(""+a(e).text()+"");i.appendTo(a(document.body));k+=i.width();i.remove()}b[0].style.cssText=j.field.style.cssText;if(!j.width){j.width=a(j.field).width()+k+10}if(!j.height){j.height=a(j.field).outerHeight()+10}a(j.field).hide().after(b);var g=j.host.data();j.host=b;j.host.data(g);j.element=b[0];j.element.id=j.field.id;j.field.id=l.id;if(j._className){j.host.addClass(j._className);a(j.field).removeClass(j._className)}if(j.field.tabIndex){var d=j.field.tabIndex;j.field.tabIndex=-1;j.element.tabIndex=d}}},_addInput:function(){if(this.hasInput){if(this.input){this.input.remove()}var b=this.host.attr("name");this.input=a("");this.host.append(this.input);if(b){this.input.attr("name",b)}this.input.val(this.checked);this.host.attr("role","checkbox");a.MLjqui.aria(this)}},render:function(){this.init=true;var d=this;this.setSize();this.propertyChangeMap.width=function(h,j,i,k){d.setSize()};this.propertyChangeMap.height=function(h,j,i,k){d.setSize()};this._removeHandlers();if(!this.width){this.host.css("overflow-x","visible")}if(!this.height){this.host.css("overflow-y","visible")}if(this.checkbox){this.checkbox.remove();this.checkbox=null}if(this.checkMark){this.checkMark.remove();this.checkMark=null}if(this.box){this.box.remove();this.box=null}if(this.clear){this.clear.remove();this.clear=null}if(this.boxSize==null){this.boxSize=13}var g=parseInt(this.boxSize)+"px";var f="13px";var e=Math.floor((parseInt(this.boxSize)-13)/2);var b=e;e+="px";b+="px";if(this.boxSize!="13px"){this.checkbox=a('
          ')}else{this.checkbox=a('
          ')}this.host.prepend(this.checkbox);if(!this.disabledContainer){if(!this.host.attr("tabIndex")){this.host.attr("tabIndex",0)}this.clear=a('
          ');this.host.append(this.clear)}this.checkMark=a(this.checkbox[0].firstChild.firstChild);this.box=this.checkbox;this.box.addClass(this.toThemeProperty("MLjqui-checkbox-default")+" "+this.toThemeProperty("MLjqui-fill-state-normal")+" "+this.toThemeProperty("MLjqui-rc-all"));if(this.disabled){this.disable()}if(!this.disabledContainer){this.host.addClass(this.toThemeProperty("MLjqui-widget"));this.host.addClass(this.toThemeProperty("MLjqui-checkbox"))}if(this.locked&&!this.disabledContainer){this.host.css("cursor","auto")}var c=this.element.getAttribute("checked");if(c=="checked"||c=="true"||c==true){this.checked=true}this._addInput();this._render();this._addHandlers();this.init=false;this._centerBox()},_centerBox:function(){if(this.height&&this.height.toString().indexOf("%")==-1&&this.box){var b=parseInt(this.height);this.host.css("line-height",b+"px");var c=b-parseInt(this.boxSize)-1;c/=2;this.box.css("margin-top",parseInt(c))}},refresh:function(b){if(!b){this.setSize();this._render()}},resize:function(c,b){this.width=c;this.height=b;this.refresh()},setSize:function(){if(this.width!=null&&this.width.toString().indexOf("px")!=-1){this.host.width(this.width)}else{if(this.width!=undefined&&!isNaN(this.width)){this.host.width(this.width)}else{if(this.width!=null&&this.width.toString().indexOf("%")!=-1){this.element.style.width=this.width}}}if(this.height!=null&&this.height.toString().indexOf("px")!=-1){this.host.height(this.height)}else{if(this.height!=undefined&&!isNaN(this.height)){this.host.height(this.height)}else{if(this.height!=null&&this.height.toString().indexOf("%")!=-1){this.element.style.height=this.height}}}this._centerBox()},_addHandlers:function(){var d=this;var c=a.MLjqui.mobile.isTouchDevice();var b="mousedown";if(c){b=a.MLjqui.mobile.getTouchEventName("touchend")}this.addHandler(this.box,b,function(e){if(!d.disabled&&!d.enableContainerClick&&!d.locked){d.changeType="mouse";d.toggle();if(d.updated){e.owner=d;d.updated(e,d.checked,d.oldChecked)}if(e.preventDefault){e.preventDefault()}return false}});if(!this.disabledContainer){this.addHandler(this.host,"keydown",function(e){if(!d.disabled&&!d.locked&&d.keyboardCheck){if(e.keyCode==32){if(!d._canFocus){return true}d.changeType="keyboard";d.toggle();if(d.updated){e.owner=d;d.updated(e,d.checked,d.oldChecked)}if(e.preventDefault){e.preventDefault()}return false}}});this.addHandler(this.host,b,function(e){if(!d.disabled&&d.enableContainerClick&&!d.locked){d.changeType="mouse";d.toggle();if(e.preventDefault){e.preventDefault()}if(d._canFocus){d.focus()}return false}});this.addHandler(this.host,"selectstart",function(e){if(!d.disabled&&d.enableContainerClick){if(e.preventDefault){e.preventDefault()}return false}});this.addHandler(this.host,"mouseup",function(e){if(!d.disabled&&d.enableContainerClick){if(e.preventDefault){e.preventDefault()}}});this.addHandler(this.host,"focus",function(e){if(!d.disabled&&!d.locked){if(!d._canFocus){return true}if(d.enableHover){d.box.addClass(d.toThemeProperty("MLjqui-checkbox-hover"))}d.box.addClass(d.toThemeProperty("MLjqui-fill-state-focus"));if(e.preventDefault){e.preventDefault()}d.hovered=true;return false}});this.addHandler(this.host,"blur",function(e){if(!d.disabled&&!d.locked){if(!d._canFocus){return true}if(d.enableHover){d.box.removeClass(d.toThemeProperty("MLjqui-checkbox-hover"))}d.box.removeClass(d.toThemeProperty("MLjqui-fill-state-focus"));if(e.preventDefault){e.preventDefault()}d.hovered=false;return false}});this.addHandler(this.host,"mouseenter",function(e){if(d.locked){d.host.css("cursor","arrow")}if(d.enableHover){if(!d.disabled&&d.enableContainerClick&&!d.locked){d.box.addClass(d.toThemeProperty("MLjqui-checkbox-hover"));d.box.addClass(d.toThemeProperty("MLjqui-fill-state-hover"));if(e.preventDefault){e.preventDefault()}d.hovered=true;return false}}});this.addHandler(this.host,"mouseleave",function(e){if(d.enableHover){if(!d.disabled&&d.enableContainerClick&&!d.locked){d.box.removeClass(d.toThemeProperty("MLjqui-checkbox-hover"));d.box.removeClass(d.toThemeProperty("MLjqui-fill-state-hover"));if(e.preventDefault){e.preventDefault()}d.hovered=false;return false}}});this.addHandler(this.box,"mouseenter",function(){if(d.locked){return}if(!d.disabled&&!d.enableContainerClick){d.box.addClass(d.toThemeProperty("MLjqui-checkbox-hover"));d.box.addClass(d.toThemeProperty("MLjqui-fill-state-hover"))}});this.addHandler(this.box,"mouseleave",function(){if(!d.disabled&&!d.enableContainerClick){d.box.removeClass(d.toThemeProperty("MLjqui-checkbox-hover"));d.box.removeClass(d.toThemeProperty("MLjqui-fill-state-hover"))}})}},focus:function(){try{this.host.focus()}catch(b){}},_removeHandlers:function(){var c=a.MLjqui.mobile.isTouchDevice();var b="mousedown";if(c){b="touchend"}if(this.box){this.removeHandler(this.box,b);this.removeHandler(this.box,"mouseenter");this.removeHandler(this.box,"mouseleave")}this.removeHandler(this.host,b);this.removeHandler(this.host,"mouseup");this.removeHandler(this.host,"selectstart");this.removeHandler(this.host,"mouseenter");this.removeHandler(this.host,"mouseleave");this.removeHandler(this.host,"keydown");this.removeHandler(this.host,"blur");this.removeHandler(this.host,"focus")},_render:function(){if(!this.disabled){if(this.enableContainerClick){this.host.css("cursor","pointer")}else{if(!this.init){this.host.css("cursor","auto")}}}else{this.disable()}if(this.rtl){this.box.addClass(this.toThemeProperty("MLjqui-checkbox-rtl"));this.host.addClass(this.toThemeProperty("MLjqui-rtl"))}this.updateStates()},_setState:function(c,b){if(this.checked!=c){this.checked=c;if(this.checked){this.checkMark[0].className=this.toThemeProperty("MLjqui-checkbox-check-checked")}else{if(this.checked==null){this.checkMark[0].className=this.toThemeProperty("MLjqui-checkbox-check-indeterminate")}else{this.checkMark[0].className=""}}}if(b===false||b===true){this.locked=b}},val:function(b){if(arguments.length==0||(b!=null&&typeof(b)=="object")){return this.checked}if(typeof b=="string"){if(b=="true"){this.check()}if(b=="false"){this.uncheck()}if(b==""){this.indeterminate()}}else{if(b==true){this.check()}if(b==false){this.uncheck()}if(b==null){this.indeterminate()}}return this.checked},check:function(){this.checked=true;var b=this;this.checkMark.removeClass();if(a.MLjqui.browser.msie||this.animationShowDelay==0){this.checkMark.addClass(this.toThemeProperty("MLjqui-checkbox-check-checked"))}else{this.checkMark.addClass(this.toThemeProperty("MLjqui-checkbox-check-checked"));this.checkMark.css("opacity",0);this.checkMark.stop().animate({opacity:1},this.animationShowDelay,function(){})}if(this.groupName!=null&&this.groupName.length>0){var c=a.find(this.toThemeProperty(".MLjqui-checkbox",true));a.each(c,function(){var d=a(this).MLjquiCheckBox("groupName");if(d==b.groupName&&this!=b.element){a(this).MLjquiCheckBox("uncheck")}})}this._raiseEvent("0",true);this._raiseEvent("3",{checked:true});if(this.input!=undefined){this.input.val(this.checked);a.MLjqui.aria(this,"aria-checked",this.checked)}},uncheck:function(){this.checked=false;var b=this;if(a.MLjqui.browser.msie||this.animationHideDelay==0){if(b.checkMark[0].className!=""){b.checkMark[0].className=""}}else{this.checkMark.css("opacity",1);this.checkMark.stop().animate({opacity:0},this.animationHideDelay,function(){if(b.checkMark[0].className!=""){b.checkMark[0].className=""}})}this._raiseEvent("1");this._raiseEvent("3",{checked:false});if(this.input!=undefined){this.input.val(this.checked);a.MLjqui.aria(this,"aria-checked",this.checked)}},indeterminate:function(){this.checked=null;this.checkMark.removeClass();if(a.MLjqui.browser.msie||this.animationShowDelay==0){this.checkMark.addClass(this.toThemeProperty("MLjqui-checkbox-check-indeterminate"))}else{this.checkMark.addClass(this.toThemeProperty("MLjqui-checkbox-check-indeterminate"));this.checkMark.css("opacity",0);this.checkMark.stop().animate({opacity:1},this.animationShowDelay,function(){})}this._raiseEvent("2");this._raiseEvent("3",{checked:null});if(this.input!=undefined){this.input.val(this.checked);a.MLjqui.aria(this,"aria-checked","undefined")}},toggle:function(){if(this.disabled){return}if(this.locked){return}if(this.groupName!=null&&this.groupName.length>0){if(this.checked!=true){this.checked=true;this.updateStates()}return}this.oldChecked=this.checked;if(this.checked==true){this.checked=this.hasThreeStates?null:false}else{this.checked=this.checked!=null}this.updateStates();if(this.input!=undefined){this.input.val(this.checked)}},updateStates:function(){if(this.checked){this.check()}else{if(this.checked==false){this.uncheck()}else{if(this.checked==null){this.indeterminate()}}}},disable:function(){this.disabled=true;if(this.checked==true){this.checkMark.addClass(this.toThemeProperty("MLjqui-checkbox-check-disabled"))}else{if(this.checked==null){this.checkMark.addClass(this.toThemeProperty("MLjqui-checkbox-check-indeterminate-disabled"))}}this.box.addClass(this.toThemeProperty("MLjqui-checkbox-disabled-box"));this.host.addClass(this.toThemeProperty("MLjqui-checkbox-disabled"));this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));this.box.addClass(this.toThemeProperty("MLjqui-checkbox-disabled"));a.MLjqui.aria(this,"aria-disabled",this.disabled)},enable:function(){if(this.checked==true){this.checkMark.removeClass(this.toThemeProperty("MLjqui-checkbox-check-disabled"))}else{if(this.checked==null){this.checkMark.removeClass(this.toThemeProperty("MLjqui-checkbox-check-indeterminate-disabled"))}}this.box.removeClass(this.toThemeProperty("MLjqui-checkbox-disabled-box"));this.host.removeClass(this.toThemeProperty("MLjqui-checkbox-disabled"));this.host.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"));this.box.removeClass(this.toThemeProperty("MLjqui-checkbox-disabled"));this.disabled=false;a.MLjqui.aria(this,"aria-disabled",this.disabled)},destroy:function(){this.host.remove()},_raiseEvent:function(g,e){if(this.init){return}var c=this.events[g];var f=new a.Event(c);f.owner=this;if(!e){e={}}e.type=this.changeType;this.changeType=null;f.args=e;try{var b=this.host.trigger(f)}catch(d){}return b},propertiesChangedHandler:function(b,c,d){if(d.width&&d.height&&Object.keys(d).length==2){b.setSize()}},propertyChangedHandler:function(b,c,e,d){if(this.isInitialized==undefined||this.isInitialized==false){return}if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}if(c=="enableContainerClick"&&!b.disabled&&!b.locked){if(d){b.host.css("cursor","pointer")}else{b.host.css("cursor","auto")}}if(c=="rtl"){if(d){b.box.addClass(b.toThemeProperty("MLjqui-checkbox-rtl"));b.host.addClass(b.toThemeProperty("MLjqui-rtl"))}else{b.box.removeClass(b.toThemeProperty("MLjqui-checkbox-rtl"));b.host.removeClass(b.toThemeProperty("MLjqui-rtl"))}}if(c=="boxSize"){b.render()}if(c=="theme"){a.MLjqui.utilities.setTheme(e,d,b.host)}if(c=="checked"){if(d!=e){switch(d){case true:b.check();break;case false:b.uncheck();break;case null:b.indeterminate();break}}}if(c=="disabled"){if(d!=e){if(d){b.disable()}else{b.enable()}}}}})})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquicore.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquicore.js deleted file mode 100644 index 52bdb085..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquicore.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -var MLjquiBaseFramework=window.minQuery||window.jQuery;(function(a){a.MLjqui=a.MLjqui||{};a.MLjqui.define=function(b,c,d){b[c]=function(){if(this.baseType){this.base=new b[this.baseType]();this.base.defineInstance()}this.defineInstance()};b[c].prototype.defineInstance=function(){};b[c].prototype.base=null;b[c].prototype.baseType=undefined;if(d&&b[d]){b[c].prototype.baseType=d}};a.MLjqui.invoke=function(e,d){if(d.length==0){return}var f=typeof(d)==Array||d.length>0?d[0]:d;var c=typeof(d)==Array||d.length>1?Array.prototype.slice.call(d,1):a({}).toArray();while(e[f]==undefined&&e.base!=null){if(e[f]!=undefined&&a.isFunction(e[f])){return e[f].apply(e,c)}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]!=undefined&&a.isFunction(e[b])){return e[b].apply(e,c)}}e=e.base}if(e[f]!=undefined&&a.isFunction(e[f])){return e[f].apply(e,c)}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]!=undefined&&a.isFunction(e[b])){return e[b].apply(e,c)}}return};a.MLjqui.hasProperty=function(c,b){if(typeof(b)=="object"){for(var e in b){var d=c;while(d){if(d.hasOwnProperty(e)){return true}if(d.hasOwnProperty(e.toLowerCase())){return true}d=d.base}return false}}else{while(c){if(c.hasOwnProperty(b)){return true}if(c.hasOwnProperty(b.toLowerCase())){return true}c=c.base}}return false};a.MLjqui.hasFunction=function(e,d){if(d.length==0){return false}if(e==undefined){return false}var f=typeof(d)==Array||d.length>0?d[0]:d;var c=typeof(d)==Array||d.length>1?Array.prototype.slice.call(d,1):{};while(e[f]==undefined&&e.base!=null){if(e[f]&&a.isFunction(e[f])){return true}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]&&a.isFunction(e[b])){return true}}e=e.base}if(e[f]&&a.isFunction(e[f])){return true}if(typeof f=="string"){var b=f.toLowerCase();if(e[b]&&a.isFunction(e[b])){return true}}return false};a.MLjqui.isPropertySetter=function(c,b){if(b.length==1&&typeof(b[0])=="object"){return true}if(b.length==2&&typeof(b[0])=="string"&&!a.MLjqui.hasFunction(c,b)){return true}return false};a.MLjqui.validatePropertySetter=function(f,d,b){if(!a.MLjqui.propertySetterValidation){return true}if(d.length==1&&typeof(d[0])=="object"){for(var e in d[0]){var g=f;while(!g.hasOwnProperty(e)&&g.base){g=g.base}if(!g||!g.hasOwnProperty(e)){if(!b){var c=g.hasOwnProperty(e.toString().toLowerCase());if(!c){throw"Invalid property: "+e}else{return true}}return false}}return true}if(d.length!=2){if(!b){throw"Invalid property: "+d.length>=0?d[0]:""}return false}while(!f.hasOwnProperty(d[0])&&f.base){f=f.base}if(!f||!f.hasOwnProperty(d[0])){if(!b){throw"Invalid property: "+d[0]}return false}return true};if(!Object.keys){Object.keys=(function(){var d=Object.prototype.hasOwnProperty,e=!({toString:null}).propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],b=c.length;return function(h){if(typeof h!=="object"&&(typeof h!=="function"||h===null)){throw new TypeError("Object.keys called on non-object")}var f=[],j,g;for(j in h){if(d.call(h,j)){f.push(j)}}if(e){for(g=0;g1){var f=!e.base?e.element:e.base.element;var b=a.data(f,e.widgetName).initArgs;if(b&&JSON&&JSON.stringify&&h[0]&&b[0]){try{if(JSON.stringify(h[0])==JSON.stringify(b[0])){var g=true;a.each(h[0],function(l,m){if(e[l]!=m){g=false;return false}});if(g){return}}}catch(d){}}e.batchUpdate=h[0];var j={};var k={};a.each(h[0],function(l,m){var n=e;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){if(e[l]!=m){j[l]=e[l];k[l]=m;c++}}else{if(n.hasOwnProperty(l.toLowerCase())){if(e[l.toLowerCase()]!=m){j[l.toLowerCase()]=e[l.toLowerCase()];k[l.toLowerCase()]=m;c++}}}});if(c<2){e.batchUpdate=null}}a.each(h[0],function(l,m){var n=e;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){a.MLjqui.setvalueraiseevent(n,l,m)}else{if(n.hasOwnProperty(l.toLowerCase())){a.MLjqui.setvalueraiseevent(n,l.toLowerCase(),m)}else{if(a.MLjqui.propertySetterValidation){throw"MLjquiCore: invalid property '"+l+"'"}}}});if(e.batchUpdate!=null){e.batchUpdate=null;if(e.propertiesChangedHandler&&c>1){e.propertiesChangedHandler(e,j,k)}}}else{if(h.length==2){while(!e.hasOwnProperty(h[0])&&e.base){e=e.base}if(e.hasOwnProperty(h[0])){a.MLjqui.setvalueraiseevent(e,h[0],h[1])}else{if(e.hasOwnProperty(h[0].toLowerCase())){a.MLjqui.setvalueraiseevent(e,h[0].toLowerCase(),h[1])}else{if(a.MLjqui.propertySetterValidation){throw"MLjquiCore: invalid property '"+h[0]+"'"}}}}}};a.MLjqui.setvalueraiseevent=function(c,d,e){var b=c[d];c[d]=e;if(!c.isInitialized){return}if(c.propertyChangedHandler!=undefined){c.propertyChangedHandler(c,d,b,e)}if(c.propertyChangeMap!=undefined&&c.propertyChangeMap[d]!=undefined){c.propertyChangeMap[d](c,d,b,e)}};a.MLjqui.get=function(e,d){if(d==undefined||d==null){return undefined}if(e.propertyMap){var c=e.propertyMap(d);if(c!=null){return c}}if(e.hasOwnProperty(d)){return e[d]}if(e.hasOwnProperty(d.toLowerCase())){return e[d.toLowerCase()]}var b=undefined;if(typeof(d)==Array){if(d.length!=1){return undefined}b=d[0]}else{if(typeof(d)=="string"){b=d}}while(!e.hasOwnProperty(b)&&e.base){e=e.base}if(e){return e[b]}return undefined};a.MLjqui.serialize=function(e){var b="";if(a.isArray(e)){b="[";for(var d=0;d0){b+=", "}b+=a.MLjqui.serialize(e[d])}b+="]"}else{if(typeof(e)=="object"){b="{";var c=0;for(var d in e){if(c++>0){b+=", "}b+=d+": "+a.MLjqui.serialize(e[d])}b+="}"}else{b=e.toString()}}return b};a.MLjqui.propertySetterValidation=true;a.MLjqui.MLjquiWidgetProxy=function(g,c,b){var d=a(c);var f=a.data(c,g);if(f==undefined){return undefined}var e=f.instance;if(a.MLjqui.hasFunction(e,b)){return a.MLjqui.invoke(e,b)}if(a.MLjqui.isPropertySetter(e,b)){if(a.MLjqui.validatePropertySetter(e,b)){a.MLjqui.set(e,b);return undefined}}else{if(typeof(b)=="object"&&b.length==0){return}else{if(typeof(b)=="object"&&b.length==1&&a.MLjqui.hasProperty(e,b[0])){return a.MLjqui.get(e,b[0])}else{if(typeof(b)=="string"&&a.MLjqui.hasProperty(e,b[0])){return a.MLjqui.get(e,b)}}}}throw"MLjquiCore: Invalid parameter '"+a.MLjqui.serialize(b)+"' does not exist.";return undefined};a.MLjqui.applyWidget=function(c,d,k,l){var g=false;try{g=window.MSApp!=undefined}catch(f){}var m=a(c);if(!l){l=new a.MLjqui["_"+d]()}else{l.host=m;l.element=c}if(c.id==""){c.id=a.MLjqui.utilities.createId()}var j={host:m,element:c,instance:l,initArgs:k};l.widgetName=d;a.data(c,d,j);a.data(c,"MLjquiWidget",j.instance);var h=new Array();var l=j.instance;while(l){l.isInitialized=false;h.push(l);l=l.base}h.reverse();h[0].theme=a.MLjqui.theme||"";a.MLjqui.MLjquiWidgetProxy(d,c,k);for(var b in h){l=h[b];if(b==0){l.host=m;l.element=c;l.WinJS=g}if(l!=undefined){if(l.definedInstance){l.definedInstance()}if(l.createInstance!=null){if(g){MSApp.execUnsafeLocalFunction(function(){l.createInstance(k)})}else{l.createInstance(k)}}}}for(var b in h){if(h[b]!=undefined){h[b].isInitialized=true}}if(g){MSApp.execUnsafeLocalFunction(function(){j.instance.refresh(true)})}else{j.instance.refresh(true)}};a.MLjqui.MLjquiWidget=function(b,c,f){var j=false;try{MLjquiArgs=Array.prototype.slice.call(f,0)}catch(h){MLjquiArgs=""}try{j=window.MSApp!=undefined}catch(h){}var g=b;var l="";if(c){l="_"+c}a.MLjqui.define(a.MLjqui,"_"+g,l);var k=new Array();if(!window[g]){var d=function(m){if(m==null){return""}var e=a.type(m);switch(e){case"string":case"number":case"date":case"boolean":case"bool":if(m===null){return""}return m.toString()}var n="";a.each(m,function(p){var r=this;if(p>0){n+=", "}n+="[";var o=0;if(a.type(r)=="object"){for(var q in r){if(o>0){n+=", "}n+="{"+q+":"+r[q]+"}";o++}}else{if(o>0){n+=", "}n+="{"+p+":"+r+"}";o++}n+="]"});return n};window[g]=function(e,r){var m=[];if(!r){r={}}m.push(r);var n=e;if(a.type(n)==="object"&&e[0]){n=e[0].id;if(n===""){n=e[0].id=a.MLjqui.utilities.createId()}}if(window.MLjquiWidgets&&window.MLjquiWidgets[n]){if(r){a.each(window.MLjquiWidgets[n],function(s){var t=a(this.element).data();if(t&&t.MLjquiWidget){a(this.element)[g](r)}})}if(window.MLjquiWidgets[n].length==1){var p=a(window.MLjquiWidgets[n][0].widgetInstance.element).data();if(p&&p.MLjquiWidget){return window.MLjquiWidgets[n][0]}}var p=a(window.MLjquiWidgets[n][0].widgetInstance.element).data();if(p&&p.MLjquiWidget){return window.MLjquiWidgets[n]}}var o=a(e);if(o.length===0){throw new Error("Invalid Selector - "+e+"! Please, check whether the used ID or CSS Class name is correct.")}var q=[];a.each(o,function(v){var x=o[v];var u=null;if(!k[g]){var y=x.id;x.id="";u=a(x).clone();x.id=y}a.MLjqui.applyWidget(x,g,m,undefined);if(!k[g]){var t=a.data(x,"MLjquiWidget");var w=u[g]().data().MLjquiWidget.defineInstance();var s=function(A){var z=a.data(A,"MLjquiWidget");this.widgetInstance=z;var B=a.extend(this,z);B.on=function(C,D){B.addHandler(B.host,C,D)};B.off=function(C){B.removeHandler(B.host,C)};return B};k[g]=s;a.each(w,function(A,z){Object.defineProperty(s.prototype,A,{get:function(){if(this.widgetInstance){return this.widgetInstance[A]}return z},set:function(C){if(this.widgetInstance&&this.widgetInstance[A]!=C){if(this.widgetInstance[A]!=C&&d(this.widgetInstance[A])!=d(C)){var B={};B[A]=C;this.widgetInstance.host[g](B);this.widgetInstance[A]=C}}}})})}var t=new k[g](x);q.push(t);if(!window.MLjquiWidgets){window.MLjquiWidgets=new Array()}if(!window.MLjquiWidgets[n]){window.MLjquiWidgets[n]=new Array()}window.MLjquiWidgets[n].push(t)});if(q.length===1){return q[0]}return q}}a.fn[g]=function(){var e=Array.prototype.slice.call(arguments,0);if(e.length==0||(e.length==1&&typeof(e[0])=="object")){if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}return this.each(function(){var p=a(this);var o=this;var q=a.data(o,g);if(q==null){a.MLjqui.applyWidget(o,g,e,undefined)}else{a.MLjqui.MLjquiWidgetProxy(g,this,e)}})}else{if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}var n=null;var m=0;this.each(function(){var o=a.MLjqui.MLjquiWidgetProxy(g,this,e);if(m==0){n=o;m++}else{if(m==1){var p=[];p.push(n);n=p}n.push(o)}})}return n};try{a.extend(a.MLjqui["_"+g].prototype,Array.prototype.slice.call(f,0)[0])}catch(h){}a.extend(a.MLjqui["_"+g].prototype,{toThemeProperty:function(e,m){return a.MLjqui.toThemeProperty(this,e,m)}});a.MLjqui["_"+g].prototype.refresh=function(){if(this.base){this.base.refresh(true)}};a.MLjqui["_"+g].prototype.createInstance=function(){};a.MLjqui["_"+g].prototype.applyTo=function(n,m){if(!(m instanceof Array)){var e=[];e.push(m);m=e}a.MLjqui.applyWidget(n,g,m,this)};a.MLjqui["_"+g].prototype.getInstance=function(){return this};a.MLjqui["_"+g].prototype.propertyChangeMap={};a.MLjqui["_"+g].prototype.addHandler=function(o,e,m,n){a.MLjqui.addHandler(o,e,m,n)};a.MLjqui["_"+g].prototype.removeHandler=function(n,e,m){a.MLjqui.removeHandler(n,e,m)}};a.MLjqui.toThemeProperty=function(c,d,h){if(c.theme==""){return d}var g=d.split(" ");var b="";for(var f=0;f0){b+=" "}var e=g[f];if(h!=null&&h){b+=e+"-"+c.theme}else{b+=e+" "+e+"-"+c.theme}}return b};a.MLjqui.addHandler=function(g,h,e,f){var c=h.split(" ");for(var b=0;b=0){if(f.length>0){b.push(h[c]);j.push(h[c].replace(f,g))}else{j.push(h[c].replace("-"+g,"")+"-"+g)}}}this._removeOldClasses(b,e);this._addNewClasses(j,e);for(var c=0;cH){return 1}}catch(L){var M=L}return 0};var w=function(I){if(k.hiddenWidgets.length>0){k.hiddenWidgets.sort(u);var H=function(){var K=false;var M=new Array();for(var L=0;L0){w(false)}k.hiddenWidgets=new Array();k.resizeHandlers.sort(u);for(var A=0;A=0){k.hiddenWidgets.splice(k.hiddenWidgets.indexOf(G),1)}}if(z.MLjquiWidget.element){var x=z.MLjquiWidget.element.className;if(x.indexOf("dropdownlist")>=0||x.indexOf("datetimeinput")>=0||x.indexOf("combobox")>=0||x.indexOf("menu")>=0){if(z.MLjquiWidget.isOpened){var y=z.MLjquiWidget.isOpened();if(y){if(D&&D=="resize"&&a.MLjqui.mobile.isTouchDevice()){continue}z.MLjquiWidget.close()}}}}}}}w()};if(!this.resizeHandlers){this.resizeHandlers=new Array();var n=a(window);if(n.on){this._resizeTimer=null;this._initResize=null;n.on("resize.MLjqui",function(t){if(k._resizeTimer!=undefined){clearTimeout(k._resizeTimer)}if(!k._initResize){k._initResize=true;m(null,"resize")}else{k._resizeTimer=setTimeout(function(){m(null,"resize")},a.MLjqui.resizeDelay)}});n.on("orientationchange.MLjqui",function(t){m(null,"orientationchange")});n.on("orientationchanged.MLjqui",function(t){m(null,"orientationchange")})}else{n.bind("resize.MLjqui",function(t){m(null,"orientationchange")});n.bind("orientationchange.MLjqui",function(t){m(null,"orientationchange")});n.bind("orientationchanged.MLjqui",function(t){m(null,"orientationchange")})}}var e=g.data();if(o){if(l===-1){this.resizeHandlers.push({id:g[0].id,widget:g,callback:s,data:e})}}try{var c=e.MLjquiWidget.width;var r=e.MLjquiWidget.height;if(e.MLjquiWidget.base){if(c==undefined){c=e.MLjquiWidget.base.width}if(r==undefined){r=e.MLjquiWidget.base.height}}if(c===undefined&&r===undefined){c=e.MLjquiWidget.element.style.width;r=e.MLjquiWidget.element.style.height}var j=false;if(c!=null&&c.toString().indexOf("%")!=-1){j=true}if(r!=null&&r.toString().indexOf("%")!=-1){j=true}if(j){if(!this.watchedElementData){this.watchedElementData=[]}var k=this;var f=function(t){if(k.watchedElementData.forEach){k.watchedElementData.forEach(function(u){if(u.element.offsetWidth!==u.offsetWidth||u.element.offsetHeight!==u.offsetHeight){u.offsetWidth=u.element.offsetWidth;u.offsetHeight=u.element.offsetHeight;if(u.timer){clearTimeout(u.timer)}u.timer=setTimeout(function(){if(!a.MLjqui.isHidden(a(u.element))){u.callback()}})}})}};k.watchedElementData.push({element:g[0],offsetWidth:g[0].offsetWidth,offsetHeight:g[0].offsetHeight,callback:s});if(!k.observer){k.observer=new MutationObserver(f);k.observer.observe(document.body,{attributes:true,childList:true,characterData:true})}}}catch(q){}if(a.MLjqui.isHidden(g)&&o===true){m(true)}a.MLjqui.resize=function(){m(null,"resize")}},html:function(c,d){if(!a(c).on){return a(c).html(d)}try{return a.access(c,function(s){var f=c[0]||{},m=0,j=c.length;if(s===undefined){return f.nodeType===1?f.innerHTML.replace(rinlinejQuery,""):undefined}var r=/<(?:script|style|link)/i,n="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",h=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,p=/<([\w:]+)/,g=/<(?:script|object|embed|option|style)/i,k=new RegExp("<(?:"+n+")[\\s/>]","i"),q=/^\s+/,t={option:[1,""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]};if(typeof s==="string"&&!r.test(s)&&(a.support.htmlSerialize||!k.test(s))&&(a.support.leadingWhitespace||!q.test(s))&&!t[(p.exec(s)||["",""])[1].toLowerCase()]){s=s.replace(h,"<$1>");try{for(;m=0&&c.indexOf(".net4.0c")>=0){d.browser="msie";d.version="11";b[1]="msie"}if(c.indexOf("edge")>=0){d.browser="msie";d.version="12";b[1]="msie"}d[b[1]]=b[1];return d}});a.MLjqui.browser=a.MLjqui.utilities.getBrowser();a.MLjqui.isHidden=function(c){if(!c||!c[0]){return false}var b=c[0].offsetWidth,d=c[0].offsetHeight;if(b===0||d===0){return true}else{return false}};a.MLjqui.ariaEnabled=true;a.MLjqui.aria=function(c,e,d){if(!a.MLjqui.ariaEnabled){return}if(e==undefined){a.each(c.aria,function(g,h){var k=!c.base?c.host.attr(g):c.base.host.attr(g);if(k!=undefined&&!a.isFunction(k)){var j=k;switch(h.type){case"number":j=new Number(k);if(isNaN(j)){j=k}break;case"boolean":j=k=="true"?true:false;break;case"date":j=new Date(k);if(j=="Invalid Date"||isNaN(j)){j=k}break}c[h.name]=j}else{var k=c[h.name];if(a.isFunction(k)){k=c[h.name]()}if(k==undefined){k=""}try{!c.base?c.host.attr(g,k.toString()):c.base.host.attr(g,k.toString())}catch(f){}}})}else{try{if(c.host){if(!c.base){if(c.host){if(c.element.setAttribute){c.element.setAttribute(e,d.toString())}else{c.host.attr(e,d.toString())}}else{c.attr(e,d.toString())}}else{if(c.base.host){c.base.host.attr(e,d.toString())}else{c.attr(e,d.toString())}}}else{if(c.setAttribute){c.setAttribute(e,d.toString())}}}catch(b){}}};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(c){var b=this.length;var d=Number(arguments[1])||0;d=(d<0)?Math.ceil(d):Math.floor(d);if(d<0){d+=b}for(;d=0||f.indexOf("WPDesktop")>=0||f.indexOf("IEMobile")>=0||f.indexOf("ZuneWP7")>=0){this.touchDevice=true;return true}else{if(f.indexOf("Touch")>=0){var b=("MSPointerDown" in window)||("pointerdown" in window);if(b){this.touchDevice=true;return true}if(f.indexOf("ARM")>=0){this.touchDevice=true;return true}this.touchDevice=false;return false}}}if(navigator.platform.toLowerCase().indexOf("win")!=-1){this.touchDevice=false;return false}if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){this.touchDevice=true}return this.touchDevice}catch(g){this.touchDevice=false;return false}},getLeftPos:function(b){var c=b.offsetLeft;while((b=b.offsetParent)!=null){if(b.tagName!="HTML"){c+=b.offsetLeft;if(document.all){c+=b.clientLeft}}}return c},getTopPos:function(c){var e=c.offsetTop;var b=a(c).coord();while((c=c.offsetParent)!=null){if(c.tagName!="HTML"){e+=(c.offsetTop-c.scrollTop);if(document.all){e+=c.clientTop}}}var d=navigator.userAgent.toLowerCase();var f=(d.indexOf("windows phone")!=-1||d.indexOf("WPDesktop")!=-1||d.indexOf("ZuneWP7")!=-1||d.indexOf("msie 9")!=-1||d.indexOf("msie 11")!=-1||d.indexOf("msie 10")!=-1)&&d.indexOf("touch")!=-1;if(f){return b.top}if(this.isSafariMobileBrowser()){if(this.isSafari4MobileBrowser()&&this.isIPadSafariMobileBrowser()){return e}if(d.indexOf("version/7")!=-1){return b.top}if(d.indexOf("version/6")!=-1||d.indexOf("version/5")!=-1){e=e+a(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return e+a(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return e+a(window).scrollTop()}return b.top}return e},isChromeMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("android")!=-1;return b},isOperaMiniMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("opera mini")!=-1||c.indexOf("opera mobi")!=-1;return b},isOperaMiniBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("opera mini")!=-1;return b},isNewSafariMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("ipod")!=-1;b=b&&(c.indexOf("version/5")!=-1);return b},isSafari4MobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("ipod")!=-1;b=b&&(c.indexOf("version/4")!=-1);return b},isWindowsPhone:function(){var c=navigator.userAgent.toLowerCase();var b=(c.indexOf("windows phone")!=-1||c.indexOf("WPDesktop")!=-1||c.indexOf("ZuneWP7")!=-1||c.indexOf("msie 9")!=-1||c.indexOf("msie 11")!=-1||c.indexOf("msie 10")!=-1&&c.indexOf("touch")!=-1);return b},isSafariMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return true}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return true}var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("ipod")!=-1||c.indexOf("mobile safari")!=-1;return b},isIPadSafariMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1;return b},isMobileBrowser:function(){var c=navigator.userAgent.toLowerCase();var b=c.indexOf("ipad")!=-1||c.indexOf("iphone")!=-1||c.indexOf("android")!=-1;return b},getTouches:function(b){if(b.originalEvent){if(b.originalEvent.touches&&b.originalEvent.touches.length){return b.originalEvent.touches}else{if(b.originalEvent.changedTouches&&b.originalEvent.changedTouches.length){return b.originalEvent.changedTouches}}}if(!b.touches){b.touches=new Array();b.touches[0]=b.originalEvent!=undefined?b.originalEvent:b;if(b.originalEvent!=undefined&&b.pageX){b.touches[0]=b}if(b.type=="mousemove"){b.touches[0]=b}}return b.touches},getTouchEventName:function(b){if(this.isWindowsPhone()){var c=navigator.userAgent.toLowerCase();if(c.indexOf("windows phone 7")!=-1){if(b.toLowerCase().indexOf("start")!=-1){return"MSPointerDown"}if(b.toLowerCase().indexOf("move")!=-1){return"MSPointerMove"}if(b.toLowerCase().indexOf("end")!=-1){return"MSPointerUp"}}if(b.toLowerCase().indexOf("start")!=-1){return"pointerdown"}if(b.toLowerCase().indexOf("move")!=-1){return"pointermove"}if(b.toLowerCase().indexOf("end")!=-1){return"pointerup"}}else{return b}},dispatchMouseEvent:function(b,f,d){if(this.simulatetouches){return}var c=document.createEvent("MouseEvent");c.initMouseEvent(b,true,true,f.view,1,f.screenX,f.screenY,f.clientX,f.clientY,false,false,false,false,0,null);if(d!=null){d.dispatchEvent(c)}},getRootNode:function(b){while(b.nodeType!==1){b=b.parentNode}return b},setTouchScroll:function(b,c){if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[c]=b},touchScroll:function(B,L,V,G,x,m){if(B==null){return}var F=this;var e=0;var q=0;var f=0;var g=0;var s=0;var h=0;if(!this.scrolling){this.scrolling=[]}this.scrolling[G]=false;var j=false;var o=a(B);var P=["select","input","textarea"];var T=0;var I=0;if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[G]=true;var G=G;var u=this.getTouchEventName("touchstart")+".touchScroll";var C=this.getTouchEventName("touchend")+".touchScroll";var X=this.getTouchEventName("touchmove")+".touchScroll";x.fadeOut(0);m.fadeOut(0);var k,S,z,U,ac,O,W,c,E,Z,t,d,w,v,Q,b,D,ab,n;O=L;ac=0;W=0;xoffset=0;U=x.MLjquiScrollBar("max");n=325;function A(af){if(af.targetTouches&&(af.targetTouches.length>=1)){return af.targetTouches[0].clientY}else{if(af.originalEvent&&af.originalEvent.clientY!==undefined){return af.originalEvent.clientY}else{var ae=F.getTouches(af);return ae[0].clientY}}return af.clientY}function aa(af){if(af.targetTouches&&(af.targetTouches.length>=1)){return af.targetTouches[0].clientX}else{if(af.originalEvent&&af.originalEvent.clientX!==undefined){return af.originalEvent.clientX}else{var ae=F.getTouches(af);return ae[0].clientX}}return af.clientX}var H=function(){var ag,ae,ah,af;ag=Date.now();ae=ag-w;w=ag;ah=W-d;xdelta=xoffset-xframe;d=W;xframe=xoffset;E=true;af=1000*ah/(1+ae);xv=1000*xdelta/(1+ae);t=0.8*af+0.2*t;xvelocity=0.8*xv+0.2*xvelocity};var T=function(af){if(!F.enableScrolling[G]){return true}if(a.inArray(af.target.tagName.toLowerCase(),P)!==-1){return}W=m.MLjquiScrollBar("value");xoffset=x.MLjquiScrollBar("value");var ag=F.getTouches(af);var ah=ag[0];if(ag.length==1){F.dispatchMouseEvent("mousedown",ah,F.getRootNode(ah.target))}function ae(ai){E=true;c=A(ai);ab=aa(ai);t=Q=xvelocity=0;d=W;xframe=xoffset;w=Date.now();clearInterval(v);v=setInterval(H,100);ai.preventDefault()}ae(af);j=false;q=ah.pageY;s=ah.pageX;if(F.simulatetouches){if(ah._pageY!=undefined){q=ah._pageY;s=ah._pageX}}F.scrolling[G]=true;U=x.MLjquiScrollBar("max");O=m.MLjquiScrollBar("max");e=0;g=0;return true};if(o.on){o.on(u,T)}else{o.bind(u,T)}var Y=function(af,ae){W=(af>O)?O:(afU)?U:(af0.5||af<-0.5){Y(b+af,event);requestAnimationFrame(R)}else{Y(b);m.fadeOut("fast")}}}function M(){var ae,af;if(Q){ae=Date.now()-w;af=-Q*Math.exp(-ae/n);if(af>0.5||af<-0.5){l(D+af);requestAnimationFrame(M)}else{l(D);x.fadeOut("fast")}}}var y=function(ae){if(!F.enableScrolling[G]){return true}if(!F.scrolling[G]){return true}var aj=F.getTouches(ae);if(aj.length>1){return true}var af=aj[0].pageY;var ah=aj[0].pageX;if(F.simulatetouches){if(aj[0]._pageY!=undefined){af=aj[0]._pageY;ah=aj[0]._pageX}}var al=af-q;var am=ah-s;I=af;touchHorizontalEnd=ah;f=al-e;h=am-g;j=true;e=al;g=am;var ag=x!=null?x[0].style.visibility!="hidden":true;var ak=m!=null?m[0].style.visibility!="hidden":true;function ai(ao){var aq,ap,an;if(E){aq=A(ao);an=aa(ao);ap=c-aq;xdelta=ab-an;if(ap>2||ap<-2){c=aq;Y(W+ap,ao);H();ao.preventDefault();ao.stopPropagation();return false}else{if(xdelta>2||xdelta<-2){ab=an;l(xoffset+xdelta,ao);H();ao.preventDefault();ao.stopPropagation();return false}}ao.preventDefault()}}if(ag||ak){if((ag)||(ak)){ai(ae)}}};if(o.on){o.on(X,y)}else{o.bind(X,y)}var r=function(af){if(!F.enableScrolling[G]){return true}var ag=F.getTouches(af)[0];if(!F.scrolling[G]){return true}E=false;clearInterval(v);if(t>10||t<-10){Q=0.8*t;b=Math.round(W+Q);w=Date.now();requestAnimationFrame(R);m.fadeIn(100)}else{if(xvelocity>10||xvelocity<-10){Q=0.8*xvelocity;D=Math.round(xoffset+Q);w=Date.now();requestAnimationFrame(M);x.fadeIn(100)}else{x.fadeOut(100);m.fadeOut(100)}}F.scrolling[G]=false;if(j){F.dispatchMouseEvent("mouseup",ag,af.target)}else{var ag=F.getTouches(af)[0],ae=F.getRootNode(ag.target);F.dispatchMouseEvent("mouseup",ag,ae);F.dispatchMouseEvent("click",ag,ae);return true}};if(this.simulatetouches){var p=a(window).on!=undefined||a(window).bind;var N=function(ae){try{r(ae)}catch(af){}F.scrolling[G]=false};a(window).on!=undefined?a(document).on("mouseup.touchScroll",N):a(document).bind("mouseup.touchScroll",N);if(window.frameElement){if(window.top!=null){var K=function(ae){try{r(ae)}catch(af){}F.scrolling[G]=false};if(window.top.document){a(window.top.document).on?a(window.top.document).on("mouseup",K):a(window.top.document).bind("mouseup",K)}}}var ad=a(document).on!=undefined||a(document).bind;var J=function(ae){if(!F.scrolling[G]){return true}F.scrolling[G]=false;var ag=F.getTouches(ae)[0],af=F.getRootNode(ag.target);F.dispatchMouseEvent("mouseup",ag,af);F.dispatchMouseEvent("click",ag,af)};a(document).on!=undefined?a(document).on("touchend",J):a(document).bind("touchend",J)}if(o.on){o.on("dragstart",function(ae){ae.preventDefault()});o.on("selectstart",function(ae){ae.preventDefault()})}o.on?o.on(C+" touchcancel.touchScroll",r):o.bind(C+" touchcancel.touchScroll",r)}});a.MLjqui.cookie=a.MLjqui.cookie||{};a.extend(a.MLjqui.cookie,{cookie:function(e,f,c){if(arguments.length>1&&String(f)!=="[object Object]"){c=a.extend({},c);if(f===null||f===undefined){c.expires=-1}if(typeof c.expires==="number"){var h=c.expires,d=c.expires=new Date();d.setDate(d.getDate()+h)}f=String(f);return(document.cookie=[encodeURIComponent(e),"=",c.raw?f:encodeURIComponent(f),c.expires?"; expires="+c.expires.toUTCString():"",c.path?"; path="+c.path:"",c.domain?"; domain="+c.domain:"",c.secure?"; secure":""].join(""))}c=f||{};var b,g=c.raw?function(j){return j}:decodeURIComponent;return(b=new RegExp("(?:^|; )"+encodeURIComponent(e)+"=([^;]*)").exec(document.cookie))?g(b[1]):null}});a.MLjqui.string=a.MLjqui.string||{};a.extend(a.MLjqui.string,{replace:function(f,d,e){if(d===e){return this}var b=f;var c=b.indexOf(d);while(c!=-1){b=b.replace(d,e);c=b.indexOf(d)}return b},contains:function(b,c){if(b==null||c==null){return false}return b.indexOf(c)!=-1},containsIgnoreCase:function(b,c){if(b==null||c==null){return false}return b.toString().toUpperCase().indexOf(c.toString().toUpperCase())!=-1},equals:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);if(c.length==b.length){return b.slice(0,c.length)==c}return false},equalsIgnoreCase:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);if(c.length==b.length){return b.toUpperCase().slice(0,c.length)==c.toUpperCase()}return false},startsWith:function(b,c){if(b==null||c==null){return false}return b.slice(0,c.length)==c},startsWithIgnoreCase:function(b,c){if(b==null||c==null){return false}return b.toUpperCase().slice(0,c.length)==c.toUpperCase()},normalize:function(b){if(b.charCodeAt(b.length-1)==65279){b=b.substring(0,b.length-1)}return b},endsWith:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);return b.slice(-c.length)==c},endsWithIgnoreCase:function(b,c){if(b==null||c==null){return false}b=this.normalize(b);return b.toUpperCase().slice(-c.length)==c.toUpperCase()}});a.extend(a.easing,{easeOutBack:function(f,g,e,k,j,h){if(h==undefined){h=1.70158}return k*((g=g/j-1)*g*((h+1)*g+h)+1)+e},easeInQuad:function(f,g,e,j,h){return j*(g/=h)*g+e},easeInOutCirc:function(f,g,e,j,h){if((g/=h/2)<1){return -j/2*(Math.sqrt(1-g*g)-1)+e}return j/2*(Math.sqrt(1-(g-=2)*g)+1)+e},easeInOutSine:function(f,g,e,j,h){return -j/2*(Math.cos(Math.PI*g/h)-1)+e},easeInCubic:function(f,g,e,j,h){return j*(g/=h)*g*g+e},easeOutCubic:function(f,g,e,j,h){return j*((g=g/h-1)*g*g+1)+e},easeInOutCubic:function(f,g,e,j,h){if((g/=h/2)<1){return j/2*g*g*g+e}return j/2*((g-=2)*g*g+2)+e},easeInSine:function(f,g,e,j,h){return -j*Math.cos(g/h*(Math.PI/2))+j+e},easeOutSine:function(f,g,e,j,h){return j*Math.sin(g/h*(Math.PI/2))+e},easeInOutSine:function(f,g,e,j,h){return -j/2*(Math.cos(Math.PI*g/h)-1)+e}})})(MLjquiBaseFramework);(function(b){b.extend(b.event.special,{close:{noBubble:true},open:{noBubble:true},cellclick:{noBubble:true},rowclick:{noBubble:true},tabclick:{noBubble:true},selected:{noBubble:true},expanded:{noBubble:true},collapsed:{noBubble:true},valuechanged:{noBubble:true},expandedItem:{noBubble:true},collapsedItem:{noBubble:true},expandingItem:{noBubble:true},collapsingItem:{noBubble:true}});b.fn.extend({ischildof:function(f){var d=b(this).parents().get();for(var c=0;c>>0;if(typeof N!=="function"){throw TypeError()}var P=arguments[1],O;for(O=0;O=0){if(NK.length){I.push.apply(I,new Array(N-K.length))}}}else{throw new RangeError("Invalid array length")}return M}});i.MLjqui.observableArray.prototype.fromArray=function(O,N){var M=new i.MLjqui.observableArray(O,N);return M};i.MLjqui.observableArray.prototype.clone=function(){var M=new i.MLjqui.observableArray(K,J);M.observing=I.observing;M.changes=I.changes;M.notifier=I.notifier;return M};I.remove=function(N){if(N<0||N>=I.length){throw new Error("Invalid index : "+N)}if(I.hasOwnProperty(N)){var M=I[N];I[N]=undefined;K[N]=undefined;if(typeof H==="function"){H({object:I,type:"delete",index:N,name:"index",newValue:undefined,oldValue:M})}return true}return false};I.concat=function(N,P){var M=K.concat(N);var O=new i.MLjqui.observableArray(M,P);return O};Object.getOwnPropertyNames(Array.prototype).forEach(function(M){if(!(M in I)){var N=function(){var Q=I.observing;I.observing=false;var P=K[M];var O=P.apply(K,arguments);I.observing=Q;return O};Object.defineProperty(I,M,{configurable:false,enumerable:true,writeable:false,value:N})}});I.set=function(N,P){if(i.type(N)=="string"&&N.split(".").length>1){var M=N.split(".");var Q=I;for(var O=0;O=I.length){throw new Error("Invalid Index: "+N)}}if(O=I.length){I.push(P)}else{I[N]=P}return true};I.get=function(M){return I[M]};if(e instanceof Array){I.push.apply(I,e)}H=function(){if(!I.observing){return}if(arguments&&arguments[0]){I.changes.push(arguments[0])}if(J){J.apply(I,arguments)}if(I.notifier){I.notifier.apply(I,arguments)}};return I};i.MLjqui.formatDate=function(H,J,I){var e=i.MLjqui.dataFormat.formatdate(H,J,I);return e};i.MLjqui.formatNumber=function(H,J,I){var e=i.MLjqui.dataFormat.formatnumber(H,J,I);return e};i.MLjqui.dataAdapter=function(J,e){if(J!=undefined){if(J.dataFields!==undefined){J.datafields=J.dataFields}if(J.dataType!==undefined){J.datatype=J.dataType}if(J.localData!==undefined){J.localdata=J.localData}if(J.sortColumn!==undefined){J.sortcolumn=J.sortColumn}if(J.sortDirection!==undefined){J.sortdirection=J.sortDirection}if(J.sortOrder!==undefined){J.sortdirection=J.sortOrder}if(J.formatData!==undefined){J.formatdata=J.formatData}if(J.processData!==undefined){J.processdata=J.processData}if(J.pageSize!==undefined){J.pagesize=J.pageSize}if(J.pageNum!==undefined){J.pagenum=J.pageNum}if(J.updateRow!==undefined){J.updaterow=J.updateRow}if(J.addRow!==undefined){J.addrow=J.addRow}if(J.deleteRow!==undefined){J.deleterow=J.deleteRow}if(J.contentType!==undefined){J.contenttype=J.contentType}if(J.totalRecords!=undefined){J.totalrecords=J.totalRecords}if(J.loadError!=undefined){J.loadError=J.loadError}if(J.sortComparer!=undefined){J.sortcomparer=J.sortComparer}}this._source=J;this._options=e||{};if(J.beforeLoadComplete!=undefined){this._options.beforeLoadComplete=this._source.beforeLoadComplete}if(J.downloadComplete!=undefined){this._options.downloadComplete=this._source.downloadComplete}if(J.loadComplete!=undefined){this._options.loadComplete=this._source.loadComplete}if(J.autoBind!=undefined){this._options.downloadComplete=this._source.autoBind}if(J.formatData!=undefined){this._options.formatData=this._source.formatData}if(J.loadError!=undefined){this._options.loadError=this._source.loadError}if(J.beforeSend!=undefined){this._options.beforeSend=this._source.beforeSend}if(J.contentType!=undefined){this._options.contentType=this._source.contentType}if(J.async!=undefined){this._options.async=this._source.async}if(J.loadServerData!=undefined){this._options.loadServerData=this._source.loadServerData}if(J.uniqueDataFields!=undefined){this._options.uniqueDataFields=this._source.uniqueDataFields}this.records=new Array();this._downloadComplete=new Array();this._bindingUpdate=new Array();if(J!=undefined&&J.localdata!=null&&typeof J.localdata=="function"){var I=J.localdata();if(I!=null){J._localdata=J.localdata;var H=this;if(J._localdata.subscribe){H._oldlocaldata=[];J._localdata.subscribe(function(K){var L=function(M){if(i.isArray(M)){return i.makeArray(L(i(M)))}return i.extend(true,{},M)};if(H.suspendKO==false||H.suspendKO==undefined||H._oldlocaldata.length==0){H._oldlocaldata=L(K)}},J._localdata,"beforeChange");J._localdata.subscribe(function(L){if(H.suspendKO==false||H.suspendKO==undefined){var K="";H._oldrecords=H.records;if(H._oldlocaldata.length==0){J.localdata=J._localdata()}if(H._oldlocaldata.length==0){K="change"}else{if(L){if(H._oldlocaldata.length==L.length){K="update"}if(H._oldlocaldata.length>L.length){K="remove"}if(H._oldlocaldata.length0){this.callBindingUpdate("update");this._changedrecords=[]}else{this.dataBind(null,"")}}},formatDate:function(H,J,I){var e=i.MLjqui.dataFormat.formatdate(H,J,I);return e},formatNumber:function(H,J,I){var e=i.MLjqui.dataFormat.formatnumber(H,J,I);return e},dataBind:function(R,aa){if(this.isUpdating==true){return}var W=this._source;if(!W){return}if(W.generatedfields){W.datafields=null;W.generatedfields=null}i.MLjqui.dataFormat.datescache=new Array();if(W.dataFields!=null){W.datafields=W.dataFields}if(W.recordstartindex==undefined){W.recordstartindex=0}if(W.recordendindex==undefined){W.recordendindex=0}if(W.loadallrecords==undefined){W.loadallrecords=true}if(W.root==undefined){W.root=""}if(W.record==undefined){W.record=""}if(W.sort!=undefined){this.sort=W.sort}if(W.filter!=undefined){this.filter=W.filter}else{this.filter=null}if(W.sortcolumn!=undefined){this.sortcolumn=W.sortcolumn}if(W.sortdirection!=undefined){this.sortdirection=W.sortdirection}if(W.sortcomparer!=undefined){this.sortcomparer=W.sortcomparer}this.records=new Array();var K=this._options||{};this.virtualmode=K.virtualmode!=undefined?K.virtualmode:false;this.totalrecords=K.totalrecords!=undefined?K.totalrecords:0;this.pageable=K.pageable!=undefined?K.pageable:false;this.pagesize=K.pagesize!=undefined?K.pagesize:0;this.pagenum=K.pagenum!=undefined?K.pagenum:0;this.cachedrecords=K.cachedrecords!=undefined?K.cachedrecords:new Array();this.originaldata=new Array();this.recordids=new Array();this.updaterow=K.updaterow!=undefined?K.updaterow:null;this.addrow=K.addrow!=undefined?K.addrow:null;this.deleterow=K.deleterow!=undefined?K.deleterow:null;this.cache=K.cache!=undefined?K.cache:false;this.unboundmode=false;if(W.formatdata!=undefined){K.formatData=W.formatdata}if(W.data!=undefined){if(K.data==undefined){K.data={}}i.extend(K.data,W.data)}if(W.mapchar!=undefined){this.mapChar=W.mapchar?W.mapchar:">"}else{this.mapChar=K.mapChar?K.mapChar:">"}if(K.unboundmode||W.unboundmode){this.unboundmode=K.unboundmode||W.unboundmode}if(W.cache!=undefined){this.cache=W.cache}if(this.koSubscriptions){for(var ac=0;ac0){for(var Z=0;Z0){var an=ao;for(var ak=0;ak0){var aG=false;var aB=false;for(var ax=0;ax=0)){aG=true;at=aw.map;aE=aw.type;aC=aw.name;aB=true;var aF=an[ay];if(at!=null){var ar=at.split(ah.mapChar);if(ar.length>0){var az=an;for(var au=0;au0){var az=an;for(var au=0;au0){var aj=this;var am=H(aj,ad);am.uid=ak;ah.records[ah.records.length]=am}else{this.uid=ak;ah.records[ah.records.length]=this}})}else{if(ad==0){var V=0;var T=new Array();i.each(W.localdata,function(al,an){var aj=new Object(this);if(typeof an==="string"){ah.records=W.localdata;return false}else{var ak=ah.getid(W.id,aj,al);if(typeof(ak)==="object"){ak=al}aj.uid=ak;if(al==0){for(var ao in this){V++;var ap=i.type(this[ao]);T.push({name:ao,type:ap})}ad=V;W.datafields=T;W.generatedfields=T}if(ad>0){var am=H(aj,ad);am.uid=ak;ah.records[ah.records.length]=am}else{ah.records[ah.records.length]=aj}}})}else{i.each(W.localdata,function(al){var aj=this;var am=H(aj,ad);var ak=ah.getid(W.id,am,al);if(typeof(ak)==="object"){ak=al}var aj=new Object(am);aj.uid=ak;ah.records[ah.records.length]=aj})}}}this.originaldata=W.localdata;this.cachedrecords=this.records;this.addForeignValues(W);if(K.uniqueDataFields){var S=this.getUniqueRecords(this.records,K.uniqueDataFields);this.records=S;this.cachedrecords=S}if(K.beforeLoadComplete){var ae=K.beforeLoadComplete(ah.records,this.originaldata);if(ae!=undefined){ah.records=ae;ah.cachedrecords=ae}}if(K.autoSort&&K.autoSortField){var O=Object.prototype.toString;Object.prototype.toString=(typeof field=="function")?field:function(){return this[K.autoSortField]};ah.records.sort(function(ak,aj){if(ak===undefined){ak=null}if(aj===undefined){aj=null}if(ak===null&&aj===null){return 0}if(ak===null&&aj!==null){return 1}if(ak!==null&&aj===null){return -1}ak=ak.toString();aj=aj.toString();if(ak===null&&aj===null){return 0}if(ak===null&&aj!==null){return 1}if(ak!==null&&aj===null){return -1}if(i.MLjqui.dataFormat.isNumber(ak)&&i.MLjqui.dataFormat.isNumber(aj)){if(akaj){return 1}return 0}else{if(i.MLjqui.dataFormat.isDate(ak)&&i.MLjqui.dataFormat.isDate(aj)){if(akaj){return 1}return 0}else{if(!i.MLjqui.dataFormat.isNumber(ak)&&!i.MLjqui.dataFormat.isNumber(aj)){ak=String(ak).toLowerCase();aj=String(aj).toLowerCase()}}}try{if(akaj){return 1}}catch(al){var am=al}return 0});Object.prototype.toString=O}ah.loadedData=W.localdata;ah.buildHierarchy();if(i.isFunction(K.loadComplete)){K.loadComplete(W.localdata,ah.records)}break;case"json":case"jsonp":case"xml":case"xhtml":case"script":case"text":case"ics":if(W.localdata!=null&&!W.url){if(i.isFunction(W.beforeprocessing)){W.beforeprocessing(W.localdata)}if(W.datatype==="xml"){ah.loadxml(W.localdata,W.localdata,W)}else{if(Q==="text"){ah.loadtext(W.localdata,W)}else{if(Q==="ics"){ah.loadics(W.localdata,W)}else{ah.loadjson(W.localdata,W.localdata,W)}}}ah.addForeignValues(W);if(K.uniqueDataFields){var S=ah.getUniqueRecords(ah.records,K.uniqueDataFields);ah.records=S;ah.cachedrecords=S}if(K.beforeLoadComplete){var ae=K.beforeLoadComplete(ah.records,this.originaldata);if(ae!=undefined){ah.records=ae;ah.cachedrecords=ae}}ah.loadedData=W.localdata;ah.buildHierarchy.call(ah);if(i.isFunction(K.loadComplete)){K.loadComplete(W.localdata,ah.records)}ah.callBindingUpdate(aa);return}var af=K.data!=undefined?K.data:{};if(W.processdata){W.processdata(af)}if(i.isFunction(K.processData)){K.processData(af)}if(i.isFunction(K.formatData)){var e=K.formatData(af);if(e!=undefined){af=e}}var ab="application/x-www-form-urlencoded";if(K.contentType){ab=K.contentType}var J="GET";if(W.type){J=W.type}if(K.type){J=K.type}var X=Q;if(Q=="ics"){X="text"}if(W.url&&W.url.length>0){if(i.isFunction(K.loadServerData)){ah._requestData(af,W,K)}else{this.xhr=i.MLjqui.data.ajax({dataType:X,cache:this.cache,type:J,url:W.url,async:N,timeout:W.timeout,contentType:ab,data:af,success:function(am,aj,ap){if(i.isFunction(W.beforeprocessing)){var ao=W.beforeprocessing(am,aj,ap);if(ao!=undefined){am=ao}}if(i.isFunction(K.downloadComplete)){var ao=K.downloadComplete(am,aj,ap);if(ao!=undefined){am=ao}}if(am==null){ah.records=new Array();ah.cachedrecords=new Array();ah.originaldata=new Array();ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){K.loadComplete(new Array())}return}var ak=am;if(am.records){ak=am.records}if(am.totalrecords!=undefined){W.totalrecords=am.totalrecords}else{if(am.totalRecords!=undefined){W.totalrecords=am.totalRecords}}if(W.datatype==="xml"){ah.loadxml(null,ak,W)}else{if(Q==="text"){ah.loadtext(ak,W)}else{if(Q==="ics"){ah.loadics(ak,W)}else{ah.loadjson(null,ak,W)}}}ah.addForeignValues(W);if(K.uniqueDataFields){var al=ah.getUniqueRecords(ah.records,K.uniqueDataFields);ah.records=al;ah.cachedrecords=al}if(K.beforeLoadComplete){var an=K.beforeLoadComplete(ah.records,am);if(an!=undefined){ah.records=an;ah.cachedrecords=an}}ah.loadedData=am;ah.buildHierarchy.call(ah);ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){K.loadComplete(am,aj,ap,ah.records)}},error:function(al,aj,ak){if(i.isFunction(W.loaderror)){W.loaderror(al,aj,ak)}if(i.isFunction(K.loadError)){K.loadError(al,aj,ak)}al=null;ah.callDownloadComplete()},beforeSend:function(ak,aj){if(i.isFunction(K.beforeSend)){K.beforeSend(ak,aj)}if(i.isFunction(W.beforesend)){W.beforesend(ak,aj)}}})}}else{ah.buildHierarchy(new Array());ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){if(!ai){var ai={}}K.loadComplete(ai)}}break}this.callBindingUpdate(aa)},buildHierarchy:function(K){var e=this._source;var P=new Array();if(!e.datafields){return}if(e.hierarchy&&!e.hierarchy.reservedNames){e.hierarchy.reservedNames={leaf:"leaf",parent:"parent",expanded:"expanded",checked:"checked",selected:"selected",level:"level",icon:"icon",data:"data"}}else{if(e.hierarchy){var O=e.hierarchy.reservedNames;if(!O.leaf){O.leaf="leaf"}if(!O.parent){O.parent="parent"}if(!O.expanded){O.expanded="expanded"}if(!O.checked){O.checked="checked"}if(!O.selected){O.selected="selected"}if(!O.level){O.level="level"}if(!O.data){O.data="data"}}}if(!e.hierarchy){return}var N=this;var O=e.hierarchy.reservedNames;if(e.hierarchy.root){if(e.dataType=="xml"){var P=this.getRecordsHierarchy("uid","parentuid","records",null,K);this.hierarchy=P;return P}else{this.hierarchy=this.records;var R=e.hierarchy.root;for(var L=0;L1){var W=S;for(var V=0;V0){var K=function(O){if(O){for(var P=0;P=0&&(this._source.hierarchy||I)){var L=(J._source&&J._source.hierarchy)?J._source.hierarchy.reservedNames:null;if(L==null){L=N()}H[L.level]=0;if(e=="last"){this.hierarchy.push(H)}else{if(typeof e==="number"&&isFinite(e)){this.hierarchy.splice(e,0,H)}else{this.hierarchy.splice(0,0,H)}}}else{if(e=="last"){this.records.push(H)}else{if(typeof e==="number"&&isFinite(e)){this.records.splice(e,0,H)}else{this.records.splice(0,0,H)}}}return true}}return false},deleteRecord:function(H){var J=this;if(this.hierarchy.length>0){var K=function(L){if(L){for(var O=0;OQ.totalrecords){M=Q.totalrecords}}else{if(Q.virtualmode){K=H.recordstartindex;M=H.recordendindex;if(M>Q.totalrecords){M=Q.totalrecords}}else{K=0;M=Q.records.length}}for(var O=K;O0){V(af+1,ae)}else{if(!P){ac[ad].leaf=true}else{ac[ad][P.leaf]=true}}}else{if(!P){ac[ad].leaf=true}else{ac[ad][P.leaf]=true}}}};V(0,e)}return e},bindBindingUpdate:function(H,e){this._bindingUpdate[this._bindingUpdate.length]={id:H,func:e}},unbindBindingUpdate:function(H){for(var e=0;e0){return e}else{if(N.map){try{var e=i(H).attr(N.map);if(e!=null&&e.toString().length>0){return e}else{if(i(N.map,H).length>0){return i(N.map,H).text()}else{if(i(N.name,H).length>0){return i(N.name,H).text()}}}}catch(J){return K}}}return}}if(i(N,H).length>0){return i(N,H).text()}if(N){if(N.toString().length>0){var e=i(H).attr(N);if(e!=null&&e.toString().length>0){return i.trim(e).split(" ").join("").replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,"")}else{var I=N.split(this.mapChar);if(I.length>1){var M=H;for(var L=0;L1){var aa=ae;for(var Q=0;Q0){var aa=ae;for(var Q=0;Q0){var Z=I;for(var Q=0;Q0){var al=am;for(var ah=0;ah0){W=ag[0]}}}else{var ad=Q.map.substring(0,M-1);var O=Q.map.indexOf("]");var R=Q.map.substring(M+1,O);W=i(ad,I).attr(R);if(W==undefined){W=i(I).attr(R)}if(W==undefined){W=""}}if(W==""){W=i(I).attr(Q.map);if(W==undefined){W=""}}}}if(W==""){W=i(Q.name,I);if(W.length==1){W=W.text()}else{var ag=new Array();for(var ab=0;ab0){W=ag[0]}}if(W==""){W=i(I).attr(Q.name);if(W==undefined){W=""}}if(W==""){if(I.nodeName&&I.nodeName==Q.name&&I.firstChild){W=i(I.firstChild).text()}}}var V=W;W=this.getvaluebytype(W,Q);if(Q.displayname!=undefined){L[Q.displayname]=W}else{L[Q.name]=W}}if(U.recordendindex<=0||X0){var ah=this.getid(U.id,i(I).parents(U.hierarchy.record+":first"));N.parentuid=ah}else{N.parentuid=null}}}this.records=aa;this.cachedrecords=this.records},loadics:function(N,H){if(N==null){return}var S=H.rowDelimiter||this.rowDelimiter||"\n";var R=N.split(S);var K=R.length;var Q=N.split("\r");if(K==1&&Q.length>1){R=Q;K=R.length}this.records=new Array();this.originaldata=new Array();var L=this.records;this.recordids=new Array();var I=0;var P=function(V){var T=/^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z)?$/;var U=T.exec(V);if(!U){throw new Error("Invalid UNTIL value: "+V)}return new Date(Date.UTC(U[1],U[2]-1,U[3],U[5]||0,U[6]||0,U[7]||0))};for(var M=0;M=0){e.SUMMARY=O.substring(O.indexOf("SUMMARY")+8);continue}if(O.indexOf("LOCATION")>=0){e.LOCATION=O.substring(O.indexOf("LOCATION")+9);continue}if(O.indexOf("DESCRIPTION")>=0){e.DESCRIPTION=O.substring(O.indexOf("DESCRIPTION")+12);continue}if(O.indexOf("RRULE")>=0){e.RRULE=O.substring(O.indexOf("RRULE")+6);continue}if(O.indexOf("EXDATE")>=0){var J=O.substring(O.indexOf("EXDATE")+7);e.EXDATE=J;continue}if(O.indexOf("DTEND")>=0){e.DTEND=P(O.substring(O.indexOf("DTEND")+6));continue}if(O.indexOf("DTSTART")>=0){e.DTSTART=P(O.substring(O.indexOf("DTSTART")+8));continue}if(O.indexOf("UID")>=0){e.uid=e.UID=O.substring(O.indexOf("UID")+4);continue}if(O.indexOf("STATUS")>=0){e.STATUS=O.substring(O.indexOf("STATUS")+7);continue}if(O=="END:VEVENT"){L.push(e);continue}}this.records=L;this.cachedrecords=this.records},loadtext:function(Y,P){if(Y==null){return}var e=P.rowDelimiter||this.rowDelimiter||"\n";var L=Y.split(e);var J=L.length;var X=Y.split("\r");if(J==1&&X.length>1){L=X;J=L.length}this.totalrecords=this.virtualmode?(P.totalrecords||J):J;this.records=new Array();this.originaldata=new Array();var U=this.records;var R=!this.pageable?P.recordstartindex:this.pagesize*this.pagenum;this.recordids=new Array();if(P.loadallrecords){R=0;J=this.totalrecords}var N=0;if(this.virtualmode){R=!this.pageable?P.recordstartindex:this.pagesize*this.pagenum;N=R;R=0;J=this.totalrecords}var V=P.datafields.length;var O=P.columnDelimiter||this.columnDelimiter;if(!O){O=(P.datatype==="tab"||P.datatype==="tsv")?"\t":","}for(var T=R;T=H.length){continue}var M=P.datafields[S];var Q=H[S];if(M.map&&i.isFunction(M.map)){Q=M.map(I)}if(M.type){Q=this.getvaluebytype(Q,M)}var Z=M.map||M.name||S.toString();K[Z]=Q;if(P.id!=null){if(P.id===M.name){W=Q;this.recordids[W]=I}}}if(W==null){W=T}U[N+T]=i.extend({},K);U[N+T].uid=W;this.originaldata[N+T]=i.extend({},U[T])}}this.records=U;this.cachedrecords=this.records},getvaluebytype:function(L,H){var J=L;if(L==null){return L}if(i.isArray(L)&&H.type!="array"){for(var I=0;I=L){return J}}return 0},toUpper:function(e){return e.split("\u00A0").join(" ").toUpperCase()},toUpperArray:function(e){var J=[];for(var I=0,H=e.length;I'+e+""}return''+e+""},formatemail:function(e){return''+e+""},formatNumber:function(e,I,H){return this.formatnumber(e,I,H)},formatnumber:function(T,S,O){if(O==undefined||O==null||O==""){O=this.defaultcalendar()}if(S===""||S===null){return T}if(!this.isNumber(T)){T*=1}var P;if(S.length>1){P=parseInt(S.slice(1),10)}var V={};var Q=S.charAt(0).toUpperCase();V.thousandsSeparator=O.thousandsseparator;V.decimalSeparator=O.decimalseparator;switch(Q){case"D":case"d":case"F":case"f":V.decimalPlaces=P;break;case"N":case"n":V.decimalPlaces=0;break;case"C":case"c":V.decimalPlaces=P;if(O.currencysymbolposition=="before"){V.prefix=O.currencysymbol}else{V.suffix=O.currencysymbol}break;case"P":case"p":V.suffix=O.percentsymbol;V.decimalPlaces=P;break;default:throw"Bad number format specifier: "+Q}if(this.isNumber(T)){var K=(T<0);var I=T+"";var R=(V.decimalSeparator)?V.decimalSeparator:".";var e;if(this.isNumber(V.decimalPlaces)){var L=V.decimalPlaces;var N=Math.pow(10,L);I=(T*N).toFixed(0)/N+"";e=I.lastIndexOf(".");if(L>0){if(e<0){I+=R;e=I.length-1}else{if(R!=="."){I=I.replace(".",R)}}while((I.length-1-e)0&&L==undefined){if(R!=="."){I=I.replace(".",R)}}}if(V.thousandsSeparator){var U=V.thousandsSeparator;e=I.lastIndexOf(R);e=(e>-1)?e:I.length;var J=I.substring(e);var H=-1;for(var M=e;M>0;M--){H++;if((H%3===0)&&(M!==e)&&(!K||(M>1))){J=U+J}J=I.charAt(M-1)+J}I=J}I=(V.prefix)?V.prefix+I:I;I=(V.suffix)?I+V.suffix:I;return I}else{return T}},tryparsedate:function(ai,aj){if(aj==undefined||aj==null){aj=this.defaultcalendar()}var O=this;if(ai==""){return null}if(ai!=null&&!ai.substring){ai=ai.toString()}if(ai!=null&&ai.substring(0,6)=="/Date("){var ar=/^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/;var ap=new Date(+ai.replace(/\/Date\((\d+)\)\//,"$1"));if(ap=="Invalid Date"){var al=ai.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/);var ap=null;if(al){ap=new Date(1*al[1]+3600000*al[2]+60000*al[3])}}if(ap==null||ap=="Invalid Date"||isNaN(ap)){var P=ar.exec(ai);if(P){var R=new Date(parseInt(P[1]));if(P[2]){var X=parseInt(P[3]);if(P[2]==="-"){X=-X}var T=R.getUTCMinutes();R.setUTCMinutes(T-X)}if(!isNaN(R.valueOf())){return R}}}return ap}patterns=aj.patterns;for(prop in patterns){ap=O.parsedate(ai,patterns[prop],aj);if(ap){if(prop=="ISO"){var aa=O.parsedate(ai,patterns.ISO2,aj);if(aa){return aa}}return ap}}if(ai!=null){var aa=null;var L=[":","/","-"];var an=true;for(var N=0;N=0){I=ai.substring(ai.indexOf(":")-2);I=ae.trim(I);W=ai.substring(0,ai.indexOf(":")-2)}else{if(ai.toUpperCase().indexOf("AM")>=0){I=ai.substring(ai.toUpperCase().indexOf("AM")-2);I=ae.trim(I);W=ai.substring(0,ai.toUpperCase().indexOf("AM")-2)}else{if(ai.toUpperCase().indexOf("PM")>=0){I=ai.substring(ai.toUpperCase().indexOf("PM")-2);I=ae.trim(I);W=ai.substring(0,ai.toUpperCase().indexOf("PM")-2)}}}var e=new Date();var ag=false;if(W){for(var ao=0;ao=0){L=W.split(ak[ao]);break}}var H=new Array();var U=new Array();var ac=new Array();var Q=null;var au=null;for(var ao=0;ao2){au=ao;break}}}for(var ao=0;ao0){e=am[0];ag=true}}if(I){var af=I.indexOf(":")>=0?I.split(":"):I;var K=ae.parsedate(I,"h:mm tt",aj)||ae.parsedate(I,"h:mm:ss tt",aj)||ae.parsedate(I,"HH:mm:ss.fff",aj)||ae.parsedate(I,"HH:mm:ss.ff",aj)||ae.parsedate(I,"HH:mm:ss.tttt",aj)||ae.parsedate(I,"HH:mm:ss",aj)||ae.parsedate(I,"HH:mm",aj)||ae.parsedate(I,"HH",aj);var V=0,J=0,Y=0,Z=0;if(K&&K.getTime()!=NaN){V=K.getHours();J=K.getMinutes();Y=K.getSeconds();Z=K.getMilliseconds()}else{if(af.length==1){V=parseInt(af[0])}if(af.length==2){V=parseInt(af[0]);J=parseInt(af[1])}if(af.length==3){V=parseInt(af[0]);J=parseInt(af[1]);if(af[2].indexOf(".")>=0){Y=parseInt(af[2].toString().split(".")[0]);Z=parseInt(af[2].toString().split(".")[1])}else{Y=parseInt(af[2])}}if(af.length==4){V=parseInt(af[0]);J=parseInt(af[1]);Y=parseInt(af[2]);Z=parseInt(af[3])}}if(e&&!isNaN(V)&&!isNaN(J)&&!isNaN(Y)&&!isNaN(Z)){e.setHours(V,J,Y,Z);ag=true}}if(ag){return e}}return null},getparseregexp:function(e,R){var T=e._parseRegExp;if(!T){e._parseRegExp=T={}}else{var K=T[R];if(K){return K}}var Q=this.expandFormat(e,R).replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1"),O=["^"],H=[],N=0,J=0,W=this.getTokenRegExp(),L;while((L=W.exec(Q))!==null){var V=Q.slice(N,L.index);N=W.lastIndex;J+=this.appendPreOrPostMatch(V,O);if(J%2){O.push(L[0]);continue}var I=L[0],M=I.length,S;switch(I){case"dddd":case"ddd":case"MMMM":case"MMM":case"gg":case"g":S="(\\D+)";break;case"tt":case"t":S="(\\D*)";break;case"yyyy":case"fff":case"ff":case"f":S="(\\d{"+M+"})";break;case"dd":case"d":case"MM":case"M":case"yy":case"y":case"HH":case"H":case"hh":case"h":case"mm":case"m":case"ss":case"s":S="(\\d\\d?)";break;case"zzz":S="([+-]?\\d\\d?:\\d{2})";break;case"zz":case"z":S="([+-]?\\d\\d?)";break;case"/":S="(\\"+e["/"]+")";break;default:throw"Invalid date format pattern '"+I+"'.";break}if(S){O.push(S)}H.push(L[0])}this.appendPreOrPostMatch(Q.slice(N),O);O.push("$");var U=O.join("").replace(/\s+/g,"\\s+"),P={regExp:U,groups:H};return T[R]=P},outOfRange:function(I,e,H){return IH},expandYear:function(L,J){var H=new Date(),e=this.getEra(H);if(J<100){var I=L.twoDigitYearMax;I=typeof I==="string"?new Date().getFullYear()%100+parseInt(I,10):I;var K=this.getEraYear(H,L,e);J+=K-(K%100);if(J>I){J-=100}}return J},parsedate:function(ab,ai,W){if(W==undefined||W==null){W=this.defaultcalendar()}ab=this.trim(ab);var T=W,an=this.getparseregexp(T,ai),N=new RegExp(an.regExp).exec(ab);if(N===null){return null}var aj=an.groups,Z=null,R=null,am=null,al=null,S=null,L=0,ae,ad=0,ak=0,e=0,I=null,U=false;for(var af=0,ah=aj.length;af1&&ah.length)<[^<]*)*<\/script>/gi,d=/([?&])_=[^&]*/,h=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,t=/\s+/,F=i.fn.load,G={},C={},q=["*/"]+["*"];try{E=location.href}catch(A){E=document.createElement("a");E.href="";E=E.href}l=h.exec(E.toLowerCase())||[];function r(e){return function(K,M){if(typeof K!=="string"){M=K;K="*"}var H,N,O,J=K.toLowerCase().split(t),I=0,L=J.length;if(i.isFunction(M)){for(;I0?4:0;if(al){aj=B(Q,W,al)}if(ak>=200&&ak<300||ak===304){if(Q.ifModified){an=W.getResponseHeader("Last-Modified");if(an){i.lastModified[P]=an}an=W.getResponseHeader("Etag");if(an){i.etag[P]=an}}if(ak===304){ah="notmodified";e=true}else{e=c(Q,aj);ah=e.state;ao=e.data;am=e.error;e=!am}}else{am=ah;if(!ah||ak){ah="error";if(ak<0){ak=0}}}W.status=ak;W.statusText=(ag||ah)+"";if(e){ae.resolveWith(af,[ao,ah,W])}else{ae.rejectWith(af,[W,ah,am])}W.statusCode(N);N=undefined;if(I){T.trigger("ajax"+(e?"Success":"Error"),[W,Q,e?ao:am])}aa.fireWith(af,[W,ah]);if(I){T.trigger("ajaxComplete",[W,Q]);if(!(--i.active)){i.event.trigger("ajaxStop")}}}ae.promise(W);W.success=W.done;W.error=W.fail;W.complete=aa.add;W.statusCode=function(ag){if(ag){var e;if(L<2){for(e in ag){N[e]=[N[e],ag[e]]}}else{e=ag[W.status];W.always(e)}}return this};Q.url=((M||Q.url)+"").replace(p,"").replace(o,l[1]+"//");Q.dataTypes=i.trim(Q.dataType||"*").toLowerCase().split(t);if(Q.crossDomain==null){V=h.exec(Q.url.toLowerCase());Q.crossDomain=!!(V&&(V[1]!==l[1]||V[2]!==l[2]||(V[3]||(V[1]==="http:"?80:443))!=(l[3]||(l[1]==="http:"?80:443))))}if(Q.data&&Q.processData&&typeof Q.data!=="string"){Q.data=i.param(Q.data,Q.traditional)}v(G,Q,J,W);if(L===2){return W}I=Q.global;Q.type=Q.type.toUpperCase();Q.hasContent=!j.test(Q.type);if(I&&i.active++===0){i.event.trigger("ajaxStart")}if(!Q.hasContent){if(Q.data){Q.url+=(k.test(Q.url)?"&":"?")+Q.data;delete Q.data}P=Q.url;if(Q.cache===false){var H=i.now(),ac=Q.url.replace(d,"$1_="+H);Q.url=ac+((ac===Q.url)?(k.test(Q.url)?"&":"?")+"_="+H:"")}}if(Q.data&&Q.hasContent&&Q.contentType!==false||J.contentType){W.setRequestHeader("Content-Type",Q.contentType)}if(Q.ifModified){P=P||Q.url;if(i.lastModified[P]){W.setRequestHeader("If-Modified-Since",i.lastModified[P])}if(i.etag[P]){W.setRequestHeader("If-None-Match",i.etag[P])}}W.setRequestHeader("Accept",Q.dataTypes[0]&&Q.accepts[Q.dataTypes[0]]?Q.accepts[Q.dataTypes[0]]+(Q.dataTypes[0]!=="*"?", "+q+"; q=0.01":""):Q.accepts["*"]);for(X in Q.headers){W.setRequestHeader(X,Q.headers[X])}if(Q.beforeSend&&(Q.beforeSend.call(af,W,Q)===false||L===2)){return W.abort()}O="abort";for(X in {success:1,error:1,complete:1}){W[X](Q[X])}Y=v(C,Q,J,W);if(!Y){S(-1,"No Transport")}else{W.readyState=1;if(I){T.trigger("ajaxSend",[W,Q])}if(Q.async&&Q.timeout>0){R=setTimeout(function(){W.abort("timeout")},Q.timeout)}try{L=1;Y.send(U,S)}catch(Z){if(L<2){S(-1,Z)}else{throw Z}}}return W},active:0,lastModified:{},etag:{}});function B(P,O,L){var K,M,J,e,H=P.contents,N=P.dataTypes,I=P.responseFields;for(M in I){if(M in L){O[I[M]]=L[M]}}while(N[0]==="*"){N.shift();if(K===undefined){K=P.mimeType||O.getResponseHeader("content-type")}}if(K){for(M in H){if(H[M]&&H[M].test(K)){N.unshift(M);break}}}if(N[0] in L){J=N[0]}else{for(M in L){if(!N[0]||P.converters[M+" "+N[0]]){J=M;break}if(!e){e=M}}J=J||e}if(J){if(J!==N[0]){N.unshift(J)}return L[J]}}function c(R,J){var P,H,N,L,O=R.dataTypes.slice(),I=O[0],Q={},K=0;if(R.dataFilter){J=R.dataFilter(J,R.dataType)}if(O[1]){for(P in R.converters){Q[P.toLowerCase()]=R.converters[P]}}for(;(N=O[++K]);){if(N!=="*"){if(I!=="*"&&I!==N){P=Q[I+" "+N]||Q["* "+N];if(!P){for(H in Q){L=H.split(" ");if(L[1]===N){P=Q[I+" "+L[0]]||Q["* "+L[0]];if(P){if(P===true){P=Q[H]}else{if(Q[H]!==true){N=L[0];O.splice(K--,0,N)}}break}}}}if(P!==true){if(P&&R["throws"]){J=P(J)}else{try{J=P(J)}catch(M){return{state:"parsererror",error:P?M:"No conversion from "+I+" to "+N}}}}}I=N}}return{state:"success",data:J}}var y=[],n=/\?/,D=/(=)\?(?=&|$)|\?\?/,z=i.now();i.MLjqui.data.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=y.pop()||(i.expando+"_"+(z++));this[e]=true;return e}});i.MLjqui.data.ajaxPrefilter("json jsonp",function(Q,L,P){var O,e,N,J=Q.data,H=Q.url,I=Q.jsonp!==false,M=I&&D.test(H),K=I&&!M&&typeof J==="string"&&!(Q.contentType||"").indexOf("application/x-www-form-urlencoded")&&D.test(J);if(Q.dataTypes[0]==="jsonp"||M||K){O=Q.jsonpCallback=i.isFunction(Q.jsonpCallback)?Q.jsonpCallback():Q.jsonpCallback;e=window[O];if(M){Q.url=H.replace(D,"$1"+O)}else{if(K){Q.data=J.replace(D,"$1"+O)}else{if(I){Q.url+=(n.test(H)?"&":"?")+Q.jsonp+"="+O}}}Q.converters["script json"]=function(){if(!N){i.error(O+" was not called")}return N[0]};Q.dataTypes[0]="json";window[O]=function(){N=arguments};P.always(function(){window[O]=e;if(Q[O]){Q.jsonpCallback=L.jsonpCallback;y.push(O)}if(N&&i.isFunction(e)){e(N[0])}N=e=undefined});return"script"}});i.MLjqui.data.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){i.globalEval(e);return e}}});i.MLjqui.data.ajaxPrefilter("script",function(e){if(e.cache===undefined){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});i.MLjqui.data.ajaxTransport("script",function(I){if(I.crossDomain){var e,H=document.head||document.getElementsByTagName("head")[0]||document.documentElement;return{send:function(J,K){e=document.createElement("script");e.async="async";if(I.scriptCharset){e.charset=I.scriptCharset}e.src=I.url;e.onload=e.onreadystatechange=function(M,L){if(L||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(H&&e.parentNode){H.removeChild(e)}e=undefined;if(!L){K(200,"success")}}};H.insertBefore(e,H.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var w,x=window.ActiveXObject?function(){for(var e in w){w[e](0,1)}}:false,m=0;function g(){try{return new window.XMLHttpRequest()}catch(H){}}function s(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(H){}}i.MLjqui.data.ajaxSettings.xhr=window.ActiveXObject?function(){return !this.isLocal&&g()||s()}:g;(function(e){i.extend(i.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(i.MLjqui.data.ajaxSettings.xhr());if(i.support.ajax){i.MLjqui.data.ajaxTransport(function(e){if(!e.crossDomain||i.support.cors){var H;return{send:function(N,I){var L,K,M=e.xhr();if(e.username){M.open(e.type,e.url,e.async,e.username,e.password)}else{M.open(e.type,e.url,e.async)}if(e.xhrFields){for(K in e.xhrFields){M[K]=e.xhrFields[K]}}if(e.mimeType&&M.overrideMimeType){M.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!N["X-Requested-With"]){N["X-Requested-With"]="XMLHttpRequest"}try{for(K in N){M.setRequestHeader(K,N[K])}}catch(J){}M.send((e.hasContent&&e.data)||null);H=function(W,Q){var R,P,O,U,T;try{if(H&&(Q||M.readyState===4)){H=undefined;if(L){M.onreadystatechange=i.noop;if(x){delete w[L]}}if(Q){if(M.readyState!==4){M.abort()}}else{R=M.status;O=M.getAllResponseHeaders();U={};T=M.responseXML;if(T&&T.documentElement){U.xml=T}try{U.text=M.responseText}catch(V){}try{P=M.statusText}catch(V){P=""}if(!R&&e.isLocal&&!e.crossDomain){R=U.text?200:404}else{if(R===1223){R=204}}}}}catch(S){if(!Q){I(-1,S)}}if(U){I(R,P,U,O)}};if(!e.async){H()}else{if(M.readyState===4){setTimeout(H,0)}else{L=++m;if(x){if(!w){w={};i(window).unload(x)}w[L]=H}M.onreadystatechange=H}}},abort:function(){if(H){H(0,1)}}}}})}i.MLjqui.filter=function(){this.operator="and";var M=0;var J=1;var P=["EMPTY","NOT_EMPTY","CONTAINS","CONTAINS_CASE_SENSITIVE","DOES_NOT_CONTAIN","DOES_NOT_CONTAIN_CASE_SENSITIVE","STARTS_WITH","STARTS_WITH_CASE_SENSITIVE","ENDS_WITH","ENDS_WITH_CASE_SENSITIVE","EQUAL","EQUAL_CASE_SENSITIVE","NULL","NOT_NULL"];var R=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"];var S=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"];var L=["EQUAL","NOT_EQUAL"];var K=new Array();var Q=new Array();this.evaluate=function(X){var V=true;for(var W=0;WK.length){return null}return Q[U]};this.setoperatorat=function(V,U){if(V==undefined||V==null){return null}if(V<0||V>K.length){return null}Q[U]=U};this.getfilterat=function(U){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}return K[U]};this.setfilterat=function(U,V){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}V.key=O();K[U]=V};this.clear=function(){K=new Array();Q=new Array()};var T=function(V,U){this.filtervalue=V;this.comparisonoperator=U;this.type="stringfilter";this.evaluate=function(af){var ae=this.filtervalue;var al=this.comparisonoperator;if(af==null||af==undefined||af==""){if(al=="NULL"){return true}if(al=="EQUAL"&&af==ae){return true}if(al=="NOT_EQUAL"&&af!=ae){return true}if(al!="EMPTY"){return false}else{if(af==""){return true}}}var an="";try{an=af.toString()}catch(ag){return true}var am=function(ap,ao){switch(al){case"EQUAL":return i.MLjqui.string.equalsIgnoreCase(ap,ao);case"EQUAL_CASE_SENSITIVE":return i.MLjqui.string.equals(ap,ao);case"NOT_EQUAL":return !i.MLjqui.string.equalsIgnoreCase(ap,ao);case"NOT_EQUAL_CASE_SENSITIVE":return !i.MLjqui.string.equals(ap,ao);case"CONTAINS":return i.MLjqui.string.containsIgnoreCase(ap,ao);case"CONTAINS_CASE_SENSITIVE":return i.MLjqui.string.contains(ap,ao);case"DOES_NOT_CONTAIN":return !i.MLjqui.string.containsIgnoreCase(ap,ao);case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return !i.MLjqui.string.contains(ap,ao);case"EMPTY":return ap=="";case"NOT_EMPTY":return ap!="";case"NOT_NULL":return ap!=null;case"STARTS_WITH":return i.MLjqui.string.startsWithIgnoreCase(ap,ao);case"ENDS_WITH":return i.MLjqui.string.endsWithIgnoreCase(ap,ao);case"ENDS_WITH_CASE_SENSITIVE":return i.MLjqui.string.endsWith(ap,ao);case"STARTS_WITH_CASE_SENSITIVE":return i.MLjqui.string.startsWith(ap,ao);default:return false}};var Z=new Array();if(ae&&ae.indexOf){if(ae.indexOf("|")>=0||ae.indexOf(" AND ")>=0||ae.indexOf(" OR ")>=0||ae.indexOf(" and ")>=0||ae.indexOf(" or ")>=0){var aa=am(an,ae);if(aa){return aa}var ab=ae.indexOf(" AND ")>=0?ae.split(" AND "):new Array();var Y=ae.indexOf(" OR ")>=0?ae.split(" OR "):new Array();var X=ae.indexOf(" and ")>=0?ae.split(" and "):new Array();var ac=ae.indexOf(" or ")>=0?ae.split(" or "):new Array();var W=ae.indexOf("|")>=0?ae.split("|"):new Array();if(W.length>0){for(var ak=0;ak=0?ae.split(" "):new Array();if(aj.length>0){for(var ak=0;ak0){for(var ak=0;ak=0){Z.push(ab[ak])}}}if(Y.length>0){for(var ak=0;ak=0){Z.push(Y[ak])}}}var ai=undefined;for(var ah=0;ahao;case"GREATER_THAN_OR_EQUAL":return ap>=ao;case"LESS_THAN":return ap=0||af.indexOf(" AND ")>=0||af.indexOf(" OR ")>=0||af.indexOf(" and ")>=0||af.indexOf(" or ")>=0){var ab=am(an,af);if(ab){return ab}af=af.toString();var ac=af.indexOf(" AND ")>=0?af.split(" AND "):new Array();var Z=af.indexOf(" OR ")>=0?af.split(" OR "):new Array();var Y=af.indexOf(" and ")>=0?af.split(" and "):new Array();var ad=af.indexOf(" or ")>=0?af.split(" or "):new Array();ac=ac.concat(Y);Z=Z.concat(ad);var X=af.indexOf("|")>=0?af.split("|"):new Array();if(X.length>0){for(var ak=0;ak0){for(var ak=0;ak=0){aa.push(ac[ak])}}}if(Z.length>0){for(var ak=0;ak=0){aa.push(Z[ak])}}}var aj=undefined;for(var ai=0;ai=0){var W=ag.toString().split("..");if(W.length==2){ab=an>=W[0]&&an<=W[1]}}else{var ab=am(an,ag)}var ae=ai=0){aa=af.toString().split("..");if(aa.length==2){return an>=aa[0]&&an<=aa[1]}}return am(an,af)}};var H=function(X,V,W,ab){this.filtervalue=X;this.type="datefilter";var Z=this;if(W!=undefined&&ab!=undefined){var Y=i.MLjqui.dataFormat.parsedate(X,W,ab);if(Y!=null){this.filterdate=Y}else{var U=i.MLjqui.dataFormat.tryparsedate(X,ab);if(U!=null){this.filterdate=U}}}else{var aa=new Date(X);if(aa.toString()=="NaN"||aa.toString()=="Invalid Date"){this.filterdate=i.MLjqui.dataFormat.tryparsedate(X)}else{this.filterdate=aa}}if(!this.filterdate){var aa=new Date(X);if(aa.toString()=="NaN"||aa.toString()=="Invalid Date"){this.filterdate=i.MLjqui.dataFormat.tryparsedate(X)}else{this.filterdate=aa}}this.comparisonoperator=V;this.evaluate=function(ao){var an=this.filtervalue;var aw=this.comparisonoperator;if(ao==null||ao==undefined||ao==""){if(aw=="NOT_NULL"){return false}if(aw=="NULL"){return true}else{switch(aw){case"EQUAL":return ao==an;case"NOT_EQUAL":return ao!=an}return false}}else{if(aw=="NULL"){return false}if(aw=="NOT_NULL"){return true}}var ay=new Date();ay.setFullYear(1900,0,1);ay.setHours(12,0,0,0);try{var av=new Date(ao);if(av.toString()=="NaN"||av.toString()=="Invalid Date"){ao=i.MLjqui.dataFormat.tryparsedate(ao)}else{ao=av}ay=ao;var at=false;if(W!=undefined&&ab!=undefined){if(W.indexOf("t")>=0||W.indexOf("T")>=0||W.indexOf(":")>=0||W.indexOf("f")>=0){at=true;if(an&&an.toString().indexOf(":")==-1){var aj=i.MLjqui.dataFormat.tryparsedate(an.toString()+":00",ab);if(aj!=null){Z.filterdate=aj}}}}if(!at){ay.setHours(0);ay.setMinutes(0);ay.setSeconds(0)}}catch(ap){if(ao.toString()!=""){return false}}if(Z.filterdate!=null){an=Z.filterdate}else{if(an&&an.indexOf){if(an.indexOf(":")!=-1||!isNaN(parseInt(an))){var ai=new Date(ay);ai.setHours(12,0,0,0);var ah=an.split(":");for(var au=0;auaz;case"GREATER_THAN_OR_EQUAL":return aA>=az;case"LESS_THAN":return aA=0||an.indexOf(" AND ")>=0||an.indexOf(" OR ")>=0||an.indexOf(" and ")>=0||an.indexOf(" or ")>=0){var aj=ax(ay,an);if(aj){return aj}var ak=an.indexOf(" AND ")>=0?an.split(" AND "):new Array();var af=an.indexOf(" OR ")>=0?an.split(" OR "):new Array();var ae=an.indexOf(" and ")>=0?an.split(" and "):new Array();var al=an.indexOf(" or ")>=0?an.split(" or "):new Array();ak=ak.concat(ae);af=af.concat(al);var ad=an.indexOf("|")>=0?an.split("|"):new Array();if(ad.length>0){for(var au=0;au0){for(var au=0;au=0){ag.push(ak[au])}}}if(af.length>0){for(var au=0;au=0){ag.push(af[au])}}}var ar=undefined;for(var aq=0;aq=0){var ac=ao.toString().split("..");if(ac.length==2){aj=ay>=ac[0]&&ay<=ac[1]}}else{var aj=ax(ay,ao)}var am=aq=0){ag=an.toString().split("..");if(ag.length==2){return ay>=ag[0]&&ay<=ag[1]}}return ax(ay,an)}};var e=function(V,U,W){this.filtervalue=V;this.comparisonoperator=U;this.evaluate=function(Y,X){return W(this.filtervalue,Y,this.comparisonoperator)}}}})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidatatable.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidatatable.js deleted file mode 100644 index 1547a9db..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidatatable.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(b){b.MLjqui.MLjquiWidget("MLjquiDataTable","",{});b.extend(b.MLjqui._MLjquiDataTable.prototype,{defineInstance:function(){var c={altRows:false,aggregatesHeight:34,autoShowLoadElement:true,autoRowHeight:true,columnsHeight:30,columns:[],columnGroups:null,columnsResize:false,columnsReorder:false,dataview:null,disabled:false,editable:false,editSettings:{saveOnPageChange:true,saveOnBlur:true,saveOnSelectionChange:true,cancelOnEsc:true,saveOnEnter:true,editSingleCell:false,editOnDoubleClick:true,editOnF2:true},enableHover:true,enableBrowserSelection:false,filterHeight:30,filterable:false,filterMode:"default",groupsRenderer:null,groups:new Array(),headerZIndex:359,height:null,handleKeyboardNavigation:null,indentWidth:25,initRowDetails:false,loadingErrorMessage:"The data is still loading and you cannot set a property or call a method. You can do that once the data binding is completed. MLjquiDataTable raises the 'bindingComplete' event when the binding is completed.",localization:null,pagerHeight:28,pageSize:10,pageSizeOptions:["5","10","20"],pageable:false,pagerPosition:"bottom",pagerMode:"default",pageSizeMode:"default",pagerButtonsCount:5,pagerRenderer:null,ready:null,rendertoolbar:null,rowDetails:false,renderStatusBar:null,rendered:null,rendering:null,rtl:false,sortable:false,showtoolbar:false,showstatusbar:false,statusBarHeight:34,serverProcessing:false,selectionMode:"multiplerows",scrollBarSize:b.MLjqui.utilities.scrollBarSize,touchScrollBarSize:b.MLjqui.utilities.touchScrollBarSize,showAggregates:false,showHeader:true,maxHeight:999999,maxWidth:999999,autoBind:true,beginEdit:null,endEdit:null,autokoupdates:true,columnsVirtualization:false,exportSettings:{columnsHeader:true,hiddenColumns:false,serverURL:null,characterSet:null,collapsedRecords:false,recordsInView:true,fileName:"MLjquiDataTable"},source:{beforeprocessing:null,beforesend:null,loaderror:null,localdata:null,data:null,datatype:"array",datafields:[],url:"",root:"",record:"",id:"",totalrecords:0,recordstartindex:0,recordendindex:0,loadallrecords:true,sortcolumn:null,sortdirection:null,sort:null,filter:null,sortcomparer:null},toolbarHeight:34,tableZIndex:369,_updating:false,touchmode:"auto",width:null,that:this,incrementalSearch:true,events:["bindingComplete","sort","filter","pageChanged","pageSizeChanged","rowClick","rowDoubleClick","cellValueChanged","rowBeginEdit","rowEndEdit","rowSelect","rowUnselect","rowCheck","rowUncheck","columnResized","columnReordered","rowExpand","rowCollapse","cellBeginEdit","cellEndEdit"]};b.extend(true,this,c);this.that=this;return c},createInstance:function(e){var l=this;if(b.MLjqui.utilities.scrollBarSize!=15){l.scrollBarSize=b.MLjqui.utilities.scrollBarSize}if((l.element.nodeName.toLowerCase()=="table")||b(l.element).children("table").length>0){var n=l.host.find("tbody tr");var d=l.host.find("th");var w=new Array();if(d.length===0){d=n[0];n.splice(0,1)}if(l.localizestrings){l.localizestrings();if(l.localization!=null){l.localizestrings(l.localization,false)}}var z=[];for(var u=0;u");var m=l.host.parent();var q=l.host.data();q.MLjquiDataTable.host=m;q.MLjquiDataTable.element=m[0];l.host.parent()[0].id=l.element.id;try{l.host.parent()[0].style=l.element.style}catch(r){}l.element=m[0];l.host=m;l.host.data(q);var o={dataFields:w,localdata:z,datatype:"array"};var y=new b.MLjqui.dataAdapter(o);l.source=y}if(l.source&&!l.source.dataBind){l.source=new b.MLjqui.dataAdapter(l.source)}var x=l.source._source.datafields;if(x&&x.length>0){l._camelCase=l.source._source.dataFields!==undefined;l.selectionMode=l.selectionMode.toLowerCase()}if(l.host.attr("tabindex")==null){l.host.attr("tabindex","0")}l.host.attr("role","grid");l.host.attr("align","left");l.host.addClass(l.toTP("MLjqui-grid"));l.host.addClass(l.toTP("MLjqui-reset"));l.host.addClass(l.toTP("MLjqui-rc-all"));l.host.addClass(l.toTP("MLjqui-widget"));l.host.addClass(l.toTP("MLjqui-widget-content"));if(l._testmodules()){return}l.render(true);b.MLjqui.utilities.resize(l.host,function(){var A=b(window).width();var i=b(window).height();var j=l.host.width();var B=l.host.height();if(l._lastHostWidth!=j||l._lastHostHeight!=B){l._updatesize(l._lastHostWidth!=j,l._lastHostHeight!=B)}l._lastWidth=A;l._lastHeight=i;l._lastHostWidth=j;l._lastHostHeight=B})},getvaluebytype:function(h,d){var f=h;if(h==null){return h}if(this.gridlocalization.decimalseparator==","){if(h.indexOf(this.gridlocalization.decimalseparator)>=0){h=h.replace(this.gridlocalization.decimalseparator,".")}}if(h.indexOf(this.gridlocalization.currencysymbol)>=0){h=h.replace(this.gridlocalization.currencysymbol,"")}if(h.indexOf(this.gridlocalization.percentagesymbol)>=0){h=h.replace(this.gridlocalization.percentagesymbol,"")}if(b.isArray(h)&&d.type!="array"){for(var e=0;e');var d=b('
          '+this.gridlocalization.loadtext+"
          ");d.addClass(this.toTP("MLjqui-rc-all"));this.dataloadelement.addClass(this.toTP("MLjqui-rc-all"));d.addClass(this.toTP("MLjqui-tb-fill-state-normal"));this.dataloadelement.append(d);this.dataloadelement.width(this.width);this.dataloadelement.height(this.height);this.host.prepend(this.dataloadelement);if(this.source._source.url!=""){var c=false;if(this.height==="auto"||this.height===null||this.autoheight){if(this.maxHeight==999999){c=true}}if(c){this.host.height(100);this.dataloadelement.height(100)}else{this.host.height(this.height);this.dataloadelement.height(this.height)}var e=false;if(this.width==="auto"||this.width===null||this.autoWidth){e=true}if(e){this.host.width(300);this.dataloadelement.width(300)}else{this.host.width(this.width);this.dataloadelement.width(this.width)}}},_measureElement:function(d){var c=b("measure Text");c.addClass(this.toTP("MLjqui-widget"));b(document.body).append(c);if(d=="cell"){this._cellheight=c.height()}else{this._columnheight=c.height()}c.remove()},_testmodules:function(){var g="";var e=this;var c=function(){if(g.length!=""){g+=","}};if(!this.host.MLjquiScrollBar){c();g+=" MLjquiscrollbar.js"}if(!this.host.MLjquiButton){c();g+=" MLjquibuttons.js"}if(!b.MLjqui.dataAdapter){c();g+=" MLjquidata.js"}if(g!=""||this.editable||this.filterable||this.pageable){var d=[];var f=function(h){switch(h){case"checkbox":if(!e.host.MLjquiCheckBox&&!d.checkbox){d.checkbox=true;c();g+=" MLjquicheckbox.js"}break;case"dropdownlist":if(!e.host.MLjquiDropDownList&&!d.dropdownlist){c();d.dropdownlist=true;g+=" MLjquidropdownlist.js(requires: MLjquilistbox.js)"}else{if(!e.host.MLjquiListBox&&!d.listbox){c();d.listbox=true;g+=" MLjquilistbox.js"}}break}};if((this.filterable&&this.filterMode!="simple")||(this.pagerMode=="advanced"&&this.pageable)){f("dropdownlist")}if(g!=""){throw new Error("MLjquiDataTable: Missing references to the following module(s): "+g);this.host.remove();return true}}return false},focus:function(){try{this.wrapper.focus();this.host.focus();var d=this;setTimeout(function(){d.wrapper.focus();d.host.focus()},25);this.focused=true}catch(c){}},hiddenParent:function(){return b.MLjqui.isHidden(this.host)},isBindingCompleted:function(){return !this._loading},_updatesize:function(i,h){if(this._loading){return}var f=this;var g=f.host.width();var e=f.host.height();if(!f._oldWidth){f._oldWidth=g}if(!f._oldHeight){f._oldHeight=e}if(f._resizeTimer!=undefined){clearTimeout(f._resizeTimer);f._resizeTimer=null}var d=300;var c=function(){if(f._resizeTimer){clearTimeout(f._resizeTimer)}f.resizingGrid=true;if(b.MLjqui.isHidden(f.host)){return}f._updatecolumnwidths();f.refresh();f._oldWidth=g;f._oldHeight=e;f.resizingGrid=false};c();f._resizeTimer=setTimeout(function(){var k=f.host.width();var j=f.host.height();if(f._oldWidth!=k||f._oldHeight!=j){c()}},d)},resize:function(d,c){if(d!=undefined){this.width=d}if(c!=undefined){this.height=c}this._updatecolumnwidths();this.refresh()},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var c=b.MLjqui.mobile.isTouchDevice();this.touchDevice=c;if(this.touchmode==true){c=true;b.MLjqui.mobile.setMobileSimulator(this.table[0]);this.touchDevice=c}else{if(this.touchmode==false){c=false}}if(c){this.touchDevice=true;this.host.addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-content").addClass(this.toThemeProperty("MLjqui-touch"));this.host.find("MLjqui-widget-header").addClass(this.toThemeProperty("MLjqui-touch"));this.scrollBarSize=this.touchScrollBarSize}return c},toTP:function(c){return this.toThemeProperty(c)},localizestrings:function(c,f){this._cellscache=new Array();if(b.MLjqui.dataFormat){b.MLjqui.dataFormat.cleardatescache()}if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(c!=null){for(var h in c){if(h.toLowerCase()!==h){c[h.toLowerCase()]=c[h]}}var j=["pagergotopagestring","pagershowrowsstring","pagerrangestring","pagernextbuttonstring","pagerpreviousbuttonstring","pagerfirstbuttonstring","pagerlastbuttonstring","toppagerstring","firstDay","days","months","AM","PM","patterns","percentsymbol","currencysymbol","currencysymbolposition","decimalseparator","thousandsseparator","filterapplystring","filteraddnew","filtercancelstring","filterclearstring","filterstring","filterstringcomparisonoperators","filternumericcomparisonoperators","filterdatecomparisonoperators","filterbooleancomparisonoperators","emptydatastring","filterselectstring","todaystring","clearstring","validationstring","loadtext","filtersearchstring","loadingErrorMessage"];var g=this;for(var e=0;eg&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}else{this.vScrollBar[0].style.visibility="hidden"}if((h!=this.vScrollBar[0].style.visibility)){this._updatecolumnwidths();var i=this.table.height();if(j!=i){j=i;if(!q&&j>g&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.vScrollBar[0].style.visibility=e;n=4+parseInt(d);this.vScrollBar.MLjquiScrollBar({max:j-g})}}}if(this.scrollBarSize==0){n=0}var o=this.table?this.table.width():0;if(o>3){o-=3}var c=parseInt(this.host.css("border-left-width"))+parseInt(this.host.css("border-right-width"));var r=c+this.host.width()-n;if(o>r&&!p){this.hScrollBar[0].style.visibility=e;this.hScrollBar.MLjquiScrollBar({max:o-r});n=4+parseInt(d);if(d==0){n=0}if(!q){if(j>g-n+4&&(this.source.records.length>0||(this.source.hierarchy&&this.source.hierarchy.length>0))){this.hScrollBar.MLjquiScrollBar({max:c+o-r});var f=this.vScrollBar[0].style.visibility==="hidden";this.vScrollBar[0].style.visibility=e;this._updatecolumnwidths();if(f){this.hScrollBar.MLjquiScrollBar({max:o-r+n+c})}var k=this.table?this.table.width():0;if(k>3){k-=3}if(k!=o){if(k"+e+"");d.addClass(this.toTP("MLjqui-widget"));d.addClass(this.toTP("MLjqui-grid"));d.addClass(this.toTP("MLjqui-grid-column-header"));d.addClass(this.toTP("MLjqui-widget-header"));b(document.body).append(d);var c=d.outerWidth()+20;d.remove();return c},_arrangeAutoHeight:function(e){if(!e){e=0}if(this.height==="auto"||this.height===null||this.autoheight){var h=this.table.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:-1}else{g+=this.showHeader?this.columnsheader.height():-1}g+=this.showstatusbar?this.statusBarHeight:0;g+=this.showAggregates?this.aggregatesHeight:0;g+=this.showtoolbar?this.toolbarHeight:0;g+=this.pageable?this.pagerHeight:0;if(this.pagerPosition==="both"){g+=this.pageable?this.pagerHeight:0}g+=h;if(this.filterable){var f=this.filter.find(".filterrow");var c=this.filter.find(".filterrow-hidden");var d=1;if(c.length>0){d=0}g+=this.filterHeight-1+this.filterHeight*f.length*d}if(g+e>this.maxHeight){this.host.height(this.maxHeight)}else{this.host.height(g+e)}return true}return false},_arrangeAutoWidth:function(e){if(!e){e=0}if(this.width==="auto"||this.width===null||this.autowidth){var d=0;for(var f=0;fthis.maxWidth){this.host.width(this.maxWidth)}else{this.host.width(width+e)}return true}return false},_measureTopAndHeight:function(){var d=this.host.height();var h=0;if(this.showtoolbar){h+=this.toolbarHeight;d-=parseInt(this.toolbarHeight)}if(this.filterable){var g=this.filter.find(".filterrow");var e=this.filter.find(".filterrow-hidden");var f=1;if(e.length>0){f=0}h+=this.filterHeight;d-=parseInt(this.filterHeight);var c=f==1?g.length:0;h+=this.filterHeight*c;d-=this.filterHeight*c}if(this.pageable&&this.pagerPosition!="bottom"){h+=parseInt(this.pagerHeight)+1;if(d>this.pagerHeight&&this.pagerPosition==="both"){d-=parseInt(this.pagerHeight)}}return{top:h,height:d}},_arrange:function(){if(!this.table){return}this._arrangeAutoHeight();this._arrangeAutoWidth();var v=this.host.width();var r=this.host.height();var j=r;var i=this;if(this.pageable){if(this.pagerPosition==="bottom"){this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="both"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="inherit"}else{if(this.pagerPosition==="top"){this.toppager[0].style.visibility="inherit";this.pager[0].style.visibility="hidden"}}}}else{this.toppager[0].style.visibility="hidden";this.pager[0].style.visibility="hidden"}var q=0;if(this.showtoolbar){this.toolbar.width(v);this.toolbar.height(this.toolbarHeight-1);this.toolbar.css("top",0);q+=this.toolbarHeight;r-=parseInt(this.toolbarHeight)}else{this.toolbar[0].style.height="0px"}if(this.filterable){this.filter.width(v);this.filter.css("top",q);var t=this.filter.find(".filterrow");var h=this.filter.find(".filterrow-hidden");var A=1;if(h.length>0){A=0}this.filter.height(this.filterHeight-1+this.filterHeight*t.length*A);q+=this.filterHeight;r-=parseInt(this.filterHeight);var x=A==1?t.length:0;q+=this.filterHeight*x;r-=this.filterHeight*x}if(this.showstatusbar){this.statusbar.width(!this.table?v:Math.max(v,this.table.width()));this.statusbar.height(this.statusBarHeight-1)}else{this.statusbar[0].style.height="0px"}if(this.showAggregates){this.aggregates.height(this.aggregatesHeight-1)}else{this.aggregates[0].style.height="0px"}if(this.pageable&&this.pagerPosition!="bottom"){this.toppager[0].style.width=v+"px";this.toppager[0].style.height=parseInt(this.pagerHeight)+"px";this.toppager[0].style.top=parseInt(q)+"px";q+=parseInt(this.pagerHeight)+1;if(r>this.pagerHeight){r-=parseInt(this.pagerHeight)}}else{if(this.toppager[0].style.width!=v+"px"){this.toppager[0].style.width=parseInt(v)+"px"}if(this.toppager[0].style.height!=this.pagerHeight+"px"){this.toppager[0].style.height=parseInt(this.pagerHeight)+"px"}if(this.toppager[0].style.top!=q+"px"){this.toppager[0].style.top=q+"px"}var y=this.pagerPosition!="bottom"?this.pagerHeight:0;var d=q+y+"px";if(this.content[0].style.top!=d){this.content[0].style.top=q+this.pagerHeight+"px"}}this._updateScrollbars(j);var c=parseInt(this.scrollBarSize);var n=4;var e=2;var f=0;if(this.vScrollBar[0].style.visibility!="hidden"){f=c+n}if(this.hScrollBar[0].style.visibility!="hidden"){e=c+n+2}if(c==0){f=0;e=0}if(this.showAggregates){if(this.hScrollBar[0].style.visibility==="hidden"){this.aggregates.width(!this.table?v:Math.max(v,this.table.width())+4)}else{this.aggregates.width("auto")}}if("hidden"!=this.vScrollBar[0].style.visibility||"hidden"!=this.hScrollBar[0].style.visibility){var w=this._arrangeAutoHeight(e-2);var s=this._arrangeAutoWidth(f+1);if(w||s){var v=this.host.width();this.toppager[0].style.width=parseInt(v)+"px";this.toolbar[0].style.width=parseInt(v)+"px";this.statusbar[0].style.width=parseInt(v)+"px";this.filter[0].style.width=parseInt(v)+"px"}if(w){var B=this._measureTopAndHeight();q=B.top;r=B.height}}var m=0;if(this.pageable){m=this.pagerHeight;if(this.pagerPosition!="top"){e+=this.pagerHeight}}if(this.showAggregates){e+=this.aggregatesHeight;m+=this.aggregatesHeight}if(this.showstatusbar){e+=this.statusBarHeight;m+=this.statusBarHeight}if(this.hScrollBar[0].style.height!=c+"px"){this.hScrollBar[0].style.height=parseInt(c)+"px"}if(this.hScrollBar[0].style.top!=q+r-n-c-m+"px"||this.hScrollBar[0].style.left!="0px"){this.hScrollBar[0].style.top=q+r-n-c-m-1+"px";this.hScrollBar[0].style.left="0px"}var l=this.hScrollBar[0].style.width;var g=false;var z=false;if(f==0){if(l!=(v-2)+"px"){this.hScrollBar[0].style.width=(v-2)+"px";g=true}}else{if(l!=(v-c-n)+"px"){this.hScrollBar[0].style.width=(v-c-n+"px");g=true}}if(this.vScrollBar[0].style.width!=c+"px"){this.vScrollBar[0].style.width=c+"px";z=true}if(this.vScrollBar[0].style.height!=parseInt(r)-e+"px"){this.vScrollBar[0].style.height=(parseInt(r)-e+"px");z=true}if(this.vScrollBar[0].style.left!=parseInt(v)-parseInt(c)-n+"px"||this.vScrollBar[0].style.top!=q+"px"){this.vScrollBar[0].style.top=q+"px";this.vScrollBar[0].style.left=parseInt(v)-parseInt(c)-n+"px"}if(this.rtl){this.vScrollBar.css({left:"0px",top:q});if(this.vScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({left:c+2})}}var k=this.vScrollInstance;k.disabled=this.disabled;var u=this.hScrollInstance;u.disabled=this.disabled;if(g){u.refresh()}if(z){k.refresh()}var o=function(C){if((C.vScrollBar[0].style.visibility!="hidden")&&(C.hScrollBar[0].style.visibility!="hidden")){C.bottomRight[0].style.visibility="inherit";C.bottomRight[0].style.left=1+parseInt(C.vScrollBar.css("left"))+"px";C.bottomRight[0].style.top=parseInt(C.hScrollBar.css("top"))+"px";if(C.rtl){C.bottomRight.css("left","0px")}C.bottomRight[0].style.width=parseInt(c)+3+"px";C.bottomRight[0].style.height=parseInt(c)+4+"px";if(C.showAggregates){C.bottomRight.css("z-index",99);C.bottomRight.height(parseInt(c)+4+C.aggregatesHeight);C.bottomRight.css({top:parseInt(C.hScrollBar.css("top"))-C.aggregatesHeight})}}else{C.bottomRight[0].style.visibility="hidden"}};o(this);if(this.content[0].style.width!=v-f+"px"){this.content[0].style.width=v-f+"px"}if(this.content[0].style.height!=r-e+3+"px"){this.content[0].style.height=r-e+3+"px"}if(this.content[0].style.top!=q+"px"){this.content[0].style.top=parseInt(q)+"px"}if(this.rtl){this.content.css("left",f);if(this.filter&&(this.filter.children().length>0)){b(this.filter.children()).css("left",f)}if(this.table){var p=this.table.width();if(p0)){b(this.filter.children()).css("left",v-p+2)}}}}if(this.showAggregates){this.aggregates.css("top",q+r-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0));if(this.rtl){this.aggregates.css("left","0px")}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.css({top:q+r-n-c-m+this.aggregatesHeight+"px"});this.aggregates.css("top",1+q+r-c-5-this.aggregatesHeight-(this.pageable?this.pagerHeight:0)-(this.showstatusbar?(this.statusBarHeight+1):0))}o(this)}if(this.showstatusbar){this.statusbar.css("top",q+r-this.statusBarHeight-(this.pageable?this.pagerHeight:0));if(this.rtl){if(this.hScrollBar.css("visibility")=="hidden"){this.statusbar.css("left",this.content.css("left"))}else{this.statusbar.css("left","0px")}}}if(this.pageable){this.pager[0].style.width=v+"px";this.pager[0].style.height=this.pagerHeight+"px";this.pager[0].style.top=parseInt(q)+parseInt(r)-parseInt(this.pagerHeight)-1+"px"}else{this.pager[0].style.height="0px"}this.vScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;this.hScrollBar[0].style.zIndex=this.tableZIndex+this.headerZIndex+10+this.columns.records.length;if(v!=parseInt(this.dataloadelement[0].style.width)){this.dataloadelement[0].style.width=this.element.style.width}if(r!=parseInt(this.dataloadelement[0].style.height)){this.dataloadelement[0].style.height=this.element.style.height}this._hostwidth=v},scrollOffset:function(e,d){if(arguments.length==0||(e!=null&&typeof(e)=="object"&&!e.top)){return{left:this.hScrollBar.MLjquiScrollBar("value"),top:this.vScrollBar.MLjquiScrollBar("value")}}if(e!=null&&typeof(e)=="object"){var d=e.left;var c=e.top;var e=c}if(e==null||d==null||e==undefined||d==undefined){return}this.vScrollBar.MLjquiScrollBar("setPosition",e);this.hScrollBar.MLjquiScrollBar("setPosition",d)},scrollleft:function(c){if(c==null||c==undefined){return}if(this.hScrollBar.css("visibility")!="hidden"){this.hScrollBar.MLjquiScrollBar("setPosition",c)}},scrolltop:function(c){if(c==null||c==undefined){return}if(this.vScrollBar.css("visibility")!="hidden"){this.vScrollBar.MLjquiScrollBar("setPosition",c)}},beginUpdate:function(){this._updating=true;this._datachanged=false},endUpdate:function(c){this._updating=false;if(c===false){return}this._rendercolumnheaders();this.refresh()},updating:function(){return this._updating},databind:function(g,i,c){if(this.loadingstate===true){return}if(this.host.css("display")=="block"){if(this.autoShowLoadElement){b(this.dataloadelement).css("visibility","visible");b(this.dataloadelement).css("display","block");this.dataloadelement.width(this.host.width());this.dataloadelement.height(this.host.height())}else{b(this.dataloadelement).css("visibility","hidden");b(this.dataloadelement).css("display","none")}}var f=this;if(g==null){g={}}if(g.sortcomparer==undefined||g.sortcomparer==null){g.sortcomparer=null}if(g.filter==undefined||g.filter==null){g.filter=null}if(g.sort==undefined||g.sort==null){g.sort=null}if(g.data==undefined||g.data==null){g.data=null}var d=null;if(g!=null){d=g._source!=undefined?g._source.url:g.url}this.dataview=this.dataview||new b.MLjqui.dataView();this.dataview.pageable=this.pageable;this.dataview.grid=this;if(!f.initializedcall){if(g._source){if(this.sortable){if(g._source.sortcolumn!=undefined){this.sortcolumn=g._source.sortcolumn;this.source.sortcolumn=this.sortcolumn;this.dataview.sortfield=g._source.sortcolumn;g._source.sortcolumn=null}if(g._source.sortdirection!=undefined){this.dataview.sortfielddirection=g._source.sortdirection;var h=g._source.sortdirection;if(h=="a"||h=="asc"||h=="ascending"||h==true){var e=true}else{var e=false}if(h!=null){this.sortdirection={ascending:e,descending:!e}}else{this.sortdirection={ascending:false,descending:false}}}}}if(this.pageable){if(g._source){if(g._source.pagenum!=undefined){this.dataview.pagenum=g._source.pagenum}if(g._source.pagesize!=undefined){this.pageSize=g._source.pagesize;this.dataview.pagesize=g._source.pagesize}else{this.dataview.pagesize=g._source.pagesize;if(this.dataview.pagesize==undefined){this.dataview.pagesize=this.pageSize}}}}if(this.sortable){if(g.sortcolumn){this.dataview.sortfield=g.sortcolumn}if(g.sortdirection){this.dataview.sortfielddirection=g.sortdirection}}}this._loading=true;this.dataview.update=function(z){f._loading=false;f.rowsByKey=new Array();var m=f.source._source.datafields;if(f.groups&&f.groups.length>0){var u=Object.prototype.toString;var w=f.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!f.source.records.sort){var v=new Array();var t=0;b.each(data,function(){v[startindex+t++]=this});data=v}f.source.records.sort(function(B,j){if(B===undefined){B=null}if(j===undefined){j=null}if(B===null&&j===null){return 0}if(B===null&&j!==null){return -1}if(B!==null&&j===null){return 1}var E=0;var D=0;if(B&&B.uid){E=B.uid}if(j&&j.uid){D=j.uid}B=B.toString();j=j.toString();if(b.MLjqui.dataFormat.isNumber(B)&&b.MLjqui.dataFormat.isNumber(j)){if(Bj){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(B)&&b.MLjqui.dataFormat.isDate(j)){if(Bj){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(B)&&!b.MLjqui.dataFormat.isNumber(j)){B=String(B).toLowerCase();j=String(j).toLowerCase()}}}try{if(Bj){return 1}}catch(C){var F=C}if(typeof(E)=="number"){if(ED){return 1}}return 0});Object.prototype.toString=u}for(var q=0;q0){var l=function(B){for(var C=0;C0){l(B[C].records)}}};l(A.records)}if(q===0){var k=false;if(m){for(var o=0;o-1||y.toString().indexOf(f.gridlocalization.percentsymbol)>-1){var r=y.toString().split(" ").length;var s=new Number(f._toNumber(y.toString()));if(!isNaN(s)&&r==1){m[o].type="number"}}if(b.MLjqui.dataFormat.isNumber(y)||(!isNaN(parseFloat(y))&&isFinite(y))){m[o].type="number"}if(b.MLjqui.dataFormat.isDate(y)){m[o].type="date"}}}}if(k){for(var o=0;og-c){this.hScrollBar.MLjquiScrollBar("setPosition",g-c)}else{if(g>e){this.hScrollBar.MLjquiScrollBar("setPosition",h+g-e)}}}},ensurerowvisiblebykey:function(o){if(this.vScrollBar[0].style.visibility==="hidden"){return false}var p=this._getuirow(o);if(!p){return}var m=this.vScrollBar.MLjquiScrollBar("value");var e=this.host.height();var g=0;if(!this.columnGroups){g+=this.showHeader?this.columnsHeight:0}else{g+=this.showHeader?this.columnsheader.height():0}if(this.filterable){g+=this.filter.height()}if(this.pageable){if(this.pagerPosition==="top"){g+=this.pagerHeight}}if(this.showtoolbar){g+=this.toolbarHeight}e-=g;if(this.pageable&&this.pagerPosition!=="top"){e-=this.pagerHeight}if(this.showstatusbar){e-=this.statusBarHeightt}if(this.showAggregates){e-=this.aggregatesHeight}if(this.hScrollBar.css("visibility")!="hidden"){e-=20}var n=this.host.coord().top+g;var f=m;var c=e+f;var i=p.coord().top+m-n;i=Math.round(i);var l=i+p.outerHeight();l=Math.round(l);if(Math.round(p.position().top)===0){return this.vScrollBar.MLjquiScrollBar("setPosition",0)}else{var j=b(this._table.children()[1]).children().length-1;var d=this._getuikey(j);var k=this._getuirow(d);if(k){if(k[0]===p[0]){return this.vScrollBar.MLjquiScrollBar("setPosition",this.vScrollBar.MLjquiScrollBar("max"))}}}if(ic){return this.vScrollBar.MLjquiScrollBar("setPosition",4+l-e-m)}},ensureRowVisible:function(c){var d=this._getkey(c);this.ensurerowvisiblebykey(d)},getColumn:function(c){var d=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.datafield==c||this.displayfield==c){d=this;return false}})}return d},_setcolumnproperty:function(e,g,h){if(e==null||g==null||h==null){return null}var d=g;g=g.toLowerCase();var f=this.getColumn(e);if(f==null){return}var i=f[g];f[g]=h;f[d]=h;var c=this.getColumn(e);if(c!=null){c[g]=h}switch(g){case"filteritems":case"text":case"editable":case"resizable":case"draggable":case"hidden":case"hideable":case"renderer":case"cellsrenderer":case"align":case"aggregates":case"cellsalign":case"cellsformat":case"pinned":case"contenttype":case"filterable":case"groupable":case"cellclass":case"cellclassname":case"class":case"width":case"minwidth":case"maxwidth":if(g=="align"){this._rendercolumnheaders();this.refresh()}else{if(g=="text"||g=="class"||g=="hidden"||g=="pinned"||g=="resizable"||g=="renderer"){this._rendercolumnheaders();this.refresh()}else{if(g=="width"||g=="maxwidth"||g=="minwidth"){f._width=null;f._percentagewidth=null;this._updatecolumnwidths();this.refresh()}else{this.refresh()}}}break}},getColumnProperty:function(c,e){if(c==null||e==null){return null}e=e.toLowerCase();var d=this.getColumn(c);return d[e]},setColumnProperty:function(c,d,e){this._setcolumnproperty(c,d,e)},hideColumn:function(c){this._setcolumnproperty(c,"hidden",true)},showColumn:function(c){this._setcolumnproperty(c,"hidden",false)},updateBoundData:function(d,c){this.databind(this.source,d,c)},refresh:function(c){if(c!=true){if(b.MLjqui.isHidden(this.host)){return}this.vScrollInstance.setPosition(0);this._renderrows();this.updatepagerdetails();this._arrange();if(this._arrangeFilterRow){this._arrangeFilterRow()}this._renderhorizontalscroll();this._showicons();if(this.showAggregates){this._updateaggregates()}this._updateTouchScrolling()}},_updateTouchScrolling:function(){var d=this.that;if(d.isTouchDevice()){var f=b.MLjqui.mobile.getTouchEventName("touchstart");var e=b.MLjqui.mobile.getTouchEventName("touchend");var c=b.MLjqui.mobile.getTouchEventName("touchmove");if(d.table){d.removeHandler(d.table,f+".touchScroll");d.removeHandler(d.table,c+".touchScroll");d.removeHandler(d.table,e+".touchScroll");d.removeHandler(d.table,"touchcancel.touchScroll");b.MLjqui.mobile.touchScroll(d.table[0],Math.max(d.vScrollInstance.max,d.hScrollInstance.max),function(i,h){if(h!=null&&d.vScrollBar.css("visibility")!="hidden"){var g=d.vScrollInstance.value;d.vScrollInstance.setPosition(h)}if(i!=null&&d.hScrollBar.css("visibility")!="hidden"){var g=d.hScrollInstance.value;d.hScrollInstance.setPosition(i)}d.scrolled=new Date();d.vScrollInstance.thumbCapture=true},this.element.id,this.hScrollBar,this.vScrollBar)}}},_showicons:function(){if(!this.table){return}for(var e=0;e0){c.css("margin-right",4+h+"px")}else{c.css("margin-right","4px")}}else{if(h>0){c.css("margin-left",4+h+"px")}else{c.css("margin-left","4px")}}}}},render:function(j){var f="
          ";this.element.innerText="";this.element.innerHTML=f;this.wrapper=this.host.find("#wrapper"+this.element.id);this.content=this.host.find("#content"+this.element.id);this.content.addClass(this.toTP("MLjqui-reset"));var h=this.host.find("#verticalScrollBar"+this.element.id);var l=this.host.find("#horizontalScrollBar"+this.element.id);this.bottomRight=this.host.find("#bottomRight").addClass(this.toTP("MLjqui-grid-bottomright")).addClass(this.toTP("MLjqui-scrollbar-state-normal"));if(this.vScrollBar){this.vScrollBar.MLjquiScrollBar("destroy")}if(this.hScrollBar){this.hScrollBar.MLjquiScrollBar("destroy")}this.vScrollBar=h.MLjquiScrollBar({vertical:true,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.hScrollBar=l.MLjquiScrollBar({vertical:false,rtl:this.rtl,touchMode:this.touchmode,theme:this.theme,_triggervaluechanged:false});this.vScrollBar.css("visibility","hidden");this.hScrollBar.css("visibility","hidden");this.vScrollInstance=b.data(this.vScrollBar[0],"MLjquiScrollBar").instance;this.hScrollInstance=b.data(this.hScrollBar[0],"MLjquiScrollBar").instance;this.filter=this.host.find("#filter");this.filter[0].id="filter"+this.element.id;this.filter.addClass(this.toTP("MLjqui-widget-header"));this.filter.addClass(this.toTP("MLjqui-grid-toolbar"));this.pager=this.host.find("#pager");this.pager[0].id="pager"+this.element.id;this.toolbar=this.host.find("#toolbar");this.toolbar[0].id="toolbar"+this.element.id;this.toolbar.addClass(this.toTP("MLjqui-grid-toolbar"));this.toolbar.addClass(this.toTP("MLjqui-widget-header"));this.aggregates=this.host.find("#aggregates");this.aggregates[0].id="aggregates"+this.element.id;this.aggregates.addClass(this.toTP("MLjqui-grid-statusbar"));this.aggregates.addClass(this.toTP("MLjqui-widget-header"));this.statusbar=this.host.find("#statusbar");this.statusbar[0].id="statusbar"+this.element.id;this.statusbar.addClass(this.toTP("MLjqui-grid-statusbar"));this.statusbar.addClass(this.toTP("MLjqui-widget-header"));this.pager.addClass(this.toTP("MLjqui-grid-pager"));this.pager.addClass(this.toTP("MLjqui-widget-header"));this.toppager=this.host.find("#toppager");this.toppager.addClass(this.toTP("MLjqui-grid-pager-top"));this.toppager.addClass(this.toTP("MLjqui-widget-header"));this.gridtable=null;if(this.localizestrings){this.localizestrings();if(this.localization!=null){this.localizestrings(this.localization,false)}}this._builddataloadelement();this._cachedcolumns=this.columns;var c=this.source.datafields;if(c==null&&this.source._source){c=this.source._source.datafields}if(c){for(var d=0;d2){for(var k=0;k
          ');this.columnsheader.remove();this.columnsheader.addClass(this.toTP("MLjqui-widget-header"));this.columnsheader.addClass(this.toTP("MLjqui-grid-header"));if(!this.showHeader){this.columnsheader.css("display","none")}else{if(this.columnsheader){this.columnsheader.css("display","block")}}this.gridcontent=this.gridcontent||b('
          ');this.gridcontent.remove();var c=this.columnsHeight;c=this._preparecolumnGroups();this.columnsheader.height(c);this.content.append(this.columnsheader);this.content.append(this.gridcontent);this._rendercolumnheaders();this.tableheight=null;this.gridcontent.find("#contenttable"+this.element.id).remove();if(this.table!=null){this.table.remove();this.table=null}this.table=b('
          ');this.gridcontent.addClass(this.toTP("MLjqui-grid-content"));this.gridcontent.addClass(this.toTP("MLjqui-widget-content"));this.gridcontent.append(this.table);this._renderrows();if(this.filterable){this._renderfilter()}if(this.pageable){this._initpager()}this._arrange();if(this.renderStatusBar){this.renderStatusBar(this.statusbar)}if(this.rendertoolbar){this.rendertoolbar(this.toolbar)}if(this.showAggregates){this._updateaggregates()}if(this.disabled){this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}this._renderhorizontalscroll();this._showicons();this._addHandlers()},clear:function(){if(this.source){this.source.records=new Array();this.source.hierarchy=new Array()}this.dataview._filteredData=new Array();this.databind(null);this._render()},_initpager:function(){var g=this;var c=this.gridlocalization.pagergotopagestring;var i=this.gridlocalization.pagerrangestring;var d=this.gridlocalization.pagershowrowsstring;var h=(this.pagerHeight-17)/2;this.pagerdiv=this.pagerdiv||b('
          ');this.toppagerdiv=this.toppagerdiv||b('
          ');if(!this.pageable){this.pagerdiv.remove();this.toppagerdiv.remove();return}if(!this.pagerRenderer){this.pagerdiv.css("top",h);this.toppagerdiv.css("top",h);var f=function(s,E){var n=this;var r=b('
          ');var D=b('
          ');var t=b('
          ');var j=b('
          ');var m=b('
          ');var q=b('
          ');var z=b('
          ');var x=b('
          ');var p=b('
          ');r.attr("disabled",n.disabled);var A=b('
          ');A[0].id="gridpagerlist"+E+n.element.id;n.removeHandler(t,"mousedown");n.removeHandler(t,"mouseup");n.removeHandler(t,"click");n.removeHandler(j,"mousedown");n.removeHandler(j,"mouseup");n.removeHandler(j,"click");n.removeHandler(m,"mousedown");n.removeHandler(m,"mouseup");n.removeHandler(m,"click");n.removeHandler(q,"mousedown");n.removeHandler(q,"mouseup");n.removeHandler(q,"click");if(!n.rtl){j.attr("title",n.gridlocalization.pagerpreviousbuttonstring);t.attr("title",n.gridlocalization.pagernextbuttonstring)}else{t.attr("title",n.gridlocalization.pagerpreviousbuttonstring);j.attr("title",n.gridlocalization.pagernextbuttonstring)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){p.css("padding-top","3px")}this["pagerfirst"+E]=m;this["pagerlast"+E]=q;this["pagernext"+E]=t;this["pagerprevious"+E]=j;this["pagergotoinput"+E]=r;this["pagerdetails"+E]=z;this["pagershowrows"+E]=x;this["pagergotolabel"+E]=D;this["pagershowrowscombo"+E]=A;this["pagerbuttons"+E]=p;if(n.pagerMode=="default"){if(!n.rtl){m.attr("title",n.gridlocalization.pagerfirstbuttonstring);q.attr("title",n.gridlocalization.pagerlastbuttonstring)}else{q.attr("title",n.gridlocalization.pagerfirstbuttonstring);m.attr("title",n.gridlocalization.pagerlastbuttonstring)}var v=b("
          ");v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first"));m.wrapInner(v);var o=b("
          ");o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last"));q.wrapInner(o);if(!n.rtl){s.append(m);s.append(j);s.append(p);s.append(t);s.append(q)}else{s.append(q);s.append(t);s.append(p);s.append(j);s.append(m)}q.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});m.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var C=!n.rtl?"left":"right";p.css("float",C);q.css("float",C);m.css("float",C);t.css("float",C);j.css("float",C);z.css("float",n.rtl?"left":"right");if(n.rtl){z.css("margin-left","7px");z.css("margin-right","0px")}else{z.css("margin-left","0px");z.css("margin-right","7px")}}else{if(!n.rtl){s.append(t);s.append(j)}}t.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});j.MLjquiButton({cursor:"pointer",disabled:n.disabled,theme:n.theme});var k=b("
          ");k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left"));j.wrapInner(k);var l=b("
          ");l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right"));t.wrapInner(l);if(!n.rtl){s.append(z)}if(n.pagerMode!="default"){if(!n.rtl){s.append(A);s.append(x);s.append(r);s.append(D)}else{s.append(D);s.append(r);s.append(x);s.append(A);s.append(z);s.append(t);s.append(j)}var u=n.pageSizeOptions;A.MLjquiDropDownList({_checkForHiddenParent:false,rtl:n.rtl,disabled:n.disabled,source:u,enableBrowserBoundsDetection:true,keyboardSelection:false,autoDropDownHeight:true,width:44,height:16,theme:n.theme});var B=0;for(var y=0;y=u[y]){B=y}}D[0].innerHTML=c;A.MLjquiDropDownList({selectedIndex:B});var w=r.find("input");w.addClass(n.toThemeProperty("MLjqui-input"));w.addClass(n.toThemeProperty("MLjqui-widget-content"));if(this.rtl){w.css("direction","rtl")}var n=this;this.removeHandler(A,"select");this.addHandler(A,"select",function(K){if(K.args){if(n.vScrollInstance){n.vScrollInstance.setPosition(0)}var I=K.args.index;n.pagershowrowscombotop.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.selectIndex(I);n.pagershowrowscombobottom.data().MLjquiDropDownList.instance.renderSelection("mouse");n.pagershowrowscombotop.data().MLjquiDropDownList.instance.renderSelection("mouse");var L=n.dataview.pagenum*n.dataview.pagesize;var H=u[I];var J=n.pageSize;n.pageSize=parseInt(H);if(isNaN(n.pageSize)){n.pageSize=10}if(H>=100){n.pagershowrowscombotop.MLjquiDropDownList({width:55});n.pagershowrowscombobottom.MLjquiDropDownList({width:55})}else{n.pagershowrowscombotop.MLjquiDropDownList({width:44});n.pagershowrowscombobottom.MLjquiDropDownList({width:44})}n.dataview.pagesize=n.pageSize;var G=Math.floor(L/n.dataview.pagesize);if(G!==n.dataview.pagenum||parseInt(H)!==parseInt(J)){n._raiseEvent("pageSizeChanged",{pagenum:G,oldpageSize:J,pageSize:n.dataview.pagesize});var F=n.goToPage(G);if(!F){if(!n.serverProcessing){n.refresh()}else{n.updateBoundData("pager")}}}}});var r=r.find("input");r.addClass(n.toThemeProperty("MLjqui-grid-pager-input"));r.addClass(n.toThemeProperty("MLjqui-rc-all"));this.removeHandler(r,"keydown");this.removeHandler(r,"change");n.addHandler(r,"keydown",function(F){if(F.keyCode>=65&&F.keyCode<=90){return false}if(F.keyCode=="13"){var G=r.val();G=parseInt(G);if(!isNaN(G)){n.goToPage(G-1)}return false}});n.addHandler(r,"change",function(){var F=r.val();F=parseInt(F);if(!isNaN(F)){n.goToPage(F-1)}})}x[0].innerHTML=d;n.addHandler(t,"mouseenter",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseenter",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mouseleave",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-hover"))});n.addHandler(j,"mouseleave",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-hover"))});n.addHandler(t,"mousedown",function(){l.addClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(t,"mouseup",function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"))});n.addHandler(j,"mousedown",function(){k.addClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});n.addHandler(j,"mouseup",function(){k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"))});if(n.pagerMode==="default"){n.addHandler(q,"mouseenter",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseenter",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mouseleave",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-hover"))});n.addHandler(m,"mouseleave",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-hover"))});n.addHandler(q,"mousedown",function(){o.addClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mousedown",function(){v.addClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))});n.addHandler(q,"mouseup",function(){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"))});n.addHandler(m,"mouseup",function(){v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))})}n.addHandler(b(document),"mouseup.pagerbuttons"+E+this.element.id,function(){l.removeClass(n.toThemeProperty("MLjqui-icon-arrow-right-selected"));k.removeClass(n.toThemeProperty("MLjqui-icon-arrow-left-selected"));if(o){o.removeClass(n.toThemeProperty("MLjqui-icon-arrow-last-selected"));v.removeClass(n.toThemeProperty("MLjqui-icon-arrow-first-selected"))}});n.addHandler(t,"click",function(){if(!t.MLjquiButton("disabled")){if(!n.rtl){n.goToNextPage()}else{n.goToPrevPage()}}});n.addHandler(j,"click",function(){if(!j.MLjquiButton("disabled")){if(!n.rtl){n.goToPrevPage()}else{n.goToNextPage()}}});if(this.pagerMode==="default"){n.addHandler(m,"click",function(){if(!m.MLjquiButton("disabled")){if(!n.rtl){n.goToPage(0)}else{var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}}});n.addHandler(q,"click",function(){if(!q.MLjquiButton("disabled")){if(!n.rtl){var G=n.dataview.totalrecords;var F=Math.ceil(G/n.pageSize);n.goToPage(F-1)}else{n.goToPage(0)}}})}};this.pagerdiv.children().remove();this.toppagerdiv.children().remove();f.call(this,this.pagerdiv,"bottom");f.call(this,this.toppagerdiv,"top");this.pager.append(this.pagerdiv);this.toppager.append(this.toppagerdiv);this.updatepagerdetails()}else{this.pagerdiv.children().remove();this.toppager.children().remove();var e=this.pagerRenderer();if(e!=null){this.pagerdiv.append(b(e))}this.pager.append(this.pagerdiv);var e=this.pagerRenderer();if(e!=null){this.toppagerdiv.append(b(e))}this.toppager.append(this.toppagerdiv)}},_updatepagertheme:function(){},goToPage:function(f,h){if(this._loading){return false}if(this.editKey!=undefined){if(this.editSettings.saveOnPageChange){var e=this.endroweditbykey(this.editKey);if(!e){return false}}else{return false}}if(f==null||f==undefined){f=0}if(f==-1){f=0}if(f<0){return false}var d=this.dataview.totalrecords;var g=this.dataview.pagenum;var c=Math.ceil(d/this.pageSize);if(f>=c){if(this.dataview.totalrecords==0){this.dataview.pagenum=0;this.updatepagerdetails()}if(f>0){f=c-1}}if(this.dataview.pagenum!=f){if(this.pageable){this.dataview.pagenum=f;this._raiseEvent("pageChanged",{pagenum:f,oldpagenum:g,pageSize:this.dataview.pagesize})}if(!this.serverProcessing){this.refresh();if(h){if(b.isFunction(h)){h()}}}else{this.updateBoundData("pager",h)}return true}return false},goToPrevPage:function(e){if(this.dataview.pagenum>0){return this.goToPage(this.dataview.pagenum-1,e)}else{if(this.pagerMode!="default"&&this.pagerMode!="advanced"){var d=this.dataview.totalrecords;var c=Math.ceil(d/this.pageSize);return this.goToPage(c-1,e)}}return false},goToNextPage:function(e){var d=this.dataview.totalrecords;if(this.summaryrows){d+=this.summaryrows.length}var c=Math.ceil(d/this.pageSize);if(this.dataview.pagenum=this.dataview.totalrecords){u=this.dataview.totalrecords}var v=this.dataview.totalrecords;d++;var t=Math.ceil(v/this.dataview.pagesize);if(t>=1){t--}t++;if(this.pageSizeMode=="root"){t=Math.ceil(this.rootRecordsLength/this.dataview.pagesize);if(t>=1){t--}t++;v=this.rootRecordsLength;this.dataview.totalrecords=this.rootRecordsLength}if(this.pagerMode!="default"){if(this["pagergotoinputbottom"]){var k=this["pagergotoinputbottom"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t);k=this["pagergotoinputtop"].find("input");k.val(this.dataview.pagenum+1);k.attr("title","1 - "+t)}}else{var o="";var n=this.pagerButtonsCount;if(n==0||!n){n=5}var s=0;if(this.rtl){s=n-1}while((this.rtl&&s>=0)||(!this.rtl&&st&&!this.rtl){break}else{if(this.rtl&&e>t){s--;continue}}if(!this.rtl){if(s==0&&e>n){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}if(!this.rtl){o+=""+e+"";if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}}else{if(s===n-1){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(t>=1+e){o+="..."}}if(this.dataview.pagenum===e-1){c+=" "+this.toTP("MLjqui-tb-fill-state-pressed")}o+=""+e+""}if(this.rtl){var c=this.toTP("MLjqui-grid-pager-number");c+=" "+this.toTP("MLjqui-rc-all");if(s==0&&e>n){o+="..."}}if(!this.rtl){s++}else{s--}}if(!this["pagerbuttonsbottom"]){return}var h=this["pagerbuttonsbottom"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");var h=this["pagerbuttonstop"].find("a");this.removeHandler(h,"click");this.removeHandler(h,"mouseenter");this.removeHandler(h,"mouseleave");this["pagerbuttonsbottom"][0].innerHTML=o;this["pagerbuttonstop"][0].innerHTML=o;if(this.disabled){this.host.find(".MLjqui-grid-pager-number").css("cursor","default")}var q=function(){h.click(function(i){if(j.disabled){return}var w=b(i.target).attr("data-page");j.goToPage(parseInt(w)-1)});h.mouseenter(function(i){if(j.disabled){return}b(i.target).addClass(j.toTP("MLjqui-tb-fill-state-hover"))});h.mouseleave(function(i){if(j.disabled){return}b(i.target).removeClass(j.toTP("MLjqui-tb-fill-state-hover"))})};if(this.pagerPosition==="both"||this.pagerPosition==="bottom"){var h=this["pagerbuttonsbottom"].find("a");q(h)}if(this.pagerPosition==="both"||this.pagerPosition==="top"){var h=this["pagerbuttonstop"].find("a");q(h)}}if(u==0&&uu){this.goToPrevPage()}},_preparecolumnGroups:function(){var o=this.columnsHeight;if(this.columnGroups){this.columnshierarchy=new Array();if(this.columnGroups.length){var m=this;for(var g=0;gi){return 1}return 0});for(var k=1;k0){if(this.hScrollInstance.value>2*10){this.hScrollInstance.setPosition(this.hScrollInstance.value-2*10)}else{this.hScrollInstance.setPosition(0)}}else{if(this.hScrollInstance.value0){return true}}if(undefined==f.editKey){return false}});this.addHandler(b(window),"MLjquiReady."+this.element.id,function(){f._updatecolumnwidths();f.refresh()});if(this.editable){this.addHandler(b(document),"mousedown.gridedit"+this.element.id,function(k){if(f.editable&&f.editSettings.saveOnBlur){if(f.editKey!=null){if(!f.vScrollInstance.isScrolling()&&!f.vScrollInstance.isScrolling()){var s=f.host.coord();var p=f.host.width();var l=f.host.height();var u=false;var j=false;var t=false;if(k.pageYs.top+l){u=true;j=true}if(k.pageXs.left+p){u=true;t=true}if(u){var m=function(y){var x=b(y.children()[0]).data();if(x&&!x.MLjquiWidget){x=y.data()}if(!x){x=y.data()}if(x.MLjquiWidget&&x.MLjquiWidget.container&&x.MLjquiWidget.container[0].style.display=="block"){var i=x.MLjquiWidget;var z=i.container.coord().top;var w=i.container.coord().top+i.container.height();if(j&&(k.pageYw)){u=true;i.close();return true}else{return false}}};var r=f._editors;if(r){for(var n=0;n0){var k=f._pinnedTable[0].rows[f.hoveredRow[0].rowIndex].cells;i(k)}}f.hoveredRow=null};this.addHandler(this.table,"mouseleave",function(i){c();if(f.wrapper){f.wrapper.parent().removeAttr("tabindex",0);f.wrapper.removeAttr("tabindex",1);f.content.removeAttr("tabindex",2)}});var g=function(o){if(!f.enableHover){return true}f.hoveredRow=o;if(!o){return true}var l=o[0].cells;var n=f.rowDetails&&!f.treeGrid;var q=n&&!f.treeGrid?1:0;var k=0;if(q>0&&f.rtl){q=0;k=1}for(var m=q;m=0){if(!l.expanded){f.showdetailsbykey(F)}else{f.hidedetailsbykey(F)}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("MLjqui-grid-group")>=0&&f.treeGrid){if(!l.expanded){f.treeGrid.expandRow(F)}else{f.treeGrid.collapseRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}}else{if(B.target&&B.target.className.indexOf&&B.target.className.indexOf("checkbox")>=0&&f.treeGrid){if(!l.checked){f.treeGrid.checkRow(F)}else{f.treeGrid.uncheckRow(F)}g(f._getuirow(F));if(B.stopPropagation){B.stopPropagation()}}else{var m=b(q).index();var k=f.columns.records[m];if(B.stopPropagation){B.stopPropagation()}if(f.editable&&f.editKey==null){if(f._lastSelectedKey==F&&f.editSettings.editOnDoubleClick&&A){var u=f.beginroweditbykey(F,k);return true}}if(f.isTouchDevice()){if(f.scrolled&&new Date()-f.scrolled<500){if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return false}}if(f.selectionMode==="singlerow"&&f.selectionMode!=="custom"){f.selectrowbykey(F,"mouse",false);f._lastSelectedKey=F;f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}else{if(f.selectionMode!=="custom"){if(!B.ctrlKey&&!B.metaKey){f.clearSelection(false)}if(B.shiftKey){if(f._lastSelectedKey){var l=f.rowinfo[f._lastSelectedKey];f._doSelection(f._lastSelectedKey,true,false);var j=b(f._table.children()[1]).children(("[data-key="+f._lastSelectedKey+"]"));var n=j.index();var z=p.index();f._selectRange(z,n);f.selectrowbykey(F,"mouse",false);f._updateSelection();if(B.preventDefault){B.preventDefault()}v();return true}}}f._lastSelectedKey=F;f.clickTime=new Date();if(f.selectionMode!=="custom"){if(l){if(l.selected){f.unselectrowbykey(F,"mouse",false)}else{f.selectrowbykey(F,"mouse",false)}v()}}else{return true}f._updateSelection();if(!f.enableBrowserSelection){if(B.preventDefault){B.preventDefault()}}return true}}}}}})},_updateSelection:function(){var l=this;var r=b(l._table.children()[1]).children();var n=l._pinnedTable?b(l._pinnedTable.children()[1]).children():null;var e=l.rowDetails&&!l.treeGrid;var d=e?1:0;var f=0;if(d>0&&l.rtl){d=0;f=1}for(var h=0;he){var h=e;var d=c;while(hf){var d=d.prev();var g=d.attr("data-key");this._doSelection(g,true,false);h--}}}},_getuikey:function(d,g){var f=null;var e=b(this._table.children()[1]).children();f=b(e[d]).attr("data-key");if(b(e[d]).attr("data-role")){var c=b(e[d]);if(g=="next"){while(c){c=c.next();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}else{if(g=="prev"){while(c){c=c.prev();if(c){var h=c.attr("data-role");if(!h){f=c.attr("data-key");return f}}}}}return null}return f},getRows:function(){return this.source.records},getView:function(){var d=this;var e=this._names();var f=new Array();var c=function(k,h){if(!h){return}for(var j=0;j0){g.records=new Array();c(g.records,h[j].records)}}}}};c(f,this.dataViewRecords);return f},getKeys:function(){var d=new Array();var e=this.source.records;for(var c=0;c0){var h=0;for(var j=0;j0){continue}if(h===n+e){k=o.attr("data-key");return k}h++}return k}if(this.rowDetails){var h=0;for(var j=0;j0){return c}}catch(e){var d=b(this._table.children()[1]).children();for(var f=0;f0){return c}}catch(e){var d=b(this._pinnedTable.children()[1]).children();for(var f=0;f=33&&s<=40))){var z=-1;if(!this._searchString){this._searchString=""}if((s==8||s==46)&&this._searchString.length>=1){this._searchString=this._searchString.substr(0,this._searchString.length-1)}var e=String.fromCharCode(s);var H=(!isNaN(parseInt(e)));var J=false;if((s>=65&&s<=97)||H||s==8||s==32||s==46){if(!X.shiftKey){e=e.toLocaleLowerCase()}if(s!=8&&s!=32&&s!=46){if(!(this._searchString.length>0&&this._searchString.substr(0,1)==e)){this._searchString+=e}}if(s==32){this._searchString+=" "}this._searchTime=new Date();var n=this.getSelection();if(n.length>=1){var t=n[0].uid;var C=-1;for(var S=0;S0&&B[0]==t)){var B=this._getMatches(this._searchString)}}else{var B=this._getMatches(this._searchString)}if(B.length>0){var n=this.getSelection();if(n.length>=1){var c=B.indexOf(n[0].uid);if(c==-1){this.clearSelection(false);this.selectrowbykey(B[0])}else{var h=c+1;if(h>=B.length){h=0}this.clearSelection(false);this.selectrowbykey(B[h])}}else{this.clearSelection(false);this.selectrowbykey(B[0])}this._lastSearchString=this._searchString}}if(this._searchTimer!=undefined){clearTimeout(this._searchTimer)}if(s==27||s==13){this._searchString="";this._lastSearchString=""}this._searchTimer=setTimeout(function(){I._searchString="";I._lastSearchString=""},500);if(z>=0){return}if(J){return false}}}if(this.editKey!=undefined){if(s===27&&this.editSettings.cancelOnEsc){this.endroweditbykey(this.editKey,true)}else{if(s===13&&this.editSettings.saveOnEnter){if(X.target&&X.target.nodeName.toLowerCase()!="div"&&X.target.nodeName.toLowerCase()!="input"){return true}this.endroweditbykey(this.editKey,false)}else{if(this.editSettings.editSingleCell){if(this.editColumn){var P=this.columns.records.indexOf(this.editColumn);if(s==9&&P0){var M=this.editKey;var E=null;for(var S=P-1;S>=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){E=this.columns.records[S];break}}if(E){this.endroweditbykey(this.editKey,false);this.beginroweditbykey(M,E)}}}if(s==9){var o=this.rowinfo[this.editKey];var C=this.getrowindex(o);var v=this._getuirow(this.editKey);if(!X.shiftKey&&!y){var N=null;for(var S=0;S=0;S--){if(this.columns.records[S].editable&&!this.columns.records[S].hidden){N=this.columns.records[S];break}}if(N){while(v){v=v.prev();if(v){var D=v.attr("data-role");if(!D){var F=v.attr("data-key");break}}}if(F){this.clearSelection(false);this._lastSelectedKey=F;var o=this.rowsByKey[F];var C=this.getrowindex(o);var L=this.getrowdisplayindex(o);this._raiseEvent("rowSelect",{key:F,index:L,boundIndex:C,row:this.rowsByKey[F]});this.endroweditbykey(this.editKey,false);this._doSelection(F,true,true);this.beginroweditbykey(F,N)}}}}return false}}}}}return true}if(X.ctrlKey||X.metaKey){var f=String.fromCharCode(s).toLowerCase();if(f=="c"||f=="x"){var n=this.getSelection();if(n.length>=1){var w="";for(var K=0;K');O.val(w);b("body").append(O);O.select();setTimeout(function(){document.designMode="off";O.select();O.remove()},100)}}}}if(s===32&&this.treeGrid){if(this.treeGrid.checkboxes){var n=this.getSelection();if(n.length>1){for(var S=0;S0){if(this.dataview.filters.length>0){var m=this.rowinfo[t].row.records;for(var S=0;S0){while(this._getuirow(t)==null&&this.dataview.pagenum>0){this.goToPrevPage()}}}else{if(s==39){var v=this._getuirow(t);var U=null;if(v){var D=v.attr("data-role");if(!D){U=v.attr("data-key")}}if(this.pageable&&U==null){this.goToNextPage()}}}}return false}},_selection:function(c){if("selectionStart" in c[0]){var h=c[0];var i=h.selectionEnd-h.selectionStart;return{start:h.selectionStart,end:h.selectionEnd,length:i,text:h.value}}else{var f=document.selection.createRange();if(f==null){return{start:0,end:h.value.length,length:0}}var d=c[0].createTextRange();var g=d.duplicate();d.moveToBookmark(f.getBookmark());g.setEndPoint("EndToStart",d);var i=f.text.length;return{start:g.text.length,end:g.text.length+f.text.length,length:i,text:f.text}}},_doSelection:function(c,e,d){if(c==null){this.clearSelection();return}if(this.selectionMode==="singlerow"){this.clearSelection(false)}var f=this.rowinfo[c];if(f){f.selected=e;this.ensurerowvisiblebykey(c)}else{this.ensurerowvisiblebykey(c);var f=this.rowinfo[c];if(f){f.selected=e}else{this.rowinfo[c]={selected:e}}}if(this.selectionMode!="none"){if(d!==false){this._renderrows()}}},clearSelection:function(e){if(this.rowinfo){var f=this.getRows();for(var h in this.rowinfo){var g=this.rowinfo[h];if(g.selected){g.selected=false;var d=f.indexOf(g.row);var c=this.getrowdisplayindex(g.row);this._raiseEvent("rowUnselect",{key:h,index:c,boundIndex:d,row:g.row})}}}if(e!==false){this._renderrows()}},exportData:function(t){if(!b.MLjqui.dataAdapter.ArrayExporter){if(!this.treeGrid){throw"MLjquiDataTable: Missing reference to MLjquidata.export.js!"}throw"MLjquiTreeGrid: Missing reference to MLjquidata.export.js!"}var h=this.exportSettings.columnsHeader;if(h==undefined){h=true}var w=this.exportSettings.hiddenColumns;if(w==undefined){w=false}var P=this.exportSettings.serverURL;var I=this.exportSettings.characterSet;var ac=this.exportSettings.collapsedRecords;if(ac==undefined){ac=false}var F=this.exportSettings.fileName;if(F===undefined){F=this.treeGrid?"MLjquiTreeGrid_Data":"MLjquiDataTable_Data"}var s=this;var Y=this.getRows();if(this.exportSettings.recordsInView==true){Y=this.getView()}if(this.treeGrid&&this.treeGrid.virtualModeCreateRecords){var Y=this.treeGrid.getRows()}if(this.groups&&this.groups.length>0){var k=this.source.getGroupedRecords(this.groups,"records","label",null,"data",null,"parent",Y);var m=function(o,ae){for(var ag=0;ag0){var ah=m(j.records,new Array());for(var af=0;af0){if(p.length>0){var aa=this._names();for(var X=0;X0&&o){d(ae[af].records)}}};d(L);if(t!="xml"&&t!="json"){var u=p.length;for(var X=0;X0){o["Level"+o[aa.level]]=ae?"-":"+"}else{o["Level"+o[aa.level]]=""}}else{o["Level"+o[aa.level]]=""}if(o[aa.leaf]){o["Level"+o[aa.level]]=""}for(var ag=o[aa.level]+1;ag=g){aj=p.length-g-1}else{if(g>0&&ag1){var j=b(s._table[0].rows[1].cells[aj]);if(j.length==0){var j=b(s._table[0].rows[1].cells[0])}}if(ak.length==0){var ak=b(s._table[0].rows[0].cells[0])}var af=this;var ah=function(am){var ao=s.toThemeProperty;am.removeClass(ao("MLjqui-cell"));am.removeClass(ao("MLjqui-grid-cell-selected"));am.removeClass(ao("MLjqui-tb-fill-state-pressed"));am.removeClass(ao("MLjqui-grid-cell-hover"));am.removeClass(ao("MLjqui-tb-fill-state-hover"));if(af.customCellStyles){for(var an in af.customCellStyles){am.removeClass(af.customCellStyles[an])}}};ah(ak);if(j){ah(j)}if(this.displayfield==null){return true}if(s.showAggregates){if(s.getcolumnaggregateddata){A.push(s.getcolumnaggregateddata(this.displayfield,this.aggregates,true,Y))}}var ai=s._getexportcolumntype(this);if(this.exportable&&(!this.hidden||f)){Z[this.displayfield]={};Z[this.displayfield].text=this.text;Z[this.displayfield].width=parseInt(this.width);if(isNaN(Z[this.displayfield].width)){Z[this.displayfield].width=60}if(Z[this.displayfield].width>500){Z[this.displayfield].width=500}Z[this.displayfield].formatString=this.cellsFormat;Z[this.displayfield].localization=s.gridlocalization;Z[this.displayfield].type=ai;Z[this.displayfield].cellsAlign=this.cellsalign;Z[this.displayfield].hidden=!h;Z[this.displayfield].index=aj;Z[this.displayfield].maxIndex=p.length}E="cell"+B;var al=this.element;if(t!="json"&&t!="xml"){K="column"+z;var i=function(o,au,at,am,ar,ao,an,ap,aq){C[o]={index:1+an,maxIndex:p.length};if(ao.rtl){C[o].index=p.length-an}if(t=="html"||t=="xls"||t=="pdf"){if(au){C[o]["font-size"]=au.css("font-size");C[o]["font-weight"]=au.css("font-weight");C[o]["font-style"]=au.css("font-style");C[o]["background-color"]=ao._getexportcolor(au.css("background-color"));C[o]["color"]=ao._getexportcolor(au.css("color"));C[o]["border-color"]=ao._getexportcolor(au.css("border-top-color"))}if(at){C[o]["text-align"]=ar.align}else{C[o]["text-align"]=ar.cellsalign;C[o]["formatString"]=ar.cellsFormat;C[o]["dataType"]=ai}if(t=="html"||t=="pdf"){C[o]["border-top-width"]="0px";if(!ao.rtl){C[o]["border-left-width"]="0px";C[o]["border-right-width"]="1px"}else{C[o]["border-left-width"]="1px";C[o]["border-right-width"]="0px";if(an==p.length-g-1&&at){C[o]["border-right-width"]="1px"}}C[o]["border-bottom-width"]="1px";if(au){C[o]["border-top-style"]=au.css("border-top-style");C[o]["border-left-style"]=au.css("border-left-style");C[o]["border-right-style"]=au.css("border-right-style");C[o]["border-bottom-style"]=au.css("border-bottom-style")}if(at){if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}if(au){C[o]["border-top-width"]="1px";C[o]["border-bottom-width"]=au.css("border-bottom-width")}}else{if(an==0&&!ao.rtl){C[o]["border-left-width"]="1px"}else{if(an==p.length-1&&ao.rtl){C[o]["border-right-width"]="1px"}}}if(au){C[o]["height"]=au.css("height")}if(ao.treeGrid&&!at){if(C[o].index-10&&this.treeGrid){var ab=g+1;if(this.rtl){ab=p.length-g}if(C["column"+ab]){var e=C["column"+ab];e.merge=g;e["border-left-width"]="1px";var H=C["cell"+ab];for(var X=0;X0){b.each(p,function(j){if(this.aggregates){for(var ae=0;ae0){var c=l;for(var u=0;u0){var c=this.getRows();for(var e=0;e0){var m=this.rowsByKey[G];if(this.treeGrid){var m=this.treeGrid.getRow(G)}if(m.level0){for(var y=0;y";var r=this.getCellTextByKey(G,g.displayfield);d.innerHTML=cellContent;var e=b(d.firstChild);switch(g.columntype){case"textbox":case"default":var j=b("").appendTo(e);if(this.rtl){j.css("direction","rtl")}j.addClass(this.toThemeProperty("MLjqui-input"));j.addClass(this.toThemeProperty("MLjqui-widget-content"));j.addClass(this.toThemeProperty("MLjqui-cell-editor"));j[0].onfocus=function(i){setTimeout(function(){if(i){var H=b(i.target).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}else{var H=b(document.activeElement).parent().parent().index();if(H>=0){o.ensureColumnVisible(o.columns.records[H].datafield)}}if(o.content){o.content[0].scrollTop=0;o.content[0].scrollLeft=0}if(o.gridcontent){o.gridcontent[0].scrollLeft=0;o.gridcontent[0].scrollTop=0}},10)};if(!g.editable){j.attr("disabled",true);j.attr("readOnly",true);j.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}else{if(!p){p=true;var f=b.MLjqui.browser.msie&&b.MLjqui.browser.version>10;if(!f){j.focus()}var c=j;setTimeout(function(){var I=c.val().length;if(!f){c.focus()}try{if("selectionStart" in c[0]){c[0].setSelectionRange(0,I)}else{var i=c[0].createTextRange();i.collapse(true);i.moveEnd("character",I);i.moveStart("character",0);i.select()}}catch(H){var J=H}},10)}}j.width(w);j.height(t);if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<9){j.css("line-height",parseInt(t)+"px")}j.css("text-align",g.cellsalign);if(r===null){r=""}if(r==undefined){r=""}j.val(r);if(g.createeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.createeditor(!this.treeGrid?n:G,r,j,B,w,t)}this._editors.push({column:g,editor:j});if(g.cellsFormat!=""){if(g.cellsFormat.indexOf("p")!=-1||g.cellsFormat.indexOf("c")!=-1||g.cellsFormat.indexOf("n")!=-1||g.cellsFormat.indexOf("f")!=-1){j.keydown(function(H){var N=H.charCode?H.charCode:H.keyCode?H.keyCode:0;var K=String.fromCharCode(N);var L=parseInt(K);if(isNaN(L)){return true}if(o._selection(j).length>0){return true}var J="";var I=j.val();if(g.cellsFormat.length>1){var M=parseInt(g.cellsFormat.substring(1));if(isNaN(M)){M=0}}else{var M=0}if(M>0){if(I.indexOf(o.gridlocalization.decimalseparator)!=-1){if(o._selection(j).start>I.indexOf(o.gridlocalization.decimalseparator)){return true}}}for(var O=0;O=11){return false}})}}if(g.initeditor){var B=r;var r=this.getCellValueByKey(G,g.displayfield);g.initeditor(!this.treeGrid?n:G,r,j,B,w,t)}break;case"custom":case"template":if(!this.editorsCache){this.editorsCache=new Array()}var k=b("
          ").appendTo(e);var x=b.trim(g.datafield).split(" ").join("");if(x.indexOf(".")!=-1){x=x.replace(".","")}var z=this.editorsCache["templateeditor_"+x];if(g.columntype=="custom"){var z=this.editorsCache["customeditor_"+x+"_"+G]}var B=r;var r=this.getCellValueByKey(G,g.displayfield);if(!z){var j=b("
          ");j.width(u);j.height(t);z=j;if(r===null){r=""}if(g.columntype!="custom"){this.editorsCache["templateeditor_"+x]=j}else{this.editorsCache["customeditor_"+x+"_"+G]=j}j.appendTo(k);if(g.createeditor){g.createeditor(!this.treeGrid?n:G,r,j,B,u,t)}}else{var j=z;j.width(u);j.height(t);j.appendTo(k)}if(g.initeditor){g.initeditor(!this.treeGrid?n:G,r,j,B,u,t)}this._editors.push({column:g,editor:j});break}}}this.editKey=G;this.beginUpdate();var F=this.getrowdisplayindex(m);this._raiseEvent("rowBeginEdit",{key:G,index:F,boundIndex:n,row:this.rowsByKey[G]});if(E){var m=this.rowsByKey[G];var v=null;var l=null;if(m){v=m[q.datafield];l=m[q.displayfield]}this._raiseEvent("cellBeginEdit",{value:v,displayValue:l,key:G,index:F,dataField:q.datafield,displayField:q.displayfield,boundIndex:n,row:this.rowsByKey[G]})}this.endUpdate(false)},_toNumber:function(f){if(!f.indexOf&&f!=undefined){f=f.toString()}if(f.indexOf(this.gridlocalization.currencysymbol)>-1){f=f.replace(this.gridlocalization.currencysymbol,"")}var c=function(l,j,k){var h=l;if(j==k){return l}var i=h.indexOf(j);while(i!=-1){h=h.replace(j,k);i=h.indexOf(j)}return h};f=c(f,this.gridlocalization.thousandsseparator,"");f=f.replace(this.gridlocalization.decimalseparator,".");if(f.indexOf(this.gridlocalization.percentsymbol)>-1){f=f.replace(this.gridlocalization.percentsymbol,"")}var g="";for(var d=0;d1){if(b.MLjqui.dataFormat){m=b.MLjqui.dataFormat.parsedate(e,h.cellsFormat,this.gridlocalization)}if(m=="Invalid Date"||m==null){m=""}}}}if(h.displayfield!=h.datafield){m={label:m,value:m}}break}}if(h.geteditorvalue){var c=this.getCellValueByKey(d,h.displayfield);m=h.geteditorvalue(!this.treeGrid?k:d,c,j)}}return m},_validateEditors:function(c){var k=this;var d=true;var s=k.rowsByKey[c];var l=k.getrowindex(s);var m=k._editors;var c=k.editKey;var p=k._getuirow(c);for(var h=0;h=0||G.indexOf("datetimeinput")>=0||G.indexOf("combobox")>=0||G.indexOf("menu")>=0){if(i.MLjquiWidget.isOpened){var F=i.MLjquiWidget.isOpened();if(F){i.MLjquiWidget.close()}}}}};var z="customeditor_"+v.displayfield+"_"+p;var y="templateeditor_"+v.displayfield;if(k.editorsCache[z]){var w=b(k.editorsCache[z]).data();var A=k.editorsCache[z];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w);k.editorsCache[z].detach()}if(k.editorsCache[y]){k.editorsCache[y].detach();var w=b(k.editorsCache[y]).data();var A=k.editorsCache[y];if(!w.MLjquiWidget&&b(A).children()[0]&&b(b(A).children()[0]).data().MLjquiWidget){w=b(b(A).children()[0]).data()}E(w)}}if(C!=u){k.beginUpdate();k._raiseEvent("cellValueChanged",{value:C,oldValue:u,dataField:v.datafield,displayField:v.displayfield,key:p,index:l,row:t});k.endUpdate(false)}}};k.updaterowbykey(k.editKey,h,false,s)}}if(!d){return false}}k._detachEditors(e);return true},_detachEditors:function(l){var g=this;var m=g.rowsByKey[l];var i=g.getrowindex(m);if(g.editorsCache){for(var h in g.editorsCache){var f=b(g.editorsCache[h]).data();if(f&&f.MLjquiWidget){var c=f.MLjquiWidget.element.className;if(c.indexOf("dropdownlist")>=0||c.indexOf("datetimeinput")>=0||c.indexOf("combobox")>=0||c.indexOf("menu")>=0){if(f.MLjquiWidget.isOpened){var e=f.MLjquiWidget.isOpened();if(e){f.MLjquiWidget.close()}}}}b(g.editorsCache[h]).detach()}}g.beginUpdate();var d=g.getrowdisplayindex(m);if(g.editSettings.editSingleCell){var m=g.rowsByKey[l];var k=null;var j=null;if(m){k=m[g.editColumn.datafield];j=m[g.editColumn.displayfield]}g._raiseEvent("cellEndEdit",{value:k,displayValue:j,key:l,index:d,dataField:g.editColumn.datafield,displayField:g.editColumn.displayfield,boundIndex:i,row:g.rowsByKey[l]})}g._raiseEvent("rowEndEdit",{key:l,index:d,boundIndex:i,row:g.rowsByKey[l]});g.endUpdate(false);g.editColumn=null;g.editKey=null;g._renderrows();g._renderhorizontalscroll();g.host.focus();setTimeout(function(){g.host.focus()},10)},_showvalidationpopup:function(r,e,s,m){if(s==undefined){var s=this.gridlocalization.validationstring}m.addClass(this.toThemeProperty("MLjqui-grid-validation-label"));var p=b("
          ");var o=b("
          ");p.html(s);o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));p.addClass(this.toThemeProperty("MLjqui-grid-validation"));p.addClass(this.toThemeProperty("MLjqui-rc-all"));p.hide();o.hide();p.prependTo(this.table);o.prependTo(this.table);var h=this.hScrollInstance;var j=h.value;var g=parseInt(j);var l=this.getColumn(e).uielement;if(!r){return}var k=r;p.css("top",parseInt(k.position().top)+30+"px");var c=parseInt(p.css("top"));o.css("top",c-11);o.removeClass();o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));var f=false;if(c>=this._table.height()){o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-up"));o.addClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));c=parseInt(k.position().top)-k.outerHeight()-5;if(c<0){c=0;o.removeClass(this.toThemeProperty("MLjqui-grid-validation-arrow-down"));f=true}p.css("top",c+"px");o.css("top",c+p.outerHeight()-9)}var n=-g+parseInt(b(l).position().left);var q=parseInt(this._table.css("left"));if(isNaN(q)){q=0}if(q!=0){g=0}o.css("left",g+n+30);var d=p.width();if(d+n>this.host.width()-20){var i=d+n-this.host.width()+40;n-=i}if(!f){p.css("left",g+n)}else{p.css("left",g+parseInt(b(l).position().left)-p.outerWidth())}m.mouseenter(function(){if(m.hasClass("MLjqui-grid-validation-label")){p.show();o.show()}});m.mouseleave(function(){p.hide();o.hide()});if(!this.popups){this.popups=new Array()}this.popups[this.popups.length]={validation:p,validationrow:o}},addRow:function(d,p,j,n){if(p!=undefined){this._datachanged=true;if(j==undefined){j="last"}var o=false;var k=this.that;if(d==null){var f=this.dataview.filters&&this.dataview.filters.length>0;var m=!f?this.dataview.totalrecords:this.source.records.length;if(!this.pageable){if(this.source._source.totalrecords){this.dataview.totalrecords=this.source._source.totalrecords}else{if(this.source._source.totalRecords){this.dataview.totalrecords=this.source._source.totalRecords}else{if(this.source.hierarchy.length!==0){this.dataview.totalrecords=this.source.hierarchy.length}else{this.dataview.totalrecords=this.source.records.length}}}var m=!f?this.dataview.totalrecords:this.source.records.length}if(!b.isArray(p)){d=this.dataview.getid(this.dataview.source.id,p,m);if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{var c=new Array();b.each(p,function(e,q){var r=k.dataview.getid(k.dataview.source.id,p[e],m+e);c.push(r);if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}});d=c}}else{if(!b.isArray(p)){if(this.getColumn(this.dataview.source.id)){p[this.dataview.source.id]=d}}else{b.each(p,function(e,q){var r=d[e];if(k.getColumn(k.dataview.source.id)){p[e][k.dataview.source.id]=r}})}}var i=this.treeGrid?(this.treeGrid.virtualModeCreateRecords?true:false):false;var g=function(t,e,y,r){if(t._loading){throw new Error("MLjquiDataTable: "+t.loadingErrorMessage);return false}var q=t.vScrollInstance.value;var x=false;if(!b.isArray(y)){y.uid=e;t.rowsByKey[e]=y;if(e==n){n=null}x=t.source.addRecord(y,r,n,i)}else{b.each(y,function(z,A){var B=null;if(e!=null&&e[z]!=null){B=e[z]}this.uid=B;t.rowsByKey[B]=this;if(e==n){n=null}x=t.source.addRecord(this,r,n,i)})}if(t.groups&&t.groups.length>0){var u=Object.prototype.toString;var w=t.groups[0];Object.prototype.toString=(typeof w=="function")?w:function(){return this[w]};if(!t.source.records.sort){var v=new Array();var s=0;b.each(data,function(){v[startindex+s++]=this});data=v}t.source.records.sort(function(A,z){if(A===undefined){A=null}if(z===undefined){z=null}if(A===null&&z===null){return 0}if(A===null&&z!==null){return -1}if(A!==null&&z===null){return 1}var D=0;var C=0;if(A&&A.uid){D=A.uid}if(z&&z.uid){C=z.uid}A=A.toString();z=z.toString();if(b.MLjqui.dataFormat.isNumber(A)&&b.MLjqui.dataFormat.isNumber(z)){if(Az){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(A)&&b.MLjqui.dataFormat.isDate(z)){if(Az){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(A)&&!b.MLjqui.dataFormat.isNumber(z)){A=String(A).toLowerCase();z=String(z).toLowerCase()}}}try{if(Az){return 1}}catch(B){var E=B}if(typeof(D)=="number"){if(DC){return 1}}return 0});Object.prototype.toString=u}t.dataview._filteredData=null;t.dataview._sortData=null;t.dataview._sortHierarchyData=null;if(t._updating==undefined||t._updating==false){t.refresh()}if(t.source&&t.source._knockoutdatasource&&!t._updateFromAdapter&&t.autokoupdates){if(t.source._source._localdata){t.source.suspendKO=true;t.source._source._localdata.push(y);t.source.suspendKO=false}}t.vScrollInstance.setPosition(q);return x};if(this.source.addrow){var h=function(e,q){if(e==true||e==undefined){if(q!=undefined){d=q}g(k,d,p,j)}};try{if(!k.treeGrid){o=this.source.addrow(d,p,j,h)}else{o=this.source.addrow(d,p,j,n,h)}if(o==undefined){o=true}}catch(l){o=false}if(o==false){return false}}else{g(this,d,p,j)}return o}return false},deleteRow:function(c){var d=this._getkey(c);this.deleterowbykey(d)},deleterowbykey:function(g){if(g!=undefined){this._datachanged=true;var h=false;var f=this.that;var d=function(m,l){if(m._loading){throw new Error("MLjquiDataTable: "+m.loadingErrorMessage);return false}m.dataview._filteredData=null;m.dataview._sortData=null;m.dataview._sortHierarchyData=null;var o=false;var p=m.vScrollInstance.value;if(!b.isArray(l)){var o=false;if(m.rowsByKey[l]){o=true;if(m.rowinfo[l].selected){m.unselectrowbykey(l,false)}if(m.treeGrid){var n=m._names();var k=m.rowsByKey[l][n.parent]}delete m.rowsByKey[l];if(m.treeGrid){if(m.rowinfo[l]){var i=m.rowinfo[l].row.records;var j=function(q){for(var r=0;r0&&v.originalRecord){v.originalRecord[o.columns.records[u].datafield]=t[o.columns.records[u].datafield]}}r=true}};s(n);if(o.treeGrid){n=o.treeGrid.getRow(l);s(n)}}else{b.each(l,function(w,x){var v=o.rowsByKey[this];var u=function(z,y){if(!v){r=false}else{v[this]=t[w]}r=true};u(this,v);if(o.treeGrid){v=o.treeGrid.getRow(this);u(this,v)}})}var m=o.vScrollInstance.value;if(g==undefined||g==true){if(o._updating==undefined||o._updating==false){o._renderrows()}}if(o.showAggregates&&o._updatecolumnsaggregates){o._updatecolumnsaggregates()}if(o.source&&o.source._knockoutdatasource&&!o._updateFromAdapter&&o.autokoupdates){if(o.source._source._localdata){var n=o.rowsByKey[l];var p=o.getrowindex(n);var q=o.source._source._localdata()[p];o.source.suspendKO=true;o.source._source._localdata.replace(q,b.extend({},n));o.source.suspendKO=false}}o.vScrollInstance.setPosition(m);return r};if(this.source.updaterow){var e=function(l){if(l==true||l==undefined){d(f,c,k);if(i){i()}f._renderrows(false)}};try{j=this.source.updaterow(c,k,e);if(j==undefined){j=true}}catch(h){j=false}}else{j=d(f,c,k);if(j&&i){i()}f._renderrows(false)}return j}return false},lockRow:function(c){var d=this._getkey(c);this.lockrowbykey(d)},unlockRow:function(c){var d=this._getkey(c);this.unlockrowbykey(d)},lockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=true}else{this.rowinfo[c]={locked:true}}this._renderrows()},unlockrowbykey:function(c){if(this.rowinfo[c]){this.rowinfo[c].locked=false}else{this.rowinfo[c]={locked:false}}this._renderrows()},selectRow:function(c){var d=this._getkey(c);this.selectrowbykey(d)},unselectRow:function(c){var d=this._getkey(c);this.unselectrowbykey(d)},selectrowbykey:function(e,h,f){if(h!="keyboard"&&h!="mouse"){this._lastSelectedKey=e}var g=f!==false?true:false;this._doSelection(e,true,g);var i=this.rowsByKey[e];var d=this.getrowindex(i);var c=this.getrowdisplayindex(i);this._raiseEvent("rowSelect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},unselectrowbykey:function(e,f){var g=f!==false?true:false;this._doSelection(e,false,g);var h=this.rowsByKey[e];var d=this.getrowindex(h);var c=this.getrowdisplayindex(h);this._raiseEvent("rowUnselect",{key:e,index:c,boundIndex:d,row:this.rowsByKey[e]})},getSelection:function(){var c=new Array();if(this.rowinfo){for(var e in this.rowinfo){var d=this.rowinfo[e];if(d.selected){c.push(d.row)}}}return c},showdetailsbykey:function(k){if(!this.rowDetails){return}var l=this.rowinfo[k];if(l){l.expanded=true;var f=b(this._table.children()[1]).children(("[data-key="+k+"]"));var i=b(this._pinnedTable.children()[1]).children(("[data-key="+k+"]"));if(f){var c=i.children();var h=b(c[0]);if(this.rtl){var h=b(c[c.length-1])}if(!this.rtl){h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{h.removeClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));h.addClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));h.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"));h.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}f.next().show();var d=i.next();d.show();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){f.next().children().show();i.next().children().show()}if(!l.initialized){var j=l.detailsHeight;var m=this.initRowDetails(k,l.row,b(b(d).children().children().children()[0]),l);l.details=b(d).children().children().children()[0];l.initialized=true;if(m===false||l.detailsHeight!=j){if(m===false){l.expanded=false;l.nodetails=true;d.hide()}this._renderrows()}}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var g=this.getrowindex(l.row);var e=this.getrowdisplayindex(l.row);this._raiseEvent("rowExpand",{row:l.row,index:e,boundIndex:g,rowKey:k})}}},hidedetailsbykey:function(h){if(!this.rowDetails){return}var j=this.rowinfo[h];if(j){j.expanded=false;var d=b(this._table.children()[1]).children(("[data-key="+h+"]"));var e=b(this._pinnedTable.children()[1]).children(("[data-key="+h+"]"));if(d){var g=e.children();var i=b(g[0]);if(this.rtl){var i=b(g[g.length-1])}if(!this.rtl){i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}else{i.addClass(this.toThemeProperty("MLjqui-grid-group-collapse-rtl"));i.removeClass(this.toThemeProperty("MLjqui-grid-group-expand-rtl"));i.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"));i.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"))}d.next().hide();e.next().hide();if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){d.next().children().hide();e.next().children().hide()}this._updateScrollbars();if(this.height==="auto"||this.height===null||this.autoheight){this._arrange()}var f=this.getrowindex(j.row);var c=this.getrowdisplayindex(j.row);this._raiseEvent("rowCollapse",{row:j.row,index:c,boundIndex:f,rowKey:h})}}},_getvirtualcolumnsindexes:function(d,l,h,k,c){if(this.rowDetails||this.rtl||this.editcell||(this.width&&this.width.toString().indexOf("%")>=0)||this.exporting){return{start:0,end:h+k}}var e=0;var i=-1;var f=h+k;if(this.autorowheight){return{start:0,end:h+k}}if(!c){for(var g=0;g=d&&i==-1){i=g}if(e>l+d){f=g;break}}}f++;if(f>h+k){f=h+k}if(i==-1){i=0}return{start:i,end:f}},_renderhorizontalscroll:function(){var t=this.hScrollInstance;var u=t.value;if(this.hScrollBar.css("visibility")==="hidden"){t.value=0;u=0}var h=parseInt(u);if(this.table==null){return}var q=this.columnsrow;var r=0;var i=this.columns.records.length-r;var e=this.columns.records;var l=this.source.records.length==0;if(this.rtl){if(this.hScrollBar.css("visibility")!="hidden"){h=t.max-h}}if(l&&!this._haspinned){this.table[0].style.left=-h+"px";q[0].style.marginLeft=-h+"px"}else{if(this._haspinned||this._haspinned==undefined){for(var w=0;w0:false;if(this.columns&&this.columns.records){for(var e=0;e0){if(filtertype==="stringfilter"){h.MLjquiDropDownList({selectedIndex:2})}else{h.MLjquiDropDownList({selectedIndex:0})}}}}},applyFilters:function(){if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this.serverProcessing){this.dataview.pagenum=0;this.updateBoundData("filter")}else{this.goToPage(0);this.refresh()}if(arguments&&arguments.length>0){if(this._updateSimpleFilter){if(this.filtercolumnsList){var d=this.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;this._updateSimpleFilter(d)}}if(this._updateFilterRow){this._updateFilterRow()}}this._raiseEvent("filter",{filters:this.dataview.filters})},sortBy:function(d,f){this.dataview._filteredData=null;this.dataview._sortData=null;this.dataview._sortHierarchyData=null;if(this._loading){throw new Error("MLjquiDataTable: "+this.loadingErrorMessage);return false}if(this.editable){if(this.editKey!=null){var c=this.endroweditbykey(this.editKey)}}if(d==null){f=null;d=this.sortcolumn}if(d){var e=this;if(f=="a"||f=="asc"||f=="ascending"||f==true){ascending=true}else{ascending=false}if(f!=null){e.sortdirection={ascending:ascending,descending:!ascending}}else{e.sortdirection={ascending:false,descending:false}}if(f!=null){e.sortcolumn=d}else{e.sortcolumn=null}if(e.source.sort){e.dataview.sortfield=d;if(f==null){e.dataview.sortfielddirection=""}else{e.dataview.sortfielddirection=ascending?"asc":"desc"}if(e.source.sort&&!this._loading){e.source.sort(d,f)}}e.dataview.sortBy(d,f);e._raiseEvent("sort",{sortcolumn:this.sortcolumn,sortdirection:this.sortdirection})}if(!this.serverProcessing){this.refresh()}else{this.updateBoundData("sort")}},_togglesort:function(d){var f=this;if(this.disabled){return}if(d.sortable&&f.sortable){var c={sortcolumn:this.sortcolumn,sortdirection:this.sortdirection};var e=null;if(c.sortcolumn!=null&&c.sortcolumn==d.displayfield){e=c.sortdirection.ascending;if(e==true){e=false}else{e=null}}else{e=true}f.sortBy(d.displayfield,e)}},_renderfilter:function(){var h=this;var j=b("
          ");j.height(22);var o=j.find("input");var g=j.find("div:first");j.addClass(this.toThemeProperty("MLjqui-rc-all"));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-input-group"));o.addClass(this.toThemeProperty("MLjqui-input"));o.addClass(this.toThemeProperty("MLjqui-rc-l"));o.addClass(this.toThemeProperty("MLjqui-input-group-addon"));o.addClass(this.toThemeProperty("MLjqui-widget"));o.addClass(this.toThemeProperty("MLjqui-widget-content"));g.addClass(this.toThemeProperty("MLjqui-tb-fill-state-normal"));g.addClass(this.toThemeProperty("MLjqui-rc-r"));g.addClass(this.toThemeProperty("MLjqui-input-group-addon"));g.find("div").addClass(this.toThemeProperty("MLjqui-icon-search"));if(this.rtl){o.addClass(this.toThemeProperty("MLjqui-rtl"));o.css("direction","rtl")}this.filter.children().remove();this.filterbutton=g;var d=new Array();for(var f=0;f"+this.gridlocalization.filtersearchstring+"");this.filter.append(l);var c=b("
          ");this.filter.append(c);if(c.MLjquiDropDownList){c.MLjquiDropDownList({theme:this.theme,enableBrowserBoundsDetection:true,autoDropDownHeight:p,rtl:h.rtl,dropDownWidth:220,selectedIndex:0,width:"auto",height:20,source:d,displayMember:"label",valueMember:"value"})}this.filtercolumnsList=c;var n=function(q){h.filterinput.val("");for(var r=0;r=0){x=x.replace(h.gridlocalization.decimalseparator,".")}}if(x.indexOf(h.gridlocalization.currencysymbol)>=0){x=x.replace(h.gridlocalization.currencysymbol,"")}if(x.indexOf(h.gridlocalization.percentagesymbol)>=0){x=x.replace(h.gridlocalization.percentagesymbol,"")}}var y=A.createfilter(C,x,"EQUAL",null,B.cellsFormat,h.gridlocalization)}else{var y=A.createfilter(C,x,"CONTAINS")}}A.operator=i;A.addfilter(0,y);return A};if(h.filterMode!=="simple"){if(u){var v=u.value;var t=h.getColumn(v);var s=w(t,r,"and");if(r.length>0){h.removeFilter(v);h.addFilter(v,s);h.applyFilters()}else{h.removeFilter(v);h.applyFilters()}if(h.filterMode==="advanced"){if(h._updateFilterRow){h._updateFilterRow(true)}}}}else{h.clearFilters(false,false);if(r.length>0){for(var q=0;q"+this.gridlocalization.filterstring+"");j.append(e);this.addHandler(e,"click",function(q){var i=function(u){if(h.filterrow){for(var x=0;x");k.attr("title",h.gridlocalization.filterclearstring);k.addClass(h.toThemeProperty("MLjqui-icon-close"));j.append(k);k.hide();h.filtericon=k;k.click(function(){h.clearFilters();h.filtericon.fadeOut(200)});if(h.dataview.filters.length>0){if(h.filterMode!="advanced"){n(h.dataview.filters[0].datafield)}else{if(h._updateFilterRow){h._updateFilterRow()}}}},_renderadvancedfilter:function(){var h=this;var c=function(){h.clearFilters(false,false);var n=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var p=h.filterinput.val();for(var m=0;m0||(u.length==0&&k=="NOT_NULL")||(u.length==0&&k=="NOT_EMPTY")||(u.length==0&&k=="EMPTY")||(u.length==0&&k=="NULL")){var r=l.displayfield;var v=new b.MLjqui.filter();if(filtertype=="numericfilter"){if(h.gridlocalization.decimalseparator==","){if(u.indexOf(h.gridlocalization.decimalseparator)>=0){u=u.replace(h.gridlocalization.decimalseparator,".")}}if(u.indexOf(h.gridlocalization.currencysymbol)>=0){u=u.replace(h.gridlocalization.currencysymbol,"")}if(u.indexOf(h.gridlocalization.percentagesymbol)>=0){u=u.replace(h.gridlocalization.percentagesymbol,"")}}var j=v.createfilter(filtertype,u,k,null,l.cellsFormat,h.gridlocalization);v.addfilter(0,j);h.addFilter(r,v)}}if(h.dataview.filters.length>0){h.applyFilters()}else{h.clearFilters()}if(h.dataview.filters.length==0){h.filtericon.fadeOut(200)}else{h.filtericon.fadeIn(200)}};var e=function(){var m=b("
          ").appendTo(h.filter);h.filterrow=m;m[0].cells=new Array();m.height(24);m.width(h.table.width());var k=0;var j=h.filtercolumnsList.MLjquiDropDownList("getSelectedItem").value;var l=h.filterinput.val();b.each(h.columns.records,function(){var p=this;var n=b("
          ").appendTo(m);n.css("position","absolute");n.css("left",k+parseInt(p.uielement[0].style.left));if(p.pinned){n.css("z-index",h.tableZIndex+h.columns.records.length);n.addClass(h.toThemeProperty("MLjqui-widget-header"))}m[0].cells.push(n[0]);if(!this.filterable){return true}var o=b("").appendTo(n);o.keydown(function(r){if(r.keyCode===13){c()}});if(p.displayfield===j){o.val(l)}o.addClass(h.toThemeProperty("MLjqui-input"));o.addClass(h.toThemeProperty("MLjqui-rc-all"));o.addClass(h.toThemeProperty("MLjqui-widget"));o.addClass(h.toThemeProperty("MLjqui-widget-content"));var q=b("
          ").appendTo(n);q.append(b("
          "));o.focus(function(){h.ensureColumnVisible(p.displayfield);h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield);setTimeout(function(){h.filter[0].scrollLeft=0;h.ensureColumnVisible(p.displayfield)},10)});q.click(function(){var t=b("
          ");t.insertAfter(q);q.remove();var r=h.getcolumntypebydatafield(p);var s=h._getfiltersbytype(r);if(r==="string"){index=2}else{index=0}t.MLjquiDropDownList({theme:h.theme,enableBrowserBoundsDetection:true,renderMode:"simple",arrowSize:0,selectedIndex:index,rtl:h.rtl,dropDownWidth:230,dropDownHeight:180,width:20,height:20,source:s,selectionRenderer:function(){return"
          "}});h.addHandler(t,"close",function(u){o.focus();setTimeout(function(){o.focus()},10)});t.removeAttr("tabindex");t.find("div").removeAttr("tabindex");t.MLjquiDropDownList("open")});o[0].style.width=p.width-6-22+"px"});b("
          ").appendTo(m)};e();var i=b("
          ").appendTo(h.filter);var f=b("").appendTo(i);var g=b("").appendTo(i);var d=0;f.css("left",d);g.css("left",d);f.MLjquiButton({theme:h.theme});g.MLjquiButton({theme:h.theme});g.click(function(){h.filtercolumnsList.MLjquiDropDownList({disabled:false});h.filterinput.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filterinput.attr("disabled",false);h.filterbutton.removeClass(h.toThemeProperty("MLjqui-fill-state-disabled"));h.filter.find(".filterrow").addClass("filterrow-hidden");h.filter.find(".filterrow").hide();h._arrange()});f.click(function(){c()});h._renderhorizontalscroll()},_getfiltertype:function(c){var d="stringfilter";switch(c){case"number":case"int":case"float":case"decimal":d="numericfilter";break;case"boolean":case"bool":d="booleanfilter";break;case"date":case"time":d="datefilter";break;case"string":d="stringfilter";break}return d},getcolumntypebydatafield:function(e){var f=this;var d="string";var c=f.source.datafields||((f.source._source)?f.source._source.datafields:null);if(c){var g="";b.each(c,function(){if(this.name==e.displayfield){if(this.type){g=this.type}return false}});if(g){return g}}return d},_getfiltersbytype:function(c){var d=this;var e="";switch(c){case"number":case"float":case"int":e=d.gridlocalization.filternumericcomparisonoperators;break;case"date":e=d.gridlocalization.filterdatecomparisonoperators;break;case"boolean":case"bool":e=d.gridlocalization.filterbooleancomparisonoperators;break;case"string":default:e=d.gridlocalization.filterstringcomparisonoperators;break}return e},_getcellvalue:function(c,e){var d=null;d=e[c.datafield];if(c.displayfield!=null){d=e[c.displayfield]}if(d==null){d=""}return d},_renderrows:function(ap){if(this.editable){if(this.editKey!=null){if(ap!==false){var M=this.endroweditbykey(this.editKey)}}}if(this.treeGrid){this.treeGrid._renderrows();return}if(this._loading){return}if(this._updating){return}if(this.rendering){this.rendering()}var ab=this;var T=0;this.table[0].rows=new Array();var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-widget-content");if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var K=this.columns.records.length;var ao=b.MLjqui.browser.msie&&b.MLjqui.browser.version<8;if(ao){this.host.attr("hideFocus","true")}var R=ab.groups.length;var ai=new Array();var k=this.source.records;k=this.dataview.evaluate(k);this.dataViewRecords=k;if(this.dataview.pagesize=="all"||!this.pageable||this.serverProcessing){var u=k;if(this.pageable&&this.serverProcessing&&k.length>this.dataview.pagesize){var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}}else{var u=k.slice(this.dataview.pagesize*this.dataview.pagenum,this.dataview.pagesize*this.dataview.pagenum+this.dataview.pagesize)}if(ab.groups&&ab.groups.length>0){var P=this.pageable?this.dataview.pagesize*this.dataview.pagenum:0;var z=function(w){var au=0;var i=new Array();for(var c=0;cab.dataview.pagesize*ab.dataview.pagenum&&au<=ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){i.push(j)}if(au>ab.dataview.pagesize*ab.dataview.pagenum+ab.dataview.pagesize){break}}return i};if(this.pageSizeMode==="root"){var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",k,0);ab.rootRecordsLength=v.length;v=z(v)}else{var v=ab.source.getGroupedRecords(ab.groups,"records","label",null,"data",null,"parent",u,P)}var y=function(j,w){for(var av=0;av0){var aw=y(c.records,new Array());for(var au=0;auZ.maxwidth){e=Z.maxwidth}var l=b('
          ');b(document.body).append(l);var n=l.find("td");aq=1+parseInt(n.css("padding-left"))+parseInt(n.css("padding-right"));l.remove();break}}var ak=this.rtl?" "+this.toTP("MLjqui-grid-table-rtl"):"";var B="";var ar="
          ";var I=0;var s=K;for(var al=0;alZ.maxwidth){e=Z.maxwidth}e-=aq;if(e<0){e=0}if(ao){var ac=e;if(al==I){ac++}if(Z.rowDetailscolumn){var ac=ac+4;ar+="";B+=""}else{ar+="";B+=""}}else{ar+="";B+=""}aa+=e}B+="";ar+="";this._hiddencolumns=false;var g=false;if(this.rowDetails&&this._pinnedTable){this._pinnedTable.find("[data-role=details]").detach();this._table.find("[data-role=details]").detach()}if(U===0){var o='';var m=this.host.height();if(this.pageable){m-=this.pagerHeight;if(this.pagerPosition==="both"){m-=this.pagerHeight}}m-=this.columnsHeight;if(this.filterable){var ag=this.filter.find(".filterrow");var D=this.filter.find(".filterrow-hidden");var C=1;if(D.length>0){C=0}m-=this.filterHeight+this.filterHeight*ag.length*C}if(this.showstatusbar){m-=this.statusBarHeight}if(this.showAggregates){m-=this.aggregatesHeight}if(m<25){m=25}if(this.hScrollBar[0].style.visibility!="hidden"){m-=this.hScrollBar.outerHeight()}if(this.height==="auto"||this.height===null||this.autoheight){m=300}var l='";o+=l;B+=o;ar+=o;this.table[0].style.width=aa+2+"px";T=aa}var q=this.getRows();var x=new Array();for(var am=0;am';var E='';if(R>0){if(G.level';var E=''}}var p=0;var S=0;for(var al=0;alae.maxwidth){e=ae.maxwidth}e-=aq;if(e<0){e=0}var H=this.toTP("MLjqui-cell")+" "+this.toTP("MLjqui-grid-cell")+" "+this.toTP("MLjqui-item");if(ae.pinned){H+=" "+this.toTP("MLjqui-grid-cell-pinned")}if(this.sortcolumn===ae.displayfield){H+=" "+this.toTP("MLjqui-grid-cell-sort")}if(this.altRows&&am%2!=0){H+=" "+this.toTP("MLjqui-grid-cell-alt")}if(this.rtl){H+=" "+this.toTP("MLjqui-cell-rtl")}var O="";if(R>0){if(G.levelat.maxwidth){e=at.maxwidth}A-=aq;if(A<0){A=0}if(!at.hidden){ac+=A}}e=ac}else{H+=" "+this.toTP("MLjqui-grid-cell-pinned")}}}var l='";af+='" class="'+H+'">';af+=aj;af+="";if(!ae.pinned){o+=l;if(g){E+=af}}else{E+=l;o+=l}if(R>0&&!ao){if(G.level";E+="";B+=o;ar+=E;if(!this.rowinfo[G.uid]){this.rowinfo[G.uid]={group:Y,row:G,details:null,detailsHeight:200,initialized:false,expanded:false}}else{if(!("group" in this.rowinfo[G.uid])){this.rowinfo[G.uid].group=Y}if(!("row" in this.rowinfo[G.uid])){this.rowinfo[G.uid].row=G}if(!("details" in this.rowinfo[G.uid])){this.rowinfo[G.uid].details=null}if(!("detailsHeight" in this.rowinfo[G.uid])){this.rowinfo[G.uid].detailsHeight=200}if(!("initialized" in this.rowinfo[G.uid])){this.rowinfo[G.uid].initialized=false}if(!("expanded" in this.rowinfo[G.uid])){this.rowinfo[G.uid].expanded=false}}if(this.serverProcessing){this.rowinfo[G.uid].row=G}if(this.rowDetails){var F=this.rowinfo[G.uid].detailsHeight;if(this.rowinfo[G.uid]){if(this.rowinfo[G.uid].expanded){var ah='';B+=ah;ar+=ah}}B+="
          ';l+=this.gridlocalization.emptydatastring;l+="
          0){if(G.level0&&ao&&Y&&al>=R){l+="font-size: 1px; border-color: transparent; color: transparent;";af+="font-size: 1px; border-color: transparent; color: transparent;"}if(ae.pinned){l+="pointer-events: auto;";af+="pointer-events: auto;"}if(!Y&&ae.rowDetailscolumn){if(this.rowinfo[G.uid]){if(!this.rowinfo[G.uid].nodetails){if(this.rowinfo[G.uid].expanded){if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-expand")}else{H+=" "+this.toTP("MLjqui-grid-group-expand-rtl")}H+=" "+this.toTP("MLjqui-icon-arrow-down")}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}}else{if(!this.rtl){H+=" "+this.toTP("MLjqui-grid-group-collapse");H+=" "+this.toTP("MLjqui-icon-arrow-right")}else{H+=" "+this.toTP("MLjqui-grid-group-collapse-rtl");H+=" "+this.toTP("MLjqui-icon-arrow-left")}}}if(!this.autoRowHeight||(this.autoRowHeight&&!ae.autoCellHeight)){H+=" "+this.toTP("MLjqui-grid-cell-nowrap ")}var aj=ab._getcellvalue(ae,G);var f=ae.cellsFormat;if(R>0){if(G.level=0||aj.indexOf(" ng-")>=0)){x.push({rowKey:G.uid,row:d,column:ae.datafield,value:aj,columnIndex:al})}}}else{if(this.groupsRenderer){aj=this.groupsRenderer(aj,G,G.level)}}l+='" class="'+H+'">';l+=aj;l+="
          ";ar+="";if(g){if(ab.WinJS){MSApp.execUnsafeLocalFunction(function(){ab.table.html(ar+B)})}else{ab.table[0].innerHTML=ar+B}var W=this.table.find("#table"+this.element.id);var X=this.table.find("#pinnedtable"+this.element.id);X.css("float","left");X.css("pointer-events","none");W.css("float","left");X[0].style.position="absolute";W[0].style.position="relative";W[0].style.zIndex=V-10;X[0].style.zIndex=V+10;this._table=W;this._table[0].style.left="0px";this._pinnedTable=X;this._pinnedTable[0].style.left="0px";this._pinnedTable[0].style.width=T+"px";this._table[0].style.width=T+"px";if(this.rtl){if(T>parseInt(this.element.style.width)&&this._haspinned){this._pinnedTable[0].style.left=3-T+parseInt(this.element.style.width)+"px"}}if(this.rowDetails){for(var am=0;am0){var an=this._table[0].rows;b.each(x,function(){var w=this.row;var au=this.rowKey;var j=this.column;var i=this.columnIndex;var t=ab._getuirow(au);if(t){var c=t[0].cells[i];if(b.MLjqui.angularCompile){b.MLjqui.angularCompile(c,"
          "+c.innerHTML+"
          ")}}})}if(this.rendered){this.rendered()}},getcolumnindex:function(c){var d=this.getColumn(c);var e=this.columns.records.indexOf(d);return e},setcolumnindex:function(e,i,j){var h=this.getColumn(e);if(h.pinned){return}if(h.hidden){return}if(h.checkboxcolumn){return}if(h.grouped){return}var l=this.columns.records.indexOf(h);this.columns.records.splice(l,1);this.columns.records.splice(i,0,h);var f=0;var n=this.headerZIndex;this.columnsrow.children().detach();var k=this.toThemeProperty("MLjqui-grid-cell");k+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");k+=" "+this.toThemeProperty("MLjqui-item");var m=this;var c=null;if(m.filterrow!=undefined){var c=b(m.filterrow.children()[0])}this.columnsrow[0].cells=[];var g=false;b.each(this.columns.records,function(p,s){var q=this.uielement;m.columnsrow.append(q);if(!m.rtl){q.css("z-index",n--)}else{q.css("z-index",n++)}var o=!m.rtl?250+n-1:250+n+1;if(this.pinned){q.css("z-index",o)}var r=this.width;q.css("left",f);m.columnsrow[0].cells[m.columnsrow[0].cells.length]=q[0];if(this.hidden){g=true}if(!(this.hidden&&this.hideable)){f+=r}});if(this.groupable){var d=this.groups.length;if(d>0){if(l-d>=0){l-=d;i-=d}}}if(this.rowDetails){if(l-1>=0){l--;i--}}if(this.selectionMode=="checkbox"){if(l-1>=0){l--;i--}}var h=this._columns[l];this._columns.splice(l,1);this._columns.splice(i,0,h);this.resize();this._rendercolumnGroups();this._raiseEvent("columnReordered",{dataField:h.datafield,oldIndex:l,newIndex:i})},_pinnedColumnsLength:function(){var c=0;b.each(this.columns.records,function(){if(this.pinned){c++}if(this.grouped){c++}});if(this.rowDetails){c++}if(this.selectionMode=="checkbox"){c++}return c},_handlecolumnsReorder:function(){var g=this;var h=-1;var d=false;if(!g.columnsReorder){return}var f="mousemove.reorder"+this.element.id;var e="mousedown.reorder"+this.element.id;var i="mouseup.reorder"+this.element.id;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true;f=b.MLjqui.mobile.getTouchEventName("touchmove")+".reorder"+this.element.id;e=b.MLjqui.mobile.getTouchEventName("touchstart")+".reorder"+this.element.id;i=b.MLjqui.mobile.getTouchEventName("touchend")+".reorder"+this.element.id}this.removeHandler(b(document),f);this.addHandler(b(document),f,function(x){if(g.resizing){return true}if(g.reordercolumn!=null){var m=parseInt(x.pageX);var u=parseInt(x.pageY);if(c){var t=g.getTouches(x);var p=t[0];if(p!=undefined){m=parseInt(p.pageX);u=parseInt(p.pageY)}}var j=g.host.coord();var w=parseInt(j.left);var k=parseInt(j.top);if(g.dragmousedownoffset==undefined||g.dragmousedownoffset==null){g.dragmousedownoffset={left:0,top:0}}var B=parseInt(m)-parseInt(g.dragmousedownoffset.left);var s=parseInt(u)-parseInt(g.dragmousedownoffset.top);g.reordercolumn.css({left:B+"px",top:s+"px"});d=false;if(m>=w&&m<=w+g.host.width()){if(u>=k&&u<=k+g.host.height()){d=true}}h=-1;if(d){g.reordercolumnicon.removeClass(g.toThemeProperty("MLjqui-grid-dragcancel-icon"));g.reordercolumnicon.addClass(g.toThemeProperty("MLjqui-grid-drag-icon"));var n=g.columnsheader.coord();var q=n.top+g.columnsheader.height();if(g.columnsdropline!=null){if(u>=n.top&&u<=q){h=g._handlereordercolumnsdroplines(m);if(g.columnGroups){if(h!=-1){var l=0;l+=g._pinnedColumnsLength();var o=h.index;if(o>=l){var y=g.columns.records[o];if(y!=undefined){var v=g.columns.records.indexOf(g.getColumn(y.datafield));if(y.datafield==null){var v=g.columns.records.indexOf(g.getcolumnbytext(y.text))}var r=b.data(g.reordercolumn[0],"reorderrecord");var A=g.columns.records.indexOf(g.getColumn(r));var z=y;if(A=p){var s=g.columns.records[q];if(s!=undefined){var u=g.columns.records.indexOf(g.getColumn(s.datafield));if(s.datafield==null){var u=g.columns.records.indexOf(g.getcolumnbytext(s.text))}if(g.columnGroups){var r=s;if(xu){g.setcolumnindex(k,u)}}}}}}if(g.columnsdropline!=null){g.columnsdropline.remove();g.columnsdropline=null}}}})},getcolumnbytext:function(d){var c=null;if(this.columns.records){b.each(this.columns.records,function(){if(this.text==d){c=this;return false}})}return c},_handlereordercolumnsdroplines:function(i){var c=this;var h=-1;var e=c._pinnedColumnsLength();var g=parseInt(c.host.coord().left);var d=g+c.host.width();var f=c.vScrollBar.css("visibility")!="hidden"?19:0;if(!c.rtl){f=0}b.each(c.columnsbounds,function(j){if(j>=e){if(this.width==0){return true}if(i<=this.left+this.width/2){if(i>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+parseInt(this.left)+"px");c.columnsdropline.css("top",parseInt(this.top)+"px");c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"before"};return false}else{if(i>=this.left+this.width/2){if(this.left+this.width>d){c.columnsdropline.fadeOut();return false}c.columnsdropline.css("left",f+1+this.left+this.width);c.columnsdropline.css("top",this.top);c.columnsdropline.height(this.height);c.columnsdropline.fadeIn("slow");h={index:j,position:"after"}}}}});return h},_createreordercolumn:function(d,f,i){var h=this;var g=f;if(h.reordercolumn){h.reordercolumn.remove()}if(h.columnsdropline){h.columnsdropline.remove()}h.reordercolumn=b("
          ");var k=d.clone();h.reordercolumn.css("z-index",999999);k.css("border-width","1px");k.css("opacity","0.4");var j=b(k.find("."+h.toThemeProperty("MLjqui-grid-column-menubutton")));if(j.length>0){j.css("display","none")}var c=b(k.find(".MLjqui-icon-close"));if(c.length>0){c.css("display","none")}h.reordercolumnicon=b('
          ');h.reordercolumnicon.addClass(h.toThemeProperty("MLjqui-grid-drag-icon"));h.reordercolumn.css("float","left");h.reordercolumn.css("position","absolute");var e=h.host.coord();k.width(d.width()+16);h.reordercolumn.append(k);h.reordercolumn.height(d.height());h.reordercolumn.width(k.width());h.reordercolumn.append(h.reordercolumnicon);b(document.body).append(h.reordercolumn);k.css("margin-left",0);k.css("left",0);k.css("top",0);h.reordercolumn.css("left",g.left+h.dragmousedown.left);h.reordercolumn.css("top",g.top+h.dragmousedown.top);if(i!=undefined&&i){h.columnsdropline=b('
          ');h.columnsdropline.width(2);h.columnsdropline.addClass(h.toThemeProperty("MLjqui-grid-group-drag-line"));b(document.body).append(h.columnsdropline)}},_handlecolumnsdragreorder:function(d,g){if(this.reordercolumn){this.reordercolumn.remove()}if(this.columnsdropline){this.columnsdropline.remove()}this.dragmousedown=null;this.dragmousedownoffset=null;this.columndragstarted=false;this.reordercolumn=null;var h=this;var f;var c=false;if(this.isTouchDevice()&&this.touchmode!==true){c=true}var e="mousedown.drag";var f="mousemove.drag";if(c){e=b.MLjqui.mobile.getTouchEventName("touchstart")+".drag";f=b.MLjqui.mobile.getTouchEventName("touchmove")+".drag"}else{this.addHandler(g,"dragstart",function(i){return false})}this.addHandler(g,e,function(k){if(false==d.draggable){return true}if(h.resizing){return true}h.__drag=true;var j=k.pageX;var i=k.pageY;if(c){var l=h.getTouches(k);var n=l[0];j=n.pageX;i=n.pageY}h.dragmousedown={left:j,top:i};var m=b(k.target).coord();h.dragmousedownoffset={left:parseInt(j)-parseInt(m.left),top:parseInt(i-m.top)};if(k.preventDefault){k.preventDefault()}return true});this.addHandler(g,f,function(k){if(!d.draggable){return true}if(undefined==d.datafield){return true}if(d.pinned){return true}if(h.resizing){return true}if(h.dragmousedown){var j=k.pageX;var i=k.pageY;if(c){var m=h.getTouches(k);var o=m[0];if(o!=undefined){j=o.pageX;i=o.pageY}}f={left:j,top:i};if(!h.columndragstarted&&h.reordercolumn==null){var l=Math.abs(f.left-h.dragmousedown.left);var n=Math.abs(f.top-h.dragmousedown.top);if(l>3||n>3){h._createreordercolumn(g,f,true);b(document.body).addClass("MLjqui-disableselect");b.data(h.reordercolumn[0],"reorderrecord",d.datafield)}}}})},getTouches:function(c){return b.MLjqui.mobile.getTouches(c)},_handlecolumnsResize:function(){var i=this;if(this.columnsResize){var k=false;if(i.isTouchDevice()){k=true}var g="mousemove.resize"+this.element.id;var d="mousedown.resize"+this.element.id;var e="mouseup.resize"+this.element.id;if(k){var g=b.MLjqui.mobile.getTouchEventName("touchmove")+".resize"+this.element.id;var d=b.MLjqui.mobile.getTouchEventName("touchstart")+".resize"+this.element.id;var e=b.MLjqui.mobile.getTouchEventName("touchend")+".resize"+this.element.id}this.removeHandler(b(document),g);this.addHandler(b(document),g,function(n){if(i.resizablecolumn!=null&&!i.disabled&&i.resizing){if(i.resizeline!=null){var s=i.resizablecolumn.columnelement;var p=i.host.coord();var v=parseInt(i.resizestartline.coord().left);var l=v-i._startcolumnwidth;var w=i.resizablecolumn.column.minwidth;if(w=="auto"){w=0}else{w=parseInt(w)}var m=i.resizablecolumn.column.maxwidth;if(m=="auto"){m=0}else{m=parseInt(m)}var q=n.pageX;if(k){var t=b.MLjqui.mobile.getTouches(n);var r=t[0];q=r.pageX}l+=w;var u=m>0?v+m:0;var o=m==0?true:i._startcolumnwidth+q-v=p.left&&q>=l){if(u!=0&&n.pageX=p.left&&q<=p.left+i.host.width()){i.resizeline.css("left",q);if(k){return false}}}}}}if(!k&&i.resizablecolumn!=null){return false}});this.removeHandler(b(document),d);this.addHandler(b(document),d,function(m){if(i.resizablecolumn!=null&&!i.disabled){var l=i.resizablecolumn.columnelement;if(l.coord().top+l.height()+5m.pageY){i.resizablecolumn=null;return}i._startcolumnwidth=i.resizablecolumn.column.width;i.resizablecolumn.column._width=null;b(document.body).addClass("MLjqui-disableselect");b(document.body).addClass("MLjqui-position-reset");i._mouseDownResize=new Date();i.resizing=true;i._resizecolumn=i.resizablecolumn.column;i.resizeline=i.resizeline||b('
          ');i.resizestartline=i.resizestartline||b('
          ');i.resizebackground=i.resizebackground||b('
          ');i.resizebackground.css("opacity",0.01);i.resizebackground.css("cursor","col-resize");i.resizeline.css("cursor","col-resize");i.resizestartline.css("cursor","col-resize");i.resizeline.addClass(i.toThemeProperty("MLjqui-grid-column-resizeline"));i.resizestartline.addClass(i.toThemeProperty("MLjqui-grid-column-resizestartline"));b(document.body).append(i.resizeline);b(document.body).append(i.resizestartline);b(document.body).append(i.resizebackground);var n=i.resizablecolumn.columnelement.coord();i.resizebackground.css("left",i.host.coord().left);i.resizebackground.css("top",i.host.coord().top);i.resizebackground.width(i.host.width());i.resizebackground.height(i.host.height());i.resizebackground.css("z-index",999999999);var o=function(q){if(!i.rtl){q.css("left",parseInt(n.left)+i._startcolumnwidth)}else{q.css("left",parseInt(n.left))}var s=0;var t=i.showtoolbar?i.toolbarHeight:0;s+=t;var v=i.showstatusbar?i.statusBarHeight:0;s+=v;var r=i.showAggregates?i.aggregatesHeight:0;s+=r;if(i.pageable&&i.pagerPosition!="bottom"){s+=i.pagerHeight}if(i.filterable){s+=i.filter.height()}var p=0;if(i.pageable&&i.pagerPosition!="top"){p=i.pagerHeight}var u=i.hScrollBar.css("visibility")!="hidden"?i.scrollBarSize:0;q.css("top",parseInt(n.top));q.css("z-index",9999999999);if(i.columnGroups){q.height(i.host.height()+i.resizablecolumn.columnelement.height()-p-s-u-i.columnGroupslevel*i.columnsHeight)}else{q.height(i.host.height()-p-s-u)}q.show("fast")};o(i.resizeline);o(i.resizestartline);i.dragmousedown=null}});var f=function(){b(document.body).removeClass("MLjqui-disableselect");b(document.body).removeClass("MLjqui-position-reset");if(!i.resizing){return}i._mouseUpResize=new Date();var t=i._mouseUpResize-i._mouseDownResize;if(t<200){i.resizing=false;if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){i._resizecolumn=null;i.resizeline.hide();i.resizestartline.hide();i.resizebackground.remove()}return}i.resizing=false;if(i.disabled){return}var n=i.host.width();if(i.vScrollBar[0].style.visibility!="hidden"){n-=20}if(n<0){n=0}if(i._resizecolumn!=null&&i.resizeline!=null&&i.resizeline.css("display")=="block"){var u=parseInt(i.resizeline.css("left"));var o=parseInt(i.resizestartline.css("left"));var s=i._startcolumnwidth+u-o;if(i.rtl){var s=i._startcolumnwidth-u+o}var r=i._resizecolumn.width;i._resizecolumn.width=s;if(i._resizecolumn._percentagewidth!=undefined){i._resizecolumn._percentagewidth=(s/n)*100}for(var q=0;q0){k-=parseInt(this.scrollBarSize)+6;c=k}var j="";if(this.columns==undefined||this.columns.records==undefined){return}var i=this;var h=false;b.each(this.columns.records,function(l,m){if(!(this.hidden)){if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){var m=0;var n=i.vScrollBar[0].style.visibility=="hidden"?0:i.scrollBarSize+5;if(i.scrollBarSize==0){n=0}m=parseFloat(this.width)*c/100;if(this._percentagewidth!=undefined){m=parseFloat(this._percentagewidth)*(c)/100}if(mthis.maxwidth&&this.maxwidth!="auto"){m=this.maxwidth}k-=Math.round(m)}else{if(this.width!="auto"&&!this._width){k-=this.width}else{j+=this.text}}}});var f=this.columnsheader.find("#columntable"+this.element.id);if(f.length==0){return}var d=0;var g=f.find(".MLjqui-grid-column-header");var e=0;b.each(this.columns.records,function(m,r){var o=b(g[m]);var l=false;var q=this.width;var p=this.width;if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){q=parseFloat(this._percentagewidth)*c/100}else{q=parseFloat(this.width)*c/100}q=Math.round(q);l=true}if(this.width!="auto"&&!this._width&&!l){if(parseInt(o[0].style.width)!=this.width){o.width(this.width)}}else{if(l){if(qthis.maxwidth&&this.maxwidth!="auto"){q=this.maxwidth;this.width=q}if(parseInt(o[0].style.width)!=q){o.width(q);this.width=q}}else{var n=Math.floor(k*(this.text.length/j.length));if(isNaN(n)){n=this.minwidth}var s=(k*(this.text.length/j.length))-n;d+=s;if(d>=1){d-=1;n++}if(d>=0.5&&m==i.columns.records.length-1){n++}if(n<0){$element=b(""+this.text+"");b(document.body).append($element);n=10+$element.width();$element.remove()}if(nthis.maxwidth){n=this.maxwidth}this._width="auto";this.width=n;o.width(this.width)}}if(parseInt(o[0].style.left)!=e){o.css("left",e)}if(!(this.hidden)){e+=this.width}this._requirewidthupdate=true;if(p!==this.width){h=true}});this.columnsheader.width(2+e);f.width(this.columnsheader.width());this._resizecolumnGroups();if(h){this._renderrows()}if(this.showAggregates){this._refreshcolumnsaggregates()}},_rendercolumnheaders:function(){var r=this;if(this._updating){return}this._columnsbydatafield=new Array();this.columnsheader.find("#columntable"+this.element.id).remove();var g=b('
          ');g[0].cells=new Array();var l=0;var h=0;var s="";var u=this.host.width();var f=u;var w=new Array();var t=new Array();b.each(this.columns.records,function(j,k){if(!(this.hidden)){if(this.width!="auto"&&!this._width){if(this.widththis.maxwidth&&this.maxwidth!="auto"){u-=this.maxwidth}else{if(this.width.toString().indexOf("%")!=-1){var k=0;k=parseFloat(this.width)*f/100;if(kthis.maxwidth&&this.maxwidth!="auto"){k=this.maxwidth}u-=k}else{if(typeof this.width=="string"){this.width=parseInt(this.width)}u-=this.width}}}}else{s+=this.text}}if(this.pinned||this.grouped||this.checkboxcolumn){if(r._haspinned){this.pinned=true}w[w.length]=this}else{t[t.length]=this}});if(!this.rtl){for(var o=0;o=this.columns.records.length-w.length;o--){this.columns.replace(o,w[e++])}for(var m=0;m
          ');if(r.rtl&&J===0){x[0].style.borderLeftColor="transparent"}if(r.columnGroups){x[0].style.height=n+"px";x[0].style.bottom="0px";if(this.pinned){x[0].style.zIndex=K}}this.uielement=x;this.element=x;if(this.classname!=""&&this.classname){x.addClass(this.classname)}var C=this.width;var D=false;if(this.width===null){this.width="auto"}if(this.width.toString().indexOf("%")!=-1||this._percentagewidth!=undefined){if(this._percentagewidth!=undefined){C=parseFloat(this._percentagewidth)*f/100}else{C=parseFloat(this.width)*f/100}C=Math.round(C);D=true}if(this.width!="auto"&&!this._width&&!D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}x[0].style.width=parseInt(C)+"px"}else{if(D){if(Cthis.maxwidth&&this.maxwidth!="auto"){C=this.maxwidth}if(this._percentagewidth==undefined||this.width.toString().indexOf("%")!=-1){this._percentagewidth=this.width}x.width(C);this.width=C}else{var G=Math.floor(u*(this.text.length/s.length));var E=(u*(this.text.length/s.length))-G;c+=E;if(c>=1){c-=1;G++}if(c>=0.5&&J==r.columns.records.length-1){G++}if(isNaN(G)){G=this.minwidth}if(G<0){$element=b(""+this.text+"");b(document.body).append($element);G=10+$element.width();$element.remove()}if(Gthis.maxwidth){G=this.maxwidth}this._width="auto";this.width=parseInt(G);C=this.width;x.width(this.width)}}if(this.hidden){x.css("display","none")}var k=b(x.children()[0]);g[0].cells[J]=x[0];var p=false;var I=false;var z=this.renderer!=null?this.renderer(this.text,this.align,n):r._rendercolumnheader(this.text,this.align,n,r);if(z==null){z=r._rendercolumnheader(this.text,this.align,n,r)}if(this.renderer!=null){z=b(z)}p=true;if(r.WinJS){MSApp.execUnsafeLocalFunction(function(){k.append(b(z))})}else{if(this.renderer){k.append(b(z))}else{if(z){k[0].innerHTML=z}}}if(z!=null){var B=b('
          ');k.append(B);var N=B.children();this.sortasc=N[1];this.sortdesc=N[2];this.filtericon=N[0];this.iconscontainer=B;if(r.rtl){B.css("margin-left","0px");B.css("left","0px");b(this.sortasc).css("float","left");b(this.filtericon).css("float","left");b(this.sortdesc).css("float","left")}}g.append(x);if(r.columnsReorder&&this.draggable&&r._handlecolumnsdragreorder){r._handlecolumnsdragreorder(this,x)}var L=this;r.addHandler(x,"click",function(i){if(L.checkboxcolumn){return true}if(r._togglesort){if(!r._loading){r._togglesort(L)}}i.preventDefault()});if(r.columnsResize&&!I){var y=false;var j="mousemove";if(r.isTouchDevice()){y=true;j=b.MLjqui.mobile.getTouchEventName("touchstart")}r.addHandler(x,j,function(O){if(!L.resizable){r.resizablecolumn=null;return true}var i=parseInt(O.pageX);var Q=5;var T=parseInt(x.coord().left);if(r.hasTransform){T=b.MLjqui.utilities.getOffset(x).left}if(r._handlecolumnsResize){if(y){var P=b.MLjqui.mobile.getTouches(O);var S=P[0];i=S.pageX;Q=40;if(i>=T+L.width-Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize")}else{x.css("cursor","");r.resizablecolumn=null}return true}var R=L.width;if(r.rtl){R=0}if(i>=T+R-Q){if(i<=T+R+Q){r.resizablecolumn={columnelement:x,column:L};x.css("cursor","col-resize");return false}else{x.css("cursor","");r.resizablecolumn=null}}else{x.css("cursor","");if(i0){this.columnsheader.width(2+h)}else{this.columnsheader.width(h)}this.columnsrow=g;r.columnsheader.append(g);g.width(h);if(this._handlecolumnsdragdrop){this._handlecolumnsdragdrop()}if(this._handlecolumnsReorder){this._handlecolumnsReorder()}if(this._handlecolumnsResize){this._handlecolumnsResize()}if(this.columnGroups){this._rendercolumnGroups()}},_rendercolumnGroups:function(){if(!this.columnGroups){return}var o=0;for(var l=0;l');var k=b(this._rendercolumnheader(q.text,q.align,this.columnsHeight,this));f.append(k);f[0].style.left=d+"px";if(d===0){f[0].style.borderLeftColor="transparent"}f[0].style.top=p+"px";f[0].style.height=r+"px";f[0].style.width=-1+q.width+"px";e.append(f);q.element=f}}}},_resizecolumnGroups:function(){if(!this.columnGroups){return}for(var d=0;d0){d.removeHandler(c,"mouseenter");d.removeHandler(c,"mouseleave");var e=b(f.filtericon);d.removeHandler(e,"mousedown");d.removeHandler(e,"click");d.removeHandler(c,"click")}},_calculateaggregate:function(k,o,d,h){if(!k.datafield){return null}var e=k.aggregates;if(!e){e=o}if(e){var f=new Array();for(var n=0;n0){r(u[t].records)}}};r(h);h=q}if(this.treeGrid&&this.filterable&&this.dataview.filters.length>0){var p=new Array();for(var n=0;n=g){if(m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e,formatStrings:f}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}}return m}else{var m=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,h,c);if(this.treeGrid&&m){if(m[k.datafield].sum!=undefined||m[k.datafield].avg!=undefined){var g=this.source._source.hierarchy&&this.source._source.hierarchy.groupingDataFields?this.source._source.hierarchy.groupingDataFields.length:0;if(g==0||c>=g){var j=this.source.getAggregatedData([{name:k.datafield,aggregates:e}],this.gridlocalization,s,c);if(m[k.datafield].sum!=undefined){m[k.datafield].sum=j[k.datafield].sum}if(m[k.datafield].avg!=undefined){m[k.datafield].avg=j[k.datafield].avg}}}}return m}}}return null},getcolumnaggregateddata:function(d,h,i,e){var f=this.getColumn(d);if(!f){return""}var k=(i==undefined||i==false)?false:i;if(h==null){return""}var c=f.aggregates;f.aggregates=null;var j=this._calculateaggregate(f,h,k,e);var g={};if(j){g=j[d];f.aggregates=c}return g},_updatecolumnaggregates:function(e,h,c){var f=this;if(!h){c.children().remove();c.html("");if(e.aggregatesRenderer){var g={};if(e.aggregates){g=this.getcolumnaggregateddata(e.datafield,e.aggregates)}var d=e.aggregatesRenderer({},e,c,null);c.html(d)}return}c.children().remove();c.html("");if(e.aggregatesRenderer){if(h){var d=e.aggregatesRenderer(h[e.datafield],e,c,this.getcolumnaggregateddata(e.datafield,e.aggregates),"aggregates");c.html(d)}}else{b.each(h,function(){var j=this;for(g in j){var k=b('
          ');var i=g;i=f._getaggregatename(i);k.html(i+":"+j[g]);if(f.rtl){k.addClass(f.toThemeProperty("MLjqui-rtl"))}c.append(k)}})}},_getaggregatetype:function(d){switch(d){case"min":case"max":case"count":case"avg":case"product":case"var":case"varp":case"stdev":case"stdevp":case"sum":return d}var c=d;for(var e in d){c=e;break}return c},_getaggregatename:function(d){var c=d;switch(d){case"min":c="Min";break;case"max":c="Max";break;case"count":c="Count";break;case"avg":c="Avg";break;case"product":c="Product";break;case"var":c="Var";break;case"stdevp":c="StDevP";break;case"stdev":c="StDev";break;case"varp":c="VarP";case"sum":c="Sum";break}if(d===c&&typeof(c)!="string"){for(var e in d){c=e;break}}return c},_updatecolumnsaggregates:function(){var g=this.getRows();if(this.dataViewRecords){g=this.dataViewRecords}var c=this.columns.records.length;if(undefined!=this.aggregates[0].cells){for(var f=0;f');var f=0;var m=this.columns.records.length;var l=this.toThemeProperty("MLjqui-grid-cell");if(this.rtl){l+=" "+this.toThemeProperty("MLjqui-grid-cell-rtl");f=0;c.css("border-left-width","0px");this.aggregates.css("border-left-color","transparent")}l+=" "+this.toThemeProperty("MLjqui-grid-cell-pinned");var n=m+10;var o=new Array();this.aggregates[0].cells=o;for(var h=0;hg.maxwidth){d=g.maxwidth}var e=l;if(g.cellsalign){e+=" "+this.toThemeProperty("MLjqui-"+g.cellsalign+"-align")}var k=b('
          ');c.append(k);k.css("left",f);if(!this.rtl){k.css("z-index",n--)}else{k.css("z-index",n++);if(h==0){k.css("border-left-width","0px")}}k.width(d);k[0].style.left=f+"px";if(!(g.hidden&&g.hideable)){f+=d}else{k.css("display","none")}o[o.length]=k[0];this._updatecolumnaggregates(g,i,k)}if(b.MLjqui.browser.msie&&b.MLjqui.browser.version<8){c.css("z-index",n--)}c.width(parseInt(f)+2);c.height(this.aggregatesHeight);this.aggregates.children().remove();this.aggregates.append(c);this.aggregates.removeClass(this.toThemeProperty("MLjqui-widget-header"));this.aggregates.addClass(l);this.aggregates.css("border-bottom-color","transparent");this.aggregates.css("border-top-width","1px");if(this.rtl&&this.hScrollBar.css("visibility")!="hidden"){this._renderhorizontalscroll()}},destroy:function(){var h=this;if(h.columns&&h.columns.records){for(var f=0;f0){j.MLjquiDropDownList("destroy")}}}if(h.filtercolumnsList){h.filtercolumnsList.MLjquiDropDownList("destroy")}}if(h.pageable){if(h.pagershowrowscombotop&&h.pagershowrowscombotop.MLjquiDropDownList){h.pagershowrowscombotop.MLjquiDropDownList("destroy")}if(h.pagershowrowscombobottom&&h.pagershowrowscombobottom.MLjquiDropDownList){h.pagershowrowscombobottom.MLjquiDropDownList("destroy")}var l=h.pagerbuttonsbottom.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();var l=h.pagerbuttonstop.find("a");h.removeHandler(l,"click");h.removeHandler(l,"mouseenter");h.removeHandler(l,"mouseleave");l.remove();if(h.pagernexttop){h.pagernexttop.MLjquiButton("destroy");h.pagerprevioustop.MLjquiButton("destroy");h.pagernextbottom.MLjquiButton("destroy");h.pagerpreviousbottom.MLjquiButton("destroy");h.pagerfirsttop.MLjquiButton("destroy");h.pagerfirstbottom.MLjquiButton("destroy");h.pagerlasttop.MLjquiButton("destroy");h.pagerlastbottom.MLjquiButton("destroy")}}h._removeHandlers();h.vScrollBar.MLjquiScrollBar("destroy");h.hScrollBar.MLjquiScrollBar("destroy");delete h.vScrollBar;delete h.hScrollBar;delete h._mousewheelfunc;b.MLjqui.utilities.resize(h.host,null,true);h.host.remove()},propertiesChangedHandler:function(c,d,e){if(e.width&&e.height&&Object.keys(e).length==2){c.refresh()}},propertyChangedHandler:function(e,l,d,k){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e.batchUpdate&&e.batchUpdate.width&&e.batchUpdate.height&&Object.keys(e.batchUpdate).length==2){return}if(k!==d){if(l=="filterable"){e._render()}else{if(l==="height"){e.host.height(e.height);e.host.width(e.width);e._updatesize(false,true)}else{if(l==="width"){e.host.height(e.height);e.host.width(e.width);e._updatesize(true,false)}else{if(l==="source"){e.updateBoundData()}else{if(l==="columns"||l==="columnGroups"){e._columns=null;e._render()}else{if(l==="rtl"){e.content.css("left","");e.columns=e._columns;e.vScrollBar.MLjquiScrollBar({rtl:k});e.hScrollBar.MLjquiScrollBar({rtl:k});e._render()}else{if(l==="pagerMode"){e.pagerMode=k;e._initpager()}else{if(l=="pageSizeOptions"){e._initpager();var j=false;for(var f=0;f0){c.MLjquiDropDownList({theme:e.theme})}if(e.filtercolumnsList){e.filtercolumnsList.MLjquiDropDownList({theme:e.theme})}}e.refresh()}else{e.refresh()}}}}}}}}}}}}}}}}}},_rendercolumnheader:function(f,g,c,d){var e="4px";if(d.columnGroups){e=(c/2-this._columnheight/2);if(e<0){e=4}e+="px"}else{if(this.columnsHeight!=25){e=(this.columnsHeight/2-this._columnheight/2);if(e<0){e=4}e+="px"}}return'
          '+f+"
          "}});function a(c,d){this.owner=c;this.datafield=null;this.displayfield=null;this.text="";this.sortable=true;this.editable=true;this.hidden=false;this.hideable=true;this.groupable=true;this.renderer=null;this.cellsRenderer=null;this.columntype=null;this.cellsFormat="";this.align="left";this.cellsalign="left";this.width="auto";this.minwidth=25;this.maxwidth="auto";this.pinned=false;this.visibleindex=-1;this.filterable=true;this.filter=null;this.resizable=true;this.draggable=true;this.initeditor=null;this.createeditor=null;this.destroyeditor=null;this.geteditorvalue=null;this.autoCellHeight=true;this.validation=null;this.classname="";this.cellclassname="";this.aggregates=null;this.aggregatesRenderer=null;this.rendered=null;this.exportable=true;this.nullable=true;this.columngroup=null;this.columntype="textbox";this.getcolumnproperties=function(){return{nullable:this.nullable,sortable:this.sortable,hidden:this.hidden,groupable:this.groupable,width:this.width,align:this.align,editable:this.editable,minwidth:this.minwidth,maxwidth:this.maxwidth,resizable:this.resizable,datafield:this.datafield,text:this.text,exportable:this.exportable,cellsalign:this.cellsalign,pinned:this.pinned,cellsFormat:this.cellsFormat,columntype:this.columntype,classname:this.classname,cellclassname:this.cellclassname,menu:this.menu}},this.setproperty=function(e,f){if(this[e]){var g=this[e];this[e]=f;this.owner._columnPropertyChanged(this,e,f,g)}else{if(this[e.toLowerCase()]){var g=this[e.toLowerCase()];this[e.toLowerCase()]=f;this.owner._columnPropertyChanged(this,e.toLowerCase(),f,g)}}};this._initfields=function(f){if(f!=null){var e=this;if(b.MLjqui.hasProperty(f,"dataField")){this.datafield=b.MLjqui.get(f,"dataField")}if(b.MLjqui.hasProperty(f,"displayField")){this.displayfield=b.MLjqui.get(f,"displayField")}else{this.displayfield=this.datafield}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"validation")){this.validation=b.MLjqui.get(f,"validation")}if(b.MLjqui.hasProperty(f,"autoCellHeight")){this.autoCellHeight=b.MLjqui.get(f,"autoCellHeight")}if(b.MLjqui.hasProperty(f,"text")){this.text=b.MLjqui.get(f,"text")}else{this.text=this.displayfield}if(b.MLjqui.hasProperty(f,"sortable")){this.sortable=b.MLjqui.get(f,"sortable")}if(b.MLjqui.hasProperty(f,"hidden")){this.hidden=b.MLjqui.get(f,"hidden")}if(b.MLjqui.hasProperty(f,"groupable")){this.groupable=b.MLjqui.get(f,"groupable")}if(b.MLjqui.hasProperty(f,"renderer")){this.renderer=b.MLjqui.get(f,"renderer")}if(b.MLjqui.hasProperty(f,"align")){this.align=b.MLjqui.get(f,"align")}if(b.MLjqui.hasProperty(f,"cellsAlign")){this.cellsalign=b.MLjqui.get(f,"cellsAlign")}if(b.MLjqui.hasProperty(f,"cellsFormat")){this.cellsFormat=b.MLjqui.get(f,"cellsFormat")}if(b.MLjqui.hasProperty(f,"width")){this.width=b.MLjqui.get(f,"width")}if(b.MLjqui.hasProperty(f,"minWidth")){this.minwidth=b.MLjqui.get(f,"minWidth")}if(b.MLjqui.hasProperty(f,"maxWidth")){this.maxwidth=b.MLjqui.get(f,"maxWidth")}if(b.MLjqui.hasProperty(f,"cellsRenderer")){this.cellsRenderer=b.MLjqui.get(f,"cellsRenderer")}if(b.MLjqui.hasProperty(f,"columnType")){this.columntype=b.MLjqui.get(f,"columnType")}if(b.MLjqui.hasProperty(f,"pinned")){this.pinned=b.MLjqui.get(f,"pinned")}if(b.MLjqui.hasProperty(f,"filterable")){this.filterable=b.MLjqui.get(f,"filterable")}if(b.MLjqui.hasProperty(f,"filter")){this.filter=b.MLjqui.get(f,"filter")}if(b.MLjqui.hasProperty(f,"resizable")){this.resizable=b.MLjqui.get(f,"resizable")}if(b.MLjqui.hasProperty(f,"draggable")){this.draggable=b.MLjqui.get(f,"draggable")}if(b.MLjqui.hasProperty(f,"editable")){this.editable=b.MLjqui.get(f,"editable")}if(b.MLjqui.hasProperty(f,"initEditor")){this.initeditor=b.MLjqui.get(f,"initEditor")}if(b.MLjqui.hasProperty(f,"createEditor")){this.createeditor=b.MLjqui.get(f,"createEditor")}if(b.MLjqui.hasProperty(f,"destroyEditor")){this.destroyeditor=b.MLjqui.get(f,"destroyEditor")}if(b.MLjqui.hasProperty(f,"getEditorValue")){this.geteditorvalue=b.MLjqui.get(f,"getEditorValue")}if(b.MLjqui.hasProperty(f,"className")){this.classname=b.MLjqui.get(f,"className")}if(b.MLjqui.hasProperty(f,"cellClassName")){this.cellclassname=b.MLjqui.get(f,"cellClassName")}if(b.MLjqui.hasProperty(f,"aggregates")){this.aggregates=b.MLjqui.get(f,"aggregates")}if(b.MLjqui.hasProperty(f,"aggregatesRenderer")){this.aggregatesRenderer=b.MLjqui.get(f,"aggregatesRenderer")}if(b.MLjqui.hasProperty(f,"rendered")){this.rendered=b.MLjqui.get(f,"rendered")}if(b.MLjqui.hasProperty(f,"exportable")){this.exportable=b.MLjqui.get(f,"exportable")}if(b.MLjqui.hasProperty(f,"nullable")){this.nullable=b.MLjqui.get(f,"nullable")}if(b.MLjqui.hasProperty(f,"columnGroup")){this.columngroup=b.MLjqui.get(f,"columnGroup")}if(!f instanceof String&&!(typeof f=="string")){for(var g in f){if(!e.hasOwnProperty(g)){if(!e.hasOwnProperty(g.toLowerCase())){c.host.remove();throw new Error("MLjquiDataTable: Invalid property name - "+g+".")}}}}}};this._initfields(d);return this}b.MLjqui.dataCollection=function(c){this.records=new Array();this.owner=c;this.updating=false;this.beginUpdate=function(){this.updating=true};this.resumeupdate=function(){this.updating=false};this.clear=function(){this.records=new Array()};this.replace=function(e,d){this.records[e]=d};this.isempty=function(d){if(this.records[d]==undefined){return true}return false};this.initialize=function(d){if(d<1){d=1}this.records[d-1]=-1};this.length=function(){return this.records.length};this.indexOf=function(d){return this.records.indexOf(d)};this.add=function(d){if(d==null){return false}this.records[this.records.length]=d;return true};this.insertAt=function(e,d){if(e==null||e==undefined){return false}if(d==null){return false}if(e>=0){if(ec){return 1}return 0;case"date":case"time":if(dc){return 1}return 0;case"string":case"text":d=String(d).toLowerCase();c=String(c).toLowerCase();break}}else{if(b.MLjqui.dataFormat.isNumber(d)&&b.MLjqui.dataFormat.isNumber(c)){if(dc){return 1}return 0}else{if(b.MLjqui.dataFormat.isDate(d)&&b.MLjqui.dataFormat.isDate(c)){if(dc){return 1}return 0}else{if(!b.MLjqui.dataFormat.isNumber(d)&&!b.MLjqui.dataFormat.isNumber(c)){d=String(d).toLowerCase();c=String(c).toLowerCase()}}}}}try{if(dc){return 1}}catch(e){var g=e}return 0};this._equals=function(d,c){return(this._compare(d,c)===0)};this.evaluate=function(p){if(this.grid.serverProcessing){if(p){if(this.grid.source._source.id==""||this.grid.source._source.id==null){if(this.grid.pageable){var c=this.grid.pageSize*this.pagenum;this.grid.rowsByKey=new Array();var h=this;b.each(p,function(i){this.uid=c;h.grid.rowsByKey[this.uid]=this;c++})}}}return p}var d=new Array();if(this.filters.length){var j=new Array();var o=function(s,w){for(var u=0;u0)){var n=new Array();var k=function(r,s){for(var q=0;q0){k(t,t.records)}}};k(null,p);o.call(this,n,d);for(var e=0;e0)){var h=this;var l=new Array();this._sortData=null;var f=function(t,q){h._sortData=null;var r=null;if(h.source.hierarchy.groupingDataFields){if(q&&q.length>0&&q[0].level0){return b(j,d).text()}if(this.rows&&j!=""&&j!=undefined&&this.rows.length>0){var h=this.rows[this.rows.length-1][j];if(h==null){h=null}for(var f=1;f<=100;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}if(j!=undefined){if(j.toString().length>0){var c=b(d).attr(j);if(c!=null&&c.toString().length>0){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){return"MLjqui"+c}return c}}}if(this.rows&&this.rows.length>0){var g=this.grid.rowsByKey[e];if(g){var h=this.rows[this.rows.length-1][j];if(h==null){h=""}for(var f=1;f<=1000;f++){var g=this.grid.rowsByKey[f+h];if(!g){if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+h+f];if(g){continue}return"MLjqui"+h+f}return h+f}}}}if(this.grid&&this.grid.treeGrid&&this.grid.treeGrid.virtualModeCreateRecords){var g=this.grid.rowsByKey["MLjqui"+e];if(!g){return"MLjqui"+e}else{for(var f=e+1;f<=100;f++){var g=this.grid.rowsByKey["MLjqui"+f];if(!g){var g=this.grid.rowsByKey["MLjqui"+f];if(g){continue}return"MLjqui"+f}}}}return e};this.generatekey=function(){var c=function(){return(((1+Math.random())*16)|0)};return(""+c()+c()+"-"+c()+"-"+c())};return this}})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidragdrop.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidragdrop.js deleted file mode 100644 index 77fa2bfa..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidragdrop.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.1 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a){a.MLjqui.MLjquiWidget("MLjquiDragDrop","",{});a.extend(a.MLjqui._MLjquiDragDrop.prototype,{defineInstance:function(){var b={restricter:"document",handle:false,feedback:"clone",opacity:0.6,revert:false,revertDuration:400,distance:5,disabled:false,tolerance:"intersect",data:null,dropAction:"default",dragZIndex:999999,appendTo:"parent",cursor:"move",onDragEnd:null,onDrag:null,onDragStart:null,onTargetDrop:null,onDropTargetEnter:null,onDropTargetLeave:null,initFeedback:null,dropTarget:null,isDestroyed:false,triggerEvents:true,_touchEvents:{mousedown:a.MLjqui.mobile.getTouchEventName("touchstart"),click:a.MLjqui.mobile.getTouchEventName("touchstart"),mouseup:a.MLjqui.mobile.getTouchEventName("touchend"),mousemove:a.MLjqui.mobile.getTouchEventName("touchmove"),mouseenter:"mouseenter",mouseleave:"mouseleave"},_restricter:null,_zIndexBackup:0,_targetEnterFired:false,_oldOpacity:1,_feedbackType:undefined,_isTouchDevice:false,_events:["dragStart","dragEnd","dragging","dropTargetEnter","dropTargetLeave"]};a.extend(true,this,b);return b},createInstance:function(){this._createDragDrop()},_createDragDrop:function(){var c=a.data(document.body,"MLjqui-draggables")||1;this.appendTo=this._getParent();this._isTouchDevice=a.MLjqui.mobile.isTouchDevice();if((/(static|relative)/).test(this.host.css("position"))){if(!this.feedback||this.feedback==="original"){var d=this._getRelativeOffset(this.host);var b=this.appendTo.offset();if(this.appendTo.css("position")!="static"){b={left:0,top:0}}this.element.style.position="absolute";this.element.style.left=b.left+d.left+"px";this.element.style.top=b.top+d.top+"px"}}this._validateProperties();this._idHandler(c);if(this.disabled){this.disable()}if(typeof this.dropTarget==="string"){this.dropTarget=a(this.dropTarget)}this._refresh();c+=1;a.data(document.body,"MLjqui-draggables",c);this.host.addClass("MLjqui-draggable");if(!this.disabled){this.host.css("cursor",this.cursor)}},_getParent:function(){var b=this.appendTo;if(typeof this.appendTo==="string"){switch(this.appendTo){case"parent":b=this.host.parent();break;case"document":b=a(document);break;case"body":b=a(document.body);break;default:b=a(this.appendTo);break}}return b},_idHandler:function(b){if(!this.element.id){var c="MLjqui-draggable-"+b;this.element.id=c}},_refresh:function(){this._removeEventHandlers();this._addEventHandlers()},_getEvent:function(b){if(this._isTouchDevice){return this._touchEvents[b]}else{return b}},_validateProperties:function(){if(this.feedback==="clone"){this._feedbackType="clone"}else{this._feedbackType="original"}if(this.dropAction!=="default"){this.dropAction="nothing"}},_removeEventHandlers:function(){this.removeHandler(this.host,"dragstart");this.removeHandler(this.host,this._getEvent("mousedown")+".draggable."+this.element.id,this._mouseDown);this.removeHandler(a(document),this._getEvent("mousemove")+".draggable."+this.element.id,this._mouseMove);this.removeHandler(a(document),this._getEvent("mouseup")+".draggable."+this.element.id,this._mouseUp)},_addEventHandlers:function(){var b=this;this.addHandler(this.host,"dragstart",function(g){if(b.disabled){return true}var f=a.MLjqui.mobile.isTouchDevice();if(!f){g.preventDefault();return false}});this.addHandler(this.host,this._getEvent("mousedown")+".draggable."+this.element.id,this._mouseDown,{self:this});this.addHandler(a(document),this._getEvent("mousemove")+".draggable."+this.element.id,this._mouseMove,{self:this});this.addHandler(a(document),this._getEvent("mouseup")+".draggable."+this.element.id,this._mouseUp,{self:this});try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var e="";if(window.parent&&document.referrer){e=document.referrer}if(e.indexOf(document.location.host)!=-1){var d=function(f){b._mouseUp(b)};if(window.top.document.addEventListener){window.top.document.addEventListener("mouseup",d,false)}else{if(window.top.document.attachEvent){window.top.document.attachEvent("onmouseup",d)}}}}}}catch(c){}},_mouseDown:function(f){var b=f.data.self,d=b._getMouseCoordinates(f),c=b._mouseCapture(f);b._originalPageX=d.left;b._originalPageY=d.top;if(b.disabled){return true}var e=false;if(!b._mouseStarted){b._mouseUp(f);e=true}if(c){b._mouseDownEvent=f}if(b._isTouchDevice){return true}if(f.which!==1||!c){return true}f.preventDefault();if(e==true){}},_mouseMove:function(c){var b=c.data.self;if(b.disabled){return true}if(b._mouseStarted){b._mouseDrag(c);if(c.preventDefault){c.preventDefault()}return false}if(b._mouseDownEvent&&b._isMovedDistance(c)){if(b._mouseStart(b._mouseDownEvent,c)){b._mouseStarted=true}else{b._mouseStarted=false}if(b._mouseStarted){b._mouseDrag(c)}else{b._mouseUp(c)}}return !b._mouseStarted},_mouseUp:function(c){var b;if(c.data&&c.data.self){b=c.data.self}else{b=this}if(b.disabled){return true}b._mouseDownEvent=false;b._movedDistance=false;if(b._mouseStarted){b._mouseStarted=false;b._mouseStop(c)}if(b.feedback&&b.feedback[0]&&b._feedbackType!=="original"&&typeof b.feedback.remove==="function"&&!b.revert){b.feedback.remove()}if(!b._isTouchDevice){return false}},cancelDrag:function(){var b=this.revertDuration;this.revertDuration=0;this._mouseDownEvent=false;this._movedDistance=false;this._mouseStarted=false;this._mouseStop();this.feedback.remove();this.revertDuration=b},_isMovedDistance:function(b){var c=this._getMouseCoordinates(b);if(this._movedDistance){return true}if(c.left>=this._originalPageX+this.distance||c.left<=this._originalPageX-this.distance||c.top>=this._originalPageY+this.distance||c.top<=this._originalPageY-this.distance){this._movedDistance=true;return true}return false},_getMouseCoordinates:function(b){if(this._isTouchDevice){var c=a.MLjqui.position(b);return{left:c.left,top:c.top}}else{return{left:b.pageX,top:b.pageY}}},destroy:function(){this._enableSelection(this.host);this.host.removeData("draggable").off(".draggable").removeClass("MLjqui-draggable MLjqui-draggable-dragging MLjqui-draggable-disabled");this._removeEventHandlers();this.isDestroyed=true;return this},_disableSelection:function(b){b.each(function(){a(this).attr("unselectable","on").css({"-ms-user-select":"none","-moz-user-select":"none","-webkit-user-select":"none","user-select":"none"}).each(function(){this.onselectstart=function(){return false}})})},_enableSelection:function(b){b.each(function(){a(this).attr("unselectable","off").css({"-ms-user-select":"text","-moz-user-select":"text","-webkit-user-select":"text","user-select":"text"}).each(function(){this.onselectstart=null})})},_mouseCapture:function(b){if(this.disabled){return false}if(!this._getHandle(b)){return false}this._disableSelection(this.host);return true},_getScrollParent:function(b){var c;if((a.MLjqui.browser.msie&&(/(static|relative)/).test(b.css("position")))||(/absolute/).test(b.css("position"))){c=b.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.css(this,"position",1))&&(/(auto|scroll)/).test(a.css(this,"overflow",1)+a.css(this,"overflow-y",1)+a.css(this,"overflow-x",1))}).eq(0)}else{c=b.parents().filter(function(){return(/(auto|scroll)/).test(a.css(this,"overflow",1)+a.css(this,"overflow-y",1)+a.css(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(b.css("position"))||!c.length?a(document):c},_mouseStart:function(e){var d=this._getMouseCoordinates(e),c=this._getParentOffset(this.host);this.feedback=this._createFeedback(e);this._zIndexBackup=this.feedback.css("z-index");this.feedback[0].style.zIndex=this.dragZIndex;this._backupFeedbackProportions();this._backupeMargins();this._positionType=this.feedback.css("position");this._scrollParent=this._getScrollParent(this.feedback);this._offset=this.positionAbs=this.host.offset();this._offset={top:this._offset.top-this.margins.top,left:this._offset.left-this.margins.left};a.extend(this._offset,{click:{left:d.left-this._offset.left,top:d.top-this._offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset(),hostRelative:this._getRelativeOffset(this.host)});this.position=this._generatePosition(e);this.originalPosition=this._fixPosition();if(this.restricter){this._setRestricter()}this.feedback.addClass(this.toThemeProperty("MLjqui-draggable-dragging"));var b=this._raiseEvent(0,e);if(this.onDragStart&&typeof this.onDragStart==="function"){this.onDragStart(this.position)}this._mouseDrag(e,true);return true},_fixPosition:function(){var c=this._getRelativeOffset(this.host),b=this.position;b={left:this.position.left+c.left,top:this.position.top+c.top};return b},_mouseDrag:function(b,c){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");this.feedback[0].style.left=this.position.left+"px";this.feedback[0].style.top=this.position.top+"px";this._raiseEvent(2,b);if(this.onDrag&&typeof this.onDrag==="function"){this.onDrag(this.data,this.position)}this._handleTarget();return false},_over:function(b,d,e){if(this.dropTarget){var f=false,c=this;a.each(this.dropTarget,function(g,h){f=c._overItem(h,b,d,e);if(f.over){return false}})}return f},_overItem:function(i,c,e,g){i=a(i);var b=i.offset(),f=i.outerHeight(),d=i.outerWidth(),h;if(!i||i[0]===this.element){return}var h=false;switch(this.tolerance){case"intersect":if(c.left+e>b.left&&c.leftb.top&&c.top=b.left&&g+c.top<=b.top+f&&c.top>=b.top){h=true}break}return{over:h,target:i}},_handleTarget:function(){if(this.dropTarget){var b=this.feedback.offset(),c=this.feedback.outerWidth(),d=this.feedback.outerHeight(),e=this._over(b,c,d);if(e.over){if(this._targetEnterFired&&e.target.length>0&&this._oldtarget&&this._oldtarget.length>0&&e.target[0]!=this._oldtarget[0]){this._raiseEvent(4,{target:this._oldtarget});if(this.onDropTargetLeave&&typeof this.onDropTargetLeave==="function"){this.onDropTargetLeave(this._oldtarget)}}if(!this._targetEnterFired||(e.target.length>0&&this._oldtarget&&this._oldtarget.length>0&&e.target[0]!=this._oldtarget[0])){this._targetEnterFired=true;this._raiseEvent(3,{target:e.target});if(this.onDropTargetEnter&&typeof this.onDropTargetEnter==="function"){this.onDropTargetEnter(e.target)}}this._oldtarget=e.target}else{if(this._targetEnterFired){this._targetEnterFired=false;this._raiseEvent(4,{target:this._oldtarget||e.target});if(this.onDropTargetLeave&&typeof this.onDropTargetLeave==="function"){this.onDropTargetLeave(this._oldtarget||e.target)}}}}},_mouseStop:function(d){var e=false,b=this._fixPosition(),c={width:this.host.outerWidth(),height:this.host.outerHeight()};this.feedback[0].style.opacity=this._oldOpacity;if(!this.revert){this.feedback[0].style.zIndex=this._zIndexBackup}this._enableSelection(this.host);if(this.dropped){e=this.dropped;this.dropped=false}if((!this.element||!this.element.parentNode)&&this.feedback==="original"){return false}this._dropElement(b);this.feedback.removeClass(this.toThemeProperty("MLjqui-draggable-dragging"));this._raiseEvent(1,d);if(this.onDragEnd&&typeof this.onDragEnd==="function"){this.onDragEnd(this.data)}if(this.onTargetDrop&&typeof this.onTargetDrop==="function"&&this._over(b,c.width,c.height).over){this.onTargetDrop(this._over(b,c.width,c.height).target)}this._revertHandler();return false},_dropElement:function(b){if(this.dropAction==="default"&&this.feedback&&this.feedback[0]!==this.element&&this.feedback!=="original"){if(!this.revert){if(!(/(fixed|absolute)/).test(this.host.css("position"))){this.host.css("position","relative");var c=this._getRelativeOffset(this.host);b=this.position;b.left-=c.left;b.top-=c.top;this.element.style.left=b.left+"px";this.element.style.top=b.top+"px"}}}},_revertHandler:function(){if(this.revert||(a.isFunction(this.revert)&&this.revert())){var b=this;if(this._feedbackType!="original"){if(this.feedback!=null){if(this.dropAction!="none"){a(this.feedback).animate({left:b.originalPosition.left-b._offset.hostRelative.left,top:b.originalPosition.top-b._offset.hostRelative.top},parseInt(this.revertDuration,10),function(){if(b.feedback&&b.feedback[0]&&b._feedbackType!=="original"&&typeof b.feedback.remove==="function"){b.feedback.remove()}})}else{if(b.feedback&&b.feedback[0]&&b._feedbackType!=="original"&&typeof b.feedback.remove==="function"){b.feedback.remove()}}}}else{this.element.style.zIndex=this.dragZIndex;a(this.host).animate({left:b.originalPosition.left-b._offset.hostRelative.left,top:b.originalPosition.top-b._offset.hostRelative.top},parseInt(this.revertDuration,10),function(){b.element.style.zIndex=b._zIndexBackup})}}},_getHandle:function(b){var c;if(!this.handle){c=true}else{a(this.handle,this.host).find("*").andSelf().each(function(){if(this==b.target){c=true}})}return c},_createFeedback:function(c){var b;if(typeof this._feedbackType==="function"){b=this._feedbackType()}else{if(this._feedbackType==="clone"){b=this.host.clone().removeAttr("id")}else{b=this.host}}if(!(/(absolute|fixed)/).test(b.css("position"))){b.css("position","absolute")}if(this.appendTo[0]!==this.host.parent()[0]||b[0]!==this.element){var d={};b.css({left:this.host.offset().left-this._getParentOffset(this.host).left+this._getParentOffset(b).left,top:this.host.offset().top-this._getParentOffset(this.host).top+this._getParentOffset(b).top});b.appendTo(this.appendTo)}if(typeof this.initFeedback==="function"){this.initFeedback(b)}return b},_getParentOffset:function(c){var c=c||this.feedback;this._offsetParent=c.offsetParent();var b=this._offsetParent.offset();if(this._positionType=="absolute"&&this._scrollParent[0]!==document&&a.contains(this._scrollParent[0],this._offsetParent[0])){b.left+=this._scrollParent.scrollLeft();b.top+=this._scrollParent.scrollTop()}if((this._offsetParent[0]==document.body)||(this._offsetParent[0].tagName&&this._offsetParent[0].tagName.toLowerCase()=="html"&&a.MLjqui.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this._offsetParent.css("border-top-width"),10)||0),left:b.left+(parseInt(this._offsetParent.css("border-left-width"),10)||0)}},_getRelativeOffset:function(c){var d=this._scrollParent||c.parent();c=c||this.feedback;if(c.css("position")==="relative"){var b=this.host.position();return{top:b.top-(parseInt(c.css("top"),10)||0),left:b.left-(parseInt(c.css("left"),10)||0)}}else{return{top:0,left:0}}},_backupeMargins:function(){this.margins={left:(parseInt(this.host.css("margin-left"),10)||0),top:(parseInt(this.host.css("margin-top"),10)||0),right:(parseInt(this.host.css("margin-right"),10)||0),bottom:(parseInt(this.host.css("margin-bottom"),10)||0)}},_backupFeedbackProportions:function(){this.feedback[0].style.opacity=this.opacity;this._feedbackProportions={width:this.feedback.outerWidth(),height:this.feedback.outerHeight()}},_setRestricter:function(){if(this.restricter=="parent"){this.restricter=this.feedback[0].parentNode}if(this.restricter=="document"||this.restricter=="window"){this._handleNativeRestricter()}if(typeof this.restricter.left!=="undefined"&&typeof this.restricter.top!=="undefined"&&typeof this.restricter.height!=="undefined"&&typeof this.restricter.width!=="undefined"){this._restricter=[this.restricter.left,this.restricter.top,this.restricter.width,this.restricter.height]}else{if(!(/^(document|window|parent)$/).test(this.restricter)&&this.restricter.constructor!=Array){this._handleDOMParentRestricter()}else{if(this.restricter.constructor==Array){this._restricter=this.restricter}}}},_handleNativeRestricter:function(){this._restricter=[this.restricter==="document"?0:a(window).scrollLeft()-this._offset.relative.left-this._offset.parent.left,this.restricter==="document"?0:a(window).scrollTop()-this._offset.relative.top-this._offset.parent.top,(this.restricter==="document"?0:a(window).scrollLeft())+a(this.restricter==="document"?document:window).width()-this._feedbackProportions.width-this.margins.left,(this.restricter==="document"?0:a(window).scrollTop())+(a(this.restricter==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this._feedbackProportions.height-this.margins.top]},_handleDOMParentRestricter:function(){var d=a(this.restricter),b=d[0];if(!b){return}var c=(a(b).css("overflow")!=="hidden");this._restricter=[(parseInt(a(b).css("borderLeftWidth"),10)||0)+(parseInt(a(b).css("paddingLeft"),10)||0),(parseInt(a(b).css("borderTopWidth"),10)||0)+(parseInt(a(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(a(b).css("borderLeftWidth"),10)||0)-(parseInt(a(b).css("paddingRight"),10)||0)-this._feedbackProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(a(b).css("borderTopWidth"),10)||0)-(parseInt(a(b).css("paddingBottom"),10)||0)-this._feedbackProportions.height-this.margins.top-this.margins.bottom];this._restrictiveContainer=d},_convertPositionTo:function(f,c){if(!c){c=this.position}var e,b,g;if(f==="absolute"){e=1}else{e=-1}if(this._positionType==="absolute"&&!(this._scrollParent[0]!=document&&a.contains(this._scrollParent[0],this._offsetParent[0]))){b=this._offsetParent}else{b=this._scrollParent}g=(/(html|body)/i).test(b[0].tagName);return this._getPosition(c,e,g,b)},_getPosition:function(c,d,e,b){return{top:(c.top+this._offset.relative.top*d+this._offset.parent.top*d-(a.MLjqui.browser.safari&&a.MLjqui.browser.version<526&&this._positionType=="fixed"?0:(this._positionType=="fixed"?-this._scrollParent.scrollTop():(e?0:b.scrollTop()))*d)),left:(c.left+this._offset.relative.left*d+this._offset.parent.left*d-(a.MLjqui.browser.safari&&a.MLjqui.browser.version<526&&this._positionType=="fixed"?0:(this._positionType=="fixed"?-this._scrollParent.scrollLeft():e?0:b.scrollLeft())*d))}},_generatePosition:function(f){var b=this._positionType=="absolute"&&!(this._scrollParent[0]!=document&&a.contains(this._scrollParent[0],this._offsetParent[0]))?this._offsetParent:this._scrollParent,i=(/(html|body)/i).test(b[0].tagName);var e=this._getMouseCoordinates(f),d=e.left,c=e.top;if(this.originalPosition){var h;if(this.restricter){if(this._restrictiveContainer){var g=this._restrictiveContainer.offset();h=[this._restricter[0]+g.left,this._restricter[1]+g.top,this._restricter[2]+g.left,this._restricter[3]+g.top]}else{h=this._restricter}if(e.left-this._offset.click.lefth[2]){d=h[2]+this._offset.click.left}if(e.top-this._offset.click.top>h[3]){c=h[3]+this._offset.click.top}}}return{top:(c-this._offset.click.top-this._offset.relative.top-this._offset.parent.top+(a.MLjqui.browser.safari&&a.MLjqui.browser.version<526&&this._positionType=="fixed"?0:(this._positionType=="fixed"?-this._scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this._offset.click.left-this._offset.relative.left-this._offset.parent.left+(a.MLjqui.browser.safari&&a.MLjqui.browser.version<526&&this._positionType=="fixed"?0:(this._positionType=="fixed"?-this._scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_raiseEvent:function(c,e){if(this.triggerEvents!=undefined&&this.triggerEvents==false){return}var b=this._events[c],d=a.Event(b),e=e||{};e.position=this.position;e.element=this.element;a.extend(e,this.data);e.feedback=this.feedback;d.args=e;return this.host.trigger(d)},disable:function(){this.disabled=true;this.host.addClass(this.toThemeProperty("MLjqui-draggable-disabled"));this._enableSelection(this.host)},enable:function(){this.disabled=false;this.host.removeClass(this.toThemeProperty("MLjqui-draggable-disabled"))},propertyChangedHandler:function(b,c,e,d){if(c==="dropTarget"){if(typeof d==="string"){b.dropTarget=a(d)}}else{if(c=="disabled"){if(d){b._enableSelection(b.host)}}else{if(c=="cursor"){b.host.css("cursor",b.cursor)}}}}})})(MLjquiBaseFramework);(function(a){MLjquiListBoxDragDrop=function(){a.extend(a.MLjqui._MLjquiListBox.prototype,{_hitTestBounds:function(b,c,e){var f=b.host.offset();var g=e-parseInt(f.top);var i=c-parseInt(f.left);var k=b._hitTest(i,g);if(g<0){return null}if(k!=null){var d=parseInt(f.left);var j=d+b.host.width();if(d<=c+k.width/2&&c<=j){return k}return null}if(b.items&&b.items.length>0){var h=b.items[b.items.length-1];if(b.groups.length<2){if(h.top+h.height+15>=g){return h}}}return null},_handleDragStart:function(d,c){var b=a.MLjqui.mobile.isTouchDevice();if(b){if(c.allowDrag){d.on(a.MLjqui.mobile.getTouchEventName("touchstart"),function(){a.MLjqui.mobile.setTouchScroll(false,c.element.id)})}}d.off("dragStart");d.on("dragStart",function(h){if(c.allowDrag&&!c.disabled){c.feedbackElement=a("
          ");c.feedbackElement.addClass(c.toThemeProperty("MLjqui-listbox-feedback"));c.feedbackElement.appendTo(a(document.body));c.feedbackElement.hide();c.isDragging=true;c._dragCancel=false;var j=c._getMouseCoordinates(h);var g=c._hitTestBounds(c,j.left,j.top);var i=a.find(".MLjqui-listbox");c._listBoxes=i;a.each(c._listBoxes,function(){var k=a.data(this,"MLjquiListBox").instance;k._enableHover=k.enableHover;k.enableHover=false;a.MLjqui.mobile.setTouchScroll(false,c.element.id)});var f=function(){c._dragCancel=true;a(h.args.element).MLjquiDragDrop({triggerEvents:false});a(h.args.element).MLjquiDragDrop("cancelDrag");clearInterval(c._autoScrollTimer);a(h.args.element).MLjquiDragDrop({triggerEvents:true});a.each(c._listBoxes,function(){var k=a.data(this,"MLjquiListBox").instance;if(k._enableHover!=undefined){k.enableHover=k._enableHover;a.MLjqui.mobile.setTouchScroll(true,c.element.id)}})};if(g!=null&&!g.isGroup){c._dragItem=g;if(c.dragStart){var e=c.dragStart(g);if(e==false){f();return false}}if(g.disabled){f()}c._raiseEvent(4,{label:g.label,value:g.value,originalEvent:h.args})}else{if(g==null){f()}}}return false})},_handleDragging:function(c,b){c.off("dragging");c.on("dragging",function(f){var e=f.args;if(b._dragCancel){return}var g=b._getMouseCoordinates(f);var d=g;b._lastDraggingPosition=g;b._dragOverItem=null;b.feedbackElement.hide();a.each(b._listBoxes,function(){if(a.MLjqui.isHidden(a(this))){return true}var l=a(this).offset();var n=l.top+20;var h=a(this).height()+n-40;var j=l.left;var i=a(this).width();var o=j+i;var m=a.data(this,"MLjquiListBox").instance;var p=m._hitTestBounds(m,g.left,g.top);var k=m.vScrollInstance;if(p!=null){if(m.allowDrop&&!m.disabled){b._dragOverItem=p;if(p.element){b.feedbackElement.show();var q=a(p.element).offset().top+1;if(d.top>q+p.height/2){q=q+p.height}b.feedbackElement.css("top",q);b.feedbackElement.css("left",j);if(m.vScrollBar.css("visibility")!="visible"){b.feedbackElement.width(a(this).width())}else{b.feedbackElement.width(a(this).width()-20)}}}}if(g.left>=j&&g.left=n-30){clearInterval(m._autoScrollTimer);if(k.value!=0){b.feedbackElement.hide()}m._autoScrollTimer=setInterval(function(){var r=m.scrollUp();if(!r){clearInterval(m._autoScrollTimer)}},100)}else{if(e.position.top>h&&e.position.top=w&&k.left=v&&k.top<=t){h=a(this)}}}});var s=b._dragItem;if(h!=null&&h.length>0){var n=a.data(h[0],"MLjquiListBox").instance;var l=n.allowDrop;if(l&&!n.disabled){var n=a.data(h[0],"MLjquiListBox").instance;var p=n._hitTestBounds(n,k.left,k.top);p=b._dragOverItem;if(p!=null&&!p.isGroup){var r=true;if(b.dragEnd){r=b.dragEnd(s,p,f.args);if(r==false){a(f.args.element).MLjquiDragDrop({triggerEvents:false});a(f.args.element).MLjquiDragDrop("cancelDrag");clearInterval(b._autoScrollTimer);a(f.args.element).MLjquiDragDrop({triggerEvents:true});if(f.preventDefault){f.preventDefault()}if(f.stopPropagation){f.stopPropagation()}return false}if(r==undefined){r=true}}if(r){var e=p.visibleIndex;var j=function(){var u=p.visibleIndex;for(var t=u-2;t<=u+2;t++){if(n.items&&n.items.length>t){var v=n.items[t];if(v!=null){if(v.value==s.value){return v.visibleIndex}}}}return u};if(n.dropAction!="none"){if(p.element){var q=a(p.element).offset().top+1}else{var q=a(n.element).offset().top+1}if(n.content.find(".draggable").length>0){n.content.find(".draggable").MLjquiDragDrop("destroy")}if(k.top>q+p.height/2){n.insertAt(b._dragItem,p.index+1)}else{n.insertAt(b._dragItem,p.index)}if(b.dropAction=="default"){if(s.visibleIndex>0){b.clearSelection();b.selectIndex(s.visibleIndex-1)}b.removeItem(s,true)}var m=j();n.clearSelection();n.selectIndex(m)}}}else{if(n.dropAction!="none"){if(n.content.find(".draggable").length>0){n.content.find(".draggable").MLjquiDragDrop("destroy")}if(b.dragEnd){var r=b.dragEnd(b._dragItem,null,f.args);if(r==false){a(f.args.element).MLjquiDragDrop({triggerEvents:false});a(f.args.element).MLjquiDragDrop("cancelDrag");clearInterval(b._autoScrollTimer);a(f.args.element).MLjquiDragDrop({triggerEvents:true});if(f.preventDefault){f.preventDefault()}if(f.stopPropagation){f.stopPropagation()}return false}if(r==undefined){r=true}}n.addItem(b._dragItem);if(n.dropAction=="default"){if(s.visibleIndex>0){b.selectIndex(s.visibleIndex-1)}b.removeItem(s,true)}n.clearSelection();n.selectIndex(n.items.length-1)}}}}else{if(b.dragEnd){var i=b.dragEnd(s,f.args);if(false==i){if(f.preventDefault){f.preventDefault()}if(f.stopPropagation){f.stopPropagation()}return false}}}if(s!=null){b._raiseEvent(5,{label:s.label,value:s.value,originalEvent:f.args})}return false})},_enableDragDrop:function(){if(this.allowDrag&&this.host.MLjquiDragDrop){var c=this.content.find(".draggable");if(c.length>0){var b=this;c.MLjquiDragDrop({cursor:"arrow",revertDuration:0,appendTo:"body",dragZIndex:99999,revert:true,initFeedback:function(d){var f=a(''+d.text()+"");a(document.body).append(f);var e=f.width();f.remove();d.width(e+5);d.addClass(b.toThemeProperty("MLjqui-fill-state-pressed"))}});this._autoScrollTimer=null;b._dragItem=null;b._handleDragStart(c,b);b._handleDragging(c,b);b._handleDragEnd(c,b)}}},_getMouseCoordinates:function(b){this._isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(this._isTouchDevice){var c=a.MLjqui.position(b.args);return{left:c.left,top:c.top}}else{return{left:b.args.pageX,top:b.args.pageY}}}})};MLjquiTreeDragDrop=function(){a.extend(a.MLjqui._MLjquiTree.prototype,{_hitTestBounds:function(b,g,f){var d=this;var e=null;if(b._visibleItems){var c=parseInt(b.host.offset().left);var h=b.host.outerWidth();a.each(b._visibleItems,function(j){if(g>=c&&g0){e=b.getItem(i[0]);if(e!=null){e.height=this.height;e.top=this.top;return false}}}}})}return e},_handleDragStart:function(d,c){if(c._dragOverItem){c._dragOverItem.titleElement.removeClass(c.toThemeProperty("MLjqui-fill-state-hover"))}var b=a.MLjqui.mobile.isTouchDevice();if(b){if(c.allowDrag){d.on(a.MLjqui.mobile.getTouchEventName("touchstart"),function(){a.MLjqui.mobile.setTouchScroll(false,"panel"+c.element.id)})}}d.off("dragStart");d.on("dragStart",function(g){c.feedbackElement=a("
          ");c.feedbackElement.addClass(c.toThemeProperty("MLjqui-listbox-feedback"));c.feedbackElement.appendTo(a(document.body));c.feedbackElement.hide();c._dragCancel=false;var e=g.args.position;var f=a.find(".MLjqui-tree");c._trees=f;a.each(f,function(){var j=a.data(this,"MLjquiTree").instance;var l=j.host.find(".draggable");j._syncItems(l);if(j.allowDrag&&!j.disabled){var i=a(g.target).parents("li:first");if(i.length>0){var k=j.getItem(i[0]);if(k){c._dragItem=k;if(j.dragStart){var h=j.dragStart(k);if(h==false){c._dragCancel=true;a(g.args.element).MLjquiDragDrop({triggerEvents:false});a(g.args.element).MLjquiDragDrop("cancelDrag");clearInterval(c._autoScrollTimer);a(g.args.element).MLjquiDragDrop({triggerEvents:j});return false}}j._raiseEvent(8,{label:k.label,value:k.value,originalEvent:g.args})}}}});return false})},_getMouseCoordinates:function(b){this._isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(this._isTouchDevice){var c=a.MLjqui.position(b.args);return{left:c.left,top:c.top}}else{return{left:b.args.pageX,top:b.args.pageY}}},_handleDragging:function(c,b){var c=this.host.find(".draggable");c.off("dragging");c.on("dragging",function(h){var f=h.args;var d=f.position;var e=b._trees;if(b._dragCancel){return}if(b._dragOverItem){b._dragOverItem.titleElement.removeClass(b.toThemeProperty("MLjqui-fill-state-hover"))}var i=true;var g=b._getMouseCoordinates(h);b._lastDraggingPosition=g;a.each(e,function(){if(a.MLjqui.isHidden(a(this))){return true}var m=a(this).offset();var q=m.top+20;var j=a(this).height()+q-40;var l=m.left;var k=a(this).width();var r=l+k;var p=a.data(this,"MLjquiTree").instance;if(p.disabled||!p.allowDrop){return}var n=p.vScrollInstance;var s=p._hitTestBounds(p,g.left,g.top);if(s!=null){if(b._dragOverItem){b._dragOverItem.titleElement.removeClass(p.toThemeProperty("MLjqui-fill-state-hover"))}b._dragOverItem=s;if(s.element){b.feedbackElement.show();var t=s.top;var o=g.top;b._dropPosition="before";if(o>t+s.height/3){t=s.top+s.height/2;b._dragOverItem.titleElement.addClass(b.toThemeProperty("MLjqui-fill-state-hover"));b.feedbackElement.hide();b._dropPosition="inside"}if(o>(s.top+s.height)-s.height/3){t=s.top+s.height;b._dragOverItem.titleElement.removeClass(b.toThemeProperty("MLjqui-fill-state-hover"));b.feedbackElement.show();b._dropPosition="after"}b.feedbackElement.css("top",t);var l=-2+parseInt(s.titleElement.offset().left);b.feedbackElement.css("left",l);b.feedbackElement.width(a(s.titleElement).width()+12)}}if(g.left>=l&&g.left=q&&g.top<=q+p.host.height()){i=false}if(g.top=q-30){clearInterval(p._autoScrollTimer);if(n.value!=0){b.feedbackElement.hide()}p._autoScrollTimer=setInterval(function(){var v=p.panelInstance.scrollUp();var u=p.host.find(".draggable");p._syncItems(u);if(!v){clearInterval(p._autoScrollTimer)}},100)}else{if(g.top>j&&g.top=y&&g.left=x&&g.top<=u){t=a(this)}}}});var r=b._dragItem;if(t!=null&&t.length>0){var l=t.MLjquiTree("allowDrop");if(l){var m=a.data(t[0],"MLjquiTree").instance;var o=b._dragOverItem;if(o!=null&&b._dragOverItem.treeInstance.element.id==m.element.id){var q=true;if(b.dragEnd){q=b.dragEnd(r,o,f.args,b._dropPosition,t);if(q==false){a(f.args.element).MLjquiDragDrop({triggerEvents:false});a(f.args.element).MLjquiDragDrop("cancelDrag");clearInterval(b._autoScrollTimer);a(f.args.element).MLjquiDragDrop({triggerEvents:true})}if(undefined==q){q=true}}if(q){var e=function(){var u=b._dragItem.treeInstance;u._refreshMapping();u._updateItemsNavigation();u._render(true,false);if(u.checkboxes){u._updateCheckStates()}b._dragItem.treeInstance=m;b._syncItems(b._dragItem.treeInstance.host.find(".draggable"))};if(m.dropAction!="none"){if(b._dragItem.id!=b._dragOverItem.id){if(b._dropPosition=="inside"){m._drop(b._dragItem.element,b._dragOverItem.element,-1,m);e()}else{var i=0;if(b._dropPosition=="after"){i++}m._drop(b._dragItem.element,b._dragOverItem.parentElement,i+a(b._dragOverItem.element).index(),m);e()}}}m._render(true,false);var p=m.host.find(".draggable");b._syncItems(p);b._dragOverItem=null;b._dragItem=null;m._refreshMapping();m._updateItemsNavigation();m.selectedItem=null;m.selectItem(r.element);if(m.checkboxes){m._updateCheckStates()}m._render(true,false)}}else{if(m.dropAction!="none"){if(m.allowDrop){var q=true;if(b.dragEnd){q=b.dragEnd(r,o,f.args,b._dropPosition,t);if(q==false){a(f.args.element).MLjquiDragDrop({triggerEvents:false});a(f.args.element).MLjquiDragDrop("cancelDrag");clearInterval(b._autoScrollTimer);a(f.args.element).MLjquiDragDrop({triggerEvents:true})}if(undefined==q){q=true}}if(q){b._dragItem.parentElement=null;m._drop(b._dragItem.element,null,-1,m);var h=b._dragItem.treeInstance;h._refreshMapping();h._updateItemsNavigation();if(h.checkboxes){h._updateCheckStates()}var p=h.host.find(".draggable");b._syncItems(p);b._dragItem.treeInstance=m;m.items[m.items.length]=b._dragItem;m._render(true,false);m._refreshMapping();m.selectItem(r.element);m._updateItemsNavigation();var p=m.host.find(".draggable");m._syncItems(p);if(m.checkboxes){m._updateCheckStates()}b._dragOverItem=null;b._dragItem=null}}}}}}else{if(b.dragEnd){var j=b.dragEnd(r,f.args);if(false==j){return false}}}if(r!=null){b._raiseEvent(7,{label:r.label,value:r.value,originalEvent:f.args})}return false})},_drop:function(f,b,e,c){if(a(b).parents("#"+f.id).length>0){return}if(b!=null){if(b.id==f.id){return}}var h=this;if(c.element.innerHTML.indexOf("UL")){var i=c.host.find("ul:first")}if(b==undefined&&b==null){if(e==undefined||e==-1){i.append(f)}else{if(i.children("li").eq(e).length==0){i.children("li").eq(e-1).after(f)}else{if(i.children("li").eq(e)[0].id!=f.id){i.children("li").eq(e).before(f)}}}}else{if(e==undefined||e==-1){b=a(b);var d=b.find("ul:first");if(d.length==0){ulElement=a("
            ");a(b).append(ulElement);d=b.find("ul:first");var g=c.itemMapping["id"+b[0].id].item;g.subtreeElement=d[0];g.hasItems=true;d.addClass(c.toThemeProperty("MLjqui-tree-dropdown"));d.append(f);f=d.find("li:first");g.parentElement=f}else{d.append(f)}}else{b=a(b);var d=b.find("ul:first");if(d.length==0){ulElement=a("
              ");a(b).append(ulElement);d=b.find("ul:first");if(b){var g=c.itemMapping["id"+b[0].id].item;g.subtreeElement=d[0];g.hasItems=true}d.addClass(c.toThemeProperty("MLjqui-tree-dropdown"));d.append(f);f=d.find("li:first");g.parentElement=f}else{if(d.children("li").eq(e).length==0){d.children("li").eq(e-1).after(f)}else{if(d.children("li").eq(e)[0].id!=f.id){d.children("li").eq(e).before(f)}}}}}},_enableDragDrop:function(){if(this.allowDrag&&this.host.MLjquiDragDrop){var d=this.host.find(".draggable");var c=this;if(d.length>0){d.MLjquiDragDrop({cursor:"arrow",revertDuration:0,appendTo:"body",dragZIndex:99999,revert:true,initFeedback:function(e){var g=a(''+e.text()+"");a(document.body).append(g);var f=g.width();g.remove();e.width(f+5);e.addClass(c.toThemeProperty("MLjqui-fill-state-pressed"))}});var b=d.MLjquiDragDrop("isDestroyed");if(b===true){d.MLjquiDragDrop("_createDragDrop")}this._autoScrollTimer=null;c._dragItem=null;c._handleDragStart(d,c);c._handleDragging(d,c);c._handleDragEnd(d,c)}}}})}})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidropdownlist.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidropdownlist.js deleted file mode 100644 index 8a6b6404..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquidropdownlist.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a){a.MLjqui.MLjquiWidget("MLjquiDropDownList","",{});a.extend(a.MLjqui._MLjquiDropDownList.prototype,{defineInstance:function(){var b={disabled:false,width:null,height:null,items:new Array(),selectedIndex:-1,source:null,scrollBarSize:15,arrowSize:19,enableHover:true,enableSelection:true,autoItemsHeight:false,visualItems:new Array(),groups:new Array(),equalItemsWidth:true,itemHeight:-1,visibleItems:new Array(),emptyGroupText:"Group",checkboxes:false,openDelay:250,closeDelay:300,animationType:"default",autoOpen:false,dropDownWidth:"auto",dropDownHeight:"200px",autoDropDownHeight:false,keyboardSelection:true,enableBrowserBoundsDetection:false,dropDownHorizontalAlignment:"left",dropDownVerticalAlignment:"bottom",displayMember:"",valueMember:"",groupMember:"",searchMember:"",searchMode:"startswithignorecase",incrementalSearch:true,incrementalSearchDelay:700,renderer:null,placeHolder:"Please Choose:",promptText:"Please Choose:",emptyString:"",rtl:false,selectionRenderer:null,listBox:null,popupZIndex:9999999999999,renderMode:"default",touchMode:"auto",_checkForHiddenParent:true,autoBind:true,focusable:true,filterable:false,filterHeight:27,filterPlaceHolder:"Looking for",filterDelay:100,template:"default",aria:{"aria-disabled":{name:"disabled",type:"boolean"}},events:["open","close","select","unselect","change","checkChange","bindingComplete"]};a.extend(true,this,b);return b},createInstance:function(b){this.render()},render:function(){var q=this;if(!q.width){q.width=200}if(!q.height){q.height=25}var o=q.element.nodeName.toLowerCase();if(o=="select"||o=="ul"||o=="ol"){q.field=q.element;if(q.field.className){q._className=q.field.className}var k={title:q.field.title};if(q.field.id.length){k.id=q.field.id.replace(/[^\w]/g,"_")+"_MLjquiDropDownList"}else{k.id=a.MLjqui.utilities.createId()+"_MLjquiDropDownList"}var c=a("
              ",k);if(!q.width){q.width=a(q.field).width()}if(!q.height){q.height=a(q.field).outerHeight()}a(q.field).hide().after(c);var i=q.host.data();q.host=c;q.host.data(i);q.element=c[0];q.element.id=q.field.id;q.field.id=k.id;if(q._className){q.host.addClass(q._className);a(q.field).removeClass(q._className)}if(q.field.tabIndex){var f=q.field.tabIndex;q.field.tabIndex=-1;q.element.tabIndex=f}var r=a.MLjqui.parseSourceTag(q.field);q.source=r.items;if(q.selectedIndex==-1){q.selectedIndex=r.index}}q.element.innerHTML="";q.isanimating=false;q.id=q.element.id||a.MLjqui.utilities.createId();q.host.attr("role","combobox");a.MLjqui.aria(q,"aria-autocomplete","both");a.MLjqui.aria(q,"aria-readonly",false);var g="
              ";if(a.MLjqui._MLjquiListBox==null||a.MLjqui._MLjquiListBox==undefined){throw new Error("MLjquiDropDownList: Missing reference to MLjquilistbox.js.")}if(q.host.attr("tabindex")){}else{q.host.attr("tabindex",0)}var l=q;q.touch=a.MLjqui.mobile.isTouchDevice();q.comboStructure=g;q.element.innerHTML=g;q.dropdownlistWrapper=a(q.element.firstChild.firstChild);q.dropdownlistArrow=a(q.dropdownlistWrapper[0].firstChild.nextSibling);q.arrow=a(q.dropdownlistArrow[0].firstChild);q.dropdownlistContent=a(q.dropdownlistWrapper[0].firstChild);q.dropdownlistContent.addClass(q.toThemeProperty("MLjqui-dropdownlist-content MLjqui-disableselect"));if(q.rtl){q.dropdownlistContent.addClass(q.toThemeProperty("MLjqui-rtl MLjqui-dropdownlist-content-rtl"))}q.addHandler(q.dropdownlistWrapper,"selectstart",function(){return false});q.dropdownlistWrapper[0].id="dropdownlistWrapper"+q.element.id;q.dropdownlistArrow[0].id="dropdownlistArrow"+q.element.id;q.dropdownlistContent[0].id="dropdownlistContent"+q.element.id;q._addInput();if(q.promptText!="Please Choose:"){q.placeHolder=q.promptText}var n=q.toThemeProperty("MLjqui-widget")+" "+q.toThemeProperty("MLjqui-dropdownlist-state-normal")+" "+q.toThemeProperty("MLjqui-rc-all")+" "+q.toThemeProperty("MLjqui-fill-state-normal");q.element.className+=" "+n;q._firstDiv=a(q.element.firstChild);try{var p="listBox"+q.id;var h=a(a.find("#"+p));if(h.length>0){h.remove()}a.MLjqui.aria(q,"aria-owns",p);a.MLjqui.aria(q,"aria-haspopup",true);var b=a("
              ");b.hide();b.appendTo(document.body);q.container=b;q.listBoxContainer=a(a.find("#innerListBox"+q.id));var d=q.width;if(q.dropDownWidth!="auto"){d=q.dropDownWidth}if(d==null){d=q.host.width();if(d==0){d=q.dropDownWidth}}if(q.dropDownHeight==null){q.dropDownHeight=200}var l=q;q.container.width(parseInt(d)+25);q.container.height(parseInt(q.dropDownHeight)+25);q.addHandler(q.listBoxContainer,"bindingComplete",function(e){if(!q.listBox){q.listBox=a.data(q.listBoxContainer[0],"MLjquiListBox").instance}if(q.selectedIndex!=q.listBoxContainer.MLjquiListBox("selectedIndex")){q.listBox=a.data(q.listBoxContainer[0],"MLjquiListBox").instance;q.listBoxContainer.MLjquiListBox({selectedIndex:q.selectedIndex});q.renderSelection("mouse")}else{q.renderSelection("mouse")}q._raiseEvent("6")});q.listBoxContainer.MLjquiListBox({filterHeight:q.filterHeight,filterPlaceHolder:q.filterPlaceHolder,filterDelay:q.filterDelay,autoItemsHeight:q.autoItemsHeight,filterable:q.filterable,allowDrop:false,allowDrag:false,autoBind:q.autoBind,_checkForHiddenParent:false,focusable:q.focusable,touchMode:q.touchMode,checkboxes:q.checkboxes,rtl:q.rtl,_renderOnDemand:true,emptyString:q.emptyString,itemHeight:q.itemHeight,width:d,searchMode:q.searchMode,incrementalSearch:q.incrementalSearch,incrementalSearchDelay:q.incrementalSearchDelay,groupMember:q.groupMember,searchMember:q.searchMember,displayMember:q.displayMember,valueMember:q.valueMember,height:q.dropDownHeight,autoHeight:q.autoDropDownHeight,scrollBarSize:q.scrollBarSize,selectedIndex:q.selectedIndex,source:q.source,theme:q.theme,rendered:function(){if(q.selectedIndex!=q.listBoxContainer.MLjquiListBox("selectedIndex")){q.listBox=a.data(q.listBoxContainer[0],"MLjquiListBox").instance;q.listBoxContainer.MLjquiListBox({selectedIndex:q.selectedIndex});q.renderSelection("mouse")}else{q.renderSelection("mouse")}},renderer:q.renderer});q.listBoxContainer.css({position:"absolute",zIndex:q.popupZIndex,top:0,left:0});if(q.template){q.listBoxContainer.addClass(q.toThemeProperty("MLjqui-"+q.template+"-item"))}q.listBox=a.data(q.listBoxContainer[0],"MLjquiListBox").instance;q.listBox.enableSelection=q.enableSelection;q.listBox.enableHover=q.enableHover;q.listBox.equalItemsWidth=q.equalItemsWidth;q.listBox.selectIndex(q.selectedIndex);q.listBox._arrange();q.listBoxContainer.addClass(q.toThemeProperty("MLjqui-popup"));if(a.MLjqui.browser.msie){q.listBoxContainer.addClass(q.toThemeProperty("MLjqui-noshadow"))}q.addHandler(q.listBoxContainer,"unselect",function(e){q._raiseEvent("3",{index:e.args.index,type:e.args.type,item:e.args.item})});q.addHandler(q.listBoxContainer,"change",function(e){if(e.args){if(e.args.type!="keyboard"){q._raiseEvent("4",{index:e.args.index,type:e.args.type,item:e.args.item})}else{if(e.args.type=="keyboard"){if(!q.isOpened()){q._raiseEvent("4",{index:q.selectedIndex,type:"keyboard",item:q.getItem(q.selectedIndex)})}}}}});if(q.animationType=="none"){q.container.css("display","none")}else{q.container.hide()}}catch(j){if(console){console.log(j)}}var q=q;q.propertyChangeMap.disabled=function(e,t,s,u){if(u){e.host.addClass(q.toThemeProperty("MLjqui-dropdownlist-state-disabled"));e.host.addClass(q.toThemeProperty("MLjqui-fill-state-disabled"));e.dropdownlistContent.addClass(q.toThemeProperty("MLjqui-dropdownlist-content-disabled"))}else{e.host.removeClass(q.toThemeProperty("MLjqui-dropdownlist-state-disabled"));e.host.removeClass(q.toThemeProperty("MLjqui-fill-state-disabled"));e.dropdownlistContent.removeClass(q.toThemeProperty("MLjqui-dropdownlist-content-disabled"))}a.MLjqui.aria(e,"aria-disabled",e.disabled)};if(q.disabled){q.host.addClass(q.toThemeProperty("MLjqui-dropdownlist-state-disabled"));q.host.addClass(q.toThemeProperty("MLjqui-fill-state-disabled"));q.dropdownlistContent.addClass(q.toThemeProperty("MLjqui-dropdownlist-content-disabled"))}if(q.dropDownVerticalAlignment=="top"){q.arrow.addClass(q.toThemeProperty("MLjqui-icon-arrow-up"))}else{q.arrow.addClass(q.toThemeProperty("MLjqui-icon-arrow-down"))}q.arrow.addClass(q.toThemeProperty("MLjqui-icon"));if(q.renderMode==="simple"){q.arrow.remove();q.host.removeClass(q.toThemeProperty("MLjqui-fill-state-normal"));q.host.removeClass(q.toThemeProperty("MLjqui-rc-all"))}if(q.template){q.host.addClass(q.toThemeProperty("MLjqui-"+q.template))}q._updateHandlers();q._setSize();q._arrange();if(q.listBox){q.renderSelection()}if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<8){if(q.host.parents(".MLjqui-window").length>0){var m=q.host.parents(".MLjqui-window").css("z-index");b.css("z-index",m+10);q.listBoxContainer.css("z-index",m+10)}}},resize:function(c,b){this.width=c;this.height=b;this._setSize();this._arrange()},val:function(c){if(!this.dropdownlistContent){return""}var d=function(f){for(var e in f){if(f.hasOwnProperty(e)){return false}}if(typeof c=="number"){return false}if(typeof c=="date"){return false}if(typeof c=="boolean"){return false}if(typeof c=="string"){return false}return true};if(this.input&&(d(c)||arguments.length==0)){return this.input.val()}var b=this.getItemByValue(c);if(b!=null){this.selectItem(b)}if(this.input){return this.input.val()}},focus:function(){try{var d=this;var c=function(){d.host.focus();if(d._firstDiv){d._firstDiv.focus()}};c();setTimeout(function(){c()},10)}catch(b){}},_addInput:function(){var b=this.host.attr("name");this.input=a("");this.host.append(this.input);if(b){this.input.attr("name",b)}},getItems:function(){if(!this.listBox){return new Array()}return this.listBox.items},getVisibleItems:function(){return this.listBox.getVisibleItems()},_setSize:function(){if(this.width!=null&&this.width.toString().indexOf("px")!=-1){this.host.width(this.width)}else{if(this.width!=undefined&&!isNaN(this.width)){this.host.width(this.width)}}if(this.height!=null&&this.height.toString().indexOf("px")!=-1){this.host.height(this.height)}else{if(this.height!=undefined&&!isNaN(this.height)){this.host.height(this.height)}}var e=false;if(this.width!=null&&this.width.toString().indexOf("%")!=-1){e=true;this.host.width(this.width)}if(this.height!=null&&this.height.toString().indexOf("%")!=-1){e=true;this.host.height(this.height)}var c=this;var d=function(){c._arrange();if(c.dropDownWidth=="auto"){var f=c.host.width();c.listBoxContainer.MLjquiListBox({width:f});c.container.width(parseInt(f)+25)}};if(e){var b=this.host.width();if(this.dropDownWidth!="auto"){b=this.dropDownWidth}this.listBoxContainer.MLjquiListBox({width:b});this.container.width(parseInt(b)+25)}a.MLjqui.utilities.resize(this.host,function(){d()},false,this._checkForHiddenParent)},isOpened:function(){var c=this;var b=a.data(document.body,"openedMLjquiListBox"+this.id);if(b!=null&&b==c.listBoxContainer){return true}return false},_updateHandlers:function(){var c=this;var d=false;this.removeHandlers();if(!this.touch){this.addHandler(this.host,"mouseenter",function(){if(!c.disabled&&c.enableHover&&c.renderMode!=="simple"){d=true;c.host.addClass(c.toThemeProperty("MLjqui-dropdownlist-state-hover"));if(c.dropDownVerticalAlignment=="top"){c.arrow.addClass(c.toThemeProperty("MLjqui-icon-arrow-up-hover"))}else{c.arrow.addClass(c.toThemeProperty("MLjqui-icon-arrow-down-hover"))}c.host.addClass(c.toThemeProperty("MLjqui-fill-state-hover"))}});this.addHandler(this.host,"mouseleave",function(){if(!c.disabled&&c.enableHover&&c.renderMode!=="simple"){c.host.removeClass(c.toThemeProperty("MLjqui-dropdownlist-state-hover"));c.host.removeClass(c.toThemeProperty("MLjqui-fill-state-hover"));c.arrow.removeClass(c.toThemeProperty("MLjqui-icon-arrow-down-hover"));c.arrow.removeClass(c.toThemeProperty("MLjqui-icon-arrow-up-hover"));d=false}})}if(this.host.parents()){this.addHandler(this.host.parents(),"scroll.dropdownlist"+this.element.id,function(e){var f=c.isOpened();if(f){c.close()}})}var b="mousedown";if(this.touch){b=a.MLjqui.mobile.getTouchEventName("touchstart")}this.addHandler(this.dropdownlistWrapper,b,function(f){if(!c.disabled){var e=c.container.css("display")=="block";if(!c.isanimating){if(e){c.hideListBox();return false}else{c.showListBox();if(!c.focusable){if(f.preventDefault){f.preventDefault()}}else{c.focus()}}}}});if(c.autoOpen){this.addHandler(this.host,"mouseenter",function(){var e=c.isOpened();if(!e&&c.autoOpen){c.open();c.host.focus()}});a(document).on("mousemove."+c.id,function(h){var g=c.isOpened();if(g&&c.autoOpen){var l=c.host.coord();var k=l.top;var j=l.left;var i=c.container.coord();var e=i.left;var f=i.top;canClose=true;if(h.pageY>=k&&h.pageY<=k+c.host.height()){if(h.pageX>=j&&h.pageX=f&&h.pageY<=f+c.container.height()){if(h.pageX>=e&&h.pageX0){r=v[0]}else{r=null}}if(r==null){var j=a('');j.appendTo(a(document.body));j.addClass(this.toThemeProperty("MLjqui-widget"));j.addClass(this.toThemeProperty("MLjqui-listitem-state-normal"));j.addClass(this.toThemeProperty("MLjqui-item"));a.MLjqui.utilities.html(j,this.placeHolder);var s=this.dropdownlistContent.css("padding-top");var x=this.dropdownlistContent.css("padding-bottom");j.css("padding-top",s);j.css("padding-bottom",x);var q=j.outerHeight();j.remove();j.removeClass();a.MLjqui.utilities.html(this.dropdownlistContent,j);var h=this.host.height();if(this.height!=null&&this.height!=undefined){if(this.height.toString().indexOf("%")===-1){h=parseInt(this.height)}}var f=parseInt((parseInt(h)-parseInt(q))/2);if(f>0){this.dropdownlistContent.css("margin-top",f+"px");this.dropdownlistContent.css("margin-bottom",f+"px")}if(this.selectionRenderer){a.MLjqui.utilities.html(this.dropdownlistContent,this.selectionRenderer(j,-1,"",""));this.dropdownlistContent.css("margin-top","0px");this.dropdownlistContent.css("margin-bottom","0px");this._updateInputSelection()}else{this._updateInputSelection()}this.selectedIndex=this.listBox.selectedIndex;if(this.width==="auto"){this._arrange()}if(this.focusable&&this.isOpened()){this.focus()}return}this.selectedIndex=this.listBox.selectedIndex;var j=a(document.createElement("span"));j[0].setAttribute("unselectable","on");try{j[0].style.color="inherit"}catch(t){}j[0].style.borderWidth="0px";j[0].style.backgroundColor="transparent";j.appendTo(a(document.body));j.addClass(this.toThemeProperty("MLjqui-widget MLjqui-listitem-state-normal MLjqui-item"));var p=false;try{if(r.html!=undefined&&r.html!=null&&r.html.toString().length>0){a.MLjqui.utilities.html(j,r.html)}else{if(r.label!=undefined&&r.label!=null&&r.label.toString().length>0){a.MLjqui.utilities.html(j,r.label)}else{if(r.label===null||r.label===""){p=true;a.MLjqui.utilities.html(j,"")}else{if(r.value!=undefined&&r.value!=null&&r.value.toString().length>0){a.MLjqui.utilities.html(j,r.value)}else{if(r.title!=undefined&&r.title!=null&&r.title.toString().length>0){a.MLjqui.utilities.html(j,r.title)}else{if(r.label==""||r.label==null){p=true;a.MLjqui.utilities.html(j,"")}}}}}}}catch(n){var m=n}var s=this.dropdownlistContent[0].style.paddingTop;var x=this.dropdownlistContent[0].style.paddingBottom;if(s===""){s="0px"}if(x===""){x="0px"}j[0].style.paddingTop=s;j[0].style.paddingBottom=x;var q=j.outerHeight();if(q===0){q=16}if((r.label==""||r.label==null)&&p){a.MLjqui.utilities.html(j,"")}var c=this.width&&this.width.toString().indexOf("%")<=0;j.remove();j.removeClass();if(this.selectionRenderer){a.MLjqui.utilities.html(this.dropdownlistContent,this.selectionRenderer(j,r.index,r.label,r.value));if(this.focusable&&this.isOpened()){this.focus()}}else{if(this.checkboxes){var g=this.getCheckedItems();var k="";for(var o=0;o=0){this.dropdownlistContent[0].style.marginTop=f+"px";this.dropdownlistContent[0].style.marginBottom=f+"px"}if(this.selectionRenderer){this.dropdownlistContent[0].style.marginTop="0px";this.dropdownlistContent[0].style.marginBottom="0px"}if(this.dropdownlistContent&&this.input){this._updateInputSelection()}if(this.listBox&&this.listBox._activeElement){a.MLjqui.aria(this,"aria-activedescendant",this.listBox._activeElement.id)}if(this.width==="auto"){this._arrange()}},_updateInputSelection:function(){if(this.input){var c=new Array();if(this.selectedIndex==-1){this.input.val("")}else{var f=this.getSelectedItem();if(f!=null){this.input.val(f.value);c.push(f.value)}else{this.input.val(this.dropdownlistContent.text())}}if(this.checkboxes){var b=this.getCheckedItems();var g="";if(b!=null){for(var d=0;d=0;if(this.selected){a(this).attr("selected",true)}})}else{a.each(this.items,function(h,i){a(this.originalItem.originalItem).removeAttr("data-selected");this.selected=c.indexOf(this.value)>=0;if(this.selected){a(this.originalItem.originalItem).attr("data-selected",true)}})}}},setContent:function(b){a.MLjqui.utilities.html(this.dropdownlistContent,b);this._updateInputSelection()},dataBind:function(){this.listBoxContainer.MLjquiListBox({source:this.source});this.renderSelection("mouse");if(this.source==null){this.clearSelection()}},clear:function(){this.listBoxContainer.MLjquiListBox({source:null});this.clearSelection()},clearSelection:function(b){this.selectedIndex=-1;this._updateInputSelection();this.listBox.clearSelection();this.renderSelection();if(!this.selectionRenderer){a.MLjqui.utilities.html(this.dropdownlistContent,this.placeHolder)}},unselectIndex:function(b,c){if(isNaN(b)){return}this.listBox.unselectIndex(b,c);this.renderSelection()},selectIndex:function(b,d,e,c){this.listBox.selectIndex(b,d,e,c,"api")},getSelectedIndex:function(){return this.selectedIndex},getSelectedItem:function(){return this.listBox.getVisibleItem(this.selectedIndex)},getCheckedItems:function(){return this.listBox.getCheckedItems()},checkIndex:function(b){this.listBox.checkIndex(b)},uncheckIndex:function(b){this.listBox.uncheckIndex(b)},indeterminateIndex:function(b){this.listBox.indeterminateIndex(b)},checkAll:function(){this.listBox.checkAll();this.renderSelection("mouse")},uncheckAll:function(){this.listBox.uncheckAll();this.renderSelection("mouse")},addItem:function(b){return this.listBox.addItem(b)},insertAt:function(c,b){if(c==null){return false}return this.listBox.insertAt(c,b)},removeAt:function(c){var b=this.listBox.removeAt(c);this.renderSelection("mouse");return b},removeItem:function(c){var b=this.listBox.removeItem(c);this.renderSelection("mouse");return b},updateItem:function(c,d){var b=this.listBox.updateItem(c,d);this.renderSelection("mouse");return b},updateAt:function(d,c){var b=this.listBox.updateAt(d,c);this.renderSelection("mouse");return b},ensureVisible:function(b){return this.listBox.ensureVisible(b)},disableAt:function(b){return this.listBox.disableAt(b)},enableAt:function(b){return this.listBox.enableAt(b)},disableItem:function(b){return this.listBox.disableItem(b)},enableItem:function(b){return this.listBox.enableItem(b)},_findPos:function(c){while(c&&(c.type=="hidden"||c.nodeType!=1||a.expr.filters.hidden(c))){c=c.nextSibling}var b=a(c).coord(true);return[b.left,b.top]},testOffset:function(h,f,c){var g=h.outerWidth();var j=h.outerHeight();var i=a(window).width()+a(window).scrollLeft();var e=a(window).height()+a(window).scrollTop();if(f.left+g>i){if(g>this.host.width()){var d=this.host.coord().left;var b=g-this.host.width();f.left=d-b+2}}if(f.left<0){f.left=parseInt(this.host.coord().left)+"px"}f.top-=Math.min(f.top,(f.top+j>e&&e>j)?Math.abs(j+c+22):0);return f},open:function(){this.showListBox()},close:function(){this.hideListBox()},_getBodyOffset:function(){var c=0;var b=0;if(a("body").css("border-top-width")!="0px"){c=parseInt(a("body").css("border-top-width"));if(isNaN(c)){c=0}}if(a("body").css("border-left-width")!="0px"){b=parseInt(a("body").css("border-left-width"));if(isNaN(b)){b=0}}return{left:b,top:c}},showListBox:function(){a.MLjqui.aria(this,"aria-expanded",true);if(this.listBox._renderOnDemand){this.listBoxContainer.MLjquiListBox({_renderOnDemand:false})}if(this.dropDownWidth=="auto"&&this.width!=null&&this.width.indexOf&&(this.width.indexOf("%")!=-1||this.width.indexOf("auto")!=-1)){if(this.listBox.host.width()!=this.host.width()){var p=this.host.width();this.listBoxContainer.MLjquiListBox({width:p});this.container.width(parseInt(p)+25)}}var n=this;var g=this.listBoxContainer;var u=this.listBox;var e=a(window).scrollTop();var f=a(window).scrollLeft();var l=parseInt(this._findPos(this.host[0])[1])+parseInt(this.host.outerHeight())-1+"px";var d,o=parseInt(Math.round(this.host.coord(true).left));d=o+"px";var s=a.MLjqui.mobile.isSafariMobileBrowser()||a.MLjqui.mobile.isWindowsPhone();if(this.listBox==null){return}this.ishiding=false;if(!this.keyboardSelection){this.listBox.selectIndex(this.selectedIndex);this.listBox.ensureVisible(this.selectedIndex)}this.tempSelectedIndex=this.selectedIndex;if(this.autoDropDownHeight){this.container.height(this.listBoxContainer.height()+25)}if((s!=null&&s)){d=a.MLjqui.mobile.getLeftPos(this.element);l=a.MLjqui.mobile.getTopPos(this.element)+parseInt(this.host.outerHeight());if(a("body").css("border-top-width")!="0px"){l=parseInt(l)-this._getBodyOffset().top+"px"}if(a("body").css("border-left-width")!="0px"){d=parseInt(d)-this._getBodyOffset().left+"px"}}g.stop();if(this.renderMode!=="simple"){this.host.addClass(this.toThemeProperty("MLjqui-dropdownlist-state-selected"));this.host.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(this.dropDownVerticalAlignment=="top"){this.arrow.addClass(this.toThemeProperty("MLjqui-icon-arrow-up-selected"))}else{this.arrow.addClass(this.toThemeProperty("MLjqui-icon-arrow-down-selected"))}}this.container.css("left",d);this.container.css("top",l);u._arrange();var c=true;var b=false;if(this.dropDownHorizontalAlignment=="right"||this.rtl){var i=this.container.outerWidth();var q=Math.abs(i-this.host.width());if(i>this.host.width()){this.container.css("left",25+parseInt(Math.round(o))-q+"px")}else{this.container.css("left",25+parseInt(Math.round(o))+q+"px")}}if(this.dropDownVerticalAlignment=="top"){var r=g.height();b=true;g.css("top",23);g.addClass(this.toThemeProperty("MLjqui-popup-up"));var k=parseInt(this.host.outerHeight());var j=parseInt(l)-Math.abs(r+k+23);this.container.css("top",j)}if(this.enableBrowserBoundsDetection){var h=this.testOffset(g,{left:parseInt(this.container.css("left")),top:parseInt(l)},parseInt(this.host.outerHeight()));if(parseInt(this.container.css("top"))!=h.top){b=true;g.css("top",23);g.addClass(this.toThemeProperty("MLjqui-popup-up"))}else{g.css("top",0)}this.container.css("top",h.top);if(parseInt(this.container.css("left"))!=h.left){this.container.css("left",h.left)}}if(this.animationType=="none"){this.container.css("display","block");a.data(document.body,"openedMLjquiListBoxParent",n);a.data(document.body,"openedMLjquiListBox"+this.id,g);g.css("margin-top",0);g.css("opacity",1);u._renderItems();n._raiseEvent("0",u)}else{this.container.css("display","block");n.isanimating=true;if(this.animationType=="fade"){g.css("margin-top",0);g.css("opacity",0);g.animate({opacity:1},this.openDelay,function(){a.data(document.body,"openedMLjquiListBoxParent",n);a.data(document.body,"openedMLjquiListBox"+n.id,g);n.ishiding=false;n.isanimating=false;u._renderItems();n._raiseEvent("0",u)})}else{g.css("opacity",1);var m=g.outerHeight();if(b){g.css("margin-top",m)}else{g.css("margin-top",-m)}g.animate({"margin-top":0},this.openDelay,function(){a.data(document.body,"openedMLjquiListBoxParent",n);a.data(document.body,"openedMLjquiListBox"+n.id,g);n.ishiding=false;n.isanimating=false;u._renderItems();n._raiseEvent("0",u)})}}if(!b){this.host.addClass(this.toThemeProperty("MLjqui-rc-b-expanded"));g.addClass(this.toThemeProperty("MLjqui-rc-t-expanded"))}else{this.host.addClass(this.toThemeProperty("MLjqui-rc-t-expanded"));g.addClass(this.toThemeProperty("MLjqui-rc-b-expanded"))}if(this.renderMode!=="simple"){g.addClass(this.toThemeProperty("MLjqui-fill-state-focus"));this.host.addClass(this.toThemeProperty("MLjqui-dropdownlist-state-focus"));this.host.addClass(this.toThemeProperty("MLjqui-fill-state-focus"))}},hideListBox:function(){a.MLjqui.aria(this,"aria-expanded",false);var f=this.listBoxContainer;var g=this.listBox;var c=this.container;var d=this;a.data(document.body,"openedMLjquiListBox"+this.id,null);if(this.animationType=="none"){this.container.css("display","none")}else{if(!d.ishiding){f.stop();var b=f.outerHeight();f.css("margin-top",0);d.isanimating=true;var e=-b;if(parseInt(this.container.coord().top)0&&h.width!=="auto"){h.dropdownlistContent[0].style.width=b+"px"}else{if(b<=0){h.dropdownlistContent[0].style.width="0px"}}if(h.width==="auto"){h.dropdownlistContent.css("width","auto");d=h.dropdownlistContent.width()+g+2*i;h.host.width(d)}h.dropdownlistContent[0].style.height=j+"px";h.dropdownlistContent[0].style.left="0px";h.dropdownlistContent[0].style.top="0px";h.dropdownlistArrow[0].style.width=g+"px";if(h.width&&h.width.toString().indexOf("%")>=0){var e=(g*100)/d;var c=(b*100)/d;h.dropdownlistArrow[0].style.width=e+"%";h.dropdownlistContent[0].style.width=c+"%"}h.dropdownlistArrow[0].style.height=j+"px";if(h.rtl){h.dropdownlistArrow.css("float","left");h.dropdownlistContent.css("float","right")}},destroy:function(){a.MLjqui.utilities.resize(this.host,null,true);this.removeHandler(this.listBoxContainer,"select");this.removeHandler(this.listBoxContainer,"unselect");this.removeHandler(this.listBoxContainer,"change");this.removeHandler(this.dropdownlistWrapper,"selectstart");this.removeHandler(this.dropdownlistWrapper,"mousedown");this.removeHandler(this.host,"keydown");this.removeHandler(this.listBoxContainer,"select");this.removeHandler(this.listBox.content,"click");this.removeHandler(this.listBoxContainer,"bindingComplete");if(this.host.parents()){this.removeHandler(this.host.parents(),"scroll.dropdownlist"+this.element.id)}this.removeHandlers();this.listBoxContainer.MLjquiListBox("destroy");this.listBoxContainer.remove();this.host.removeClass();this.removeHandler(a(document),"mousedown."+this.id,this.closeOpenedListBox);if(this.touch){this.removeHandler(a(document),a.MLjqui.mobile.getTouchEventName("touchstart")+"."+this.id)}this.dropdownlistArrow.remove();delete this.dropdownlistArrow;delete this.dropdownlistWrapper;delete this.listBoxContainer;delete this.input;delete this.arrow;delete this.dropdownlistContent;delete this.listBox;delete this._firstDiv;this.container.remove();delete this.container;var b=a.data(this.element,"MLjquiDropDownList");if(b){delete b.instance}this.host.removeData();this.host.remove();delete this.comboStructure;delete this.host;delete this.element},_raiseEvent:function(f,c){if(c==undefined){c={owner:null}}var d=this.events[f];args=c;args.owner=this;var e=new a.Event(d);e.owner=this;if(f==2||f==3||f==4||f==5){e.args=c}var b=this.host.trigger(e);return b},propertiesChangedHandler:function(b,c,e){if(e.width&&e.height&&Object.keys(e).length==2){b._setSize();if(c=="width"){if(b.dropDownWidth=="auto"){var d=b.host.width();b.listBoxContainer.MLjquiListBox({width:d});b.container.width(parseInt(d)+25)}}b._arrange();b.close()}},propertyChangedHandler:function(b,c,f,e){if(b.isInitialized==undefined||b.isInitialized==false){return}if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}if(c=="template"){b.listBoxContainer.removeClass(b.toThemeProperty("MLjqui-"+f+"-item"));b.listBoxContainer.addClass(b.toThemeProperty("MLjqui-"+b.template+"-item"));b.host.removeClass(b.toThemeProperty("MLjqui-"+f+""));b.host.addClass(b.toThemeProperty("MLjqui-"+b.template+""))}if(c=="dropDownVerticalAlignment"){b.arrow.removeClass(b.toThemeProperty("MLjqui-icon-arrow-up"));b.arrow.removeClass(b.toThemeProperty("MLjqui-icon-arrow-down"));if(b.dropDownVerticalAlignment=="top"){b.arrow.addClass(b.toThemeProperty("MLjqui-icon-arrow-up"))}else{b.arrow.addClass(b.toThemeProperty("MLjqui-icon-arrow-down"))}b.listBoxContainer.css("top",0);b.listBoxContainer.removeClass(this.toThemeProperty("MLjqui-popup-up"))}if(c=="autoItemsHeight"){b.listBoxContainer.MLjquiListBox({autoItemsHeight:e})}if(c=="filterable"){b.listBoxContainer.MLjquiListBox({filterable:e})}if(c=="filterHeight"){b.listBoxContainer.MLjquiListBox({filterHeight:e})}if(c=="filterPlaceHolder"){b.listBoxContainer.MLjquiListBox({filterPlaceHolder:e})}if(c=="filterDelay"){b.listBoxContainer.MLjquiListBox({filterDelay:e})}if(c=="enableSelection"){b.listBoxContainer.MLjquiListBox({enableSelection:e})}if(c=="enableHover"){b.listBoxContainer.MLjquiListBox({enableHover:e})}if(c=="autoOpen"){b._updateHandlers()}if(c=="emptyString"){b.listBox.emptyString=b.emptyString}if(c=="itemHeight"){b.listBoxContainer.MLjquiListBox({itemHeight:e})}if(c=="renderer"){b.listBoxContainer.MLjquiListBox({renderer:e})}if(c=="rtl"){if(e){b.dropdownlistArrow.css("float","left");b.dropdownlistContent.css("float","right")}else{b.dropdownlistArrow.css("float","right");b.dropdownlistContent.css("float","left")}b.listBoxContainer.MLjquiListBox({rtl:b.rtl})}if(c=="source"){b.listBoxContainer.MLjquiListBox({source:b.source});b.listBox.selectedIndex=-1;b.listBox.selectIndex(this.selectedIndex);b.renderSelection();if(e==null){b.clear()}}if(c=="displayMember"||c=="valueMember"){b.listBoxContainer.MLjquiListBox({displayMember:b.displayMember,valueMember:b.valueMember});b.renderSelection()}if(c=="placeHolder"){b.renderSelection()}if(c=="theme"&&e!=null){b.listBoxContainer.MLjquiListBox({theme:e});b.listBoxContainer.addClass(b.toThemeProperty("MLjqui-popup"));a.MLjqui.utilities.setTheme(f,e,b.host)}if(c=="autoDropDownHeight"){b.listBoxContainer.MLjquiListBox({autoHeight:b.autoDropDownHeight});if(b.autoDropDownHeight){b.container.height(b.listBoxContainer.height()+25)}else{b.listBoxContainer.MLjquiListBox({height:b.dropDownHeight});b.container.height(parseInt(b.dropDownHeight)+25)}b.listBox._arrange();b.listBox._updatescrollbars()}if(c=="searchMode"){b.listBoxContainer.MLjquiListBox({searchMode:b.searchMode})}if(c=="incrementalSearch"){b.listBoxContainer.MLjquiListBox({incrementalSearch:b.incrementalSearch})}if(c=="incrementalSearchDelay"){b.listBoxContainer.MLjquiListBox({incrementalSearchDelay:b.incrementalSearchDelay})}if(c=="dropDownHeight"){if(!b.autoDropDownHeight){b.listBoxContainer.MLjquiListBox({height:b.dropDownHeight});b.container.height(parseInt(b.dropDownHeight)+25)}}if(c=="dropDownWidth"||c=="scrollBarSize"){var d=b.width;if(b.dropDownWidth!="auto"){d=b.dropDownWidth}b.listBoxContainer.MLjquiListBox({width:d,scrollBarSize:b.scrollBarSize});b.container.width(parseInt(d)+25)}if(c=="width"||c=="height"){if(e!=f){this.refresh();if(c=="width"){if(b.dropDownWidth=="auto"){var d=b.host.width();b.listBoxContainer.MLjquiListBox({width:d});b.container.width(parseInt(d)+25)}}b.close()}}if(c=="checkboxes"){b.listBoxContainer.MLjquiListBox({checkboxes:b.checkboxes})}if(c=="selectedIndex"){if(b.listBox!=null){b.listBox.selectIndex(parseInt(e));b.renderSelection()}}}})})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquilistbox.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquilistbox.js deleted file mode 100644 index e1c96549..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquilistbox.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a){a.MLjqui.MLjquiWidget("MLjquiListBox","",{});a.extend(a.MLjqui._MLjquiListBox.prototype,{defineInstance:function(){var b={disabled:false,width:null,height:null,items:new Array(),multiple:false,selectedIndex:-1,selectedIndexes:new Array(),source:null,scrollBarSize:a.MLjqui.utilities.scrollBarSize,enableHover:true,enableSelection:true,visualItems:new Array(),groups:new Array(),equalItemsWidth:true,itemHeight:-1,visibleItems:new Array(),emptyGroupText:"Group",checkboxes:false,hasThreeStates:false,autoHeight:false,autoItemsHeight:false,roundedcorners:true,touchMode:"auto",displayMember:"",groupMember:"",valueMember:"",searchMember:"",searchMode:"startswithignorecase",incrementalSearch:true,incrementalSearchDelay:1000,incrementalSearchKeyDownDelay:300,allowDrag:false,allowDrop:true,dropAction:"default",touchModeStyle:"auto",keyboardNavigation:true,enableMouseWheel:true,multipleextended:false,selectedValues:new Array(),emptyString:"",rtl:false,rendered:null,renderer:null,dragStart:null,dragEnd:null,focusable:true,ready:null,_checkForHiddenParent:true,autoBind:true,_renderOnDemand:false,filterable:false,filterHeight:27,filterPlaceHolder:"Looking for",filterDelay:100,aria:{"aria-disabled":{name:"disabled",type:"boolean"}},events:["select","unselect","change","checkChange","dragStart","dragEnd","bindingComplete"]};a.extend(true,this,b);return b},createInstance:function(c){var b=this;if(a.MLjqui.utilities.scrollBarSize!=15){b.scrollBarSize=a.MLjqui.utilities.scrollBarSize}if(b.width==null){b.width=200}if(b.height==null){b.height=200}b.render();var d=b;a.MLjqui.utilities.resize(b.host,function(){d._updateSize()},false,b._checkForHiddenParent)},resize:function(c,b){this.width=c;this.height=b;this._updateSize()},render:function(){var m=this;var l=m.element.nodeName.toLowerCase();if(l=="select"||l=="ul"||l=="ol"){m.field=m.element;if(m.field.className){m._className=m.field.className}var i={title:m.field.title};if(m.field.id.length){i.id=m.field.id.replace(/[^\w]/g,"_")+"_MLjquiListBox"}else{i.id=a.MLjqui.utilities.createId()+"_MLjquiListBox"}var b=a("
              ",i);if(!m.width){m.width=a(m.field).width()}if(!m.height){m.height=a(m.field).outerHeight()}a(m.field).hide().after(b);var f=m.host.data();m.host=b;m.host.data(f);m.element=b[0];m.element.id=m.field.id;m.field.id=i.id;if(m._className){m.host.addClass(m._className);a(m.field).removeClass(m._className)}if(m.field.tabIndex){var c=m.field.tabIndex;m.field.tabIndex=-1;m.element.tabIndex=c}}m.element.innerHTML="";var m=m;var h=m.element.className;h+=" "+m.toThemeProperty("MLjqui-listbox");h+=" "+m.toThemeProperty("MLjqui-reset");h+=" "+m.toThemeProperty("MLjqui-rc-all");h+=" "+m.toThemeProperty("MLjqui-widget");h+=" "+m.toThemeProperty("MLjqui-widget-content");m.element.className=h;var g=false;if(m.width!=null&&m.width.toString().indexOf("%")!=-1){m.host.width(m.width);g=true}if(m.height!=null&&m.height.toString().indexOf("%")!=-1){m.host.height(m.height);if(m.host.height()==0){m.host.height(200)}g=true}if(m.width!=null&&m.width.toString().indexOf("px")!=-1){m.host.width(m.width)}else{if(m.width!=undefined&&!isNaN(m.width)){m.element.style.width=parseInt(m.width)+"px"}}if(m.height!=null&&m.height.toString().indexOf("px")!=-1){m.host.height(m.height)}else{if(m.height!=undefined&&!isNaN(m.height)){m.element.style.height=parseInt(m.height)+"px"}}if(m.multiple||m.multipleextended||m.checkboxes){a.MLjqui.aria(m,"aria-multiselectable",true)}else{a.MLjqui.aria(m,"aria-multiselectable",false)}var e="
              ";m.host.attr("role","listbox");m.element.innerHTML=e;if(m._checkForHiddenParent){m._addInput();if(!m.host.attr("tabIndex")){m.host.attr("tabIndex",1)}}m.filter=a(m.element.firstChild.firstChild.firstChild);m.filterInput=a(m.filter[0].firstChild);m.filterInput.attr("placeholder",m.filterPlaceHolder);m.filterInput.addClass(m.toThemeProperty("MLjqui-widget MLjqui-listbox-filter-input MLjqui-input MLjqui-rc-all"));m.addHandler(m.filterInput,"keyup.textchange",function(o){if(o.keyCode==13){m._search(o)}else{if(m.filterDelay>0){if(m._filterTimer){clearTimeout(m._filterTimer)}m._filterTimer=setTimeout(function(){m._search(o)},m.filterDelay)}}o.stopPropagation()});var j=a(m.element.firstChild.firstChild.firstChild.nextSibling.nextSibling);if(!m.host.MLjquiButton){throw new Error("MLjquiListBox: Missing reference to MLjquibuttons.js.");return}if(!j.MLjquiScrollBar){throw new Error("MLjquiListBox: Missing reference to MLjquiscrollbar.js.");return}var d=parseInt(m.host.height())/2;if(d==0){d=10}m.vScrollBar=j.MLjquiScrollBar({_initialLayout:true,vertical:true,rtl:m.rtl,theme:m.theme,touchMode:m.touchMode,largestep:d});var n=a(m.element.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling);m.hScrollBar=n.MLjquiScrollBar({_initialLayout:true,vertical:false,rtl:m.rtl,touchMode:m.touchMode,theme:m.theme});m.content=a(m.element.firstChild.firstChild.firstChild.nextSibling);m.content[0].id="listBoxContent"+m.element.id;m.bottomRight=a(m.element.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.nextSibling).addClass(m.toThemeProperty("MLjqui-listbox-bottomright")).addClass(m.toThemeProperty("MLjqui-scrollbar-state-normal"));m.bottomRight[0].id="bottomRight"+m.element.id;m.vScrollInstance=a.data(m.vScrollBar[0],"MLjquiScrollBar").instance;m.hScrollInstance=a.data(m.hScrollBar[0],"MLjquiScrollBar").instance;if(m.isTouchDevice()){if(!(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9)){var k=a("
              ");m.content.parent().append(k);m.overlayContent=m.host.find(".overlay");if(m.filterable){m.overlayContent.css("top","30px")}}}m._updateTouchScrolling();m.host.addClass("MLjqui-disableselect");if(m.host.MLjquiDragDrop){MLjquiListBoxDragDrop()}},_highlight:function(b,c){var d=c.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return b.replace(new RegExp("("+d+")","ig"),function(e,f){return""+f+""})},_addInput:function(){var b=this.host.attr("name");if(b){this.host.attr("name","")}this.input=a("");this.host.append(this.input);this.input.attr("name",b)},_updateTouchScrolling:function(){var b=this;if(this.isTouchDevice()){b.enableHover=false;var c=this.overlayContent?this.overlayContent:this.content;this.removeHandler(a(c),a.MLjqui.mobile.getTouchEventName("touchstart")+".touchScroll");this.removeHandler(a(c),a.MLjqui.mobile.getTouchEventName("touchmove")+".touchScroll");this.removeHandler(a(c),a.MLjqui.mobile.getTouchEventName("touchend")+".touchScroll");this.removeHandler(a(c),"touchcancel.touchScroll");a.MLjqui.mobile.touchScroll(c,b.vScrollInstance.max,function(f,e){if(e!=null&&b.vScrollBar.css("visibility")!="hidden"){var d=b.vScrollInstance.value;b.vScrollInstance.setPosition(e);b._lastScroll=new Date()}if(f!=null&&b.hScrollBar.css("visibility")!="hidden"){var d=b.hScrollInstance.value;b.hScrollInstance.setPosition(f);b._lastScroll=new Date()}},this.element.id,this.hScrollBar,this.vScrollBar);if(b.vScrollBar.css("visibility")!="visible"&&b.hScrollBar.css("visibility")!="visible"){a.MLjqui.mobile.setTouchScroll(false,this.element.id)}else{a.MLjqui.mobile.setTouchScroll(true,this.element.id)}this._arrange()}},isTouchDevice:function(){var b=a.MLjqui.mobile.isTouchDevice();if(this.touchMode==true){if(this.touchDevice){return true}if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9){return false}this.touchDevice=true;b=true;a.MLjqui.mobile.setMobileSimulator(this.element)}else{if(this.touchMode==false){b=false}}if(b&&this.touchModeStyle!=false){this.scrollBarSize=a.MLjqui.utilities.touchScrollBarSize}if(b){this.host.addClass(this.toThemeProperty("MLjqui-touch"))}return b},beginUpdate:function(){this.updatingListBox=true},endUpdate:function(){this.updatingListBox=false;this._addItems();this._renderItems()},beginUpdateLayout:function(){this.updating=true},resumeUpdateLayout:function(){this.updating=false;this.vScrollInstance.value=0;this._render(false)},propertiesChangedHandler:function(b,c,d){if(d.width&&d.height&&Object.keys(d).length==2){b._cachedItemHtml=new Array();b.refresh()}},propertyChangedHandler:function(b,c,e,d){if(this.isInitialized==undefined||this.isInitialized==false){return}if(e==d){return}if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}if(c=="_renderOnDemand"){b._render(false,true);if(b.selectedIndex!=-1){var f=b.selectedIndex;b.selectedIndex=-1;b._stopEvents=true;b.selectIndex(f,false,true);if(b.selectedIndex==-1){b.selectedIndex=f}b._stopEvents=false}}if(c=="filterable"){b.refresh()}if(c=="filterHeight"){b._arrange()}if(c=="filterPlaceHolder"){b.filterInput.attr("placeholder",d)}if(c=="renderer"){b._cachedItemHtml=new Array();b.refresh()}if(c=="itemHeight"){b.refresh()}if(c=="source"||c=="checkboxes"){if(d==null&&e&&e.unbindBindingUpdate){e.unbindBindingUpdate(b.element.id);e.unbindDownloadComplete(b.element.id)}b.clearSelection();b.refresh()}if(c=="scrollBarSize"||c=="equalItemsWidth"){if(d!=e){b._updatescrollbars()}}if(c=="disabled"){b._renderItems();b.vScrollBar.MLjquiScrollBar({disabled:d});b.hScrollBar.MLjquiScrollBar({disabled:d})}if(c=="touchMode"||c=="rtl"){b._removeHandlers();b.vScrollBar.MLjquiScrollBar({touchMode:d});b.hScrollBar.MLjquiScrollBar({touchMode:d});if(c=="touchMode"){if(!(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9)){var h=a("
              ");b.content.parent().append(h);b.overlayContent=b.host.find(".overlay")}}if(b.filterable&&b.filterInput){if(c=="rtl"&&d){b.filterInput.addClass(b.toThemeProperty("MLjqui-rtl"))}else{if(c=="rtl"&&!d){b.filterInput.removeClass(b.toThemeProperty("MLjqui-rtl"))}}b._arrange()}b._updateTouchScrolling();b._addHandlers();b._render(false)}if(!this.updating){if(c=="width"||c=="height"){b._updateSize()}}if(c=="theme"){if(e!=d){b.hScrollBar.MLjquiScrollBar({theme:b.theme});b.vScrollBar.MLjquiScrollBar({theme:b.theme});b.host.removeClass();b.host.addClass(b.toThemeProperty("MLjqui-listbox"));b.host.addClass(b.toThemeProperty("MLjqui-widget"));b.host.addClass(b.toThemeProperty("MLjqui-widget-content"));b.host.addClass(b.toThemeProperty("MLjqui-reset"));b.host.addClass(b.toThemeProperty("MLjqui-rc-all"));b.refresh()}}if(c=="selectedIndex"){b.clearSelection();b.selectIndex(d,true)}if(c=="displayMember"||c=="valueMember"){if(e!=d){var g=b.selectedIndex;b.refresh();b.selectedIndex=g;b.selectedIndexes[g]=g}b._renderItems()}if(c=="autoHeight"){if(e!=d){b._render(false)}else{b._updatescrollbars();b._renderItems()}}if(b._checkForHiddenParent&&a.MLjqui.isHidden(b.host)){a.MLjqui.utilities.resize(this.host,function(){b._updateSize()},false,b._checkForHiddenParent)}},loadFromSelect:function(g){if(g==null){return}var c="#"+g;var d=a(c);if(d.length>0){var b=a.MLjqui.parseSourceTag(d[0]);var f=b.items;var e=b.index;this.source=f;this.fromSelect=true;this.clearSelection();this.selectedIndex=e;this.selectedIndexes[this.selectedIndex]=this.selectedIndex;this.refresh()}},invalidate:function(){this._cachedItemHtml=[];this._renderItems();this.virtualSize=null;this._updateSize()},refresh:function(c){var b=this;if(this.vScrollBar==undefined){return}this._cachedItemHtml=[];this.visibleItems=new Array();var d=function(e){if(e==true){if(b.selectedIndex!=-1){var f=b.selectedIndex;b.selectedIndex=-1;b._stopEvents=true;b.selectIndex(f,false,true);if(b.selectedIndex==-1){b.selectedIndex=f}b._stopEvents=false}}};if(this.itemswrapper!=null){this.itemswrapper.remove();this.itemswrapper=null}if(a.MLjqui.dataAdapter&&this.source!=null&&this.source._source){this.databind(this.source,c);d(c);return}if(this.autoBind||(!this.autoBind&&!c)){if(this.field){this.loadSelectTag()}this.items=this.loadItems(this.source)}this._render(false,c==true);d(c);this._raiseEvent("6")},loadSelectTag:function(){var b=a.MLjqui.parseSourceTag(this.field);this.source=b.items;if(this.selectedIndex==-1){this.selectedIndex=b.index}},_render:function(c,b){if(this._renderOnDemand){this.visibleItems=new Array();this.renderedVisibleItems=new Array();this._renderItems();return}this._addItems();this._renderItems();this.vScrollInstance.setPosition(0);this._cachedItemHtml=new Array();if(c==undefined||c){if(this.items!=undefined&&this.items!=null){if(this.selectedIndex>=0&&this.selectedIndex0){var d=this.renderedVisibleItems[this.renderedVisibleItems.length-1];if(d.height+d.tope&&d.initialTop+d.height>e){b=mid-1}else{if(d.initialTop=0&&x.top-x.height<=E){L[F++]={index:r,item:x}}g-=x.height;g--}}}var m=g>0?this._searchFirstVisibleIndex(this.vScrollInstance.value,this.renderedVisibleItems):0;var O=0;F=0;var z=this.vScrollInstance.value;var J=0;while(O<100+E){var x=this.renderedVisibleItems[m];if(x==undefined){break}if(x.visible){x.left=-f;var c=x.top+x.height-z;if(c>=0&&x.initialTop-z-x.height<=2*E){L[F++]={index:m,item:x}}}m++;if(x.visible){O+=x.initialTop-z+x.height-O}J++;if(J>this.items.length-1){break}}if(this._renderOnDemand){return}var o=this.toThemeProperty("MLjqui-listitem-state-normal")+" "+this.toThemeProperty("MLjqui-item");var i=this.toThemeProperty("MLjqui-listitem-state-group");var P=this.toThemeProperty("MLjqui-listitem-state-disabled")+" "+this.toThemeProperty("MLjqui-fill-state-disabled");var C=0;var n=this;for(var r=0;r=E){I();continue}var A=a(D[0].firstChild);if(this.checkboxes){A=a(D[0].lastChild)}if(A.length==0){continue}if(A[0]==null){continue}A[0].className="";A[0].style.display="block";A[0].style.visibility="inherit";var p="";if(!x.isGroup&&!this.selectedIndexes[x.index]>=0){p=o}else{p=i}if(x.disabled||this.disabled){p+=" "+P}if(this.roundedcorners){p+=" "+this.toThemeProperty("MLjqui-rc-all")}if(N){p+=" "+this.toThemeProperty("MLjqui-listitem-state-normal-touch")}A[0].className=p;if(this.renderer){if(!x.key){x.key=this.generatekey()}if(!this._cachedItemHtml){this._cachedItemHtml=new Array()}if(this._cachedItemHtml[x.key]){if(A[0].innerHTML!=this._cachedItemHtml[x.key]){A[0].innerHTML=this._cachedItemHtml[x.key]}}else{var w=this.renderer(x.index,x.label,x.value);A[0].innerHTML=w;this._cachedItemHtml[x.key]=A[0].innerHTML}}else{if(this.itemHeight!==-1){var k=2+2*parseInt(A.css("padding-top"));A[0].style.lineHeight=(x.height-k)+"px";A.css("vertical-align","middle")}if(x.html!=null&&x.html.toString().length>0){A[0].innerHTML=x.html}else{if(x.label!=null||x.value!=null){if(x.label!=null){if(A[0].innerHTML!==x.label){A[0].innerHTML=x.label}if(a.trim(x.label)==""){A[0].innerHTML=this.emptyString;if(this.emptyString==""){A[0].style.height=(x.height-8)+"px"}}if(!this.incrementalSearch&&!x.disabled){if(this.searchString!=undefined&&this.searchString!=""){A[0].innerHTML=this._highlight(x.label.toString(),this.searchString)}}}else{if(x.label===null){A[0].innerHTML=this.emptyString;if(this.emptyString==""){A[0].style.height=(x.height-8)+"px"}}else{if(A[0].innerHTML!==x.value){A[0].innerHTML=x.value}else{if(x.label==""){A[0].innerHTML=" "}}}}}else{if(x.label==""||x.label==null){A[0].innerHTML="";A[0].style.height=(x.height-8)+"px"}}}}D[0].style.left=x.left+"px";D[0].style.top=x.initialTop-z+"px";x.element=A[0];if(x.title){A[0].title=x.title}if(this.equalItemsWidth&&!x.isGroup){if(t==0){var d=parseInt(b);var v=parseInt(A.outerWidth())-parseInt(A.width());d-=v;var H=1;if(H!=null){H=parseInt(H)}else{H=0}d-=2*H;t=d;if(this.checkboxes&&this.hScrollBar[0].style.visibility=="hidden"){t-=18}}if(K>this.virtualSize.width){A[0].style.width=t+"px";x.width=t}else{A[0].style.width=-4+this.virtualSize.width+"px";x.width=this.virtualSize.width-4}}else{if(A.width()=0)||(x.selected&&this.filterable))){A.addClass(this.toThemeProperty("MLjqui-listitem-state-selected"));A.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(a.MLjqui.ariaEnabled){D[0].setAttribute("aria-selected",true);this._activeElement=D[0]}}else{if(!this.checkboxes){if(a.MLjqui.ariaEnabled){D[0].removeAttribute("aria-selected")}}}}else{I()}}},generatekey:function(){var b=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};return(b()+b()+"-"+b()+"-"+b()+"-"+b()+"-"+b()+b()+b())},_calculateVirtualSize:function(l){if(this._renderOnDemand){return}var p=0;var n=2;var g=0;var o=document.createElement("span");if(this.equalItemsWidth){a(o).css("float","left")}o.style.whiteSpace="pre";var h=0;var i=undefined===l?this.host.outerHeight():l+2;document.body.appendChild(o);var e=this.items.length;var j=this.host.width();if(this.autoItemsHeight){j-=10;if(this.vScrollBar.css("visibility")!="hidden"){j-=20}}if(this.autoItemsHeight||this.renderer||this.groups.length>=1||(e>0&&this.items[0].html!=null&&this.items[0].html!="")){for(var g=0;g0){o.innerHTML=s.html}else{if(s.label!=null||s.value!=null){if(s.label!=null){o.innerHTML=s.label;if(s.label==""){o.innerHTML="Empty"}}else{o.innerHTML=s.value}}}}var r=o.offsetHeight;var t=o.offsetWidth;if(this.itemHeight>-1){r=this.itemHeight}s.height=r;s.width=t;r++;n+=r;p=Math.max(p,t);if(n<=i){h++}}}else{var n=0;var m=0;var c="";var u=0;var f=0;var q=-1;for(var g=0;g0){o.innerHTML=s.html}else{if(s.label!=null||s.value!=null){if(s.label!=null){if(s.label.toString().match(new RegExp("\\w"))!=null||s.label.toString().match(new RegExp("\\d"))!=null){o.innerHTML=s.label}else{o.innerHTML="Item"}}else{o.innerHTML=s.value}}}}var r=1+o.offsetHeight;if(this.itemHeight>-1){r=this.itemHeight}m=r}if(u!=undefined){f=u}if(s.html!=null&&s.html.toString().length>0){u=Math.max(u,s.html.toString().length);if(f!=u){c=s.html}}else{if(s.label!=null){u=Math.max(u,s.label.length);if(f!=u){c=s.label}}else{if(s.value!=null){u=Math.max(u,s.value.length);if(f!=u){c=s.value}}}}s.height=m;n+=m;n++;if(n<=i){h++}}o.innerHTML=c;p=o.offsetWidth}n+=2;if(h<10){h=10}if(this.filterable){n+=this.filterHeight}o.parentNode.removeChild(o);return{width:p,height:n,itemsPerPage:h}},_getVirtualItemsCount:function(){if(this.virtualItemsCount==0){var b=parseInt(this.host.height())/5;if(b>this.items.length){b=this.items.length}return b}else{return this.virtualItemsCount}},_addItems:function(r){if(this._renderOnDemand){return}var v=this;if(v.updatingListBox==true){return}if(v.items==undefined||v.items.length==0){v.virtualSize={width:0,height:0,itemsPerPage:0};v._updatescrollbars();v.renderedVisibleItems=new Array();if(v.itemswrapper){v.itemswrapper.children().remove()}return}var h=v.host.height();if(r==false){var b=v._calculateVirtualSize(h);var g=b.itemsPerPage*2;if(v.autoHeight){g=v.items.length}v.virtualItemsCount=Math.min(g,v.items.length);var q=b.width;v.virtualSize=b;v._updatescrollbars();return}var n=this;var l=0;v.visibleItems=new Array();v.renderedVisibleItems=new Array();v._removeHandlers();if(v.allowDrag&&v._enableDragDrop){v.itemswrapper=null}if(v.itemswrapper==null){v.content[0].innerHTML="";v.itemswrapper=a('
              ');v.itemswrapper[0].style.height=(2*h)+"px";v.content[0].appendChild(v.itemswrapper[0])}var b=v._calculateVirtualSize(h);var g=b.itemsPerPage*2;if(v.autoHeight){g=v.items.length}v.virtualItemsCount=Math.min(g,v.items.length);var v=this;var q=b.width;v.virtualSize=b;var c=Math.max(v.host.width(),17+b.width);v.itemswrapper[0].style.width=c+"px";var e=0;var i="";var f=a.MLjqui.browser.msie&&a.MLjqui.browser.version<9;var s=f?' unselectable="on"':"";for(var j=e;j";if(v.checkboxes){i+='
              ';var o='
              ';var w=u.checked?" "+v.toThemeProperty("MLjqui-checkbox-check-checked"):"";o+='';o+="
              ";i+=o;i+="
              "}i+="
              "}if(n.WinJS){v.itemswrapper.html(i)}else{v.itemswrapper[0].innerHTML=i}var d=v.itemswrapper.children();for(var j=e;jo){b=k.hScrollBar.outerHeight()+2}if(n+b>m){var d=f.max;f.max=2+parseInt(n)+b-parseInt(m-2);if(k.vScrollBar[0].style.visibility!="inherit"){k.vScrollBar[0].style.visibility="inherit";l=true}if(d!=f.max){f._arrange()}}else{if(k.vScrollBar[0].style.visibility!="hidden"){k.vScrollBar[0].style.visibility="hidden";l=true;f.setPosition(0)}}var h=0;if(k.vScrollBar[0].style.visibility!="hidden"){h=k.scrollBarSize+6}var g=k.checkboxes?20:0;if(k.autoItemsHeight){k.hScrollBar[0].style.visibility="hidden"}else{if(j>=o-h-g){var i=e.max;if(k.vScrollBar[0].style.visibility=="inherit"){e.max=g+h+parseInt(j)-k.host.width()+4}else{e.max=g+parseInt(j)-k.host.width()+6}if(k.hScrollBar[0].style.visibility!="inherit"){k.hScrollBar[0].style.visibility="inherit";l=true}if(i!=e.max){e._arrange()}if(k.vScrollBar[0].style.visibility=="inherit"){f.max=2+parseInt(n)+k.hScrollBar.outerHeight()+2-parseInt(k.host.height())}}else{if(k.hScrollBar[0].style.visibility!="hidden"){k.hScrollBar[0].style.visibility="hidden";l=true}}}e.setPosition(0);if(l){k._arrange()}if(k.itemswrapper){k.itemswrapper[0].style.width=Math.max(0,Math.max(o-2,17+j))+"px";k.itemswrapper[0].style.height=Math.max(0,2*m)+"px"}var c=k.isTouchDevice();if(c){if(k.vScrollBar.css("visibility")!="visible"&&k.hScrollBar.css("visibility")!="visible"){a.MLjqui.mobile.setTouchScroll(false,k.element.id)}else{a.MLjqui.mobile.setTouchScroll(true,k.element.id)}}},clear:function(){this.source=null;this.clearSelection();this.refresh()},clearSelection:function(b){for(var c=0;c=d.host.height()){k=false}if(k){m.push(j)}}}return m}();return{items:c,visibleItems:b,viewItems:e}},getItem:function(c){if(c==-1||isNaN(c)||typeof(c)==="string"){if(c===-1){return null}return this.getItemByValue(c)}var b=null;var d=a.each(this.items,function(){if(this.index==c){b=this;return false}});return b},getVisibleItem:function(b){if(b==-1||isNaN(b)||typeof(b)==="string"){if(b===-1){return null}return this.getItemByValue(b)}return this.visibleItems[b]},getVisibleItems:function(){return this.visibleItems},checkIndex:function(b,c,e){if(!this.checkboxes){return}if(isNaN(b)){return}if(b<0||b>=this.visibleItems.length){return}if(this.visibleItems[b]!=null&&this.visibleItems[b].disabled){return}if(this.disabled){return}var d=this.getItem(b);if(this.groups.length>0||this.filterable){var d=this.getVisibleItem(b)}if(d!=null){var f=a(d.checkBoxElement);d.checked=true;if(c==undefined||c==true){this._updateCheckedItems()}}if(e==undefined||e==true){this._raiseEvent(3,{label:d.label,value:d.value,checked:true,item:d})}},getCheckedItems:function(){if(!this.checkboxes){return null}var b=new Array();if(this.items==undefined){return}a.each(this.items,function(){if(this.checked){b[b.length]=this}});return b},checkAll:function(b){if(!this.checkboxes){return}if(this.disabled){return}var c=this;a.each(this.items,function(){var d=this;if(b!==false&&d.checked!==true){c._raiseEvent(3,{label:d.label,value:d.value,checked:true,item:d})}this.checked=true});this._updateCheckedItems()},uncheckAll:function(b){if(!this.checkboxes){return}if(this.disabled){return}var c=this;a.each(this.items,function(){var d=this;if(b!==false&&d.checked!==false){this.checked=false;c._raiseEvent(3,{label:d.label,value:d.value,checked:false,item:d})}this.checked=false});this._updateCheckedItems()},uncheckIndex:function(b,c,e){if(!this.checkboxes){return}if(isNaN(b)){return}if(b<0||b>=this.visibleItems.length){return}if(this.visibleItems[b]!=null&&this.visibleItems[b].disabled){return}if(this.disabled){return}var d=this.getItem(b);if(this.groups.length>0||this.filterable){var d=this.getVisibleItem(b)}if(d!=null){var f=a(d.checkBoxElement);d.checked=false;if(c==undefined||c==true){this._updateCheckedItems()}}if(e==undefined||e==true){this._raiseEvent(3,{label:d.label,value:d.value,checked:false,item:d})}},indeterminateIndex:function(b,c,e){if(!this.checkboxes){return}if(isNaN(b)){return}if(b<0||b>=this.visibleItems.length){return}if(this.visibleItems[b]!=null&&this.visibleItems[b].disabled){return}if(this.disabled){return}var d=this.getItem(b);if(this.groups.length>0||this.filterable){var d=this.getVisibleItem(b)}if(d!=null){var f=a(d.checkBoxElement);d.checked=null;if(c==undefined||c==true){this._updateCheckedItems()}}if(e==undefined||e==true){this._raiseEvent(3,{checked:null})}},getSelectedIndex:function(){return this.selectedIndex},getSelectedItems:function(){var b=this.getVisibleItems();var e=this.selectedIndexes;var d=[];for(var c in e){if(e[c]!=-1){d[d.length]=b[c]}}return d},getSelectedItem:function(){var b=this.getSelectedItems();if(b&&b.length>0){return b[0]}return null},_updateCheckedItems:function(){var b=this.selectedIndex;this.clearSelection(false);var c=this.getCheckedItems();this.selectedIndex=b;this._renderItems();var d=a.data(this.element,"hoveredItem");if(d!=null){a(d).addClass(this.toThemeProperty("MLjqui-listitem-state-hover"));a(d).addClass(this.toThemeProperty("MLjqui-fill-state-hover"))}this._updateInputSelection()},getItemByValue:function(d){if(this.visibleItems==null){return}if(d&&d.value){d=d.value}if(this.itemsByValue){return this.itemsByValue[a.trim(d).split(" ").join("?")]}var b=this.visibleItems;for(var c=0;c=this.visibleItems.length){return}if(this.visibleItems[j]!=null&&this.visibleItems[j].disabled){return}if(this.disabled){return}if(!this.multiple&&!this.multipleextended&&this.selectedIndex==j&&!d&&!this.checkboxes){if(this.visibleItems&&this.items&&this.visibleItems.length!=this.items.length){h=this.getVisibleItem(j);if(h){this.selectedValue=h.value;this.selectedValues[h.value]=h.value}}return}if(this.checkboxes){this._updateCheckedItems();var p=q;if(this.selectedIndex==j&&!this.multiple){p=-1}if(m==undefined){m="none"}var h=this.getItem(j);var s=this.getItem(p);if(this.visibleItems&&this.items&&this.visibleItems.length!=this.items.length){h=this.getVisibleItem(j);s=this.getVisibleItem(p)}this._raiseEvent("1",{index:p,type:m,item:s,originalEvent:b});this.selectedIndex=j;this.selectedIndexes[p]=-1;this.selectedIndexes[j]=j;if(h){this.selectedValue=h.value;this.selectedValues[h.value]=h.value}this._raiseEvent("0",{index:j,type:m,item:h,originalEvent:b});this._renderItems();return}this.focused=true;var o=false;if(this.selectedIndex!=j){o=true}var p=q;if(this.selectedIndex==j&&!this.multiple){p=-1}if(m==undefined){m="none"}var h=this.getItem(j);var s=this.getItem(p);if(this.visibleItems&&this.items&&this.visibleItems.length!=this.items.length){h=this.getVisibleItem(j);s=this.getVisibleItem(p)}if(d!=undefined&&d){this._raiseEvent("1",{index:p,type:m,item:s,originalEvent:b});this.selectedIndex=j;this.selectedIndexes[p]=-1;this.selectedIndexes[j]=j;if(h){this.selectedValue=h.value;this.selectedValues[h.value]=h.value}this._raiseEvent("0",{index:j,type:m,item:h,originalEvent:b})}else{var l=this;var e=function(t,x,v,w,u,i){l._raiseEvent("1",{index:x,type:v,item:w,originalEvent:i});l.selectedIndex=t;l.selectedIndexes=[];x=t;l.selectedIndexes[t]=t;l.selectedValues=new Array();if(u){l.selectedValues[u.value]=u.value}l._raiseEvent("0",{index:t,type:v,item:u,originalEvent:i})};var k=function(t,x,v,w,u,i){if(l.selectedIndexes[t]==undefined||l.selectedIndexes[t]==-1){l.selectedIndexes[t]=t;l.selectedIndex=t;if(u){l.selectedValues[u.value]=u.value;l._raiseEvent("0",{index:t,type:v,item:u,originalEvent:i})}}else{x=l.selectedIndexes[t];w=l.getVisibleItem(x);if(w){l.selectedValues[w.value]=null}l.selectedIndexes[t]=-1;l.selectedIndex=-1;l._raiseEvent("1",{index:x,type:v,item:w,originalEvent:i})}};if(this.multipleextended){if(!this._shiftKey&&!this._ctrlKey){if(m!="keyboard"&&m!="mouse"){k(j,p,m,s,h,b);l._clickedIndex=j}else{this.clearSelection(false);l._clickedIndex=j;e(j,p,m,s,h,b)}}else{if(this._ctrlKey){if(m=="keyboard"){this.clearSelection(false);l._clickedIndex=j}k(j,p,m,s,h,b)}else{if(this._shiftKey){if(l._clickedIndex==undefined){l._clickedIndex=p}var f=Math.min(l._clickedIndex,j);var n=Math.max(l._clickedIndex,j);this.clearSelection(false);for(var g=f;g<=n;g++){l.selectedIndexes[g]=g;l.selectedValues[l.getVisibleItem(g).value]=l.getVisibleItem(g).value;l._raiseEvent("0",{index:g,type:m,item:this.getVisibleItem(g),originalEvent:b})}if(m!="keyboard"){l.selectedIndex=l._clickedIndex}else{l.selectedIndex=j}}}}}else{if(this.multiple){k(j,p,m,s,h,b)}else{if(h){this.selectedValue=h.value}e(j,p,m,s,h,b)}}}if(c==undefined||c==true){this._renderItems()}if(r!=undefined&&r!=null&&r==true){this.ensureVisible(j)}this._raiseEvent("2",{index:j,item:h,oldItem:s,type:m,originalEvent:b});this._updateInputSelection();return o},_updateInputSelection:function(){this._syncSelection();var c=new Array();if(this.input){if(this.selectedIndex==-1){this.input.val("")}else{if(this.items){if(this.items[this.selectedIndex]!=undefined){this.input.val(this.items[this.selectedIndex].value);c.push(this.items[this.selectedIndex].value)}}}if(this.multiple||this.multipleextended||this.checkboxes){var b=!this.checkboxes?this.getSelectedItems():this.getCheckedItems();var e="";if(b){for(var d=0;d=0;if(this.selected){a(this).attr("selected",true)}})}else{a.each(this.items,function(f,g){a(this.originalItem.originalItem).removeAttr("data-selected");this.selected=c.indexOf(this.value)>=0;if(this.selected){a(this.originalItem.originalItem).attr("data-selected",true)}})}}},isIndexInView:function(c){if(isNaN(c)){return false}if(!this.items){return false}if(c<0||c>=this.items.length){return false}var e=this.vScrollInstance.value;var d=0;if(this.filterable){d=this.filterHeight}var f=this.visibleItems[c];if(f==undefined){return true}var b=f.initialTop;var g=f.height;if(b-e=this.host.outerHeight()){return false}return true},_itemsInPage:function(){var b=0;var c=this;if(this.items){a.each(this.items,function(){if((this.initialTop+this.height)>=c.content.height()){return false}b++})}return b},_firstItemIndex:function(){if(this.visibleItems!=null){if(this.visibleItems[0]){if(this.visibleItems[0].isGroup){return this._nextItemIndex(0)}else{return 0}}else{return 0}}return -1},_lastItemIndex:function(){if(this.visibleItems!=null){if(this.visibleItems[this.visibleItems.length-1]){if(this.visibleItems[this.visibleItems.length-1].isGroup){return this._prevItemIndex(this.visibleItems.length-1)}else{return this.visibleItems.length-1}}else{return this.visibleItems.length-1}}return -1},_nextItemIndex:function(b){for(indx=b+1;indx=0;indx--){if(this.visibleItems[indx]){if(!this.visibleItems[indx].disabled&&!this.visibleItems[indx].isGroup){return indx}}}return -1},clearFilter:function(){this.filterInput.val("");this._updateItemsVisibility("")},_search:function(c){var b=this;var d=b.filterInput.val();if(c.keyCode==9){return}if(b.searchMode=="none"||b.searchMode==null||b.searchMode=="undefined"){return}if(c.keyCode==16||c.keyCode==17||c.keyCode==20){return}if(c.keyCode==37||c.keyCode==39){return false}if(c.altKey||c.keyCode==18){return}if(c.keyCode>=33&&c.keyCode<=40){return}if(c.ctrlKey||c.metaKey||b.ctrlKey){if(c.keyCode!=88&&c.keyCode!=86){return}}if(d===b.searchString){return}b._updateItemsVisibility(d)},_updateItemsVisibility:function(h){var e=this.getItems();if(e==undefined){return{index:-1,matchItem:new Array()}}var f=this;var d=-1;var i=new Array();var g=0;a.each(e,function(k){var m="";if(!this.isGroup){if(this.searchLabel){m=this.searchLabel}else{if(this.label){m=this.label}else{if(this.value){m=this.value}else{if(this.title){m=this.title}else{m="MLjquiItem"}}}}m=m.toString();var l=false;switch(f.searchMode){case"containsignorecase":l=a.MLjqui.string.containsIgnoreCase(m,h);break;case"contains":l=a.MLjqui.string.contains(m,h);break;case"equals":l=a.MLjqui.string.equals(m,h);break;case"equalsignorecase":l=a.MLjqui.string.equalsIgnoreCase(m,h);break;case"startswith":l=a.MLjqui.string.startsWith(m,h);break;case"startswithignorecase":l=a.MLjqui.string.startsWithIgnoreCase(m,h);break;case"endswith":l=a.MLjqui.string.endsWith(m,h);break;case"endswithignorecase":l=a.MLjqui.string.endsWithIgnoreCase(m,h);break}if(!l){this.visible=false}if(l){i[g++]=this;this.visible=true;d=this.visibleIndex}if(h==""){this.visible=true;l=false}}});f.renderedVisibleItems=new Array();f.visibleItems=new Array();f.vScrollInstance.setPosition(0,true);f._addItems(false);f._renderItems();for(var b=0;b=d){c=this.visibleIndex;return false}}});return c},findItems:function(e){var b=this.getItems();var d=this;var c=0;var f=new Array();a.each(b,function(g){var j="";if(!this.isGroup){if(this.label){j=this.label}else{if(this.value){j=this.value}else{if(this.title){j=this.title}else{j="MLjquiItem"}}}var h=false;switch(d.searchMode){case"containsignorecase":h=a.MLjqui.string.containsIgnoreCase(j,e);break;case"contains":h=a.MLjqui.string.contains(j,e);break;case"equals":h=a.MLjqui.string.equals(j,e);break;case"equalsignorecase":h=a.MLjqui.string.equalsIgnoreCase(j,e);break;case"startswith":h=a.MLjqui.string.startsWith(j,e);break;case"startswithignorecase":h=a.MLjqui.string.startsWithIgnoreCase(j,e);break;case"endswith":h=a.MLjqui.string.endsWith(j,e);break;case"endswithignorecase":h=a.MLjqui.string.endsWithIgnoreCase(j,e);break}if(h){f[c++]=this}}});return f},_syncSelection:function(){var d=this;if(d.filterable){if(d.items){for(var b=0;b=1){k._searchString=k._searchString.substr(0,k._searchString.length-1)}var r=String.fromCharCode(s);var m=(!isNaN(parseInt(r)));var i=false;if((s>=65&&s<=97)||m||s==8||s==32||s==46){if(!n.shiftKey){r=r.toLocaleLowerCase()}var e=1+k.selectedIndex;if(s!=8&&s!=32&&s!=46){if(k._searchString.length>0&&k._searchString.substr(0,1)==r){e=1+k.selectedIndex;k._searchString+=r}else{k._searchString+=r}}if(s==32){k._searchString+=" "}var b=this._getMatches(k._searchString,e);o=b;if(o==k._lastMatchIndex||o==-1){var b=this._getMatches(k._searchString,0);o=b}k._lastMatchIndex=o;if(o>=0){var h=function(){j();k.selectIndex(o,false,false,false,"keyboard",n);var t=k.isIndexInView(o);if(!t){k.ensureVisible(o)}else{k._renderItems()}};if(k._toSelectTimer){clearTimeout(k._toSelectTimer)}k._toSelectTimer=setTimeout(function(){h()},k.incrementalSearchKeyDownDelay)}i=true}if(k._searchTimer!=undefined){clearTimeout(k._searchTimer)}if(s==27||s==13){k._searchString=""}k._searchTimer=setTimeout(function(){k._searchString="";k._renderItems()},k.incrementalSearchDelay);if(o>=0){return}if(i){return false}}if(s==33){var p=k._itemsInPage();if(k.selectedIndex-p>=0){j();k.selectIndex(d-p,false,false,false,"keyboard",n)}else{j();k.selectIndex(k._firstItemIndex(),false,false,false,"keyboard",n)}k._searchString=""}if(s==32&&this.checkboxes){var f=this.getItem(g);if(f!=null){k._updateItemCheck(f,g);n.preventDefault()}k._searchString=""}if(s==36){j();k.selectIndex(k._firstItemIndex(),false,false,false,"keyboard",n);k._searchString=""}if(s==35){j();k.selectIndex(k._lastItemIndex(),false,false,false,"keyboard",n);k._searchString=""}if(s==34){var p=k._itemsInPage();if(k.selectedIndex+p0){var c=k._prevItemIndex(k.selectedIndex);if(c!=k.selectedIndex&&c!=-1){j();k.selectIndex(c,false,false,false,"keyboard",n)}else{return true}}else{return false}}else{if(s==40){k._searchString="";if(k.selectedIndex+10&&b.virtualItemsCount*b.items[0].height9){setTimeout(function(){l._renderItems()},1)}else{l._renderItems()}});this.addHandler(this.hScrollBar,"valueChanged",function(){l._renderItems()});if(this._mousewheelfunc){this.removeHandler(this.host,"mousewheel",this._mousewheelfunc)}this._mousewheelfunc=function(n){l.wheel(n,l)};this.addHandler(this.host,"mousewheel",this._mousewheelfunc);this.addHandler(a(document),"keydown.listbox"+this.element.id,function(n){l._ctrlKey=n.ctrlKey||n.metaKey;l._shiftKey=n.shiftKey});this.addHandler(a(document),"keyup.listbox"+this.element.id,function(n){l._ctrlKey=n.ctrlKey||n.metaKey;l._shiftKey=n.shiftKey});this.addHandler(this.host,"keydown",function(n){return l._handleKeyDown(n)});this.addHandler(this.content,"mouseleave",function(n){l.focused=false;var o=a.data(l.element,"hoveredItem");if(o!=null){a(o).removeClass(l.toThemeProperty("MLjqui-listitem-state-hover"));a(o).removeClass(l.toThemeProperty("MLjqui-fill-state-hover"));a.data(l.element,"hoveredItem",null)}});this.addHandler(this.content,"focus",function(n){if(!l.disabled){l.host.addClass(l.toThemeProperty("MLjqui-fill-state-focus"));l.focused=true}});this.addHandler(this.content,"blur",function(n){l.focused=false;l.host.removeClass(l.toThemeProperty("MLjqui-fill-state-focus"))});this.addHandler(this.host,"focus",function(n){if(!l.disabled){l.host.addClass(l.toThemeProperty("MLjqui-fill-state-focus"));l.focused=true}});this.addHandler(this.host,"blur",function(n){if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9&&l.focused){return}l.host.removeClass(l.toThemeProperty("MLjqui-fill-state-focus"));l.focused=false});this.addHandler(this.content,"mouseenter",function(n){l.focused=true});var c=a.MLjqui.utilities.hasTransform(this.host);if(this.enableSelection){var f=l.isTouchDevice()&&this.touchMode!==true;var i=!f?"mousedown":"touchend";var k=!f?"mouseup":"touchend";if(this.overlayContent){this.addHandler(this.overlayContent,a.MLjqui.mobile.getTouchEventName("touchend"),function(p){if(!l.enableSelection){return true}if(f){l._newScroll=new Date();if(l._newScroll-l._lastScroll<500){return true}}var s=a.MLjqui.mobile.getTouches(p);var t=s[0];if(t!=undefined){var n=l.host.offset();var r=parseInt(t.pageX);var q=parseInt(t.pageY);if(l.touchMode==true){if(t._pageX!=undefined){r=parseInt(t._pageX);q=parseInt(t._pageY)}}r=r-n.left;q=q-n.top;var o=l._hitTest(r,q);if(o!=null&&!o.isGroup){l._newScroll=new Date();if(l._newScroll-l._lastScroll<500){return false}if(l.checkboxes){l._updateItemCheck(o,o.visibleIndex);return}if(o.html.indexOf("href")!=-1){setTimeout(function(){l.selectIndex(o.visibleIndex,false,true,false,"mouse",p);l.content.trigger("click");return false},100)}else{l.selectIndex(o.visibleIndex,false,true,false,"mouse",p);if(p.preventDefault){p.preventDefault()}l.content.trigger("click");return false}}}})}else{var d=false;this.addHandler(this.content,i,function(n){if(!l.enableSelection){return true}d=true;if(f){l._newScroll=new Date();if(l._newScroll-l._lastScroll<500){return false}}l.focused=true;if(!l.isTouchDevice()&&l.focusable){l.host.focus()}if(n.target.id!=("listBoxContent"+l.element.id)&&l.itemswrapper[0]!=n.target){var r=n.target;var z=a(r).offset();var q=l.host.offset();if(c){var o=a.MLjqui.mobile.getLeftPos(r);var t=a.MLjqui.mobile.getTopPos(r);z.left=o;z.top=t;o=a.MLjqui.mobile.getLeftPos(l.element);t=a.MLjqui.mobile.getTopPos(l.element);q.left=o;q.top=t}var s=parseInt(z.top)-parseInt(q.top);var v=parseInt(z.left)-parseInt(q.left);var w=l._hitTest(v,s);if(w!=null&&!w.isGroup){var p=function(y,x){if(!l._shiftKey){l._clickedIndex=y.visibleIndex}if(!l.checkboxes){l.selectIndex(y.visibleIndex,false,true,false,"mouse",x)}else{v=20+x.pageX-z.left;if(l.rtl){var A=l.hScrollBar.css("visibility")!="hidden"?l.hScrollInstance.max:l.host.width();if(v<=l.host.width()-20){if(!l.allowDrag){l._updateItemCheck(y,y.visibleIndex);l.selectIndex(y.visibleIndex,false,true,false,"mouse",x)}else{setTimeout(function(){if(!l._dragItem){if(!d){l._updateItemCheck(y,y.visibleIndex);l.selectIndex(y.visibleIndex,false,true,false,"mouse",x)}}},200)}}}else{if(v+l.hScrollInstance.value>=20){if(!l.allowDrag){l._updateItemCheck(y,y.visibleIndex);l.selectIndex(y.visibleIndex,false,true,false,"mouse",x)}else{setTimeout(function(){if(!l._dragItem){if(!d){l._updateItemCheck(y,y.visibleIndex);l.selectIndex(y.visibleIndex,false,true,false,"mouse",x)}}},200)}}}}};if(!w.disabled){if(w.html.indexOf("href")!=-1){setTimeout(function(){p(w,n)},100)}else{p(w,n)}}}if(i=="mousedown"){var u=false;if(n.which){u=(n.which==3)}else{if(n.button){u=(n.button==2)}}if(u){return true}return false}}return true})}this.addHandler(this.content,"mouseup",function(n){l.vScrollInstance.handlemouseup(l,n);d=false});if(a.MLjqui.browser.msie){this.addHandler(this.content,"selectstart",function(n){return false})}}var e=this.isTouchDevice();if(this.enableHover&&!e){this._mousemovefunc=function(n){if(e){return true}if(!l.enableHover){return true}var p=a.MLjqui.browser.msie==true&&a.MLjqui.browser.version<9?0:1;if(n.target==null){return true}if(l.disabled){return true}l.focused=true;var r=l.vScrollInstance.isScrolling();if(!r&&n.target.id!=("listBoxContent"+l.element.id)){if(l.itemswrapper[0]!=n.target){var t=n.target;var B=a(t).offset();var s=l.host.offset();if(c){var o=a.MLjqui.mobile.getLeftPos(t);var v=a.MLjqui.mobile.getTopPos(t);B.left=o;B.top=v;o=a.MLjqui.mobile.getLeftPos(l.element);v=a.MLjqui.mobile.getTopPos(l.element);s.left=o;s.top=v}var u=parseInt(B.top)-parseInt(s.top);var w=parseInt(B.left)-parseInt(s.left);var A=l._hitTest(w,u);if(A!=null&&!A.isGroup&&!A.disabled){var q=a.data(l.element,"hoveredItem");if(q!=null){a(q).removeClass(l.toThemeProperty("MLjqui-listitem-state-hover"));a(q).removeClass(l.toThemeProperty("MLjqui-fill-state-hover"))}a.data(l.element,"hoveredItem",A.element);var z=a(A.element);z.addClass(l.toThemeProperty("MLjqui-listitem-state-hover"));z.addClass(l.toThemeProperty("MLjqui-fill-state-hover"))}}}};this.addHandler(this.content,"mousemove",this._mousemovefunc)}},_arrange:function(u){if(u==undefined){u=true}var t=this;var p=null;var n=null;var g=t.filterable?t.filterHeight:0;var j=function(h){h=t.host.height();if(h==0){h=200;t.host.height(h)}return h};if(t.width!=null&&t.width.toString().indexOf("px")!=-1){p=t.width}else{if(t.width!=undefined&&!isNaN(t.width)){p=t.width}}if(t.height!=null&&t.height.toString().indexOf("px")!=-1){n=t.height}else{if(t.height!=undefined&&!isNaN(t.height)){n=t.height}}if(t.width!=null&&t.width.toString().indexOf("%")!=-1){t.host.css("width",t.width);p=t.host.width()}if(t.height!=null&&t.height.toString().indexOf("%")!=-1){t.host.css("height",t.height);n=j(n)}if(p!=null){p=parseInt(p);if(parseInt(t.element.style.width)!=parseInt(t.width)){t.host.width(t.width)}}if(!t.autoHeight){if(n!=null){n=parseInt(n);if(parseInt(t.element.style.height)!=parseInt(t.height)){t.host.height(t.height);j(n)}}}else{if(t.virtualSize){if(t.hScrollBar.css("visibility")!="hidden"){t.host.height(t.virtualSize.height+parseInt(t.scrollBarSize)+3);t.height=t.virtualSize.height+parseInt(t.scrollBarSize)+3;n=t.height}else{t.host.height(t.virtualSize.height);t.height=t.virtualSize.height;n=t.virtualSize.height}}}var c=t.scrollBarSize;if(isNaN(c)){c=parseInt(c);if(isNaN(c)){c="17px"}else{c=c+"px"}}c=parseInt(c);var m=4;var e=2;var f=1;if(t.vScrollBar){if(t.vScrollBar[0].style.visibility!="hidden"){f=c+m}else{t.vScrollInstance.setPosition(0)}}else{return}if(c==0){f=1;e=1}if(t.hScrollBar){if(t.hScrollBar[0].style.visibility!="hidden"){e=c+m}else{t.hScrollInstance.setPosition(0)}}else{return}if(t.autoItemsHeight){t.hScrollBar[0].style.visibility="hidden";e=0}if(n==null){n=0}var q=parseInt(n)-m-c;if(q<0){q=0}if(parseInt(t.hScrollBar[0].style.height)!=c){if(parseInt(c)<0){c=0}t.hScrollBar[0].style.height=parseInt(c)+"px"}if(t.hScrollBar[0].style.top!=q+"px"){t.hScrollBar[0].style.top=q+"px";t.hScrollBar[0].style.left="0px"}var b=p-c-m;if(b<0){b=0}var l=b+"px";if(t.hScrollBar[0].style.width!=l){t.hScrollBar[0].style.width=l}if(f<=1){if(p>=2){t.hScrollBar[0].style.width=parseInt(p-2)+"px"}}if(c!=parseInt(t.vScrollBar[0].style.width)){t.vScrollBar[0].style.width=parseInt(c)+"px"}if((parseInt(n)-e)!=parseInt(t.vScrollBar[0].style.height)){var s=parseInt(n)-e;if(s<0){s=0}t.vScrollBar[0].style.height=s+"px"}if(p==null){p=0}var d=parseInt(p)-parseInt(c)-m+"px";if(d!=t.vScrollBar[0].style.left){if(parseInt(d)>=0){t.vScrollBar[0].style.left=d}t.vScrollBar[0].style.top="0px"}var k=t.vScrollInstance;k.disabled=t.disabled;if(u){k._arrange()}var o=t.hScrollInstance;o.disabled=t.disabled;if(u){o._arrange()}if((t.vScrollBar[0].style.visibility!="hidden")&&(t.hScrollBar[0].style.visibility!="hidden")){t.bottomRight[0].style.visibility="inherit";t.bottomRight[0].style.left=1+parseInt(t.vScrollBar[0].style.left)+"px";t.bottomRight[0].style.top=1+parseInt(t.hScrollBar[0].style.top)+"px";if(t.rtl){t.bottomRight.css({left:0})}t.bottomRight[0].style.width=parseInt(c)+3+"px";t.bottomRight[0].style.height=parseInt(c)+3+"px"}else{t.bottomRight[0].style.visibility="hidden"}if(parseInt(t.content[0].style.width)!=(parseInt(p)-f)){var i=parseInt(p)-f;if(i<0){i=0}t.content[0].style.width=i+"px"}if(t.rtl){t.vScrollBar.css({left:0+"px",top:"0px"});t.hScrollBar.css({left:t.vScrollBar.width()+2+"px"});if(t.vScrollBar[0].style.visibility!="hidden"){t.content.css("margin-left",4+t.vScrollBar.width())}else{t.content.css("margin-left",0);t.hScrollBar.css({left:"0px"})}if(t.filterable&&t.filterInput){t.filterInput.css({left:t.vScrollBar.width()+6+"px"})}}if(parseInt(t.content[0].style.height)!=(parseInt(n)-e)){var r=parseInt(n)-e;if(r<0){r=0}t.content[0].style.height=r+"px";t.content[0].style.top="0px"}if(g>0){t.content[0].style.top=g+"px";t.content[0].style.height=parseInt(t.content[0].style.height)-g+"px"}if(t.filterable){t.filterInput[0].style.height=(g-6)+"px";t.filterInput[0].style.top="3px";if(!t.rtl){t.filterInput[0].style.left=parseInt(t.content.css("left"))+3+"px"}t.filterInput[0].style.width=parseInt(t.content.css("width"))-7+"px";t.filter[0].style.display="block"}else{t.filter[0].style.display="none"}if(t.overlayContent){t.overlayContent.width(parseInt(p)-f);t.overlayContent.height(parseInt(n)-e)}},ensureVisible:function(h,i){if(isNaN(h)){var l=this.getItemByValue(h);if(l){h=l.index}}var f=this.isIndexInView(h);if(!f){if(h<0){return}if(this.autoHeight){var g=a.data(this.vScrollBar[0],"MLjquiScrollBar").instance;g.setPosition(0)}else{for(indx=0;indxk+this.host.height()-b){var c=this.host.height();if(this.filterable){g.setPosition(this.filterHeight+2+l.initialTop+l.height+2-c+d)}else{g.setPosition(l.initialTop+l.height+2-c+d);if(indx===this.visibleItems.length-1){g.setPosition(g.max)}}if(i){var k=g.value;var j=l.initialTop;if(this.filterable){j=this.filterHeight+2+l.initialTop}if(k+c=b.min){b.setPosition(b.value-b.largestep);return true}else{if(b.value!=b.min){b.setPosition(b.min);return true}}return false},databind:function(b,d){this.records=new Array();var f=b._source?true:false;var c=new a.MLjqui.dataAdapter(b,{autoBind:false});if(f){c=b;b=b._source}var e=function(k){if(b.type!=undefined){c._options.type=b.type}if(b.formatdata!=undefined){c._options.formatData=b.formatdata}if(b.contenttype!=undefined){c._options.contentType=b.contenttype}if(b.async!=undefined){c._options.async=b.async}};var h=function(q,r){var s=function(w){var D=null;if(typeof w==="string"){var z=w;var A=w;var C=""}else{if(q.displayMember!=undefined&&q.displayMember!=""){var A=w[q.valueMember];var z=w[q.displayMember]}}var C="";if(q.groupMember){C=w[q.groupMember]}else{if(w&&w.group!=undefined){C=w.group}}if(q.searchMember){D=w[q.searchMember]}else{if(w&&w.searchLabel!=undefined){D=w.searchLabel}}if(!q.valueMember&&!q.displayMember){if(a.type(w)=="string"){z=A=w.toString()}}if(w&&w.label!=undefined){var z=w.label}if(w&&w.value!=undefined){var A=w.value}var B=false;if(w&&w.checked!=undefined){B=w.checked}var v="";if(w&&w.html!=undefined){v=w.html}var t=true;if(w&&w.visible!=undefined){t=w.visible}var u=false;if(w&&w.disabled!=undefined){u=w.disabled}var y=false;if(w&&w.hasThreeStates!=undefined){y=w.hasThreeStates}var x={};x.label=z;x.value=A;x.searchLabel=D;x.html=v;x.visible=t;x.originalItem=w;x.group=C;x.groupHtml="";x.disabled=u;x.checked=B;x.hasThreeStates=y;return x};if(r!=undefined){var k=c._changedrecords[0];if(k){a.each(c._changedrecords,function(){var t=this.index;var u=this.record;if(r!="remove"){var v=s(u)}switch(r){case"update":q.updateAt(v,t);break;case"add":q.insertAt(v,t);break;case"remove":q.removeAt(t);break}});return}}q.records=c.records;var m=q.records.length;var p=new Array();for(var l=0;l1&&arguments[1]&&a.type(arguments[1])=="string"){j.label=x;j.value=arguments[1]}}else{if(x.label==null&&x.value==null&&x.html==null&&x.group==null&&x.groupHtml==null){j.label=x.toString();j.value=x.toString()}else{j.label=x.label;j.value=x.value;if(j.label===undefined){j.label=x.value}if(j.value===undefined){j.value=x.label}}}if(typeof x!="string"){if(x.label===undefined){if(t.displayMember!=""){if(x[t.displayMember]!=undefined){j.label=x[t.displayMember]}else{j.label=""}}}if(x.value===undefined){if(t.valueMember!=""){j.value=x[t.valueMember]}}}j.hasThreeStates=x.hasThreeStates!=undefined?x.hasThreeStates:true;j.originalItem=x;if(o){j.originalItem=x.originalItem}j.title=z;if(z&&j.value===undefined&&j.label===undefined){j.value=j.label=z}j.html=x.html||"";if(x.html&&x.html!=""){if(z&&z!=""){}}j.group=y;j.checked=x.checked||false;j.groupHtml=x.groupHtml||"";j.disabled=x.disabled||false;j.visible=x.visible!=undefined?x.visible:true;j.searchLabel=v;j.index=b;e[b]=j;b++;return j});var c=new Array();var p=0;if(this.fromSelect==undefined||this.fromSelect==false){for(var h=0;h=this.items.length){g.index=this.items.length;this.items[this.items.length]=g}else{var c=new Array();var j=0;var e=false;var h=0;for(var b=0;b=f&&!e){c[j++]=g;g.index=f;h++;e=true}}c[j]=this.items[b];if(!this.items[b].isGroup){c[j].index=h;h++}j++}this.items=c}var k=g.value;if(g.value==""||g.value==null){k=f}this.itemsByValue[a.trim(k).split(" ").join("?")]=g;this.visibleItems=new Array();this.renderedVisibleItems=new Array();var d=a.data(this.vScrollBar[0],"MLjquiScrollBar").instance;var i=d.value;d.setPosition(0);if((this.allowDrag&&this._enableDragDrop)||(this.virtualSize&&this.virtualSize.height<10+this.host.height())){this._addItems(true)}else{this._addItems(false)}if(this.groups.length>1){}this._renderItems();if(this.allowDrag&&this._enableDragDrop){this._enableDragDrop()}d.setPosition(i);if(this.rendered){this.rendered()}return true},removeAt:function(j){if(j<0||j>this.items.length-1){return false}if(j==undefined){return false}var d=this.items[j].height;var n=this.items[j].value;if(n==""||n==null){n=j}this.itemsByValue[a.trim(n).split(" ").join("?")]=null;if(this.groups.length>1){var h=new Array();for(var b=0;b0){if(this.virtualSize){this.virtualSize.height-=d;var o=this.virtualSize.itemsPerPage*2;if(this.autoHeight){o=this.items.length}this.virtualItemsCount=Math.min(o,this.items.length)}this._updatescrollbars()}else{this._addItems()}this._renderItems();if(this.allowDrag&&this._enableDragDrop){this._enableDragDrop()}if(this.vScrollBar.css("visibility")!="hidden"){e.setPosition(l)}else{e.setPosition(0)}this.itemsByValue=new Array();for(var g=0;gthis.items.length-1){return false}this.items[b].disabled=true;this._renderItems();return true},enableAt:function(b){if(!this.items){return false}if(b<0||b>this.items.length-1){return false}this.items[b].disabled=false;this._renderItems();return true},destroy:function(){if(this.source&&this.source.unbindBindingUpdate){this.source.unbindBindingUpdate(this.element.id)}this._removeHandlers();this.vScrollBar.MLjquiScrollBar("destroy");this.hScrollBar.MLjquiScrollBar("destroy");this.vScrollBar.remove();this.hScrollBar.remove();this.content.remove();a.MLjqui.utilities.resize(this.host,null,true);var b=a.data(this.element,"MLjquiListBox");delete this.hScrollInstance;delete this.vScrollInstance;delete this.vScrollBar;delete this.hScrollBar;delete this.content;delete this.bottomRight;delete this.itemswrapper;delete this.visualItems;delete this.visibleItems;delete this.items;delete this.groups;delete this.renderedVisibleItems;delete this._mousewheelfunc;delete this._mousemovefunc;delete this._cachedItemHtml;delete this.itemsByValue;delete this._activeElement;delete this.source;delete this.events;if(this.input){this.input.remove();delete this.input}if(b){delete b.instance}this.host.removeData();this.host.removeClass();this.host.remove();this.element=null;delete this.element;this.host=null;delete this.set;delete this.get;delete this.call;delete this.host},_raiseEvent:function(f,c){if(this._stopEvents==true){return true}if(c==undefined){c={owner:null}}var d=this.events[f];args=c;args.owner=this;this._updateInputSelection();var e=new a.Event(d);e.owner=this;e.args=args;if(this.host!=null){var b=this.host.trigger(e)}return b}})})(MLjquiBaseFramework);(function(a){a.MLjqui.parseSourceTag=function(m){var l=new Array();var o=a(m).find("option");var b=a(m).find("optgroup");var k=false;if(o.length===0){o=a(m).find("li");if(o.length>0){k=true}}var d=null;var j=0;var d=-1;var h=this;var c=new Array();a.each(o,function(p){var q=b.find(this).length>0;var s=null;if(this.text!=null&&(this.label==null||this.label=="")){this.label=this.text}if(k===true){this.label=a(this).text();this.selected=a(this).attr("data-selected");this.checked=this.selected;this.value=a(this).attr("data-value")||p;this.disabled=a(this).attr("disabled")}var r={style:this.style.cssText,selected:this.selected,html:this.innerHTML,classes:this.className,disabled:this.disabled,value:this.value,label:this.label,title:this.title,originalItem:this};var i=a.MLjqui.browser.msie&&a.MLjqui.browser.version<8;if(i&&!k){if(r.value==""&&this.text!=null&&this.text.length>0){r.value=this.text}}if(q){s=b.find(this).parent()[0].label;r.group=s;if(!c[s]){c[s]=new Array();c.length++}c[s].push(r)}if(this.selected){d=p}r.checked=this.selected;if(r.label!==undefined){l.push(r)}});if(c.length>0){var n=new Array();for(var f in c){if(f==="indexOf"){continue}var g=null;for(var e=0;e0){return{items:n,index:d}}else{return{items:l,index:d}}};a.MLjqui._MLjquiListBox.item=function(){var b={group:"",groupHtml:"",selected:false,isGroup:false,highlighted:false,value:null,label:"",html:null,visible:true,disabled:false,element:null,width:null,height:null,initialTop:null,top:null,left:null,title:"",index:-1,checkBoxElement:null,originalItem:null,checked:false,visibleIndex:-1};return b}})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiloader.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiloader.js deleted file mode 100644 index 7b29a118..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiloader.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.2 (2016-Apr) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a){a.MLjqui.MLjquiWidget("MLjquiLoader","",{});a.extend(a.MLjqui._MLjquiLoader.prototype,{defineInstance:function(){var b={width:200,height:150,text:"Loading...",html:null,textPosition:"bottom",imagePosition:"center",isModal:false,autoOpen:false,rtl:false,events:["create"]};a.extend(true,this,b)},createInstance:function(b){var c=this;c._render(true);c._raiseEvent("0")},render:function(){this._render()},open:function(d,c){var b=this;if(this.width!==null&&this.width.toString().indexOf("%")!==-1){b.host.css("width",this.width)}if(this.height!==null&&this.height.toString().indexOf("%")!==-1){b.host.css("height",this.height)}b.host.show();b.host.css("left",-b.host.width()/2);b.host.css("top",-b.host.height()/2);if(d&&c){b.host.css("left",d);b.host.css("top",c)}if(b.isModal){b._modal.show()}},close:function(){var b=this;b.host.hide();if(b.isModal){b._modal.hide()}},_checkBrowser:function(){var b=this;if(a.MLjqui.browser.browser==="msie"){if(a.MLjqui.browser.version==="7.0"){if(b.isModal===false){b.host.addClass(b.toThemeProperty("MLjqui-loader-ie-transparency"))}b.host.css("top",Math.max(0,((a(window).height()-a(b.host).outerHeight())/2)+a(window).scrollTop())+"px");b.host.css("left",Math.max(0,((a(window).width()-a(b.host).outerWidth())/2)+a(window).scrollLeft())+"px");a(window).resize(function(){b.host.css("top",Math.max(0,((a(window).height()-a(b.host).outerHeight())/2)+a(window).scrollTop())+"px");b.host.css("left",Math.max(0,((a(window).width()-a(b.host).outerWidth())/2)+a(window).scrollLeft())+"px")});this.host.css({"margin-top":"0","margin-left":"0"})}else{if(a.MLjqui.browser.version==="8.0"){if(b.isModal===false){b.host.addClass(b.toThemeProperty("MLjqui-loader-ie-transparency"))}}}}},_textPos:function(){var b=this;this._text=b.host.children("div:eq(1)");if(this._image){this._image.css("background-position-y",b.imagePosition)}if(b.textPosition==="top"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-bottom"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-right"))}else{if(b.textPosition==="bottom"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-bottom"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-right"))}else{if(b.textPosition==="left"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-right"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-bottom"))}else{if(b.textPosition==="right"){this._text.addClass(b.toThemeProperty("MLjqui-loader-text-right"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-left"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-top"));this._text.removeClass(b.toThemeProperty("MLjqui-loader-text-bottom"))}}}}},refresh:function(b){if(b!==true){this._render(false)}},destroy:function(){var b=this;b._removeHandlers();b.host.remove()},propertyChangedHandler:function(b,c,e,d){if(d!==e){switch(c){case"width":b.host.width(d);break;case"height":b.host.height(d);break;case"text":b._text.text(d);break;case"html":b.host.html(d);break;case"textPosition":b._textPos(d);break;case"rtl":if(d===true){b._text.addClass(b.toThemeProperty("MLjqui-loader-rtl"))}else{b._text.removeClass(b.toThemeProperty("MLjqui-loader-rtl"))}break}}},_raiseEvent:function(h,e){var g=this;var c=g.events[h];var f=new a.Event(c);f.owner=g;f.args=e;try{var b=g.host.trigger(f)}catch(d){}return b},_render:function(b){var c=this;c.host.width(c.width);c.host.height(c.height);if(c.autoOpen===false){c.host.hide()}if(b){if(c.html===null){c.host.append('
              '+c.text+"
              ");c._image=c.host.children("div:eq(0)");c._text=c.host.children("div:eq(1)")}else{c.host.html(this.html)}if(c.isModal===true){var d=c.host.css("display");c._modal=a('
              ');a("body").append(c._modal)}}c._checkBrowser();c._textPos();c._addClass();c._removeHandlers();c._addHandlers()},_addHandlers:function(){var b=this;if(b.isModal===true){b.addHandler(a(document),"keyup.loader"+b.element.id,function(c){if(c.keyCode===27){b.close()}})}},_removeHandlers:function(){var b=this;b.removeHandler(a(document),"keyup.loader"+b.element.id)},_addClass:function(){var b=this;b.host.addClass(b.toThemeProperty("MLjqui-widget"));b.host.addClass(b.toThemeProperty("MLjqui-loader"));b.host.addClass(b.toThemeProperty("MLjqui-rc-all"));b.host.addClass(b.toThemeProperty("MLjqui-fill-state-normal"));if(b.rtl){b._text.addClass(b.toThemeProperty("MLjqui-loader-rtl"))}if(a.MLjqui.browser.msie){b.host.addClass(this.toThemeProperty("MLjqui-noshadow"))}b.host.addClass(this.toThemeProperty("MLjqui-rc-t"));b.host.addClass(this.toThemeProperty("MLjqui-rc-b"));b.host.addClass(this.toThemeProperty("MLjqui-popup"))}})})(MLjquiBaseFramework); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiscrollbar.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiscrollbar.js deleted file mode 100644 index 56902499..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiscrollbar.js +++ /dev/null @@ -1,7 +0,0 @@ -/* -jQWidgets v4.1.0 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a){a.MLjqui.MLjquiWidget("MLjquiScrollBar","",{});a.extend(a.MLjqui._MLjquiScrollBar.prototype,{defineInstance:function(){var b={height:null,width:null,vertical:false,min:0,max:1000,value:0,step:10,largestep:50,thumbMinSize:10,thumbSize:0,thumbStep:"auto",roundedCorners:"all",showButtons:true,disabled:false,touchMode:"auto",touchModeStyle:"auto",thumbTouchSize:0,_triggervaluechanged:true,rtl:false,areaDownCapture:false,areaUpCapture:false,_initialLayout:false,offset:0,reference:0,velocity:0,frame:0,timestamp:0,ticker:null,amplitude:0,target:0};a.extend(true,this,b);return b},createInstance:function(b){this.render()},render:function(){this._mouseup=new Date();var c=this;var d="
              ";if(a.MLjqui.utilities&&a.MLjqui.utilities.scrollBarButtonsVisibility=="hidden"){this.showButtons=false}if(c.WinJS){MSApp.execUnsafeLocalFunction(function(){c.host.html(d)})}else{this.element.innerHTML=d}if(this.width!=undefined&&parseInt(this.width)>0){this.host.width(parseInt(this.width))}if(this.height!=undefined&&parseInt(this.height)>0){this.host.height(parseInt(this.height))}this.isPercentage=false;if(this.width!=null&&this.width.toString().indexOf("%")!=-1){this.host.width(this.width);this.isPercentage=true}if(this.height!=null&&this.height.toString().indexOf("%")!=-1){this.host.height(this.height);this.isPercentage=true}if(this.isPercentage){var e=this;a.MLjqui.utilities.resize(this.host,function(){e._arrange()},false)}this.thumbCapture=false;this.scrollOuterWrap=a(this.element.firstChild);this.scrollWrap=a(this.scrollOuterWrap[0].firstChild);this.btnUp=a(this.scrollWrap[0].firstChild);this.areaUp=a(this.btnUp[0].nextSibling);this.btnThumb=a(this.areaUp[0].nextSibling);this.arrowUp=a(this.btnUp[0].firstChild);this.areaDown=a(this.btnThumb[0].nextSibling);this.btnDown=a(this.areaDown[0].nextSibling);this.arrowDown=a(this.btnDown[0].firstChild);var b=this.element.id;this.btnUp[0].id="MLjquiScrollBtnUp"+b;this.btnDown[0].id="MLjquiScrollBtnDown"+b;this.btnThumb[0].id="MLjquiScrollThumb"+b;this.areaUp[0].id="MLjquiScrollAreaUp"+b;this.areaDown[0].id="MLjquiScrollAreaDown"+b;this.scrollWrap[0].id="MLjquiScrollWrap"+b;this.scrollOuterWrap[0].id="MLjquiScrollOuterWrap"+b;if(!this.host.MLjquiRepeatButton){throw new Error("MLjquiScrollBar: Missing reference to MLjquibuttons.js.");return}this.btnUp.MLjquiRepeatButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.btnDown.MLjquiRepeatButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.btnDownInstance=a.data(this.btnDown[0],"MLjquiRepeatButton").instance;this.btnUpInstance=a.data(this.btnUp[0],"MLjquiRepeatButton").instance;this.areaUp.MLjquiRepeatButton({_scrollAreaButton:true,_ariaDisabled:true,overrideTheme:true});this.areaDown.MLjquiRepeatButton({_scrollAreaButton:true,_ariaDisabled:true,overrideTheme:true});this.btnThumb.MLjquiButton({_ariaDisabled:true,overrideTheme:true,disabled:this.disabled});this.propertyChangeMap.value=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.setPosition(parseFloat(i),true)}}};this.propertyChangeMap.width=function(f,h,g,i){if(f.width!=undefined&&parseInt(f.width)>0){f.host.width(parseInt(f.width));f._arrange()}};this.propertyChangeMap.height=function(f,h,g,i){if(f.height!=undefined&&parseInt(f.height)>0){f.host.height(parseInt(f.height));f._arrange()}};this.propertyChangeMap.theme=function(f,h,g,i){f.setTheme()};this.propertyChangeMap.max=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.max=parseInt(i);if(f.min>f.max){f.max=f.min+1}f._arrange();f.setPosition(f.value)}}};this.propertyChangeMap.min=function(f,h,g,i){if(!(isNaN(i))){if(g!=i){f.min=parseInt(i);if(f.min>f.max){f.max=f.min+1}f._arrange();f.setPosition(f.value)}}};this.propertyChangeMap.disabled=function(f,h,g,i){if(g!=i){if(i){f.host.addClass(f.toThemeProperty("MLjqui-fill-state-disabled"))}else{f.host.removeClass(f.toThemeProperty("MLjqui-fill-state-disabled"))}f.btnUp.MLjquiRepeatButton("disabled",f.disabled);f.btnDown.MLjquiRepeatButton("disabled",f.disabled);f.btnThumb.MLjquiButton("disabled",f.disabled)}};this.propertyChangeMap.touchMode=function(f,h,g,i){if(g!=i){f._updateTouchBehavior();if(i===true){f.showButtons=false;f.refresh()}else{if(i===false){f.showButtons=true;f.refresh()}}}};this.propertyChangeMap.rtl=function(f,h,g,i){if(g!=i){f.refresh()}};this.buttonUpCapture=false;this.buttonDownCapture=false;this._updateTouchBehavior();this.setPosition(this.value);this._addHandlers();this.setTheme()},resize:function(c,b){this.width=c;this.height=b;this._arrange()},_updateTouchBehavior:function(){this.isTouchDevice=a.MLjqui.mobile.isTouchDevice();if(this.touchMode==true){if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<9){this.setTheme();return}this.isTouchDevice=true;a.MLjqui.mobile.setMobileSimulator(this.btnThumb[0]);this._removeHandlers();this._addHandlers();this.setTheme()}else{if(this.touchMode==false){this.isTouchDevice=false}}},_addHandlers:function(){var j=this;var e=false;try{if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){e=true;this._touchSupport=true}}catch(f){}if(j.isTouchDevice||e){this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchend"),function(k){var l=j.vertical?j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");var m=j.toThemeProperty("MLjqui-fill-state-pressed");j.btnThumb.removeClass(l);j.btnThumb.removeClass(m);if(!j.disabled){j.handlemouseup(j,k)}return false});this.addHandler(this.btnThumb,a.MLjqui.mobile.getTouchEventName("touchstart"),function(k){if(!j.disabled){if(j.touchMode==true){k.clientX=k.originalEvent.clientX;k.clientY=k.originalEvent.clientY}else{var l=k;if(l.originalEvent.touches&&l.originalEvent.touches.length){k.clientX=l.originalEvent.touches[0].clientX;k.clientY=l.originalEvent.touches[0].clientY}else{k.clientX=k.originalEvent.clientX;k.clientY=k.originalEvent.clientY}}j.handlemousedown(k);if(k.preventDefault){k.preventDefault()}}});a.MLjqui.mobile.touchScroll(this.element,j.max,function(q,p,l,k,m){if(j.host.css("visibility")=="visible"){if(j.touchMode==true){m.clientX=m.originalEvent.clientX;m.clientY=m.originalEvent.clientY}else{var o=m;if(o.originalEvent.touches&&o.originalEvent.touches.length){m.clientX=o.originalEvent.touches[0].clientX;m.clientY=o.originalEvent.touches[0].clientY}else{m.clientX=m.originalEvent.clientX;m.clientY=m.originalEvent.clientY}}var n=j.vertical?j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):j.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");j.btnThumb.addClass(n);j.btnThumb.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.thumbCapture=true;j.handlemousemove(m)}},j.element.id,j.host,j.host)}if(!this.isTouchDevice){try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var b=null;if(window.parent&&document.referrer){b=document.referrer}if(b&&b.indexOf(document.location.host)!=-1){var g=function(k){if(!j.disabled){j.handlemouseup(j,k)}};if(window.top.document.addEventListener){window.top.document.addEventListener("mouseup",g,false)}else{if(window.top.document.attachEvent){window.top.document.attachEvent("onmouseup",g)}}}}}}catch(i){}var c="click mouseup mousedown";this.addHandler(this.btnDown,c,function(l){var k=j.step;if(Math.abs(j.max-j.min)<=k){k=1}if(j.rtl&&!j.vertical){k=-j.step}switch(l.type){case"click":if(j.buttonDownCapture&&!j.isTouchDevice){if(!j.disabled){j.setPosition(j.value+k)}}else{if(!j.disabled&&j.isTouchDevice){j.setPosition(j.value+k)}}break;case"mouseup":if(!j.btnDownInstance.base.disabled&&j.buttonDownCapture){j.buttonDownCapture=false;j.btnDown.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j.btnDown.removeClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j._removeArrowClasses("pressed","down");j.handlemouseup(j,l);j.setPosition(j.value+k);return false}break;case"mousedown":if(!j.btnDownInstance.base.disabled){j.buttonDownCapture=true;j.btnDown.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.btnDown.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j._addArrowClasses("pressed","down");return false}break}});this.addHandler(this.btnUp,c,function(l){var k=j.step;if(Math.abs(j.max-j.min)<=k){k=1}if(j.rtl&&!j.vertical){k=-j.step}switch(l.type){case"click":if(j.buttonUpCapture&&!j.isTouchDevice){if(!j.disabled){j.setPosition(j.value-k)}}else{if(!j.disabled&&j.isTouchDevice){j.setPosition(j.value-k)}}break;case"mouseup":if(!j.btnUpInstance.base.disabled&&j.buttonUpCapture){j.buttonUpCapture=false;j.btnUp.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j.btnUp.removeClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j._removeArrowClasses("pressed","up");j.handlemouseup(j,l);j.setPosition(j.value-k);return false}break;case"mousedown":if(!j.btnUpInstance.base.disabled){j.buttonUpCapture=true;j.btnUp.addClass(j.toThemeProperty("MLjqui-fill-state-pressed"));j.btnUp.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));j._addArrowClasses("pressed","up");return false}break}})}var h="click";if(this.isTouchDevice){h=a.MLjqui.mobile.getTouchEventName("touchend")}this.addHandler(this.areaUp,h,function(l){if(!j.disabled){var k=j.largestep;if(j.rtl&&!j.vertical){k=-j.largestep}j.setPosition(j.value-k);return false}});this.addHandler(this.areaDown,h,function(l){if(!j.disabled){var k=j.largestep;if(j.rtl&&!j.vertical){k=-j.largestep}j.setPosition(j.value+k);return false}});this.addHandler(this.areaUp,"mousedown",function(k){if(!j.disabled){j.areaUpCapture=true;return false}});this.addHandler(this.areaDown,"mousedown",function(k){if(!j.disabled){j.areaDownCapture=true;return false}});this.addHandler(this.btnThumb,"mousedown dragstart",function(k){if(k.type==="dragstart"){return false}if(!j.disabled){j.handlemousedown(k)}if(k.preventDefault){k.preventDefault()}});this.addHandler(a(document),"mouseup."+this.element.id,function(k){if(!j.disabled){j.handlemouseup(j,k)}});if(!this.isTouchDevice){this.mousemoveFunc=function(k){if(!j.disabled){j.handlemousemove(k)}};this.addHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc);this.addHandler(a(document),"mouseleave."+this.element.id,function(k){if(!j.disabled){j.handlemouseleave(k)}});this.addHandler(a(document),"mouseenter."+this.element.id,function(k){if(!j.disabled){j.handlemouseenter(k)}});if(!j.disabled){this.addHandler(this.btnUp,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&!j.btnUpInstance.base.disabled&&j.touchMode!=true){j.btnUp.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnUp.addClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._addArrowClasses("hover","up")}}else{if(!j.disabled&&!j.btnUpInstance.base.disabled&&j.touchMode!=true){j.btnUp.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnUp.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._removeArrowClasses("hover","up")}}});var d=j.toThemeProperty("MLjqui-scrollbar-thumb-state-hover");if(!j.vertical){d=j.toThemeProperty("MLjqui-scrollbar-thumb-state-hover-horizontal")}this.addHandler(this.btnThumb,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&j.touchMode!=true){j.btnThumb.addClass(d);j.btnThumb.addClass(j.toThemeProperty("MLjqui-fill-state-hover"))}}else{if(!j.disabled&&j.touchMode!=true){j.btnThumb.removeClass(d);j.btnThumb.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"))}}});this.addHandler(this.btnDown,"mouseenter mouseleave",function(k){if(k.type==="mouseenter"){if(!j.disabled&&!j.btnDownInstance.base.disabled&&j.touchMode!=true){j.btnDown.addClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnDown.addClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._addArrowClasses("hover","down")}}else{if(!j.disabled&&!j.btnDownInstance.base.disabled&&j.touchMode!=true){j.btnDown.removeClass(j.toThemeProperty("MLjqui-scrollbar-button-state-hover"));j.btnDown.removeClass(j.toThemeProperty("MLjqui-fill-state-hover"));j._removeArrowClasses("hover","down")}}})}}},destroy:function(){var b=this.btnUp;var f=this.btnDown;var d=this.btnThumb;var c=this.scrollWrap;var h=this.areaUp;var e=this.areaDown;this.arrowUp.remove();delete this.arrowUp;this.arrowDown.remove();delete this.arrowDown;e.removeClass();h.removeClass();f.removeClass();b.removeClass();d.removeClass();b.MLjquiRepeatButton("destroy");f.MLjquiRepeatButton("destroy");h.MLjquiRepeatButton("destroy");e.MLjquiRepeatButton("destroy");d.MLjquiButton("destroy");var g=a.data(this.element,"MLjquiScrollBar");this._removeHandlers();this.btnUp=null;this.btnDown=null;this.scrollWrap=null;this.areaUp=null;this.areaDown=null;this.scrollOuterWrap=null;delete this.mousemoveFunc;delete this.btnDownInstance;delete this.btnUpInstance;delete this.scrollOuterWrap;delete this.scrollWrap;delete this.btnDown;delete this.areaDown;delete this.areaUp;delete this.btnDown;delete this.btnUp;delete this.btnThumb;delete this.propertyChangeMap.value;delete this.propertyChangeMap.min;delete this.propertyChangeMap.max;delete this.propertyChangeMap.touchMode;delete this.propertyChangeMap.disabled;delete this.propertyChangeMap.theme;delete this.propertyChangeMap;if(g){delete g.instance}this.host.removeData();this.host.remove();delete this.host;delete this.set;delete this.get;delete this.call;delete this.element},_removeHandlers:function(){this.removeHandler(this.btnUp,"mouseenter");this.removeHandler(this.btnDown,"mouseenter");this.removeHandler(this.btnThumb,"mouseenter");this.removeHandler(this.btnUp,"mouseleave");this.removeHandler(this.btnDown,"mouseleave");this.removeHandler(this.btnThumb,"mouseleave");this.removeHandler(this.btnUp,"click");this.removeHandler(this.btnDown,"click");this.removeHandler(this.btnDown,"mouseup");this.removeHandler(this.btnUp,"mouseup");this.removeHandler(this.btnDown,"mousedown");this.removeHandler(this.btnUp,"mousedown");this.removeHandler(this.areaUp,"mousedown");this.removeHandler(this.areaDown,"mousedown");this.removeHandler(this.areaUp,"click");this.removeHandler(this.areaDown,"click");this.removeHandler(this.btnThumb,"mousedown");this.removeHandler(this.btnThumb,"dragstart");this.removeHandler(a(document),"mouseup."+this.element.id);if(!this.mousemoveFunc){this.removeHandler(a(document),"mousemove."+this.element.id)}else{this.removeHandler(a(document),"mousemove."+this.element.id,this.mousemoveFunc)}this.removeHandler(a(document),"mouseleave."+this.element.id);this.removeHandler(a(document),"mouseenter."+this.element.id);var b=this},_addArrowClasses:function(c,b){if(c=="pressed"){c="selected"}if(c!=""){c="-"+c}if(this.vertical){if(b=="up"||b==undefined){this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-up"+c))}if(b=="down"||b==undefined){this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-down"+c))}}else{if(b=="up"||b==undefined){this.arrowUp.addClass(this.toThemeProperty("MLjqui-icon-arrow-left"+c))}if(b=="down"||b==undefined){this.arrowDown.addClass(this.toThemeProperty("MLjqui-icon-arrow-right"+c))}}},_removeArrowClasses:function(c,b){if(c=="pressed"){c="selected"}if(c!=""){c="-"+c}if(this.vertical){if(b=="up"||b==undefined){this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-up"+c))}if(b=="down"||b==undefined){this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-down"+c))}}else{if(b=="up"||b==undefined){this.arrowUp.removeClass(this.toThemeProperty("MLjqui-icon-arrow-left"+c))}if(b=="down"||b==undefined){this.arrowDown.removeClass(this.toThemeProperty("MLjqui-icon-arrow-right"+c))}}},setTheme:function(){var o=this.btnUp;var m=this.btnDown;var p=this.btnThumb;var e=this.scrollWrap;var g=this.areaUp;var h=this.areaDown;var f=this.arrowUp;var i=this.arrowDown;this.scrollWrap[0].className=this.toThemeProperty("MLjqui-reset");this.scrollOuterWrap[0].className=this.toThemeProperty("MLjqui-reset");var k=this.toThemeProperty("MLjqui-reset");this.areaDown[0].className=k;this.areaUp[0].className=k;var d=this.toThemeProperty("MLjqui-scrollbar")+" "+this.toThemeProperty("MLjqui-widget")+" "+this.toThemeProperty("MLjqui-widget-content");this.host.addClass(d);if(this.isTouchDevice){this.host.addClass(this.toThemeProperty("MLjqui-scrollbar-mobile"))}m[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");o[0].className=this.toThemeProperty("MLjqui-scrollbar-button-state-normal");var q="";if(this.vertical){f[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-up");i[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-down");q=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal")}else{f[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-left");i[0].className=k+" "+this.toThemeProperty("MLjqui-icon-arrow-right");q=this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-horizontal")}q+=" "+this.toThemeProperty("MLjqui-fill-state-normal");p[0].className=q;if(this.disabled){e.addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));e.removeClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"))}else{e.addClass(this.toThemeProperty("MLjqui-scrollbar-state-normal"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"))}if(this.roundedCorners=="all"){this.host.addClass(this.toThemeProperty("MLjqui-rc-all"));if(this.vertical){var j=a.MLjqui.cssroundedcorners("top");j=this.toThemeProperty(j);o.addClass(j);var c=a.MLjqui.cssroundedcorners("bottom");c=this.toThemeProperty(c);m.addClass(c)}else{var n=a.MLjqui.cssroundedcorners("left");n=this.toThemeProperty(n);o.addClass(n);var l=a.MLjqui.cssroundedcorners("right");l=this.toThemeProperty(l);m.addClass(l)}}else{var b=a.MLjqui.cssroundedcorners(this.roundedCorners);b=this.toThemeProperty(b);elBtnUp.addClass(b);elBtnDown.addClass(b)}var b=a.MLjqui.cssroundedcorners(this.roundedCorners);b=this.toThemeProperty(b);if(!p.hasClass(b)){p.addClass(b)}if(this.isTouchDevice&&this.touchModeStyle!=false){this.showButtons=false;p.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-normal-touch"))}},isScrolling:function(){if(this.thumbCapture==undefined||this.buttonDownCapture==undefined||this.buttonUpCapture==undefined||this.areaDownCapture==undefined||this.areaUpCapture==undefined){return false}return this.thumbCapture||this.buttonDownCapture||this.buttonUpCapture||this.areaDownCapture||this.areaUpCapture},track:function(){var d,b,e,c;d=Date.now();b=d-this.timestamp;this.timestamp=d;e=this.offset-this.frame;this.frame=this.offset;c=1000*e/(1+b);this.velocity=0.2*c+0.2*this.velocity},handlemousedown:function(e){if(this.thumbCapture==undefined||this.thumbCapture==false){this.thumbCapture=true;var c=this.btnThumb;if(c!=null){c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(this.vertical){c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"))}else{c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"))}}}var d=this;function b(f){d.reference=parseInt(d.btnThumb[0].style.top);d.offset=parseInt(d.btnThumb[0].style.top);if(!d.vertical){d.reference=parseInt(d.btnThumb[0].style.left);d.offset=parseInt(d.btnThumb[0].style.left)}d.velocity=d.amplitude=0;d.frame=d.offset;d.timestamp=Date.now();clearInterval(d.ticker);d.ticker=setInterval(function(){d.track()},100)}if(this.thumbCapture&&a.MLjqui.scrollAnimation){b(e)}this.dragStartX=e.clientX;this.dragStartY=e.clientY;this.dragStartValue=this.value},toggleHover:function(c,b){},refresh:function(){this._arrange()},_setElementPosition:function(c,b,d){if(!isNaN(b)){if(parseInt(c[0].style.left)!=parseInt(b)){c[0].style.left=b+"px"}}if(!isNaN(d)){if(parseInt(c[0].style.top)!=parseInt(d)){c[0].style.top=d+"px"}}},_setElementTopPosition:function(b,c){if(!isNaN(c)){b[0].style.top=c+"px"}},_setElementLeftPosition:function(c,b){if(!isNaN(b)){c[0].style.left=b+"px"}},handlemouseleave:function(e){var b=this.btnUp;var d=this.btnDown;if(this.buttonDownCapture||this.buttonUpCapture){b.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));d.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));this._removeArrowClasses("pressed")}if(this.thumbCapture!=true){return}var c=this.btnThumb;var f=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");c.removeClass(f);c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"))},handlemouseenter:function(e){var b=this.btnUp;var d=this.btnDown;if(this.buttonUpCapture){b.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));b.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._addArrowClasses("pressed","up")}if(this.buttonDownCapture){d.addClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));d.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._addArrowClasses("pressed","down")}if(this.thumbCapture!=true){return}var c=this.btnThumb;if(this.vertical){c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"))}else{c.addClass(this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal"))}c.addClass(this.toThemeProperty("MLjqui-fill-state-pressed"))},handlemousemove:function(b){var i=this.btnUp;var e=this.btnDown;var d=0;if(e==null||i==null){return}if(i!=null&&e!=null&&this.buttonDownCapture!=undefined&&this.buttonUpCapture!=undefined){if(this.buttonDownCapture&&b.which==d){e.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed","down");this.buttonDownCapture=false}else{if(this.buttonUpCapture&&b.which==d){i.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed","up");this.buttonUpCapture=false}}}if(this.thumbCapture!=true){return false}var k=this.btnThumb;if(b.which==d&&!this.isTouchDevice&&!this._touchSupport){this.thumbCapture=false;this._arrange();var j=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");k.removeClass(j);k.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));return true}if(b.preventDefault!=undefined){b.preventDefault()}if(b.originalEvent!=null){b.originalEvent.mouseHandled=true}if(b.stopPropagation!=undefined){b.stopPropagation()}var l=0;try{if(!this.vertical){l=b.clientX-this.dragStartX}else{l=b.clientY-this.dragStartY}var f=this._btnAndThumbSize;if(!this._btnAndThumbSize){f=(this.vertical)?i.height()+e.height()+k.height():i.width()+e.width()+k.width()}var g=(this.max-this.min)/(this.scrollBarSize-f);if(this.thumbStep=="auto"){l*=g}else{l*=g;if(Math.abs(this.dragStartValue+l-this.value)>=parseInt(this.thumbStep)){var c=Math.round(parseInt(l)/this.thumbStep)*this.thumbStep;if(this.rtl&&!this.vertical){this.setPosition(this.dragStartValue-c)}else{this.setPosition(this.dragStartValue+c)}return false}else{return false}}var c=l;if(this.rtl&&!this.vertical){c=-l}this.setPosition(this.dragStartValue+c);this.offset=parseInt(k[0].style.left);if(this.vertical){this.offset=parseInt(k[0].style.top)}}catch(h){alert(h)}return false},handlemouseup:function(j,b){var g=false;if(this.thumbCapture){this.thumbCapture=false;var i=this.btnThumb;var h=this.vertical?this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed"):this.toThemeProperty("MLjqui-scrollbar-thumb-state-pressed-horizontal");i.removeClass(h);i.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));g=true;this._mouseup=new Date();if(a.MLjqui.scrollAnimation){var d=this;function f(){var k,o;if(d.amplitude){k=Date.now()-d.timestamp;o=-d.amplitude*Math.exp(-k/325);if(o>0.5||o<-0.5){var l=(d.max-d.min)/(d.scrollBarSize-d._btnAndThumbSize);var n=l*(d.target+o);var m=n;if(d.rtl&&!d.vertical){m=-n}d.setPosition(d.dragStartValue+m);requestAnimationFrame(f)}else{var l=(d.max-d.min)/(d.scrollBarSize-d._btnAndThumbSize);var n=l*(d.target+o);var m=n;if(d.rtl&&!d.vertical){m=-n}d.setPosition(d.dragStartValue+m)}}}clearInterval(this.ticker);if(this.velocity>25||this.velocity<-25){this.amplitude=0.8*this.velocity;this.target=Math.round(this.offset+this.amplitude);if(!this.vertical){this.target-=this.reference}else{this.target-=this.reference}this.timestamp=Date.now();requestAnimationFrame(f)}}}this.areaDownCapture=this.areaUpCapture=false;if(this.buttonUpCapture||this.buttonDownCapture){var e=this.btnUp;var c=this.btnDown;this.buttonUpCapture=false;this.buttonDownCapture=false;e.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));c.removeClass(this.toThemeProperty("MLjqui-scrollbar-button-state-pressed"));e.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));c.removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"));this._removeArrowClasses("pressed");g=true;this._mouseup=new Date()}if(g){if(b.preventDefault!=undefined){b.preventDefault()}if(b.originalEvent!=null){b.originalEvent.mouseHandled=true}if(b.stopPropagation!=undefined){b.stopPropagation()}}},setPosition:function(b,g){var d=this.element;if(b==undefined||b==NaN){b=this.min}if(b>=this.max){b=this.max}if(b1){d=(c/(b+c)*c)}else{if(b==1){d=c-1}else{if(b==0){d=c}}}if(this.thumbSize>0){d=this.thumbSize}if(d=0){e[0].style.width=m-k-i+"px"}else{e[0].style.width="0px"}this._setElementLeftPosition(n,l);this._setElementLeftPosition(o,l+k);this._setElementLeftPosition(e,2+l+k+d)}},_arrange:function(){var m=this;if(m._initialLayout){m._initialLayout=false;return}if(m.min>m.max){var x=m.min;m.min=m.max;m.max=x}if(m.min<0){var k=m.max-m.min;m.min=0;m.max=k}var d=m.element;var g=m.areaUp;var t=m.areaDown;var c=m.btnUp;var l=m.btnDown;var u=m.btnThumb;var p=m.scrollWrap;var n=parseInt(m.element.style.height);var q=parseInt(m.element.style.width);if(m.isPercentage){var n=m.host.height();var q=m.host.width()}if(isNaN(n)){n=0}if(isNaN(q)){q=0}m._width=q;m._height=n;var b=(!m.vertical)?n:q;if(!m.showButtons){b=0}c[0].style.width=b+"px";c[0].style.height=b+"px";l[0].style.width=b+"px";l[0].style.height=b+"px";if(m.vertical){p[0].style.width=q+2+"px"}else{p[0].style.height=n+2+"px"}m._setElementPosition(c,0,0);var s=b+2;if(m.vertical){m._setElementPosition(l,0,n-s)}else{m._setElementPosition(l,q-s,0)}var f=(!m.vertical)?q:n;m.scrollBarSize=f;var h=m._getThumbSize(f-2*s);h=Math.floor(h-2);if(h0){g[0].style.width=w+"px"}if(n>0){g[0].style.height=n+"px"}var j=(f-w-e);if(j<0){j=0}t[0].style.width=j+"px";t[0].style.height=n+"px";var r=parseInt(m.element.style.width);if(m.isPercentage){r=m.host.width()}u[0].style.visibility="inherit";if((r-3*parseInt(b)<0)||(r0&&e._contentList[e.selectedItem]){e._contentList[e.selectedItem].find("div").trigger(h)}},50+e.selectionTrackerAnimationDuration)}else{var f=new a.Event("loadContent");if(!e._initTabContentList[e.selectedItem]){if(e.initTabContent){e.initTabContent(e.selectedItem);e._initTabContentList[e.selectedItem]=true}}f.owner=this;var f=new a.Event("resize");this.host.trigger(f)}}}catch(c){if(c&&console){console.log(c)}}return b},_getArrowsDisplacement:function(){if(!this._needScroll){return 0}var d;var c=this.arrowButtonSize;var b=this.arrowButtonSize;if(this.scrollPosition==="left"){d=c+b}else{if(this.scrollPosition==="both"){d=c}else{d=0}}return d},_scrollRight:function(e,h){this._unorderedList.stop();this._unlockAnimation("unorderedList");var f=parseInt(this._unorderedList.width()+parseInt(this._unorderedList.css("margin-left")),10),i=parseInt(this.host.width(),10),g,j,b=parseInt(this._unorderedList.css("left"),10),c=this._getArrowsDisplacement(),d=0,k=undefined;if(this.scrollable){g=parseInt(this._leftArrow.outerWidth(),10);j=parseInt(this._rightArrow.outerWidth(),10)}else{g=0;j=0}e=(this.enableScrollAnimation)?e:0;if(parseInt(this._headerWrapper.width(),10)>parseInt(this._unorderedList.css("margin-left"))+parseInt(this._unorderedList.width(),10)){d=c}else{if(Math.abs(b)+this.scrollStepparseInt(this._unorderedList.css("left"),10)+4){k=i-f-g-j+parseInt(this._titleList[this._selectedItem].position().left)}}}this._performScrollAnimation(d,k,e)},_scrollLeft:function(f,g){this._unorderedList.stop();this._unlockAnimation("unorderedList");var b=parseInt(this._unorderedList.css("left")),c=this._getArrowsDisplacement(),e=0,d=undefined;f=(this.enableScrollAnimation)?f:0;if(parseInt(this._headerWrapper.width())>=parseInt(this._unorderedList.width())){e=c}else{if(b+this.scrollStepparseInt(this._unorderedList.css("left"))+4){d=parseInt(this._titleList[this._selectedItem].position().left)}}}this._performScrollAnimation(e,d,f)},_performScrollAnimation:function(e,d,c){var b=this;if(d!==undefined){this._moveSelectionTrack(this._selectedItem,0,d)}this._lockAnimation("unorderedList");this._unorderedList.animate({left:e},c,function(){b._moveSelectionTrack(b.selectedItem,0);b._unlockAnimation("unorderedList")})},_addKeyboardHandlers:function(){var b=this;if(this.keyboardNavigation){this.addHandler(this.host,"keydown",function(e){if(!b._activeAnimation()){var f=b._selectedItem;var d=b.selectionTracker;var c=b.getContentAt(f);if(a(e.target).ischildof(c)){return true}switch(e.keyCode){case 37:if(b.rtl){b.next()}else{b.previous()}return false;case 39:if(b.rtl){b.previous()}else{b.next()}return false;case 36:b.first();return false;case 35:b.last();return false;case 27:if(b._tabCaptured){b._cancelClick=true;b._uncapture(null,b.selectedItem);b._tabCaptured=false}break}b.selectionTracker=d}return true})}},_addScrollHandlers:function(){var b=this;this.addHandler(this._leftArrow,"mousedown",function(){b._startScrollRepeat(true,b.scrollAnimationDuration)});this.addHandler(this._rightArrow,"mousedown",function(){b._startScrollRepeat(false,b.scrollAnimationDuration)});this.addHandler(this._rightArrow,"mouseleave",function(){clearTimeout(b._scrollTimeout)});this.addHandler(this._leftArrow,"mouseleave",function(){clearTimeout(b._scrollTimeout)});this.addHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpScrollDocumentHandler,this);this.addHandler(a(document),"mouseleave.tab"+this.element.id,this._mouseLeaveScrollDocumentHandler,this)},_mouseLeaveScrollDocumentHandler:function(c){var b=c.data;if(!b._scrollTimeout){return}clearTimeout(b._scrollTimeout)},_mouseUpScrollDocumentHandler:function(c){var b=c.data;clearTimeout(b._scrollTimeout)},_mouseUpDragDocumentHandler:function(c){var b=c.data;if(b._tabCaptured&&b._dragStarted){b._uncapture(c)}b._tabCaptured=false},_addReorderHandlers:function(){var b=this;this.addHandler(a(document),"mousemove.tab"+this.element.id,this._moveElement,this);this.addHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpDragDocumentHandler,this)},_addEventHandlers:function(){var e=this.length();while(e){e--;this._addEventListenerAt(e)}if(this.keyboardNavigation){this._addKeyboardHandlers()}if(this.scrollable){this._addScrollHandlers()}if(this.reorder&&!this._isTouchDevice){this._addReorderHandlers()}var d=this;try{if(document.referrer!=""||window.frameElement){if(window.top!=null&&window.top!=window.self){var c=function(g){if(d._tabCaptured){d._cancelClick=true;d._uncapture(null,d.selectedItem);d._tabCaptured=false}};var f=null;if(window.parent&&document.referrer){f=document.referrer}if(f&&f.indexOf(document.location.host)!=-1){if(window.top.document){this.addHandler(a(window.top.document),"mouseup",c)}}}}}catch(b){}},focus:function(){try{this.host.focus();var c=this;setTimeout(function(){c.host.focus()},25)}catch(b){}},_getFocusedItem:function(f,e){var i=this.length();while(i){i--;var h=this._titleList[i],g=parseInt(h.outerWidth(true)),d=parseInt(h.offset().left),c=parseInt(this._unorderedList.offset().left),j=parseInt(this.host.offset().left),b=d;if((b<=f&&b+g>=f)&&(h!==this._capturedElement)&&(!this._titleList[i].locked)&&(this._titleList[i].disabled!==true)){return i}}return -1},_uncapture:function(e){var d=this.selectionTracker;this._unorderedListLeftBackup=this._unorderedList.css("left");this._dragStarted=false;this._tabCaptured=false;var b=this._indexOf(this._capturedElement);if(!this._capturedElement){return}switch(this.position){case"top":this._capturedElement.css("bottom",0);break;case"bottom":this._capturedElement.css("top",0);break}if(e){var c=this._getFocusedItem(e.clientX,e.clientY)}if(c===-1||!e){this._capturedElement.css("left",0)}else{this._raiseEvent(10,{item:b,dropIndex:c});this._reorderItems(c,b)}a.each(this._titleList,function(){this.css("position","static")});this._reorderHeaderElements();this._unorderedList.css({position:"relative",top:"0px"});this._prepareTabs();if(c===-1||!e){this._selectedItem=b;this._moveSelectionTrack(b,0);this._addSelectStyle(this._selectedItem,true)}else{this._moveSelectionTrack(this._selectedItem,0);this._addSelectStyle(this._selectedItem,true)}if(document.selection){document.selection.clear()}this._unorderedList.css("left",this._unorderedListLeftBackup);this.selectionTracker=d},_reorderItems:function(c,b){var d=this._titleList[this.selectedItem];var e=this._contentList[b];if(typeof this._capturedElement==="undefined"){this._capturedElement=this._titleList[b]}this._titleList[b].remove();if(b=d;c--){this._titleList[c]=this._titleList[c-1];this._contentList[c]=this._contentList[c-1]}this._contentList[d]=f;this._titleList[d]=this._capturedElement}},getSelectedItem:function(){return this.selectedItem},_getSelectedItem:function(c){var b=this.length();while(b){b--;if(this._titleList[b]===c){this._selectedItem=this.selectedItem=b;break}}},_moveElement:function(c,b){var b=c.data;if(b._tabCaptured){if(document.selection){document.selection.clear()}if(!b._dragStarted){unorderedListLeft=-parseInt(b._unorderedList.css("left"),10);if(c.clientX+unorderedListLeft>b._startX+3||c.clientX+unorderedListLeftthis._headerWrapper.offset().left+parseInt(this._headerWrapper.width(),10)){this._scrollRight(this.scrollAnimationDuration);this._capturedElement.css("left",parseInt(this._capturedElement.css("left"))+this._lastUnorderedListPosition-c)}else{this._unorderedList.stop();this._unlockAnimation("unorderedList");clearTimeout(this._scrollTimeout)}}var b=this;this._scrollTimeout=setTimeout(function(){b._dragScroll(d)},this.scrollAnimationDuration);this._lastUnorderedListPosition=c},_captureElement:function(c,b){if(!this._tabCaptured&&!this._titleList[b].locked&&this._titleList[b].disabled!==true&&!this._activeAnimation()){unorderedListLeft=-parseInt(this._unorderedList.css("left"),10);this._startX=unorderedListLeft+c.clientX;this._startY=c.clientY;this._lastX=c.clientX;this._lastY=c.clientY;this._tabCaptured=true;this._capturedElement=this._titleList[b]}},_titleInteractionTrigger:function(b){if(this._headerExpandingBalance>0){this._removeOppositeBorder()}if(this._selectedItem!==b){this.select(this._titleList[b],"toggle");this._titleList[b].collapsed=false;if(!this.collapsible){if(this.height!=="auto"){this._contentWrapper.css("visibility","visible")}else{this._contentWrapper.css("display","block")}}}else{if(this.collapsible){if(this.isCollapsed){this.expand()}else{this.collapse()}}}},collapse:function(){var c=this._selectedItem,b=this;this.isCollapsed=true;if(b.height!=="auto"){b._contentWrapper.css("visibility","hidden")}else{b._contentWrapper.hide()}b._raiseEvent(13,{item:c});if(this.position=="top"){b._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-collapsed"));b.host.addClass(this.toThemeProperty("MLjqui-tabs-collapsed"))}else{b._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-collapsed-bottom"));b.host.addClass(this.toThemeProperty("MLjqui-tabs-collapsed-bottom"))}},expand:function(){var c=this._selectedItem,b=this;this.isCollapsed=false;this._select(c,b.contentTransitionDuration,null,false,true);if(b.height!=="auto"){b._contentWrapper.css("visibility","visible")}else{b._contentWrapper.show()}b._raiseEvent(14,{item:c});if(this.position=="top"){b._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-collapsed"));b.host.removeClass(this.toThemeProperty("MLjqui-tabs-collapsed"))}else{b._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-collapsed-bottom"));b.host.removeClass(this.toThemeProperty("MLjqui-tabs-collapsed-bottom"))}},_addSelectHandler:function(c){var b=this;this.addHandler(this._titleList[c],"selectstart",function(d){return false});this.addHandler(this._titleList[c],this.toggleMode,function(d){return function(){b._raiseEvent("15",{item:d});if(!b._tabCaptured&&!b._cancelClick){b._titleInteractionTrigger(d)}return true}}(c))},_addDragDropHandlers:function(c){var b=this;this.addHandler(this._titleList[c],"mousedown",function(d){b._captureElement(d,c);return false});this.addHandler(this._titleList[c],"mouseup",function(d){if(b._tabCaptured&&b._dragStarted){b._cancelClick=true;b._uncapture(d,c)}else{b._cancelClick=false}b._tabCaptured=false;return false})},_removeHoverStates:function(){var b=this;a.each(this._titleList,function(){this.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-top"));this.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))})},_addHoverHandlers:function(c){var b=this;var d=this._titleList[c];this.addHandler(d,"mouseenter",function(f){if(c!=b._selectedItem){if(b.position=="top"){d.addClass(b.toThemeProperty("MLjqui-tabs-title-hover-top"))}else{d.addClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))}d.addClass(b.toThemeProperty("MLjqui-fill-state-hover"));if(b.showCloseButtons){var e=d.children(0).children(b.toThemeProperty(".MLjqui-tabs-close-button",true));e.addClass(b.toThemeProperty("MLjqui-tabs-close-button-hover",true))}}});this.addHandler(d,"mouseleave",function(f){if(c!=b._selectedItem){if(b.position=="top"){d.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-top"))}else{d.removeClass(b.toThemeProperty("MLjqui-tabs-title-hover-bottom"))}d.removeClass(b.toThemeProperty("MLjqui-fill-state-hover"));if(b.showCloseButtons){var e=d.children(0).children(b.toThemeProperty(".MLjqui-tabs-close-button",true));e.removeClass(b.toThemeProperty("MLjqui-tabs-close-button-hover",true))}}})},_addEventListenerAt:function(d){var c=this;if(this._titleList[d].disabled){return}if(this.reorder&&!this._isTouchDevice){this._addDragDropHandlers(d)}this._addSelectHandler(d);if(this.enabledHover){this._addHoverHandlers(d)}var b=this._titleList[d].find(this.toThemeProperty(".MLjqui-tabs-close-button",true));this.removeHandler(b,"click");this.addHandler(b,"click",function(e){c.removeAt(d);return false})},_removeEventHandlers:function(){var b=this;var c=this.length();while(c){c--;this._removeEventListenerAt(c)}if(this.scrollable){this.removeHandler(this._leftArrow,"mousedown");this.removeHandler(this._rightArrow,"mousedown")}this.removeHandler(a(document),"mousemove.tab"+this.element.id,this._moveElement);this.removeHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpScrollDocumentHandler);this.removeHandler(a(document),"mouseup.tab"+this.element.id,this._mouseUpDragDocumentHandler);this.removeHandler(this.host,"keydown")},_removeEventListenerAt:function(d){var c=this;this.removeHandler(this._titleList[d],this.toggleMode);this.removeHandler(this._titleList[d],"mouseenter");this.removeHandler(this._titleList[d],"mouseleave");this.removeHandler(this._titleList[d],"mousedown");this.removeHandler(this._titleList[d],"mouseup");var b=this._titleList[d].children(0).children(this.toThemeProperty(".MLjqui-tabs-close-button",true));this.removeHandler(b,"click")},_moveSelectionTrack:function(l,c,b){var m=this;if(l==-1){return}if(this._titleList.length==0){return}if(l>=this._titleList.length){return}if(this.selectionTracker&&this._selectionTracker){this._selectionTracker.stop();this._unlockAnimation("selectionTracker");if(b===undefined){var h=parseInt(this._titleList[l].position().left);if(!isNaN(parseInt(this._unorderedList.css("left")))){h+=parseInt(this._unorderedList.css("left"))}if(!isNaN(parseInt(this._unorderedList.css("margin-left")))){h+=parseInt(this._unorderedList.css("margin-left"))}if(!isNaN(parseInt(this._titleList[l].css("margin-left")))){h+=parseInt(this._titleList[l].css("margin-left"))}if(!isNaN(parseInt(this._titleList[l].css("margin-right")))){}}else{var h=b}var g=0;var e=0;if(this.position==="top"){g=parseInt(this._headerWrapper.height())-parseInt(this._titleList[l].outerHeight());if(!this.autoHeight){e+=parseInt(this._titleList[l].css("margin-top"))}}this._lockAnimation("selectionTracker");var k=parseInt(this._titleList[l].css("padding-left"))+parseInt(this._titleList[l].css("padding-right"));var f=this.position=="top"?0:1;var j=parseInt(this._headerWrapper.css("padding-top"));var i=parseInt(this._titleList[l].css("padding-top"))+parseInt(this._titleList[l].css("padding-bottom"));this._selectionTracker.css("visibility","visible");this._moveSelectionTrackerContainer.css("visibility","visible");var d=parseInt(this._titleList[l].css("margin-top"));if(isNaN(d)){d=0}this._selectionTracker.animate({top:j+d-f,left:h+"px",height:parseInt(this._titleList[l].height()+i),width:this._titleList[l].width()+k},c,function(){m._unlockAnimation("selectionTracker");m._selectionTracker.css("visibility","hidden");m._addSelectStyle(l,true);m._moveSelectionTrackerContainer.css("visibility","hidden")})}},destroy:function(){a.MLjqui.utilities.resize(this.host,null,true);this.host.remove()},_switchTabs:function(b,d){if(b!==d&&!this._activeAnimation()&&!this._tabCaptured){var c=this;this._raiseEvent(7,{item:d});this._raiseEvent(6,{item:b});if(this._currentEvent){if(this._currentEvent.cancel){this._currentEvent=null;return}}this._unselect(d,null,true);this._select(b,c.contentTransitionDuration,null,true);return true}return false},_activeAnimation:function(){for(child in this._isAnimated){if(this._isAnimated.hasOwnProperty(child)){if(this._isAnimated[child]){return true}}}return false},_indexOf:function(c){var b=this.length();while(b){b--;if(this._titleList[b][0]===c[0]||this._contentList[b][0]===c[0]){return b}}return -1},_validateProperties:function(){try{if(this.scrollAnimationDuration<0||isNaN(this.scrollAnimationDuration)){throw new Error(this._invalidArgumentExceptions.invalidScrollAnimationDuration)}if(parseInt(this.width)<0&&this.width!=="auto"){throw new Error(this._invalidArgumentExceptions.invalidWidth)}if(parseInt(this.height)<0&&this.height!=="auto"){throw new Error(this._invalidArgumentExceptions.invalidHeight)}if(this.animationType!=="none"&&this.animationType!=="fade"){throw new Error(this._invalidArgumentExceptions.invalidAnimationType)}if(this.contentTransitionDuration<0||isNaN(this.contentTransitionDuration)){throw new Error(this._invalidArgumentExceptions.invalidcontentTransitionDuration)}if(this.toggleMode!=="click"&&this.toggleMode!=="dblclick"&&this.toggleMode!=="mouseenter"&&this.toggleMode!=="none"){throw new Error(this._invalidArgumentExceptions.invalidToggleMode)}if(this.position!=="top"&&this.position!=="bottom"){throw new Error(this._invalidArgumentExceptions.invalidPosition)}if(this.scrollPosition!=="left"&&this.scrollPosition!=="right"&&this.scrollPosition!=="both"){throw new Error(this._invalidArgumentExceptions.invalidScrollPosition)}if(this.scrollStep<0||isNaN(this.scrollStep)){throw new Error(this._invalidArgumentExceptions.invalidScrollStep)}if(this._titleList.length!==this._contentList.length||this._titleList.length==0){throw new Error(this._invalidArgumentExceptions.invalidStructure)}if(this.arrowButtonSize<0||isNaN(this.arrowButtonSize)){throw new Error(this._invalidArgumentExceptions.invalidArrowSize)}if(this.closeButtonSize<0||isNaN(this.closeButtonSize)){throw new Error(this._invalidArgumentExceptions.invalidCloseSize)}}catch(b){alert(b)}},_startScrollRepeat:function(d,c){var b=this;if(d){this._scrollLeft(c)}else{this._scrollRight(c)}if(this._scrollTimeout){clearTimeout(this._scrollTimeout)}this._scrollTimeout=setTimeout(function(){b._startScrollRepeat(d,b.scrollAnimationDuration)},c)},_performLayout:function(){var b=this.length();while(b){b--;if(this.position==="top"||this.position==="bottom"){if(this.rtl){this._titleList[b].css("float","right")}else{this._titleList[b].css("float","left")}}}this._fitToSize();this._performHeaderLayout();this._fitToSize()},updatetabsheader:function(){this._performHeaderLayout()},_setSize:function(){var b=this;this._fitToSize();this._positionArrows(this._totalItemsWidth);if(this._totalItemsWidth>this.element.offsetWidth){this._unorderedList.width(this._totalItemsWidth)}else{this._unorderedList[0].style.width=this.element.offsetWidth-2+"px"}this._fitToSize()},_addArrows:function(){if(this._leftArrow&&this._rightArrow){this._leftArrow.remove();this._rightArrow.remove()}this._leftArrow=a('
              ');this._rightArrow=a('
              ');this._leftArrow.addClass(this.toThemeProperty("MLjqui-tabs-arrow-background"));this._rightArrow.addClass(this.toThemeProperty("MLjqui-tabs-arrow-background"));this._leftArrow.addClass(this.toThemeProperty("MLjqui-widget-header"));this._rightArrow.addClass(this.toThemeProperty("MLjqui-widget-header"));this._headerWrapper.append(this._leftArrow);this._headerWrapper.append(this._rightArrow);this._leftArrow.width(this.arrowButtonSize);this._leftArrow.height("100%");this._rightArrow.width(this.arrowButtonSize);this._rightArrow.height("100%");this._leftArrow.css({"z-index":"30"});this._rightArrow.css({"z-index":"30"});this._leftArrow.css("display","none");this._rightArrow.css("display","none")},_tabsWithVisibleCloseButtons:function(){if(!this.showCloseButtons){return 0}var c=this.length();var b=this;a.each(this._titleList,function(){var d=this.attr("hasclosebutton");if(d!=undefined&&d!=null){if(d=="false"||d==false){c--}}});return c},_calculateTitlesSize:function(){var g=0;var d=0;var c=this.length();if(this.rtl&&a.MLjqui.browser.msie&&a.MLjqui.browser.version<8){this._measureItem=a("");a(document.body).append(this._measureItem)}while(c){c--;if(this._measureItem){this._measureItem.html(this._titleList[c].html());this._titleList[c].width(this._measureItem.width())}this._titleList[c].css("position","static");this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).css("display","none");d+=parseInt(this._titleList[c].outerWidth(true));if(g1)){var e=false;if(this.hiddenCloseButtons){if(this.hiddenCloseButtons[c]==1){this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).css("display","none");e=true}}if(!e){d+=this.closeButtonSize;this._titleList[c].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).css("display","block")}}}this._titleList[c].height(this._titleList[c].height())}if(this._measureItem){this._measureItem.remove()}return{height:g,width:10+d}},_reorderHeaderElements:function(){if(this.selectionTracker){this._moveSelectionTrackerContainer.css({position:"absolute",height:"100%",top:"0px",left:"0px",width:"100%"})}this._headerWrapper.css({position:"relative",left:"0px",top:"0px"});if(this.scrollable){this._rightArrow.css({width:this.arrowButtonSize,position:"absolute",top:"0px"});this._leftArrow.css({width:this.arrowButtonSize,position:"absolute",top:"0px"});var c=this.theme&&this.theme.indexOf("ui-")!=-1?3:0;if(c>0){this._rightArrow.addClass(this.toThemeProperty("MLjqui-rc-r"));this._leftArrow.addClass(this.toThemeProperty("MLjqui-rc-l"))}var b=this.scrollPosition;if(this.rtl){if(b=="left"){b="right"}if(b=="right"){b="left"}}switch(b){case"both":this._rightArrow.css("right","0px");this._leftArrow.css("left","0px");break;case"left":this._rightArrow.css("left",this.arrowButtonSize+"px");this._leftArrow.css("left","0px");break;case"right":this._rightArrow.css("right",-c+"px");this._leftArrow.css("right",(this.arrowButtonSize-c)+"px");break}}},_positionArrows:function(b){if(b>=parseInt(this._headerWrapper[0].offsetWidth)&&this.scrollable){this._needScroll=true;if(this._unorderedList.position().left===0){this._unorderedListLeftBackup=this._getArrowsDisplacement()+"px"}this._leftArrow.css("display","block");this._rightArrow.css("display","block")}else{this._needScroll=false;this._leftArrow[0].style.display="none";this._rightArrow[0].style.display="none";this._unorderedList[0].style.left="0px"}},_performHeaderLayout:function(){this._removeSelectStyle();var b=this._calculateTitlesSize();var d=b.height;var c=b.width;this._headerWrapper.height(d);this._unorderedList.height(d);if(this.headerHeight!=null&&this.headerHeight!="auto"){this._headerWrapper.height(this.headerHeight);this._unorderedList.height(this.headerHeight)}if(c>this.host.width()){this._unorderedList.width(c)}else{this._unorderedList.width(this.host.width())}if(a.MLjqui.browser.msie&&a.MLjqui.browser.version<8){this._unorderedList.css("position","relative");this._headerWrapper.css("overflow","hidden")}this._reorderHeaderElements();c=c+parseInt(this._unorderedList.css("margin-left"));this._totalItemsWidth=c;this._positionArrows(c);this._unorderedList.css({position:"relative",top:"0px"});this._verticalAlignElements();this._moveSelectionTrack(this._selectedItem,0);this._addSelectStyle(this.selectedItem)},_verticalAlignElements:function(){var k=this.length();var p=this._maxHeightTab();while(k){k--;var b=this._titleList[k].find(".MLjqui-tabs-titleContentWrapper"),l=b.height(),o=this._titleList[k].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)),m=parseInt(this._titleList[k].css("padding-top"));if(!m){m=0}if(this.autoHeight){var h=this._titleList[k].outerHeight(true)-this._titleList[k].height();var c=parseInt(this._titleList[k].css("padding-top"));var q=parseInt(this._titleList[k].css("padding-bottom"));var j=parseInt(this._titleList[k].css("border-top-width"));var f=parseInt(this._titleList[k].css("border-bottom-width"));this._titleList[k].height(this._unorderedList.outerHeight()-c-q-j-f)}else{if(this.position==="top"){var i=parseInt(this._unorderedList.height())-parseInt(this._titleList[k].outerHeight(true));if(parseInt(this._titleList[k].css("margin-top"))!==i&&i!==0){this._titleList[k].css("margin-top",i)}}else{this._titleList[k].height(this._titleList[k].height())}}this._titleList[k].children(0).height("100%");var e=parseInt(this._titleList[k].height());var g=parseInt(e)/2-parseInt(o.height())/2;o.css("margin-top",1+g);var n=parseInt(e)/2-parseInt(b.height())/2;b.css("margin-top",n)}if(this.scrollable){var h=parseInt(this._headerWrapper.outerHeight())-this.arrowButtonSize;var d=h/2;this._rightArrow.children(0).css("margin-top",d);this._rightArrow.height("100%");this._leftArrow.height("100%");this._leftArrow.children(0).css("margin-top",d)}},_getImageUrl:function(c){var b=c.css("background-image");b=b.replace('url("',"");b=b.replace('")',"");b=b.replace("url(","");b=b.replace(")","");return b},_fitToSize:function(){var c=false;var e=false;var d=this;if(d.width!=null&&d.width.toString().indexOf("%")!=-1){c=true}if(d.height!=null&&d.height.toString().indexOf("%")!=-1){e=true}if(c){this.host[0].style.width=this.width;this._contentWrapper[0].style.width="100%"}if(e){this.host[0].style.height=this.height;this._contentWrapper[0].style.width="100%";this._contentWrapper[0].style.height="auto";var b=this.element.offsetHeight-this._headerWrapper[0].offsetHeight;this._contentWrapper[0].style.height=b+"px"}if(!c){this.host.width(this.width);if(this.width!="auto"){this._contentWrapper.css("width","100%")}}if(!e){if(this.height!=="auto"){this.host.height(this.height);var b=this.host.height()-this._headerWrapper.outerHeight();this._contentWrapper.height(b)}else{this._contentWrapper.css("height","auto")}}},_maxHeightTab:function(){var c=this.length();var d=-1;var b=-1;while(c){c--;if(d');var b=this.toThemeProperty("MLjqui-tabs-selection-tracker-"+this.position);this._selectionTracker=a('
              ');this._selectionTracker.css("color","inherit");this._moveSelectionTrackerContainer.append(this._selectionTracker);this._headerWrapper.append(this._moveSelectionTrackerContainer);this._selectionTracker.css({position:"absolute","z-index":"10",left:"0px",top:"0px",display:"inline-block"})},_addContentWrapper:function(){var d="none";var b=this._contentWrapper==undefined;this._contentWrapper=this._contentWrapper||a('
              ');this._contentWrapper.addClass(this.toThemeProperty("MLjqui-widget-content"));var c=this.length();while(c){c--;this._contentList[c].addClass(this.toThemeProperty("MLjqui-tabs-content-element"))}if(b){this.host.find(".MLjqui-tabs-content-element").wrapAll(this._contentWrapper);this._contentWrapper=this.host.find(".MLjqui-tabs-content")}if(this.roundedCorners){if(this.position=="top"){this._contentWrapper.addClass(this.toThemeProperty("MLjqui-rc-b"))}else{this._contentWrapper.addClass(this.toThemeProperty("MLjqui-rc-t"))}this.host.addClass(this.toThemeProperty("MLjqui-rc-all"))}},_addHeaderWrappers:function(){var b=this.length();this._unorderedList.remove();this._headerWrapper=this._headerWrapper||a('
              ');this._headerWrapper.remove();if(this.position=="top"){this._headerWrapper.prependTo(this.host)}else{this._headerWrapper.appendTo(this.host)}this._unorderedList.appendTo(this._headerWrapper);this._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header"));this._headerWrapper.addClass(this.toThemeProperty("MLjqui-widget-header"));if(this.position=="bottom"){this._headerWrapper.addClass(this.toThemeProperty("MLjqui-tabs-header-bottom"))}else{this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-tabs-header-bottom"))}if(this.roundedCorners){if(this.position=="top"){this._headerWrapper.addClass(this.toThemeProperty("MLjqui-rc-t"));this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-rc-b"))}else{this._headerWrapper.removeClass(this.toThemeProperty("MLjqui-rc-t"));this._headerWrapper.addClass(this.toThemeProperty("MLjqui-rc-b"))}}while(b){b--;if(this._titleList[b].children(".MLjqui-tabs-titleWrapper").length<=0){var c=a('
              ');c.append(this._titleList[b].html());this._titleList[b].empty();c.appendTo(this._titleList[b])}this._titleList[b].children(".MLjqui-tabs-titleWrapper").css("z-index","15")}},_render:function(){this._addCloseButtons();this._addHeaderWrappers();this._addContentWrapper();if(this.selectionTracker){this._addSelectionTracker()}this._addArrows()},_addCloseButton:function(c){var f=c;if(this._titleList[f].find(this.toThemeProperty(".MLjqui-tabs-close-button",true)).length<=0&&this._titleList[f].find(".MLjqui-tabs-titleContentWrapper").length<=0){var d=a('
              ');var g="left";if(this.rtl){g="right"}d.css("float",g);d.addClass("MLjqui-disableselect");d.append(this._titleList[f].html());this._titleList[f].html("");var b=a('
              ');b.css({height:this.closeButtonSize,width:this.closeButtonSize,"float":g,"font-size":"1px"});var e=this;this._titleList[f].append(d);this._titleList[f].append(b);if(!this.showCloseButtons){b.css("display","none")}else{if(this.hiddenCloseButtons){if(this.hiddenCloseButtons[c]==1){b.css("display","none")}}}}},_addCloseButtons:function(){var b=this.length();while(b){b--;this._addCloseButton(b)}},_prepareTabs:function(){var c=this.length();var b=this.selectionTracker;this.selectionTracker=false;while(c){c--;if(this._selectedItem!==c){this._unselect(c,null,false)}}this._select(this._selectedItem,0,null,false);this.selectionTracker=b;if(this.initTabContent){if(!this._initTabContentList[this.selectedItem]){if(!this._hiddenParent()){this.initTabContent(this.selectedItem);this._initTabContentList[this.selectedItem]=true}}}},_isValidIndex:function(b){return(b>=0&&b=0&&this._titleList[c]!=undefined){var b=null;if(this.showCloseButtons){var b=this._titleList[c].children(0).children(this.toThemeProperty(".MLjqui-tabs-close-button",true));if(this.hiddenCloseButtons){if(this.hiddenCloseButtons[c]==1){b=null}}}this._titleList[c].removeClass(this.toThemeProperty("MLjqui-fill-state-hover"));if(this.position=="top"){this._titleList[c].removeClass(this.toThemeProperty("MLjqui-tabs-title-hover-top"));this._titleList[c].addClass(this.toThemeProperty("MLjqui-tabs-title-selected-top"))}else{this._titleList[c].removeClass(this.toThemeProperty("MLjqui-tabs-title-hover-bottom"));this._titleList[c].addClass(this.toThemeProperty("MLjqui-tabs-title-selected-bottom"))}this._titleList[c].addClass(this.toThemeProperty("MLjqui-fill-state-pressed"));if(b!=null){b.addClass(this.toThemeProperty("MLjqui-tabs-close-button-selected"))}}}},_addItemTo:function(g,c,e){if(c=0){if(!this._tabCaptured){var c=this;this._contentList[d].stop();if(this.animationType=="fade"){this._contentList[d].css("display","none");a.MLjqui.aria(c._titleList[d],"aria-selected",false);a.MLjqui.aria(c._contentList[d],"aria-hidden",true)}else{if(this.selectionTracker){setTimeout(function(){c._contentList[d].css("display","none");a.MLjqui.aria(c._titleList[d],"aria-selected",false);a.MLjqui.aria(c._contentList[d],"aria-hidden",true)},this.selectionTrackerAnimationDuration)}else{this._contentList[d].css("display","none");a.MLjqui.aria(c._titleList[d],"aria-selected",false);a.MLjqui.aria(c._contentList[d],"aria-hidden",true)}}this._unselectCallback(d,e,b);if(!this.selectionTracker){this._titleList[d].removeClass(this.toThemeProperty("MLjqui-tabs-title-selected"));this._titleList[d].removeClass(this.toThemeProperty("MLjqui-fill-state-pressed"))}}}},_unselectCallback:function(c,d,b){if(b){this._raiseEvent(8,{item:c})}if(d){d()}},disable:function(){var b=this.length();while(b){b--;this.disableAt(b)}},enable:function(){var b=this.length();while(b){b--;this.enableAt(b)}},getEnabledTabsCount:function(){var b=0;a.each(this._titleList,function(){if(!this.disabled){b++}});return b},getDisabledTabsCount:function(){var b=0;a.each(this._titleList,function(){if(this.disabled){b++}});return b},removeAt:function(d){if(this._isValidIndex(d)&&(this.canCloseAllTabs||this.length()>1)){this._removeHoverStates();var b=this,c=this._titleList[this._selectedItem],e=parseInt(this._titleList[d].outerWidth(true)),i=this.getTitleAt(d);this._unorderedList.width(parseInt(this._unorderedList.width())-e);this._titleList[d].remove();this._contentList[d].remove();var h=0;this._titleList.splice(d,1);this._contentList.splice(d,1);this._addStyles();this._performHeaderLayout();this._removeEventHandlers();this._addEventHandlers();this._raiseEvent(3,{item:d,title:i});this._isAnimated={};if(this.selectedItem>0){this._selectedItem=-1;var g=this._getPreviousIndex(this.selectedItem);this.select(g)}else{this._selectedItem=-1;var g=this._getNextIndex(this.selectedItem);this.select(g)}if(parseInt(this._unorderedList.css("left"))>this._getArrowsDisplacement()){this._unorderedList.css("left",this._getArrowsDisplacement())}if(parseInt(this._unorderedList.width())<=parseInt(this._headerWrapper.width())){var f=(this.enableScrollAnimation)?this.scrollAnimationDuration:0;this._lockAnimation("unorderedList");this._unorderedList.animate({left:0},f,function(){b._unlockAnimation("unorderedList")})}}},removeFirst:function(){this.removeAt(0)},removeLast:function(){this.removeAt(this.length()-1)},disableAt:function(b){if(!this._titleList[b].disabled||this._titleList[b].disabled===undefined){if(this.selectedItem==b){var c=this.next();if(!c){c=this.previous()}}this._titleList[b].disabled=true;this.removeHandler(this._titleList[b],this.toggleMode);if(this.enabledHover){this._titleList[b].off("mouseenter").off("mouseleave")}this._removeEventListenerAt(b);this._titleList[b].addClass(this.toThemeProperty("MLjqui-tabs-title-disable"));this._titleList[b].addClass(this.toThemeProperty("MLjqui-fill-state-disabled"));this._raiseEvent(5,{item:b})}},enableAt:function(b){if(this._titleList[b].disabled){this._titleList[b].disabled=false;this._addEventListenerAt(b);this._titleList[b].removeClass(this.toThemeProperty("MLjqui-tabs-title-disable"));this._titleList[b].removeClass(this.toThemeProperty("MLjqui-fill-state-disabled"));this._raiseEvent(4,{item:b})}},addAt:function(d,g,e){if(d>=0||d<=this.length()){this._removeHoverStates();var b=a("
            • "+g+"
            • ");var f=a("
              "+e+"
              ");b.addClass(this.toThemeProperty("MLjqui-tabs-title"));b.addClass(this.toThemeProperty("MLjqui-item"));f.addClass(this.toThemeProperty("MLjqui-tabs-content-element"));if(this.position=="bottom"){b.addClass(this.toThemeProperty("MLjqui-tabs-title-bottom"))}var c=false;if(this._titleList.length==0){this._unorderedList.append(b)}else{if(d=0){this._titleList[d].before(b)}else{this._titleList[this.length()-1].after(b)}}f.appendTo(this._contentWrapper);this._addItemTo(this._titleList,d,b);this._addItemTo(this._contentList,d,f);if(this._selectedItem>d){this._selectedItem++}this._switchTabs(d,this._selectedItem);this._selectedItem=d;if(this.showCloseButtons&&this._titleList.length>0){this._addCloseButton(d)}this._uiRefresh(c);this._raiseEvent(2,{item:d});this._moveSelectionTrack(this._selectedItem,0)}},addFirst:function(c,b){this.addAt(0,c,b)},addLast:function(c,b){this.addAt(this.length(),c,b)},val:function(b){if(arguments.length==0||typeof(b)=="object"){return this._selectedItem}this.select(b);return this._selectedItem},select:function(c,b){if(typeof(c)==="object"){c=this._indexOf(c)}var e=c>=0&&c0&&b0&&c<=this._titleList.length){c--;if(!this._titleList[c].disabled){return c;break}}return b}else{return 0}},_getNextIndex:function(c){if(c!=undefined&&!isNaN(c)){var b=c;while(c>=0&&c=0&&bb-this._getArrowsDisplacement()){g=-j+i-e-((this.scrollable)?(2*this.arrowButtonSize-this._getArrowsDisplacement()):0);c=i-e-this._getArrowsDisplacement()}else{this._moveSelectionTrack(d,this.selectionTrackerAnimationDuration);return true}}this._lockAnimation("unorderedList");this._unorderedList.animate({left:g},this.scrollAnimationDuration,function(){k._unlockAnimation("unorderedList");k._moveSelectionTrack(k._selectedItem,0);return true});this._moveSelectionTrack(d,this.selectionTrackerAnimationDuration,c);return true},isVisibleAt:function(d){var k=this;if(d==undefined||d==-1||d==null){d=this.selectedItem}if(!this._isValidIndex(d)){return false}var j=parseInt(this._titleList[d].position().left)+parseInt(this._unorderedList.css("margin-left"));var f=parseInt(this._unorderedList.css("left"));var i=parseInt(this._headerWrapper.outerWidth(true));var e=parseInt(this._titleList[d].outerWidth(true));var h=f-this._getArrowsDisplacement();var b=i-this._getArrowsDisplacement()-h;var g,c;if(j<-h){return false}else{if(j+e>b){return false}else{return true}}return true},isDisabled:function(b){return this._titleList[b].disabled},_lockAnimation:function(b){if(this._isAnimated){this._isAnimated[b]=true}},_unlockAnimation:function(b){if(this._isAnimated){this._isAnimated[b]=false}},propertiesChangedHandler:function(d,b,c){if(c&&c.width&&c.height&&Object.keys(c).length==2){d._setSize()}},propertyChangedHandler:function(b,c,e,d){if(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&Object.keys(b.batchUpdate).length==2){return}this._validateProperties();switch(c){case"touchMode":if(d){b.enabledHover=false;b.keyboardNavigation=false}break;case"width":case"height":b._setSize();return;case"disabled":if(d){this.disable()}else{this.enable()}return;case"showCloseButtons":if(d){this.showAllCloseButtons()}else{this.hideAllCloseButtons()}this._moveSelectionTrack(this._selectedItem,this.selectionTrackerAnimationDuration);return;case"selectedItem":if(this._isValidIndex(d)){this.select(d)}return;case"scrollStep":case"contentTransitionDuration":case"scrollAnimationDuration":case"enableScrollAnimation":return;case"selectionTracker":if(d){this._refresh();this.select(this._selectedItem)}else{if(this._selectionTracker!=null){this._selectionTracker.remove()}}return;case"scrollable":if(d){this._refresh();this.select(this._selectedItem)}else{this._leftArrow.remove();this._rightArrow.remove();this._performHeaderLayout()}return;case"autoHeight":this._performHeaderLayout();return;case"theme":a.MLjqui.utilities.setTheme(e,d,this.host);return}this._unorderedList.css("left","0px");this._refresh();this.select(this._selectedItem);this._addSelectStyle(this._selectedItem,true)}})}(MLjquiBaseFramework)); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiwindow.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiwindow.js deleted file mode 100644 index f8b6ca2f..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/MLjquiwindow.js +++ /dev/null @@ -1,2411 +0,0 @@ -/* -jQWidgets v4.1.1 (2016-Mar) -Copyright (c) 2011-2016 jQWidgets. -License: http://jqwidgets.com/license/ -*/ - -(function(a) { - a.MLjqui.MLjquiWidget("MLjquiWindow", "", {}); - a.extend(a.MLjqui._MLjquiWindow.prototype, { - defineInstance: function() { - var e = { - height: "auto", - width: 200, - minHeight: 50, - maxHeight: 600, - minWidth: 50, - maxWidth: 800, - showCloseButton: true, - disabled: false, - autoOpen: true, - keyboardCloseKey: "esc", - title: "", - content: "", - draggable: true, - resizable: true, - animationType: "fade", - closeAnimationDuration: 250, - showAnimationDuration: 250, - isModal: false, - position: "center", - closeButtonSize: 16, - closeButtonAction: "hide", - modalOpacity: 0.3, - dragArea: null, - okButton: null, - cancelButton: null, - dialogResult: { - OK: false, - Cancel: false, - None: true - }, - collapsed: false, - showCollapseButton: false, - collapseAnimationDuration: 150, - collapseButtonSize: 16, - rtl: false, - keyboardNavigation: true, - headerHeight: null, - _events: ["created", "closed", "moving", "moved", "open", "collapse", "expand", "open", "close", "resize"], - initContent: null, - enableResize: true, - restricter: null, - autoFocus: true, - closing: null, - _invalidArgumentExceptions: { - invalidHeight: "Invalid height!", - invalidWidth: "Invalid width!", - invalidMinHeight: "Invalid minHeight!", - invalidMaxHeight: "Invalid maxHeight!", - invalidMinWidth: "Invalid minWidth!", - invalidMaxWidth: "Invalid maxWidth", - invalidKeyCode: "Invalid keyCode!", - invalidAnimationType: "Invalid animationType!", - invalidCloseAnimationDuration: "Invalid closeAnimationDuration!", - invalidShowAnimationDuration: "Invalid showAnimationDuration!", - invalidPosition: "Invalid position!", - invalidCloseButtonSize: "Invalid closeButtonSize!", - invalidCollapseButtonSize: "Invalid collapseButtonSize!", - invalidCloseButtonAction: "Invalid cluseButtonAction!", - invalidModalOpacity: "Invalid modalOpacity!", - invalidDragArea: "Invalid dragArea!", - invalidDialogResult: "Invalid dialogResult!", - invalidIsModal: "You can have just one modal window!" - }, - _enableResizeCollapseBackup: null, - _enableResizeBackup: undefined, - _heightBeforeCollapse: null, - _minHeightBeforeCollapse: null, - _mouseDown: false, - _isDragging: false, - _rightContentWrapper: null, - _leftContentWrapper: null, - _headerContentWrapper: null, - _closeButton: null, - _collapseButton: null, - _title: null, - _content: null, - _mousePosition: {}, - _windowPosition: {}, - _modalBackground: null, - _SCROLL_WIDTH: 21, - _visible: true, - modalBackgroundZIndex: 12990, - modalZIndex: 18000, - zIndex: 9001, - _touchEvents: { - mousedown: a.MLjqui.mobile.getTouchEventName("touchstart"), - mouseup: a.MLjqui.mobile.getTouchEventName("touchend"), - mousemove: a.MLjqui.mobile.getTouchEventName("touchmove"), - mouseenter: "mouseenter", - mouseleave: "mouseleave", - click: a.MLjqui.mobile.getTouchEventName("touchstart") - } - }; - a.extend(true, this, e); - return e - }, - createInstance: function() { - this.host.attr("role", "dialog"); - this.host.removeAttr("data-bind"); - this.host.detach(); - a(document.body).append(this.host); - var f = this; - var g = function() { - var i = parseInt(a(f.restricter).css("padding-top")); - var h = parseInt(a(f.restricter).css("padding-left")); - var k = parseInt(a(f.restricter).css("padding-bottom")); - var m = parseInt(a(f.restricter).css("padding-right")); - var l = a(f.restricter).coord(); - f.dragArea = { - left: h + l.left, - top: i + l.top, - width: 1 + m + a(f.restricter).width(), - height: 1 + k + a(f.restricter).height() - } - }; - if (this.restricter) { - g() - } - if (this.restricter) { - this.addHandler(a(window), "resize." + this.element.id, function() { - g() - }); - this.addHandler(a(window), "orientationchanged." + this.element.id, function() { - g() - }); - this.addHandler(a(window), "orientationchange." + this.element.id, function() { - g() - }) - } - this._isTouchDevice = a.MLjqui.mobile.isTouchDevice(); - this._validateProperties(); - this._createStructure(); - this._refresh(); - if (!this.autoOpen) { - this.host.css("display", "none") - } - if (a.MLjqui.browser.msie) { - this.host.addClass(this.toThemeProperty("MLjqui-noshadow")) - } - if (!this.isModal) { - this._fixWindowZIndex() - } - this._setStartupSettings(); - this._positionWindow(); - this._raiseEvent(0); - if (this.autoOpen) { - this._performLayout(); - var e = this; - if (this.isModal) { - this._fixWindowZIndex("modal-show") - } - if (e.initContent) { - e.initContent(); - e._contentInitialized = true - } - this._raiseEvent(7); - this._raiseEvent(9) - } - }, - refresh: function() { - this._performLayout() - }, - _setStartupSettings: function() { - if (this.disabled) { - this.disable() - } - if (this.collapsed) { - this.collapsed = false; - this.collapse(0) - } - if (!this.autoOpen) { - this.hide(null, 0.001, true); - this._visible = false - } - if (this.title !== null && this.title !== "") { - this.setTitle(this.title) - } - if (this.content !== null && this.content !== "") { - this.setContent(this.content) - } - this.title = this._headerContentWrapper.html(); - this.content = this._content.html() - }, - _fixWindowZIndex: function(n) { - var f = a.data(document.body, "MLjquiwindows-list") || [], - o = this.zIndex, - i; - if (!this.isModal) { - if (this._indexOf(this.host, f) < 0) { - f.push(this.host) - } - a.data(document.body, "MLjquiwindows-list", f); - if (f.length > 1) { - var g = f[f.length - 2]; - if (g.css("z-index") == "auto") { - o = this.zIndex + f.length + 1 - } else { - var e = this.zIndex; - o = parseInt(g.css("z-index"), 10) + 1; - if (o < e) { - o = e - } - } - } - } else { - if (f) { - f = this._removeFromArray(this.host, f); - a.data(document.body, "MLjquiwindows-list", f) - } - var h = a.data(document.body, "MLjquiwindows-modallist"); - if (!h) { - if (n == "modal-show") { - var l = new Array(); - l.push(this.host); - a.data(document.body, "MLjquiwindows-modallist", l); - h = l - } else { - a.data(document.body, "MLjquiwindows-modallist", new Array()); - h = new Array() - } - } else { - if (n == "modal-show") { - h.push(this.host) - } else { - var k = h.indexOf(this.host); - if (k != -1) { - h.splice(k, 1) - } - } - } - o = this.modalZIndex; - var m = this; - a.each(h, function(r) { - if (this.data()) { - if (this.data().MLjquiWindow) { - var q = this.data().MLjquiWindow.instance; - q._modalBackground.css("z-index", o); - q.host.css("z-index", o + 1); - o += 2 - } - } - }); - a.data(document.body, "MLjquiwindow-modal", this.host); - return - } - this.host.css("z-index", o); - this._sortByStyle("z-index", f) - }, - _validateProperties: function() { - try { - this._validateSize(); - this._validateAnimationProperties(); - this._validateInteractionProperties(); - this._validateModalProperties(); - if (!this.position) { - throw new Error(this._invalidArgumentExceptions.invalidPosition) - } - if (isNaN(this.closeButtonSize) || parseInt(this.closeButtonSize) < 0) { - throw new Error(this._invalidArgumentExceptions.invalidCloseButtonSize) - } - if (isNaN(this.collapseButtonSize) || parseInt(this.collapseButtonSize) < 0) { - throw new Error(this._invalidArgumentExceptions.invalidCollapseButtonSize) - } - } catch (e) { - alert(e); - } - }, - _validateModalProperties: function() { - if (this.modalOpacity < 0 || this.modalOpacity > 1) { - throw new Error(this._invalidArgumentExceptions.invalidModalOpacity) - } - if (this.isModal && !this._singleModalCheck()) { - throw new Error(this._invalidArgumentExceptions.invalidIsModal) - } - }, - _validateSize: function() { - this._validateSizeLimits(); - if (this.height !== "auto" && isNaN(parseInt(this.height))) { - throw new Error(this._invalidArgumentExceptions.invalidHeight) - } - if (this.width !== "auto" && isNaN(parseInt(this.width))) { - throw new Error(this._invalidArgumentExceptions.invalidWidth) - } - if (this.height !== "auto" && this.height < this.minHeight) { - this.height = this.minHeight - } - if (this.width < this.minWidth) { - this.width = this.minWidth - } - if (this.height !== "auto" && this.height > this.maxHeight) { - this.height = this.maxHeight - } - if (this.width > this.maxWidth) { - this.width = this.maxWidth - } - if (this.dragArea === null) { - return - } - if (this.dragArea && ((this.dragArea.height !== null && this.host.height() > this.dragArea.height) || (parseInt(this.height, 10) > this.dragArea.height)) || (this.dragArea.width !== null && this.width > this.dragArea.width) || (this.maxHeight > this.dragArea.height || this.maxWidth > this.dragArea.width)) {} - }, - _validateSizeLimits: function() { - if (this.maxHeight == null) { - this.maxHeight = 9999 - } - if (this.minWidth == null) { - this.minWidth = 0 - } - if (this.maxWidth == null) { - this.maxWidth = 9999 - } - if (this.minHeight == null) { - this.minHeight = 0 - } - if (isNaN(parseInt(this.minHeight))) { - throw new Error(this._invalidArgumentExceptions.invalidMinHeight) - } - if (isNaN(parseInt(this.maxHeight))) { - throw new Error(this._invalidArgumentExceptions.invalidMaxHeight) - } - if (isNaN(parseInt(this.minWidth))) { - throw new Error(this._invalidArgumentExceptions.invalidMinWidth) - } - if (isNaN(parseInt(this.maxWidth))) { - throw new Error(this._invalidArgumentExceptions.invalidMaxWidth) - } - if (this.minHeight > this.maxHeight) { - throw new Error(this._invalidArgumentExceptions.invalidMinHeight) - } - if (this.minWidth > this.maxWidth) { - throw new Error(this._invalidArgumentExceptions.invalidMinWidth) - } - }, - _validateAnimationProperties: function() { - if (this.animationType !== "fade" && this.animationType !== "slide" && this.animationType !== "combined" && this.animationType !== "none") { - throw new Error(this._invalidArgumentExceptions.invalidAnimationType) - } - if (isNaN(parseInt(this.closeAnimationDuration), 10) || this.closeAnimationDuration < 0) { - throw new Error(this._invalidArgumentExceptions.invalidCloseAnimationDuration) - } - if (isNaN(parseInt(this.showAnimationDuration), 10) || this.showAnimationDuration < 0) { - throw new Error(this._invalidArgumentExceptions.invalidShowAnimationDuration) - } - }, - _validateInteractionProperties: function() { - if (parseInt(this.keyCode, 10) < 0 || parseInt(this.keyCode, 10) > 130 && this.keyCode !== "esc") { - throw new Error(this._invalidArgumentExceptions.invalidKeyCode) - } - if (this.dragArea !== null && (typeof this.dragArea.width === "undefined" || typeof this.dragArea.height === "undefined" || typeof this.dragArea.left === "undefined" || typeof this.dragArea.top === "undefined")) { - throw new Error(this._invalidArgumentExceptions.invalidDragArea) - } - if (!this.dialogResult || (!this.dialogResult.OK && !this.dialogResult.Cancel && !this.dialogResult.None)) { - throw new Error(this._invalidArgumentExceptions.invalidDialogResult) - } - if (this.closeButtonAction !== "hide" && this.closeButtonAction !== "close" && this.closeButtonAction !== "destroy") { - throw new Error(this._invalidArgumentExceptions.invalidCloseButtonAction) - } - }, - _singleModalCheck: function() { - var e = a.data(document.body, "MLjquiwindows-list") || [], - f = e.length; - while (f) { - f -= 1; - if (a(e[f].attr("id")).length > 0) { - if (a(e[f].attr("id")).MLjquiWindow("isModal")) { - return false - } - } - } - return true - }, - _createStructure: function() { - var e = this.host.children("DIV"); - if (e.length === 1) { - this._header = a("
              " + this.host.attr("caption") + "
              "); - this.host.prepend(this._header); - this.host.attr("caption", ""); - this._content = a(e[0]) - } else { - if (e.length === 2) { - this._header = a(e[0]); - this._content = a(e[1]) - } else { - throw new Error("Invalid structure!") - } - } - }, - _refresh: function() { - this._render(); - this._addStyles(); - this._performLayout(); - this._removeEventHandlers(); - this._addEventHandlers(); - this._initializeResize() - }, - _render: function() { - this._addHeaderWrapper(); - this._addCloseButton(); - this._addCollapseButton(); - this._removeModal(); - this._makeModal(); - }, - _addHeaderWrapper: function() { - if (!this._headerContentWrapper) { - this._header.wrapInner('
              '); - this._headerContentWrapper = this._header.children(0); - if (this.headerHeight !== null) { - this._header.height(this.headerHeight) - } - } - }, - _addCloseButton: function() { - if (!this._closeButton) { - this._closeButtonWrapper = a('
              '); - this._closeButton = a('
              '); - this._closeButtonWrapper.append(this._closeButton); - this._header.append(this._closeButtonWrapper) - } - }, - _addCollapseButton: function() { - if (!this._collapseButton) { - this._collapseButtonWrapper = a('
              '); - this._collapseButton = a('
              '); - this._collapseButtonWrapper.append(this._collapseButton); - this._header.append(this._collapseButtonWrapper) - } - }, - _removeModal: function() { - if (!this.isModal && typeof this._modalBackground === "object" && this._modalBackground !== null && this._modalBackground.length >= 1) { - a("." + this.toThemeProperty("MLjqui-window-modal")).remove(); - this._modalBackground = null - } - }, - focus: function() { - try { - this.host.focus(); - var f = this; - setTimeout(function() { - f.host.focus() - }, 10) - } catch (e) {alert(e);} - }, - _makeModal: function() { - if (this.isModal && (!this._modalBackground || this._modalBackground.length < 1)) { - var g = a.data(document.body, "MLjquiwindows-list"); - if (g) { - this._removeFromArray(this.host, g); - a.data(document.body, "MLjquiwindows-list", g) - } - this._modalBackground = a("
              "); - this._modalBackground.addClass(this.toThemeProperty("MLjqui-window-modal")); - this._setModalBackgroundStyles(); - a(document.body).append(this._modalBackground); - this.addHandler(this._modalBackground, this._getEvent("click"), function() { - return false - }); - var f = this; - var e = function(i, k) { - var h = a(i).parents().get(); - for (j = 0; j < h.length; j++) { - if (a(h[j]).is(k)) { - return true - } - } - return false - }; - this.addHandler(this._modalBackground, "mouseup", function(h) { - f._stopResizing(f); - h.preventDefault() - }); - this.addHandler(this._modalBackground, "mousedown", function(i) { - var h = f._getTabbables(); - if (h.length > 0) { - h[0].focus(1); - setTimeout(function() { - h[0].focus(1) - }, 100) - } - i.preventDefault(); - return false - }); - this.addHandler(a(document), "keydown.window" + this.element.id, function(l) { - if (l.keyCode !== 9) { - return - } - var h = a.data(document.body, "MLjquiwindows-modallist"); - if (h.length > 1) { - if (h[h.length - 1][0] != f.element) { - return - } - } - var k = f._getTabbables(); - var m = null; - var i = null; - if (k.length > 0) { - m = k[0]; - i = k[k.length - 1] - } - if (l.target == f.element) { - return - } - if (m == null) { - return - } - if (!e(l.target, f.host)) { - m.focus(1); - return false - } - if (l.target === i && !l.shiftKey) { - m.focus(1); - return false - } else { - if (l.target === m && l.shiftKey) { - i.focus(1); - return false - } - } - }) - } - }, - _addStyles: function() { - this.host.addClass(this.toThemeProperty("MLjqui-rc-all")); - this.host.addClass(this.toThemeProperty("MLjqui-window")); - this.host.addClass(this.toThemeProperty("MLjqui-popup")); - if (a.MLjqui.browser.msie) { - this.host.addClass(this.toThemeProperty("MLjqui-noshadow")) - } - this.host.addClass(this.toThemeProperty("MLjqui-widget")); - this.host.addClass(this.toThemeProperty("MLjqui-widget-content")); - this._header.addClass(this.toThemeProperty("MLjqui-window-header")); - this._content.addClass(this.toThemeProperty("MLjqui-window-content")); - this._header.addClass(this.toThemeProperty("MLjqui-widget-header")); - this._content.addClass(this.toThemeProperty("MLjqui-widget-content")); - this._header.addClass(this.toThemeProperty("MLjqui-disableselect")); - this._header.addClass(this.toThemeProperty("MLjqui-rc-t")); - this._content.addClass(this.toThemeProperty("MLjqui-rc-b")); - if (!this.host.attr("tabindex")) { - this.element.tabIndex = 0; - this.host.children().css("tab-index", 0) - } - this.host.attr("hideFocus", "true").css("outline", "none") - }, - _performHeaderLayout: function() { - this._handleHeaderButtons(); - this._header.css("position", "relative"); - if (this.rtl) { - this._headerContentWrapper.css("direction", "rtl"); - this._headerContentWrapper.css("float", "right") - } else { - this._headerContentWrapper.css("direction", "ltr"); - this._headerContentWrapper.css("float", "left") - } - this._performHeaderCloseButtonLayout(); - this._performHeaderCollapseButtonLayout(); - this._centerElement(this._headerContentWrapper, this._header, "y", "margin"); - if (this.headerHeight) { - this._centerElement(this._closeButtonWrapper, this._header, "y", "margin"); - this._centerElement(this._collapseButtonWrapper, this._header, "y", "margin") - } - }, - _handleHeaderButtons: function() { - if (!this._closeButtonWrapper) { - return - } - if (!this.showCloseButton) { - this._closeButtonWrapper.css("visibility", "hidden") - } else { - this._closeButtonWrapper.css("visibility", "visible"); - this._closeButtonWrapper.width(this.closeButtonSize); - this._closeButtonWrapper.height(this.closeButtonSize) - } - if (!this.showCollapseButton) { - this._collapseButtonWrapper.css("visibility", "hidden") - } else { - this._collapseButtonWrapper.css("visibility", "visible"); - this._collapseButtonWrapper.width(this.collapseButtonSize); - this._collapseButtonWrapper.height(this.collapseButtonSize) - } - }, - _performHeaderCloseButtonLayout: function() { - if (!this._closeButtonWrapper) { - return - } - var e = parseInt(this._header.css("padding-right"), 10); - if (!isNaN(e)) { - this._closeButtonWrapper.width(this._closeButton.width()); - if (!this.rtl) { - this._closeButtonWrapper.css("margin-right", e); - this._closeButtonWrapper.css("margin-left", "0px") - } else { - this._closeButtonWrapper.css("margin-left", e); - this._closeButtonWrapper.css("margin-right", "0px") - } - } - if (!this.rtl) { - this._closeButtonWrapper.css({ - position: "absolute", - right: "0px", - left: "" - }) - } else { - this._closeButtonWrapper.css({ - position: "absolute", - left: "0px", - right: "" - }) - } - }, - _performHeaderCollapseButtonLayout: function() { - if (!this._closeButtonWrapper) { - return - } - var e = parseInt(this._header.css("padding-right"), 10); - if (!isNaN(e)) { - this._collapseButtonWrapper.width(this.collapseButtonSize); - this._collapseButtonWrapper.height(this.collapseButtonSize); - if (!this.rtl) { - this._collapseButtonWrapper.css("margin-right", e); - this._collapseButtonWrapper.css("margin-left", "0px") - } else { - this._collapseButtonWrapper.css("margin-left", e); - this._collapseButtonWrapper.css("margin-right", "0px") - } - } - if (!this.rtl) { - this._collapseButtonWrapper.css({ - position: "absolute", - right: (this.showCloseButton) ? this._closeButton.outerWidth(true) : 0, - left: "" - }) - } else { - this._collapseButtonWrapper.css({ - position: "absolute", - left: (this.showCloseButton) ? this._closeButton.outerWidth(true) : 0, - right: "" - }) - } - this._centerElement(this._collapseButton, this._collapseButton.parent(), "y") - }, - _performWidgetLayout: function() { - var e; - if (this.width !== "auto") { - this.host.css("width", this.width) - } - if (!this.collapsed) { - if (this.height !== "auto") { - this.host.height(this.height) - } else { - this.host.height(this.host.height()) - } - this.host.css("min-height", this.minHeight) - } - this._setChildrenLayout(); - e = this._validateMinSize(); - this.host.css({ - "max-height": this.maxHeight, - "min-width": this.minWidth, - "max-width": this.maxWidth - }); - if (!e) { - this._setChildrenLayout() - } - }, - _setChildrenLayout: function() { - this._header.width(this.host.width() - (this._header.outerWidth(true) - this._header.width())); - this._content.width(this.host.width() - (this._content.outerWidth(true) - this._content.width())); - this._content.height(this.host.height() - this._header.outerHeight(true) - (this._content.outerHeight(true) - this._content.height())) - }, - _validateMinSize: function() { - var f = true; - if (this.minHeight < this._header.height()) { - this.minHeight = this._header.height(); - f = false - } - var h = this._header.children(0).outerWidth(true), - e = this._header.children(1).outerWidth(true), - g = h + e; - if (this.minWidth < 100) { - this.minWidth = Math.min(g, 100); - f = false - } - return f - }, - _centerElement: function(h, f, e, g) { - if (typeof f.left === "number" && typeof f.top === "number" && typeof f.height === "number" && typeof f.width === "number") { - this._centerElementInArea(h, f, e) - } else { - this._centerElementInParent(h, f, e, g) - } - }, - _centerElementInParent: function(e, m, h, f) { - h = h.toLowerCase(); - if (f) { - f += "-" - } else { - f = "" - } - if (h.indexOf("y") >= 0) { - var g = e.outerHeight(true), - k = m.height(), - i = (Math.max(0, k - g)) / 2; - e.css(f + "top", i + "px") - } - if (h.indexOf("x") >= 0) { - var o = e.outerWidth(true); - var n = m.width(); - var l = (Math.max(0, n - o)) / 2; - e.css(f + "left", l + "px") - } - }, - _centerElementInArea: function(f, e, h) { - h = h.toLowerCase(); - if (h.indexOf("y") >= 0) { - var g = f.outerHeight(true); - var k = e.height; - var i = (k - g) / 2; - f.css("top", i + e.top + "px") - } - if (h.indexOf("x") >= 0) { - var n = f.outerWidth(true); - var m = e.width; - var l = (m - n) / 2; - f.css("left", l + e.left + "px") - } - }, - _removeEventHandlers: function() { - this.removeHandler(this._header, this._getEvent("mousedown")); - this.removeHandler(this._header, this._getEvent("mousemove")); - this.removeHandler(this._header, "focus"); - this.removeHandler(a(document), this._getEvent("mousemove") + "." + this.host.attr("id")); - this.removeHandler(a(document), this._getEvent("mouseup") + "." + this.host.attr("id")); - this.removeHandler(this.host, "keydown"); - this.removeHandler(this._closeButton, this._getEvent("click")); - this.removeHandler(this._closeButton, this._getEvent("mouseenter")); - this.removeHandler(this._closeButton, this._getEvent("mouseleave")); - this.removeHandler(this._collapseButton, this._getEvent("click")); - this.removeHandler(this._collapseButton, this._getEvent("mouseenter")); - this.removeHandler(this._collapseButton, this._getEvent("mouseleave")); - this.removeHandler(this.host, this._getEvent("mousedown")); - this.removeHandler(a(this.okButton), this._getEvent("click"), this._setDialogResultHandler); - this.removeHandler(a(this.cancelButton), this._getEvent("click"), this._setDialogResultHandler); - this.removeHandler(this._header, this._getEvent("mouseenter")); - this.removeHandler(this._header, this._getEvent("mouseleave")); - this.removeHandler(this.host, "resizing", this._windowResizeHandler) - }, - _removeFromArray: function(e, g) { - var f = this._indexOf(e, g); - if (f >= 0) { - return g.splice(this._indexOf(e, g), 1) - } else { - return g - } - }, - _sortByStyle: function(e, l) { - for (var h = 0; h < l.length; h++) { - for (var f = l.length - 1; f > h; f--) { - var m = l[f], - k = l[f - 1], - g; - if (parseInt(m.css(e), 10) < parseInt(k.css(e), 10)) { - g = m; - l[f] = k; - l[f - 1] = g - } - } - } - }, - _initializeResize: function() { - if (this.resizable) { - var e = this; - this.initResize({ - target: this.host, - alsoResize: e._content, - maxWidth: e.maxWidth, - minWidth: e.minWidth, - maxHeight: e.maxHeight, - minHeight: e.minHeight, - indicatorSize: 10, - resizeParent: e.dragArea - }) - } - }, - _removeResize: function() { - this.removeResize() - }, - _getEvent: function(e) { - if (this._isTouchDevice) { - return this._touchEvents[e] - } else { - return e - } - }, - _addEventHandlers: function() { - this._addDragDropHandlers(); - this._addCloseHandlers(); - this._addCollapseHandlers(); - this._addFocusHandlers(); - this._documentResizeHandlers(); - this._closeButtonHover(); - this._collapseButtonHover(); - this._addDialogButtonsHandlers(); - this._addHeaderHoverEffect(); - this._addResizeHandlers(); - var e = this; - this.addHandler(this._header, this._getEvent("mousemove"), function(f) { - e._addHeaderCursorHandlers(e) - }) - }, - _addResizeHandlers: function() { - var e = this; - this.addHandler(this.host, "resizing", this._windowResizeHandler, { - self: this - }) - }, - _windowResizeHandler: function(f) { - var e = f.data.self; - e._header.width(e.host.width() - (e._header.outerWidth(true) - e._header.width())); - e.width = f.args.width; - e.height = f.args.height - }, - _addHeaderHoverEffect: function() { - var e = this; - this.addHandler(this._header, this._getEvent("mouseenter"), function() { - a(this).addClass(e.toThemeProperty("MLjqui-window-header-hover")) - }); - this.addHandler(this._header, this._getEvent("mouseleave"), function() { - a(this).removeClass(e.toThemeProperty("MLjqui-window-header-hover")) - }) - }, - _addDialogButtonsHandlers: function() { - if (this.okButton) { - this.addHandler(a(this.okButton), this._getEvent("click"), this._setDialogResultHandler, { - self: this, - result: "ok" - }) - } - if (this.cancelButton) { - this.addHandler(a(this.cancelButton), this._getEvent("click"), this._setDialogResultHandler, { - self: this, - result: "cancel" - }) - } - }, - _documentResizeHandlers: function() { - var e = this; - if (this.isModal) { - this.addHandler(a(window), "resize.window" + this.element.id, function() { - if (typeof e._modalBackground === "object" && e._modalBackground !== null) { - if (e.isOpen()) { - e._modalBackground.hide() - } - if (!e.restricter) { - e._modalBackground.width(e._getDocumentSize().width); - e._modalBackground.height(e._getDocumentSize().height) - } else { - e._modalBackground.css("left", e.dragArea.left); - e._modalBackground.css("top", e.dragArea.top); - e._modalBackground.width(e.dragArea.width); - e._modalBackground.height(e.dragArea.height) - } - if (e.isOpen()) { - e._modalBackground.show() - } - } - }) - } - }, - _setDialogResultHandler: function(f) { - var e = f.data.self; - e._setDialogResult(f.data.result); - e.closeWindow(); - }, - _setDialogResult: function(e) { - this.dialogResult.OK = false; - this.dialogResult.None = false; - this.dialogResult.Cancel = false; - e = e.toLowerCase(); - switch (e) { - case "ok": - this.dialogResult.OK = true; - break; - case "cancel": - this.dialogResult.Cancel = true; - break; - default: - this.dialogResult.None = true - } - }, - _getDocumentSize: function() { - var e = a.MLjqui.browser.msie && a.MLjqui.browser.version < 9; - var f = e ? 4 : 0; - var g = f; - if (document.body.scrollHeight > document.body.clientHeight && e) { - f = this._SCROLL_WIDTH - } - if (document.body.scrollWidth > document.body.clientWidth && e) { - g = this._SCROLL_WIDTH - } - return { - width: a(document).width() - f, - height: a(document).height() - g - } - }, - _closeButtonHover: function() { - var e = this; - this.addHandler(this._closeButton, this._getEvent("mouseenter"), function() { - e._closeButton.addClass(e.toThemeProperty("MLjqui-window-close-button-hover")) - }); - this.addHandler(this._closeButton, this._getEvent("mouseleave"), function() { - e._closeButton.removeClass(e.toThemeProperty("MLjqui-window-close-button-hover")) - }) - }, - _collapseButtonHover: function() { - var e = this; - this.addHandler(this._collapseButton, this._getEvent("mouseenter"), function() { - e._collapseButton.addClass(e.toThemeProperty("MLjqui-window-collapse-button-hover")) - }); - this.addHandler(this._collapseButton, this._getEvent("mouseleave"), function() { - e._collapseButton.removeClass(e.toThemeProperty("MLjqui-window-collapse-button-hover")) - }) - }, - _setModalBackgroundStyles: function() { - if (this.isModal) { - this._modalBackground.fadeTo(0, this.modalOpacity); - this._modalBackground.css({ - position: "absolute", - top: "0px", - left: "0px", - width: this._getDocumentSize().width, - height: this._getDocumentSize().height, - "z-index": this.modalBackgroundZIndex - }); - if (!this.autoOpen) { - this._modalBackground.css("display", "none") - } - } - }, - _addFocusHandlers: function() { - var e = this; - this.addHandler(this.host, this._getEvent("mousedown"), function() { - if (!e.isModal) { - e.bringToFront() - } - }) - }, - _indexOf: function(f, g) { - for (var e = 0; e < g.length; e++) { - if (g[e][0] === f[0]) { - return e - } - } - return -1 - }, - _addCloseHandlers: function() { - var e = this; - this.addHandler(this._closeButton, this._getEvent("click"), function(f) { - return e._closeWindow(f) - }); - if (this.keyboardCloseKey !== "none") { - if (typeof this.keyboardCloseKey !== "number" && this.keyboardCloseKey.toLowerCase() === "esc") { - this.keyboardCloseKey = 27 - } - } - this.addHandler(this.host, "keydown", function(f) { - if (f.keyCode === e.keyboardCloseKey && e.keyboardCloseKey != null && e.keyboardCloseKey != "none") { - e._closeWindow(f) - } else { - e._handleKeys(f) - } - }, { - self: this - }); - this.addHandler(this.host, "keyup", function(f) { - if (!e.keyboardNavigation) { - return - } - if (e._moved) { - var i = e.host.coord(); - var h = i.left; - var g = i.top; - e._raiseEvent(3, h, g, h, g); - e._moved = false - } - }) - }, - _handleKeys: function(f) { - if (!this.keyboardNavigation) { - return - } - if (!this._headerFocused) { - return - } - if (a(document.activeElement).ischildof(this._content)) { - return - } - var e = f.ctrlKey; - var n = f.keyCode; - var l = this.host.coord(); - var k = l.left; - var m = l.top; - var g = this._getDraggingArea(); - var h = this.host.width(); - var o = this.host.height(); - var p = true; - var i = 10; - switch (n) { - case 37: - if (!e) { - if (this.draggable) { - if (k - i >= 0) { - this.move(k - i, m) - } - } - } else { - if (this.resizable) { - this.resize(h - i, o) - } - } - p = false; - break; - case 38: - if (!e) { - if (this.draggable) { - if (m - i >= 0) { - this.move(k, m - i) - } - } - } else { - if (this.resizable) { - this.resize(h, o - i) - } - } - p = false; - break; - case 39: - if (!e) { - if (this.draggable) { - if (k + h + i <= g.width) { - this.move(k + i, m) - } - } - } else { - if (this.resizable) { - this.resize(h + i, o) - } - } - p = false; - break; - case 40: - if (!e) { - if (this.draggable) { - if (m + o + i <= g.height) { - this.move(k, m + i) - } - } - } else { - if (this.resizable) { - this.resize(h, o + i) - } - } - p = false; - break - } - if (!p) { - if (f.preventDefault) { - f.preventDefault() - } - if (f.stopPropagation) { - f.stopPropagation() - } - } - return p - }, - _addCollapseHandlers: function() { - var e = this; - this.addHandler(this._collapseButton, this._getEvent("click"), function() { - if (!e.collapsed) { - e.collapse() - } else { - e.expand() - } - }) - }, - _closeWindow: function(e) { - this.closeWindow(); - return false - }, - _addHeaderCursorHandlers: function(e) { - if (e.resizeArea && e.resizable && !e.collapsed) { - e._header.css("cursor", e._resizeWrapper.css("cursor")); - return - } else { - if (e.draggable) { - e._header.css("cursor", "move"); - return - } - } - e._header.css("cursor", "default"); - if (e._resizeWrapper && e._resizeWrapper.length > 0) { - e._resizeWrapper.css("cursor", "default") - } - }, - _addDragDropHandlers: function() { - if (this.draggable) { - var e = this; - this.addHandler(this.host, "focus", function() { - e._headerFocused = true - }); - this.addHandler(this.host, "blur", function() { - e._headerFocused = false - }); - this.addHandler(this._header, "focus", function() { - e._headerFocused = true; - return false - }); - this.addHandler(this._header, this._getEvent("mousedown"), function(k, i, l) { - if (i) { - k.pageX = i - } - if (l) { - k.pageY = l - } - e._headerMouseDownHandler(e, k); - return true - }); - this.addHandler(this._header, "dragstart", function(i) { - if (i.preventDefault) { - i.preventDefault() - } - return false - }); - this.addHandler(this._header, this._getEvent("mousemove"), function(i) { - return e._headerMouseMoveHandler(e, i) - }); - this.addHandler(a(document), this._getEvent("mousemove") + "." + this.host.attr("id"), function(i) { - return e._dragHandler(e, i) - }); - this.addHandler(a(document), this._getEvent("mouseup") + "." + this.host.attr("id"), function(i) { - return e._dropHandler(e, i) - }); - try { - if (document.referrer != "" || window.frameElement) { - var h = null; - if (window.top != null && window.top != window.self) { - if (window.parent && document.referrer) { - h = document.referrer - } - } - if (h && h.indexOf(document.location.host) != -1) { - var g = function(i) { - e._dropHandler(e, i) - }; - if (window.top.document.addEventListener) { - window.top.document.addEventListener("mouseup", g, false) - } else { - if (window.top.document.attachEvent) { - window.top.document.attachEvent("onmouseup", g) - } - } - } - } - } catch (f) {alert(f);} - } - }, - _headerMouseDownHandler: function(f, g) { - if (!f.isModal) { - f.bringToFront() - } - if (f._resizeDirection == null) { - var h = a.MLjqui.mobile.getTouches(g); - var i = h[0]; - var e = a.MLjqui.position(g); - f._mousePosition.x = e.left; - f._mousePosition.y = e.top; - f._mouseDown = true; - f._isDragging = false - } - }, - _headerMouseMoveHandler: function(f, i) { - if (f._mouseDown && !f._isDragging) { - var k = a.MLjqui.mobile.getTouches(i); - var l = k[0]; - var h = l.pageX, - g = l.pageY; - var e = a.MLjqui.position(i); - h = e.left; - g = e.top; - if ((h + 3 < f._mousePosition.x || h - 3 > f._mousePosition.x) || (g + 3 < f._mousePosition.y || g - 3 > f._mousePosition.y)) { - f._isDragging = true; - f._mousePosition = { - x: h, - y: g - }; - f._windowPosition = { - x: f.host.coord().left, - y: f.host.coord().top - }; - a(document.body).addClass(f.toThemeProperty("MLjqui-disableselect")) - } - if (f._isTouchDevice) { - i.preventDefault(); - return true - } - return false - } - if (f._isDragging) { - if (f._isTouchDevice) { - i.preventDefault(); - return true - } - return false - } - return true - }, - _dropHandler: function(g, k) { - var f = true; - if (g._isDragging && !g.isResizing && !g._resizeDirection) { - var e = parseInt(g.host.css("left"), 10), - l = parseInt(g.host.css("top"), 10), - i = (g._isTouchDevice) ? 0 : k.pageX, - h = (g._isTouchDevice) ? 0 : k.pageY; - g.enableResize = g._enableResizeBackup; - g._enableResizeBackup = "undefined"; - g._raiseEvent(3, e, l, i, h); - f = false; - if (k.preventDefault != "undefined") { - k.preventDefault() - } - if (k.originalEvent != null) { - k.originalEvent.mouseHandled = true - } - if (k.stopPropagation != "undefined") { - k.stopPropagation() - } - } - g._isDragging = false; - g._mouseDown = false; - a(document.body).removeClass(g.toThemeProperty("MLjqui-disableselect")); - return f - }, - _dragHandler: function(p, h) { - if (p._isDragging && !p.isResizing && !p._resizeDirection) { - var o = (p._isTouchDevice) ? h.originalEvent.which : h.which; - if (typeof p._enableResizeBackup === "undefined") { - p._enableResizeBackup = p.enableResize - } - p.enableResize = false; - if (o === 0 && a.MLjqui.browser.msie && a.MLjqui.browser.version < 8) { - return p._dropHandler(p, h) - } - var m = a.MLjqui.mobile.getTouches(h); - var l = m[0]; - var n = a.MLjqui.position(h); - var k = n.left, - i = n.top, - g = k - p._mousePosition.x, - f = i - p._mousePosition.y, - e = p._windowPosition.x + g, - q = p._windowPosition.y + f; - p.move(e, q, h); - h.preventDefault(); - return false - } - return true - }, - _validateCoordinates: function(e, l, i, k) { - var h = this._getDraggingArea(); - e = (e < h.left) ? h.left : e; - l = (l < h.top) ? h.top : l; - var f = this.host.outerWidth(true); - var g = this.host.outerHeight(true); - if (e + f >= h.width + h.left - 2 * k) { - e = h.width + h.left - f - k - } - if (l + g >= h.height + h.top - i) { - l = h.height + h.top - g - i - } - return { - x: e, - y: l - } - }, - _performLayout: function() { - this._performHeaderLayout(); - this._performWidgetLayout() - }, - _parseDragAreaAttributes: function() { - if (this.dragArea !== null) { - this.dragArea.height = parseInt(this.dragArea.height, 10); - this.dragArea.width = parseInt(this.dragArea.width, 10); - this.dragArea.top = parseInt(this.dragArea.top, 10); - this.dragArea.left = parseInt(this.dragArea.left, 10) - } - }, - _positionWindow: function() { - this._parseDragAreaAttributes(); - if (this.position instanceof Array && this.position.length === 2 && typeof this.position[0] === "number" && typeof this.position[1] === "number") { - this.host.css({ - left: this.position[0], - top: this.position[1] - }) - } else { - if (this.position instanceof Object) { - if (this.position.left) { - this.host.offset(this.position) - } else { - if (this.position.x !== undefined && this.position.y != undefined) { - this.host.css({ - left: this.position.x, - top: this.position.y - }) - } else { - if (this.position.center) { - this._centerElement(this.host, this.position.center, "xy"); - var g = this.position.center.coord(); - var f = parseInt(this.host.css("left")); - var e = parseInt(this.host.css("top")); - this.host.css({ - left: f + g.left, - top: e + g.top - }) - } - } - } - } else { - this._positionFromLiteral() - } - } - }, - _getDraggingArea: function() { - var e = {}; - e.left = ((this.dragArea && this.dragArea.left) ? this.dragArea.left : 0); - e.top = ((this.dragArea && this.dragArea.top) ? this.dragArea.top : 0); - e.width = ((this.dragArea && this.dragArea.width) ? this.dragArea.width : this._getDocumentSize().width); - e.height = ((this.dragArea && this.dragArea.height) ? this.dragArea.height : this._getDocumentSize().height); - return e - }, - _positionFromLiteral: function() { - if (!(this.position instanceof Array)) { - this.position = this.position.split(",") - } - var e = this.position.length, - f = this._getDraggingArea(); - while (e) { - e -= 1; - this.position[e] = this.position[e].replace(/ /g, ""); - switch (this.position[e]) { - case "top": - this.host.css("top", f.top); - break; - case "left": - this.host.css("left", f.left); - break; - case "bottom": - this.host.css("top", f.height - this.host.height() + f.top); - break; - case "right": - this.host.css("left", f.left + f.width - this.host.width()); - break; - default: - if (!this.dragArea) { - f = a(window) - } - this._centerElement(this.host, f, "xy"); - break - } - } - }, - _raiseEvent: function(g) { - var f = this._events[g], - h = a.Event(f), - e = {}; - if (g === 2 || g === 3) { - e.x = arguments[1]; - e.y = arguments[2]; - e.pageX = arguments[3]; - e.pageY = arguments[4] - } - if (f === "closed" || f === "close") { - e.dialogResult = this.dialogResult - } - h.args = e; - return this.host.trigger(h) - }, - destroy: function() { - this.removeHandler(a(window), "resize.window" + this.element.id); - this._removeEventHandlers(); - this._destroy() - }, - _destroy: function() { - if (this.restricter) { - this.removeHandler(a(window), "resize." + this.element.id); - this.removeHandler(a(window), "orientationchanged." + this.element.id); - this.removeHandler(a(window), "orientationchange." + this.element.id) - } - this.host.remove(); - if (this._modalBackground !== null) { - this._modalBackground.remove() - } - }, - _toClose: function(f, e) { - return ((f && e[0] === this.element) || (e[0] !== this.element && typeof e[0] === "object")) - }, - propertyChangedHandler: function(e, f, h, g) { - this._validateProperties(); - switch (f) { - case "rtl": - this._performLayout(); - break; - case "dragArea": - this._positionWindow(); - break; - case "collapseButtonSize": - this._performLayout(); - break; - case "closeButtonSize": - this._performLayout(); - break; - case "isModal": - this._refresh(); - this._fixWindowZIndex(); - break; - case "keyboardCloseKey": - this._removeEventHandlers(); - this._addEventHandlers(); - break; - case "disabled": - if (g) { - this.disable() - } else { - this.disabled = true; - this.enable() - } - break; - case "showCloseButton": - case "showCollapseButton": - this._performLayout(); - break; - case "height": - this._performLayout(); - break; - case "width": - this._performLayout(); - break; - case "title": - this.setTitle(g); - this.title = g; - break; - case "content": - this.setContent(g); - break; - case "draggable": - this._removeEventHandlers(); - this._addEventHandlers(); - this._removeResize(); - this._initializeResize(); - break; - case "resizable": - this.enableResize = g; - if (g) { - this._initializeResize() - } else { - this._removeResize() - } - break; - case "position": - this._positionWindow(); - break; - case "modalOpacity": - this._setModalBackgroundStyles(); - break; - case "okButton": - if (g) { - this._addDialogButtonsHandlers() - } else { - this.removeHandler(this.okButton) - } - break; - case "cancelButton": - if (g) { - this._addDialogButtonsHandlers() - } else { - this.removeHandler(this.cancelButton) - } - break; - case "collapsed": - if (g) { - if (!h) { - this.collapsed = false; - this.collapse(0) - } - } else { - if (h) { - this.collapsed = true; - this.expand(0) - } - } - case "theme": - a.MLjqui.utilities.setTheme(h, g, this.host); - break; - case "enableResize": - return; - case "maxWidth": - case "maxHeight": - case "minWidth": - case "minHeight": - e._performLayout(); - e._removeResize(); - e._initializeResize(); - return; - default: - return - } - }, - collapse: function(g) { - if (!this.collapsed && !this.host.is(":animated")) { - if (this.host.css("display") == "none") { - return - } - var e = this, - h = this._header.outerHeight(true), - i = parseInt(this._header.css("border-bottom-width"), 10), - f = parseInt(this._header.css("margin-bottom"), 10), - g = !isNaN(parseInt(g)) ? g : this.collapseAnimationDuration; - if (!isNaN(i)) { - h -= 2 * i - } - if (!isNaN(f)) { - h += f - } - this._heightBeforeCollapse = this.host.height(); - this._minHeightBeforeCollapse = this.host.css("min-height"); - this.host.css("min-height", h); - this.host.animate({ - height: h - }, g, function() { - e.collapsed = true; - e._collapseButton.addClass(e.toThemeProperty("MLjqui-window-collapse-button-collapsed")); - e._collapseButton.addClass(e.toThemeProperty("MLjqui-icon-arrow-down")); - e._content.css("display", "none"); - e._raiseEvent(5); - e._raiseEvent(9); - a.MLjqui.aria(e, "aria-expanded", false) - }) - } - }, - expand: function(f) { - if (this.collapsed && !this.host.is(":animated")) { - var e = this, - f = !isNaN(parseInt(f)) ? f : this.collapseAnimationDuration; - this.host.animate({ - height: this._heightBeforeCollapse - }, f, function() { - e.collapsed = false; - e.host.css("min-height", e._minHeightBeforeCollapse); - e._collapseButton.removeClass(e.toThemeProperty("MLjqui-window-collapse-button-collapsed")); - e._collapseButton.removeClass(e.toThemeProperty("MLjqui-icon-arrow-down")); - e._content.css("display", "block"); - e._raiseEvent(6); - e._performWidgetLayout(); - e._raiseEvent(9); - a.MLjqui.aria(e, "aria-expanded", true) - }) - } - }, - closeAll: function(h) { - var h = true; - var g = a.data(document.body, "MLjquiwindows-list"), - f = g.length, - e = a.data(document.body, "MLjquiwindow-modal") || []; - while (f) { - f -= 1; - if (this._toClose(h, g[f])) { - g[f].MLjquiWindow("closeWindow", "close"); - g.splice(f, 1) - } - } - if (this._toClose(h, e)) { - e.MLjquiWindow("closeWindow", "close"); - a.data(document.body, "MLjquiwindow-modal", []) - } - a.data(document.body, "MLjquiwindows-list", g) - }, - setTitle: function(e) { - a.MLjqui.utilities.html(this._headerContentWrapper, e); - this.title = e; - this._performLayout() - }, - setContent: function(f) { - this._contentInitialized = false; - var e = this._content, - g = false; - while (!g) { - e.css("height", "auto"); - e.css("width", "auto"); - if (e.is(".MLjqui-window")) { - g = true - } else { - e = e.parent() - } - } - a.MLjqui.utilities.html(this._content, f); - this._performLayout() - }, - disable: function() { - console.log("dddddddddddddddddddddddddddddddddddddd"); - this.disabled = true; - this._removeEventHandlers(); - this._header.addClass(this.toThemeProperty("MLjqui-window-header-disabled")); - this._closeButton.addClass(this.toThemeProperty("MLjqui-window-close-button-disabled")); - this._collapseButton.addClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")); - this._content.addClass(this.toThemeProperty("MLjqui-window-content-disabled")); - this.host.addClass(this.toThemeProperty("MLjqui-window-disabled")); - this.host.addClass(this.toThemeProperty("MLjqui-fill-state-disabled")); - this._removeResize() - }, - enable: function() { - if (this.disabled) { - this._addEventHandlers(); - this._header.removeClass(this.toThemeProperty("MLjqui-window-header-disabled")); - this._content.removeClass(this.toThemeProperty("MLjqui-window-content-disabled")); - this._closeButton.removeClass(this.toThemeProperty("MLjqui-window-close-button-disabled")); - this._collapseButton.removeClass(this.toThemeProperty("MLjqui-window-collapse-button-disabled")); - this.host.removeClass(this.toThemeProperty("MLjqui-window-disabled")); - this.host.removeClass(this.toThemeProperty("MLjqui-fill-state-disabled")); - this.disabled = false; - this._initializeResize() - } - }, - isOpen: function() { - return this._visible - }, - closeWindow: function(f) { - var e = this; - f = (typeof f === "undefined") ? this.closeButtonAction : f; - this.hide(function() { - if (f === "close") { - e._destroy(); - } - }) - }, - bringToFront: function() { - var f = a.data(document.body, "MLjquiwindows-list"); - if (this.isModal) { - f = a.data(document.body, "MLjquiwindows-modallist"); - this._fixWindowZIndex("modal-hide"); - this._fixWindowZIndex("modal-show"); - return - } - var l = f[f.length - 1], - k = parseInt(l.css("z-index"), 10), - g = this._indexOf(this.host, f); - for (var e = f.length - 1; e > g; e -= 1) { - var h = parseInt(f[e].css("z-index"), 10) - 1; - f[e].css("z-index", h) - } - this.host.css("z-index", k); - this._sortByStyle("z-index", f) - }, - hide: function(h, g, e) { - if (this.closing) { - var f = this.closing(); - if (f == false) { - return - } - } - g = g || this.closeAnimationDuration; - switch (this.animationType) { - case "none": - this.host.css("display", "none"); - break; - case "fade": - this.host.fadeOut(g, function() { - if (h instanceof Function) { - h() - } - }); - case "slide": - this.host.slideUp(g, function() { - if (h instanceof Function) { - h() - } - }); - case "combined": - this.host.hide(g, function() { - if (h instanceof Function) { - h() - } - }) - } - this._visible = false; - if (this.isModal) { - this._modalBackground.hide(); - this._fixWindowZIndex("modal-hide") - } - if (e !== true) { - this._raiseEvent(1); - this._raiseEvent(8) - } - }, - open: function(f, e) { - this.show(f, e) - }, - close: function(g, f, e) { - this.hide(g, f, e) - }, - show: function(h, g) { - this._setDialogResult("none"); - g = g || this.showAnimationDuration; - switch (this.animationType) { - case "none": - this.host.css("display", "block"); - break; - case "fade": - this.host.fadeIn(g, function() { - if (h instanceof Function) { - h() - } - }); - break; - case "slide": - this.host.slideDown(g, function() { - if (h instanceof Function) { - h() - } - }); - break; - case "combined": - this.host.show(g, function() { - if (h instanceof Function) { - h() - } - }); - break - } - if (this.isModal) { - this._modalBackground.show(); - this._fixWindowZIndex("modal-show") - } - var f = this; - if (!this._visible) { - if (g > 150 && this.animationType != "none") { - setTimeout(function() { - if (!f._contentInitialized) { - if (f.initContent) { - f.initContent(); - f._contentInitialized = true - } - } - f._raiseEvent(7); - f._raiseEvent(9) - }, g - 150) - } else { - if (!f._contentInitialized) { - if (f.initContent) { - f.initContent(); - f._contentInitialized = true - } - } - this._raiseEvent(7); - f._raiseEvent(9) - } - } - this._visible = true; - this._performLayout(); - if (this.autoFocus) { - var e = function() { - if (!f._isTouchDevice) { - f._content.focus() - } - }; - e(); - setTimeout(function() { - e() - }, 100) - } - }, - _getTabbables: function() { - var f = this._content.find("*"); - var e = new Array(); - a.each(f, function() { - if (d(this)) { - e[e.length] = this - } - }); - return e - }, - move: function(q, p, e, h) { - var g = 0, - f = 0, - n, k, i, q = parseInt(q, 10), - p = parseInt(p, 10); - if (a.MLjqui.browser.msie) { - if (a(window).width() > a(document).width() && !this.dragArea) { - f = this._SCROLL_WIDTH - } - if (a(window).height() < a(document).height() && document.documentElement.clientWidth > document.documentElement.scrollWidth && !this.dragArea) { - g = this._SCROLL_WIDTH - } - } - n = this._validateCoordinates(q, p, f, g); - if (parseInt(this.host.css("left"), 10) !== n.x || parseInt(this.host.css("top"), 10) !== n.y) { - if (e) { - var m = a.MLjqui.mobile.getTouches(e); - var l = m[0]; - var o = a.MLjqui.position(e); - k = o.left; - i = o.top - } - if (k == undefined) { - k = q - } - if (i == undefined) { - i = p - } - if (h !== false) { - this._raiseEvent(2, n.x, n.y, k, i) - } - } - this.element.style.left = n.x + "px"; - this.element.style.top = n.y + "px"; - this._moved = true - } - }); - - function c(g, e) { - var k = g.nodeName.toLowerCase(); - if ("area" === k) { - var i = g.parentNode, - h = i.name, - f; - if (!g.href || !h || i.nodeName.toLowerCase() !== "map") { - return false - } - f = a("img[usemap=#" + h + "]")[0]; - return !!f && b(f) - } - return (/input|select|textarea|button|object/.test(k) ? !g.disabled : "a" == k ? g.href || e : e) && b(g) - } - - function b(e) { - return !a(e).parents().andSelf().filter(function() { - return a.css(this, "visibility") === "hidden" || a.expr.filters.hidden(this) - }).length - } - - function d(g) { - var e = a.attr(g, "tabindex"), - f = isNaN(e); - return (f || e >= 0) && c(g, !f) - } -}(MLjquiBaseFramework)); -(function(b) { - var a = (function(c) { - return { - resizeConfig: function() { - this.resizeTarget = null; - this.resizeIndicatorSize = 5; - this.resizeTargetChildren = null; - this.isResizing = false; - this.resizeArea = false; - this.minWidth = 1; - this.maxWidth = 100; - this.minHeight = 1; - this.maxHeight = 100; - this.resizeParent = null; - this.enableResize = true; - this._cursorBackup; - this._resizeEvents = ["resizing", "resized", "resize"]; - this._resizeMouseDown = false; - this._resizeCurrentMode = null; - this._mouseResizePosition = {}; - this._resizeMethods = null; - this._SCROLL_WIDTH = 21 - }, - _resizeExceptions: { - invalidTarget: "Invalid target!", - invalidMinHeight: "Invalid minimal height!", - invalidMaxHeight: "Invalid maximum height!", - invalidMinWidth: "Invalid minimum width!", - invalidMaxWidth: "Invalid maximum width!", - invalidIndicatorSize: "Invalid indicator size!", - invalidSize: "Invalid size!" - }, - removeResize: function() { - if (this.resizeTarget) { - var f = c(this.resizeTarget.children(".MLjqui-resize")); - f.detach(); - var e = f.children(); - this._removeResizeEventListeners(); - for (var d = 0; d < e.length; d += 1) { - c(e[d]).detach(); - this.resizeTarget.append(e[d]) - } - f.remove() - } - }, - initResize: function(d) { - this.resizeConfig(); - this.resizeTarget = c(d.target); - this.resizeIndicatorSize = d.indicatorSize || 10; - this.maxWidth = d.maxWidth || 100; - this.minWidth = d.minWidth || 1; - this.maxHeight = d.maxHeight || 100; - this.minHeight = d.minHeight || 1; - this.resizeParent = d.resizeParent; - this._parseResizeParentProperties(); - this._validateResizeProperties(); - this._validateResizeTargetDimensions(); - this._getChildren(this.resizeTarget.maxWidth, this.resizeTarget.minWidth, this.resizeTarget.maxHeight, this.resizeTarget.minHeight, d.alsoResize); - this._refreshResize(); - this._cursorBackup = this.resizeTarget.css("cursor"); - if (this._cursorBackup === "auto") { - this._cursorBackup = "default" - } - }, - _validateResizeTargetDimensions: function() { - this.resizeTarget.maxWidth = this.maxWidth; - this.resizeTarget.minWidth = ((3 * this.resizeIndicatorSize > this.minWidth) ? 3 * this.resizeIndicatorSize : this.minWidth); - this.resizeTarget.maxHeight = this.maxHeight; - this.resizeTarget.minHeight = ((3 * this.resizeIndicatorSize > this.minHeight) ? 3 * this.resizeIndicatorSize : this.minHeight) - }, - _parseResizeParentProperties: function() { - if (this.resizeParent) { - this.resizeParent.left = parseInt(this.resizeParent.left, 10); - this.resizeParent.top = parseInt(this.resizeParent.top, 10); - this.resizeParent.width = parseInt(this.resizeParent.width, 10); - this.resizeParent.height = parseInt(this.resizeParent.height, 10) - } - }, - _getChildren: function(h, e, g, i, d) { - this.resizeTargetChildren = c(d); - this.resizeTargetChildren.toArray(); - var f = this.resizeTargetChildren.length; - while (f) { - f -= 1; - this.resizeTargetChildren[f] = c(this.resizeTargetChildren[f]) - } - }, - _refreshResize: function() { - this._renderResize(); - this._performResizeLayout(); - this._removeResizeEventListeners(); - this._addResizeEventHandlers() - }, - _renderResize: function() { - this.resizeTarget.wrapInner(c("
              ")); - this._resizeWrapper = this.resizeTarget.children(0); - this._resizeWrapper.addClass("MLjqui-resize"); - this._resizeWrapper.addClass("MLjqui-rc-all"); - this._resizeWrapper.css("z-index", 8000) - }, - _performResizeLayout: function() { - this._resizeWrapper.height(this.resizeTarget.height()); - this._resizeWrapper.width(this.resizeTarget.width()) - }, - _removeResizeEventListeners: function() { - var d = this.resizeTarget.attr("id"); - this.removeHandler(this._resizeWrapper, "mousemove.resize" + d); - this.removeHandler(this._resizeWrapper, "mousedown.resize" + d); - this.removeHandler(c(document), "mousemove.resize" + d); - this.removeHandler(c(document), "mouseup.resize" + d) - }, - _addResizeEventHandlers: function() { - var g = this.resizeTarget.attr("id"); - var d = this; - this.addHandler(this._resizeWrapper, "mousemove.resize." + g, function(h) { - d._resizeCursorChangeHandler(d, h) - }); - this.addHandler(this._resizeWrapper, "mousedown.resize." + g, function(h) { - d._resizeMouseDownHandler(d, h) - }); - this.addHandler(c(document), "mousemove.resize." + g, function(h) { - return d._resizeHandler(d, h) - }); - this.addHandler(c(document), "mouseup.resize." + g, function(h) { - d._stopResizing(d, h) - }); - try { - if (document.referrer != "" || window.frameElement) { - var f = function(h) { - d._stopResizing(d, h) - }; - if (window.top.document.addEventListener) { - window.top.document.addEventListener("mouseup", f, false) - } else { - if (window.top.document.attachEvent) { - window.top.document.attachEvent("onmouseup", f) - } - } - } - } catch (e) {alert(e);} - }, - _stopResizing: function(d, e) { - if (d.enableResize) { - if (d.isResizing) { - d._raiseResizeEvent(1) - } - d._resizeMouseDown = false; - d.isResizing = false; - d._resizeDirection = null; - if (d.resizeTarget) { - d.resizeTarget.removeClass("MLjqui-disableselect") - } - } - if (d._cursorBackup == "undefined") { - d._cursorBackup = "default" - } - if (d._resizeWrapper) { - d._resizeWrapper.css("cursor", d._cursorBackup) - } - }, - _resizeHandler: function(d, e) { - if (d.enableResize && !d.collapsed) { - if (d.isResizing && d._resizeDirection) { - if (e.which === 0 && c.MLjqui.browser.msie && c.MLjqui.browser.version < 9) { - d._stopResizing(e) - } - d._performResize(e.pageX, e.pageY); - return false - } else { - return d._resizeCaptureCursor(e.pageX, e.pageY) - } - } - }, - _resizeCaptureCursor: function(e, d) { - if (this._resizeMouseDown && !this.isResizing && this._resizeDirection) { - if ((e + 3 < this._mouseResizePosition.x || e - 3 > this._mouseResizePosition.x) || (d + 3 < this._mouseResizePosition.y || d - 3 > this._mouseResizePosition.y)) { - this._changeCursor(e - parseInt(this.resizeTarget.css("left")), d - parseInt(this.resizeTarget.css("top"))); - this._mouseResizePosition = { - x: e, - y: d - }; - this._prepareResizeMethods(this._resizeDirection); - this._resizeBackupData(); - this.isResizing = true; - this.resizeTarget.addClass("MLjqui-disableselect"); - return false - } - } - }, - _resizeBackupData: function() { - this.resizeTarget.lastWidth = this.resizeTarget.width(); - this.resizeTarget.lastHeight = this.resizeTarget.height(); - this.resizeTarget.x = parseInt(this.resizeTarget.css("left"), 10); - this.resizeTarget.y = parseInt(this.resizeTarget.css("top"), 10); - this._resizeBackupChildrenSize() - }, - _resizeBackupChildrenSize: function() { - var d = this.resizeTargetChildren.length, - e; - while (d) { - d -= 1; - e = this.resizeTargetChildren[d]; - this.resizeTargetChildren[d].lastWidth = e.width(); - this.resizeTargetChildren[d].lastHeight = e.height() - } - }, - _performResize: function(g, f) { - var e = g - this._mouseResizePosition.x, - d = f - this._mouseResizePosition.y; - if (this._resizeDirection) { - this._resize(this.resizeTarget, e, d) - } - }, - _resizeCursorChangeHandler: function(d, e) { - if (d.enableResize && !d.collapsed) { - if (!d.isResizing) { - d._changeCursor(e.pageX - parseInt(d.resizeTarget.css("left")), e.pageY - parseInt(d.resizeTarget.css("top"))) - } - } - }, - _resizeMouseDownHandler: function(d, e) { - if (d.enableResize) { - if (d._resizeDirection !== null) { - d._resizeMouseDown = true; - d._mouseResizePosition.x = e.pageX; - d._mouseResizePosition.y = e.pageY; - e.preventDefault() - } - } - }, - _validateResizeProperties: function() { - try { - if (!this.resizeTarget || this.resizeTarget.length !== 1) { - throw new Error(this._resizeExceptions.invalidTarget) - } - if (this.minHeight < 0 || isNaN(parseInt(this.minHeight))) { - throw new Error(this._resizeExceptions.invalidMinHeight) - } - if (this.maxHeight <= 0 || isNaN(parseInt(this.maxHeight))) { - throw new Error(this._resizeExceptions.invalidMaxHeight) - } - if (this.minWidth < 0 || isNaN(parseInt(this.minWidth))) { - throw new Error(this._resizeExceptions.invalidMinWidth) - } - if (this.maxWidth < 0 || isNaN(parseInt(this.maxWidth))) { - throw new Error(this._resizeExceptions.invalidMaxWidth) - } - if (this.resizeIndicatorSize < 0 || isNaN(parseInt(this.resizeIndicatorSize))) { - throw new Error(this._resizeExceptions.invalidIndicatorSize) - } - if (this.minHeight > this.maxHeight || this.minWidth > this.maxWidth) { - throw new Error(this._resizeExceptions.invalidSize) - } - } catch (d) { - alert(d); - } - }, - _changeCursor: function(d, e) { - if (this.isResizing || this._resizeMouseDown) { - return - } - this.resizeArea = true; - if (d <= this.resizeIndicatorSize && d >= 0 && e <= this.resizeIndicatorSize && e > 0) { - this._resizeWrapper.css("cursor", "nw-resize"); - this._resizeDirection = "topleft" - } else { - if (e <= this.resizeIndicatorSize && e > 0 && d >= this.resizeTarget.width() - this.resizeIndicatorSize) { - this._resizeWrapper.css("cursor", "ne-resize"); - this._resizeDirection = "topright" - } else { - if (e >= this.resizeTarget.height() - this.resizeIndicatorSize && e < this.resizeTarget.height() && d <= this.resizeIndicatorSize && d >= 0) { - this._resizeWrapper.css("cursor", "sw-resize"); - this._resizeDirection = "bottomleft" - } else { - if (e >= this.resizeTarget.height() - this.resizeIndicatorSize && e < this.resizeTarget.height() && d >= this.resizeTarget.width() - this.resizeIndicatorSize && d < this.resizeTarget.width()) { - this._resizeWrapper.css("cursor", "se-resize"); - this._resizeDirection = "bottomright" - } else { - if (d <= this.resizeIndicatorSize && d >= 0) { - this._resizeWrapper.css("cursor", "e-resize"); - this._resizeDirection = "left" - } else { - if (e <= this.resizeIndicatorSize && e > 0) { - this._resizeWrapper.css("cursor", "n-resize"); - this._resizeDirection = "top" - } else { - if (e >= this.resizeTarget.height() - this.resizeIndicatorSize && e < this.resizeTarget.height()) { - this._resizeWrapper.css("cursor", "n-resize"); - this._resizeDirection = "bottom" - } else { - if (d >= this.resizeTarget.width() - this.resizeIndicatorSize && d < this.resizeTarget.width()) { - this._resizeWrapper.css("cursor", "e-resize"); - this._resizeDirection = "right" - } else { - this._resizeWrapper.css("cursor", this._cursorBackup); - this._resizeDirection = null; - this.resizeArea = false - } - } - } - } - } - } - } - } - }, - _prepareResizeMethods: function(d) { - this._resizeMethods = []; - if (d.indexOf("left") >= 0) { - this._resizeMethods.push(this._resizeLeft) - } - if (d.indexOf("top") >= 0) { - this._resizeMethods.push(this._resizeTop) - } - if (d.indexOf("right") >= 0) { - this._resizeMethods.push(this._resizeRight) - } - if (d.indexOf("bottom") >= 0) { - this._resizeMethods.push(this._resizeBottom) - } - }, - _validateResize: function(g, d, h, f, e) { - if (h === "horizontal" || h === "both") { - return this._validateWidth(g, f, e) - } else { - if (h === "vertical" || h === "both") { - return this._validateHeight(d, f, e) - } - } - return { - result: false, - fix: 0 - } - }, - _getParent: function() { - if (this.resizeParent !== null && this.resizeParent !== "undefined" && this.resizeParent.height && this.resizeParent.width && this.resizeParent.top && this.resizeParent.left) { - return this.resizeParent - } - return { - left: 0, - top: 0, - width: c(document).width(), - height: c(document).height() - } - }, - _validateHeight: function(f, k, i) { - var l = 0, - e = 2, - d = false, - h = f, - g = this._getParent(); - if (c(window).width() > c(document).width() && c.MLjqui.browser.msie && g.height === c(document).height()) { - l = this._SCROLL_WIDTH - } - if (i === "bottom" && (f + k.position().top + l + e > g.height + g.top)) { - return { - fix: g.height - k.position().top - l - e + g.top, - result: false - } - } - if (i === "top" && k.lastHeight - f + k.y < g.top) { - return { - fix: f + (k.lastHeight - f + k.y) - g.top, - result: false - } - } - if (f < k.minHeight) { - return { - fix: k.minHeight, - result: false - } - } - if (f > k.maxHeight) { - return { - fix: k.maxHeight, - result: false - } - } - return { - result: true, - fix: f - } - }, - _validateWidth: function(k, i, h) { - var l = 0, - e = 2, - d = false, - g = k, - f = this._getParent(); - if (c(window).height() < c(document).height() && c.MLjqui.browser.msie && document.documentElement.clientWidth >= document.documentElement.scrollWidth && f.width === c(document).width()) { - l = this._SCROLL_WIDTH - } - if (h === "right" && (k + i.position().left + l + e > f.width + f.left)) { - return { - fix: f.width - i.position().left - l - e + f.left, - result: false - } - } - if (h === "left" && (i.lastWidth - k + i.x < f.left)) { - return { - fix: k + (i.lastWidth - k + i.x) - f.left, - result: false - } - } - if (k < i.minWidth) { - return { - fix: i.minWidth, - result: false - } - } - if (k > i.maxWidth) { - return { - fix: i.maxWidth, - result: false - } - } - return { - result: true, - fix: k - } - }, - _resize: function(h, e, d) { - var l = this._resizeDirection; - var k = this._resizeMethods.length; - for (var g = 0; g < k; g++) { - if (this._resizeMethods[g] instanceof Function) { - var f = { - element: h, - x: e, - y: d, - self: this - }; - this._resizeMethods[g](f) - } - } - this._performResizeLayout() - }, - resize: function(g, d) { - if (this.resizable) { - var f = g - this.host.width(); - var e = d - this.host.height(); - var h = "right"; - if (e != 0) { - h = "bottom" - } - this._resizeDirection = h; - this._prepareResizeMethods(this._resizeDirection); - this._resizeBackupData(); - this.isResizing = true; - this._resize(this.resizeTarget, f, e); - this.isResizing = false - } - }, - _setResizeChildrenSize: function(e, f) { - var h = this.resizeTargetChildren.length; - while (h) { - h--; - if (f === "width") { - var g = this.resizeTargetChildren[h].lastWidth - (this.resizeTarget.lastWidth - e); - if (g < this.resizeTarget.maxWidth && g > 0) { - this.resizeTargetChildren[h].width(g) - } - } else { - var d = this.resizeTargetChildren[h].lastHeight - (this.resizeTarget.lastHeight - e); - if (d < this.resizeTarget.maxHeight && d > 0) { - this.resizeTargetChildren[h].height(d) - } - } - } - }, - _resizeRight: function(e) { - var f = e.element.lastWidth + e.x, - d = e.self._validateResize(f, 0, "horizontal", e.element, "right"); - if (!d.result) { - f = d.fix - } - if (e.element.width() !== f) { - e.self._setResizeChildrenSize(f, "width"); - e.element.width(f); - e.self._raiseResizeEvent(0) - } - return f - }, - _resizeLeft: function(f) { - var g = f.element.lastWidth - f.x, - e = f.self._validateResize(g, 0, "horizontal", f.element, "left"), - d = f.element.x + f.x; - if (!e.result) { - d = f.element.x + (f.element.lastWidth - e.fix); - g = e.fix; - return - } - if (f.element.width() !== g) { - f.self._setResizeChildrenSize(g, "width"); - f.element.width(g); - f.element.css("left", d); - f.self._raiseResizeEvent(0) - } - return g - }, - _resizeBottom: function(f) { - var e = f.element.lastHeight + f.y, - d = f.self._validateResize(0, e, "vertical", f.element, "bottom"); - if (!d.result) { - e = d.fix - } - if (f.element.height() !== e) { - f.self._setResizeChildrenSize(e, "height"); - f.element.height(e); - f.self._raiseResizeEvent(0) - } - return e - }, - _resizeTop: function(f) { - var e = f.element.lastHeight - f.y, - d = f.self._validateResize(0, e, "vertical", f.element, "top"), - g = f.element.y + f.y; - if (!d.result) { - g = f.element.y + (f.element.lastHeight - d.fix); - e = d.fix; - return - } - if (f.element.height() !== e) { - f.self._setResizeChildrenSize(e, "height"); - f.element.height(e); - f.element.css("top", g); - f.self._raiseResizeEvent(0) - } - return e - }, - _raiseResizeEvent: function(f) { - var e = this._resizeEvents[f], - g = c.Event(e), - d = {}; - d.width = parseInt(this.resizeTarget[0].style.width); - d.height = parseInt(this.resizeTarget[0].style.height); - g.args = d; - if (f == 0) { - var e = this._resizeEvents[2], - h = c.Event(e); - h.args = d; - this.resizeTarget.trigger(h) - } - return this.resizeTarget.trigger(g) - } - } - }(MLjquiBaseFramework)); - b.extend(b.MLjqui._MLjquiWindow.prototype, a) -}(MLjquiBaseFramework)); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/owl.carousel.js b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/owl.carousel.js deleted file mode 100644 index 21c05fcc..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/owl.carousel.js +++ /dev/null @@ -1,1521 +0,0 @@ -/* - * jQuery OwlCarousel v1.3.2 - * - * Copyright (c) 2013 Bartosz Wojciechowski - * http://www.owlgraphic.com/owlcarousel/ - * - * Licensed under MIT - * - */ - -/*JS Lint helpers: */ -/*global dragMove: false, dragEnd: false, $, jQuery, alert, window, document */ -/*jslint nomen: true, continue:true */ - -if (typeof Object.create !== "function") { - Object.create = function (obj) { - function F() {} - F.prototype = obj; - return new F(); - }; -} -(function ($, window, document) { - - var Carousel = { - init : function (options, el) { - var base = this; - - base.$elem = $(el); - base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options); - - base.userOptions = options; - base.loadContent(); - }, - - loadContent : function () { - var base = this, url; - - function getData(data) { - var i, content = ""; - if (typeof base.options.jsonSuccess === "function") { - base.options.jsonSuccess.apply(this, [data]); - } else { - for (i in data.owl) { - if (data.owl.hasOwnProperty(i)) { - content += data.owl[i].item; - } - } - base.$elem.html(content); - } - base.logIn(); - } - - if (typeof base.options.beforeInit === "function") { - base.options.beforeInit.apply(this, [base.$elem]); - } - - if (typeof base.options.jsonPath === "string") { - url = base.options.jsonPath; - $.getJSON(url, getData); - } else { - base.logIn(); - } - }, - - logIn : function () { - var base = this; - - base.$elem.data("owl-originalStyles", base.$elem.attr("style")) - .data("owl-originalClasses", base.$elem.attr("class")); - - base.$elem.css({opacity: 0}); - base.orignalItems = base.options.items; - base.checkBrowser(); - base.wrapperWidth = 0; - base.checkVisible = null; - base.setVars(); - }, - - setVars : function () { - var base = this; - if (base.$elem.children().length === 0) {return false; } - base.baseClass(); - base.eventTypes(); - base.$userItems = base.$elem.children(); - base.itemsAmount = base.$userItems.length; - base.wrapItems(); - base.$owlItems = base.$elem.find(".owl-item"); - base.$owlWrapper = base.$elem.find(".owl-wrapper"); - base.playDirection = "next"; - base.prevItem = 0; - base.prevArr = [0]; - base.currentItem = 0; - base.customEvents(); - base.onStartup(); - }, - - onStartup : function () { - var base = this; - base.updateItems(); - base.calculateAll(); - base.buildControls(); - base.updateControls(); - base.response(); - base.moveEvents(); - base.stopOnHover(); - base.owlStatus(); - - if (base.options.transitionStyle !== false) { - base.transitionTypes(base.options.transitionStyle); - } - if (base.options.autoPlay === true) { - base.options.autoPlay = 5000; - } - base.play(); - - base.$elem.find(".owl-wrapper").css("display", "block"); - - if (!base.$elem.is(":visible")) { - base.watchVisibility(); - } else { - base.$elem.css("opacity", 1); - } - base.onstartup = false; - base.eachMoveUpdate(); - if (typeof base.options.afterInit === "function") { - base.options.afterInit.apply(this, [base.$elem]); - } - }, - - eachMoveUpdate : function () { - var base = this; - - if (base.options.lazyLoad === true) { - base.lazyLoad(); - } - if (base.options.autoHeight === true) { - base.autoHeight(); - } - base.onVisibleItems(); - - if (typeof base.options.afterAction === "function") { - base.options.afterAction.apply(this, [base.$elem]); - } - }, - - updateVars : function () { - var base = this; - if (typeof base.options.beforeUpdate === "function") { - base.options.beforeUpdate.apply(this, [base.$elem]); - } - base.watchVisibility(); - base.updateItems(); - base.calculateAll(); - base.updatePosition(); - base.updateControls(); - base.eachMoveUpdate(); - if (typeof base.options.afterUpdate === "function") { - base.options.afterUpdate.apply(this, [base.$elem]); - } - }, - - reload : function () { - var base = this; - window.setTimeout(function () { - base.updateVars(); - }, 0); - }, - - watchVisibility : function () { - var base = this; - - if (base.$elem.is(":visible") === false) { - base.$elem.css({opacity: 0}); - window.clearInterval(base.autoPlayInterval); - window.clearInterval(base.checkVisible); - } else { - return false; - } - base.checkVisible = window.setInterval(function () { - if (base.$elem.is(":visible")) { - base.reload(); - base.$elem.animate({opacity: 1}, 200); - window.clearInterval(base.checkVisible); - } - }, 500); - }, - - wrapItems : function () { - var base = this; - base.$userItems.wrapAll("
              ").wrap("
              "); - base.$elem.find(".owl-wrapper").wrap("
              "); - base.wrapperOuter = base.$elem.find(".owl-wrapper-outer"); - base.$elem.css("display", "block"); - }, - - baseClass : function () { - var base = this, - hasBaseClass = base.$elem.hasClass(base.options.baseClass), - hasThemeClass = base.$elem.hasClass(base.options.theme); - - if (!hasBaseClass) { - base.$elem.addClass(base.options.baseClass); - } - - if (!hasThemeClass) { - base.$elem.addClass(base.options.theme); - } - }, - - updateItems : function () { - var base = this, width, i; - - if (base.options.responsive === false) { - return false; - } - if (base.options.singleItem === true) { - base.options.items = base.orignalItems = 1; - base.options.itemsCustom = false; - base.options.itemsDesktop = false; - base.options.itemsDesktopSmall = false; - base.options.itemsTablet = false; - base.options.itemsTabletSmall = false; - base.options.itemsMobile = false; - return false; - } - - width = $(base.options.responsiveBaseWidth).width(); - - if (width > (base.options.itemsDesktop[0] || base.orignalItems)) { - base.options.items = base.orignalItems; - } - if (base.options.itemsCustom !== false) { - //Reorder array by screen size - base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; }); - - for (i = 0; i < base.options.itemsCustom.length; i += 1) { - if (base.options.itemsCustom[i][0] <= width) { - base.options.items = base.options.itemsCustom[i][1]; - } - } - - } else { - - if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) { - base.options.items = base.options.itemsDesktop[1]; - } - - if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) { - base.options.items = base.options.itemsDesktopSmall[1]; - } - - if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) { - base.options.items = base.options.itemsTablet[1]; - } - - if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) { - base.options.items = base.options.itemsTabletSmall[1]; - } - - if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) { - base.options.items = base.options.itemsMobile[1]; - } - } - - //if number of items is less than declared - if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) { - base.options.items = base.itemsAmount; - } - }, - - response : function () { - var base = this, - smallDelay, - lastWindowWidth; - - if (base.options.responsive !== true) { - return false; - } - lastWindowWidth = $(window).width(); - - base.resizer = function () { - if ($(window).width() !== lastWindowWidth) { - if (base.options.autoPlay !== false) { - window.clearInterval(base.autoPlayInterval); - } - window.clearTimeout(smallDelay); - smallDelay = window.setTimeout(function () { - lastWindowWidth = $(window).width(); - base.updateVars(); - }, base.options.responsiveRefreshRate); - } - }; - $(window).resize(base.resizer); - }, - - updatePosition : function () { - var base = this; - base.jumpTo(base.currentItem); - if (base.options.autoPlay !== false) { - base.checkAp(); - } - }, - - appendItemsSizes : function () { - var base = this, - roundPages = 0, - lastItem = base.itemsAmount - base.options.items; - - base.$owlItems.each(function (index) { - var $this = $(this); - $this - .css({"width": base.itemWidth}) - .data("owl-item", Number(index)); - - if (index % base.options.items === 0 || index === lastItem) { - if (!(index > lastItem)) { - roundPages += 1; - } - } - $this.data("owl-roundPages", roundPages); - }); - }, - - appendWrapperSizes : function () { - var base = this, - width = base.$owlItems.length * base.itemWidth; - - base.$owlWrapper.css({ - "width": width * 2, - "left": 0 - }); - base.appendItemsSizes(); - }, - - calculateAll : function () { - var base = this; - base.calculateWidth(); - base.appendWrapperSizes(); - base.loops(); - base.max(); - }, - - calculateWidth : function () { - var base = this; - base.itemWidth = Math.round(base.$elem.width() / base.options.items); - }, - - max : function () { - var base = this, - maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1; - if (base.options.items > base.itemsAmount) { - base.maximumItem = 0; - maximum = 0; - base.maximumPixels = 0; - } else { - base.maximumItem = base.itemsAmount - base.options.items; - base.maximumPixels = maximum; - } - return maximum; - }, - - min : function () { - return 0; - }, - - loops : function () { - var base = this, - prev = 0, - elWidth = 0, - i, - item, - roundPageNum; - - base.positionsInArray = [0]; - base.pagesInArray = []; - - for (i = 0; i < base.itemsAmount; i += 1) { - elWidth += base.itemWidth; - base.positionsInArray.push(-elWidth); - - if (base.options.scrollPerPage === true) { - item = $(base.$owlItems[i]); - roundPageNum = item.data("owl-roundPages"); - if (roundPageNum !== prev) { - base.pagesInArray[prev] = base.positionsInArray[i]; - prev = roundPageNum; - } - } - } - }, - - buildControls : function () { - var base = this; - if (base.options.navigation === true || base.options.pagination === true) { - base.owlControls = $("
              ").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem); - } - if (base.options.pagination === true) { - base.buildPagination(); - } - if (base.options.navigation === true) { - base.buildButtons(); - } - }, - - buildButtons : function () { - var base = this, -// buttonsWrapper = $("
              "); - buttonsWrapper = $("
              "); - base.owlControls.append(buttonsWrapper); - -// base.buttonPrev = $("
              ", { -// "class" : "owl-prev", -// "html" : base.options.navigationText[0] || "" -// }); - -// base.buttonNext = $("
              ", { -// "class" : "owl-next", -// "html" : base.options.navigationText[1] || "" -// }); - -//̹ -// base.buttonNext = $("
              ", { -// "class" : "owl-next", -// "html" : base.options.innerHTML= "" -// }); - - buttonsWrapper - .append(base.buttonPrev) - .append(base.buttonNext); - - buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) { - event.preventDefault(); - }); - - buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) { - event.preventDefault(); - if ($(this).hasClass("owl-next")) { - base.next();} -// } else { -// base.prev(); -// } - }); - }, - - buildPagination : function () { - var base = this; - - base.paginationWrapper = $("
              "); - base.owlControls.append(base.paginationWrapper); - - base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) { - event.preventDefault(); - if (Number($(this).data("owl-page")) !== base.currentItem) { - base.goTo(Number($(this).data("owl-page")), true); - } - }); - }, - - updatePagination : function () { - var base = this, - counter, - lastPage, - lastItem, - i, - paginationButton, - paginationButtonInner; - - if (base.options.pagination === false) { - return false; - } - - base.paginationWrapper.html(""); - - counter = 0; - lastPage = base.itemsAmount - base.itemsAmount % base.options.items; - - for (i = 0; i < base.itemsAmount; i += 1) { - if (i % base.options.items === 0) { - counter += 1; - if (lastPage === i) { - lastItem = base.itemsAmount - base.options.items; - } - paginationButton = $("
              ", { - "class" : "owl-page" - }); - paginationButtonInner = $("", { - "text": base.options.paginationNumbers === true ? counter : "", - "class": base.options.paginationNumbers === true ? "owl-numbers" : "" - }); - paginationButton.append(paginationButtonInner); - - paginationButton.data("owl-page", lastPage === i ? lastItem : i); - paginationButton.data("owl-roundPages", counter); - - base.paginationWrapper.append(paginationButton); - } - } - base.checkPagination(); - }, - checkPagination : function () { - var base = this; - if (base.options.pagination === false) { - return false; - } - base.paginationWrapper.find(".owl-page").each(function () { - if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) { - base.paginationWrapper - .find(".owl-page") - .removeClass("active"); - $(this).addClass("active"); - } - }); - }, - - checkNavigation : function () { - var base = this; - - if (base.options.navigation === false) { - return false; - } - if (base.options.rewindNav === false) { - if (base.currentItem === 0 && base.maximumItem === 0) { - base.buttonPrev.addClass("disabled"); - base.buttonNext.addClass("disabled"); - } else if (base.currentItem === 0 && base.maximumItem !== 0) { - base.buttonPrev.addClass("disabled"); - base.buttonNext.removeClass("disabled"); - } else if (base.currentItem === base.maximumItem) { - base.buttonPrev.removeClass("disabled"); - base.buttonNext.addClass("disabled"); - } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) { - base.buttonPrev.removeClass("disabled"); - base.buttonNext.removeClass("disabled"); - } - } - }, - - updateControls : function () { - var base = this; - base.updatePagination(); - base.checkNavigation(); - if (base.owlControls) { - if (base.options.items >= base.itemsAmount) { - base.owlControls.hide(); - } else { - base.owlControls.show(); - } - } - }, - - destroyControls : function () { - var base = this; - if (base.owlControls) { - base.owlControls.remove(); - } - }, - - next : function (speed) { - var base = this; - - if (base.isTransition) { - return false; - } - - base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1; - if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) { - if (base.options.rewindNav === true) { - base.currentItem = 0; - speed = "rewind"; - } else { - base.currentItem = base.maximumItem; - return false; - } - } - base.goTo(base.currentItem, speed); - }, - - prev : function (speed) { - var base = this; - - if (base.isTransition) { - return false; - } - - if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) { - base.currentItem = 0; - } else { - base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1; - } - if (base.currentItem < 0) { - if (base.options.rewindNav === true) { - base.currentItem = base.maximumItem; - speed = "rewind"; - } else { - base.currentItem = 0; - return false; - } - } - base.goTo(base.currentItem, speed); - }, - - goTo : function (position, speed, drag) { - var base = this, - goToPixel; - - if (base.isTransition) { - return false; - } - if (typeof base.options.beforeMove === "function") { - base.options.beforeMove.apply(this, [base.$elem]); - } - if (position >= base.maximumItem) { - position = base.maximumItem; - } else if (position <= 0) { - position = 0; - } - - base.currentItem = base.owl.currentItem = position; - if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.support3d === true) { - base.swapSpeed(0); - if (base.browser.support3d === true) { - base.transition3d(base.positionsInArray[position]); - } else { - base.css2slide(base.positionsInArray[position], 1); - } - base.afterGo(); - base.singleItemTransition(); - return false; - } - goToPixel = base.positionsInArray[position]; - - if (base.browser.support3d === true) { - base.isCss3Finish = false; - - if (speed === true) { - base.swapSpeed("paginationSpeed"); - window.setTimeout(function () { - base.isCss3Finish = true; - }, base.options.paginationSpeed); - - } else if (speed === "rewind") { - base.swapSpeed(base.options.rewindSpeed); - window.setTimeout(function () { - base.isCss3Finish = true; - }, base.options.rewindSpeed); - - } else { - base.swapSpeed("slideSpeed"); - window.setTimeout(function () { - base.isCss3Finish = true; - }, base.options.slideSpeed); - } - base.transition3d(goToPixel); - } else { - if (speed === true) { - base.css2slide(goToPixel, base.options.paginationSpeed); - } else if (speed === "rewind") { - base.css2slide(goToPixel, base.options.rewindSpeed); - } else { - base.css2slide(goToPixel, base.options.slideSpeed); - } - } - base.afterGo(); - }, - - jumpTo : function (position) { - var base = this; - if (typeof base.options.beforeMove === "function") { - base.options.beforeMove.apply(this, [base.$elem]); - } - if (position >= base.maximumItem || position === -1) { - position = base.maximumItem; - } else if (position <= 0) { - position = 0; - } - base.swapSpeed(0); - if (base.browser.support3d === true) { - base.transition3d(base.positionsInArray[position]); - } else { - base.css2slide(base.positionsInArray[position], 1); - } - base.currentItem = base.owl.currentItem = position; - base.afterGo(); - }, - - afterGo : function () { - var base = this; - - base.prevArr.push(base.currentItem); - base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2]; - base.prevArr.shift(0); - - if (base.prevItem !== base.currentItem) { - base.checkPagination(); - base.checkNavigation(); - base.eachMoveUpdate(); - - if (base.options.autoPlay !== false) { - base.checkAp(); - } - } - if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) { - base.options.afterMove.apply(this, [base.$elem]); - } - }, - - stop : function () { - var base = this; - base.apStatus = "stop"; - window.clearInterval(base.autoPlayInterval); - }, - - checkAp : function () { - var base = this; - if (base.apStatus !== "stop") { - base.play(); - } - }, - - play : function () { - var base = this; - base.apStatus = "play"; - if (base.options.autoPlay === false) { - return false; - } - window.clearInterval(base.autoPlayInterval); - base.autoPlayInterval = window.setInterval(function () { - base.next(true); - }, base.options.autoPlay); - }, - - swapSpeed : function (action) { - var base = this; - if (action === "slideSpeed") { - base.$owlWrapper.css(base.addCssSpeed(base.options.slideSpeed)); - } else if (action === "paginationSpeed") { - base.$owlWrapper.css(base.addCssSpeed(base.options.paginationSpeed)); - } else if (typeof action !== "string") { - base.$owlWrapper.css(base.addCssSpeed(action)); - } - }, - - addCssSpeed : function (speed) { - return { - "-webkit-transition": "all " + speed + "ms ease", - "-moz-transition": "all " + speed + "ms ease", - "-o-transition": "all " + speed + "ms ease", - "transition": "all " + speed + "ms ease" - }; - }, - - removeTransition : function () { - return { - "-webkit-transition": "", - "-moz-transition": "", - "-o-transition": "", - "transition": "" - }; - }, - - doTranslate : function (pixels) { - return { - "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)", - "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)", - "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)", - "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)", - "transform": "translate3d(" + pixels + "px, 0px,0px)" - }; - }, - - transition3d : function (value) { - var base = this; - base.$owlWrapper.css(base.doTranslate(value)); - }, - - css2move : function (value) { - var base = this; - base.$owlWrapper.css({"left" : value}); - }, - - css2slide : function (value, speed) { - var base = this; - - base.isCssFinish = false; - base.$owlWrapper.stop(true, true).animate({ - "left" : value - }, { - duration : speed || base.options.slideSpeed, - complete : function () { - base.isCssFinish = true; - } - }); - }, - - checkBrowser : function () { - var base = this, - translate3D = "translate3d(0px, 0px, 0px)", - tempElem = document.createElement("div"), - regex, - asSupport, - support3d, - isTouch; - - tempElem.style.cssText = " -moz-transform:" + translate3D + - "; -ms-transform:" + translate3D + - "; -o-transform:" + translate3D + - "; -webkit-transform:" + translate3D + - "; transform:" + translate3D; - regex = /translate3d\(0px, 0px, 0px\)/g; - - asSupport = tempElem.style.cssText.match(regex); - support3d = (asSupport !== null && asSupport.length === 1); - - isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints; - - base.browser = { - "support3d" : support3d, - "isTouch" : isTouch - }; - }, - - moveEvents : function () { - var base = this; - if (base.options.mouseDrag !== false || base.options.touchDrag !== false) { - base.gestures(); - base.disabledEvents(); - } - }, - - eventTypes : function () { - var base = this, - types = ["s", "e", "x"]; - - base.ev_types = {}; - - if (base.options.mouseDrag === true && base.options.touchDrag === true) { - types = [ - "touchstart.owl mousedown.owl", - "touchmove.owl mousemove.owl", - "touchend.owl touchcancel.owl mouseup.owl" - ]; - } else if (base.options.mouseDrag === false && base.options.touchDrag === true) { - types = [ - "touchstart.owl", - "touchmove.owl", - "touchend.owl touchcancel.owl" - ]; - } else if (base.options.mouseDrag === true && base.options.touchDrag === false) { - types = [ - "mousedown.owl", - "mousemove.owl", - "mouseup.owl" - ]; - } - - base.ev_types.start = types[0]; - base.ev_types.move = types[1]; - base.ev_types.end = types[2]; - }, - - disabledEvents : function () { - var base = this; - base.$elem.on("dragstart.owl", function (event) { event.preventDefault(); }); - base.$elem.on("mousedown.disableTextSelect", function (e) { - return $(e.target).is('input, textarea, select, option'); - }); - }, - - gestures : function () { - /*jslint unparam: true*/ - var base = this, - locals = { - offsetX : 0, - offsetY : 0, - baseElWidth : 0, - relativePos : 0, - position: null, - minSwipe : null, - maxSwipe: null, - sliding : null, - dargging: null, - targetElement : null - }; - - base.isCssFinish = true; - - - function getTouches(event) { - if (event.touches !== undefined) { - return { - x : event.touches[0].pageX, - y : event.touches[0].pageY - }; - } - - if (event.touches === undefined) { - if (event.pageX !== undefined) { - return { - x : event.pageX, - y : event.pageY - }; - } - if (event.pageX === undefined) { - return { - x : event.clientX, - y : event.clientY - }; - } - } - } - - function swapEvents(type) { - if (type === "on") { - $(document).on(base.ev_types.move, dragMove); - $(document).on(base.ev_types.end, dragEnd); - } else if (type === "off") { - $(document).off(base.ev_types.move); - $(document).off(base.ev_types.end); - } - } - - function dragStart(event) { - var ev = event.originalEvent || event || window.event, - position; - - if (ev.which === 3) { - return false; - } - if (base.itemsAmount <= base.options.items) { - return; - } - if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) { - return false; - } - if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) { - return false; - } - - if (base.options.autoPlay !== false) { - window.clearInterval(base.autoPlayInterval); - } - - if (base.browser.isTouch !== true && !base.$owlWrapper.hasClass("grabbing")) { - base.$owlWrapper.addClass("grabbing"); - } - - base.newPosX = 0; - base.newRelativeX = 0; - - $(this).css(base.removeTransition()); - - position = $(this).position(); - locals.relativePos = position.left; - - locals.offsetX = getTouches(ev).x - position.left; - locals.offsetY = getTouches(ev).y - position.top; - - swapEvents("on"); - - locals.sliding = false; - locals.targetElement = ev.target || ev.srcElement; - } - - function dragMove(event) { - var ev = event.originalEvent || event || window.event, - minSwipe, - maxSwipe; - - base.newPosX = getTouches(ev).x - locals.offsetX; - base.newPosY = getTouches(ev).y - locals.offsetY; - base.newRelativeX = base.newPosX - locals.relativePos; - - if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) { - locals.dragging = true; - base.options.startDragging.apply(base, [base.$elem]); - } - - if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) { - if (ev.preventDefault !== undefined) { - ev.preventDefault(); - } else { - ev.returnValue = false; - } - locals.sliding = true; - } - - if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) { - $(document).off("touchmove.owl"); - } - - minSwipe = function () { - return base.newRelativeX / 5; - }; - - maxSwipe = function () { - return base.maximumPixels + base.newRelativeX / 5; - }; - - base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe()); - if (base.browser.support3d === true) { - base.transition3d(base.newPosX); - } else { - base.css2move(base.newPosX); - } - } - - function dragEnd(event) { - var ev = event.originalEvent || event || window.event, - newPosition, - handlers, - owlStopEvent; - - ev.target = ev.target || ev.srcElement; - - locals.dragging = false; - - if (base.browser.isTouch !== true) { - base.$owlWrapper.removeClass("grabbing"); - } - - if (base.newRelativeX < 0) { - base.dragDirection = base.owl.dragDirection = "left"; - } else { - base.dragDirection = base.owl.dragDirection = "right"; - } - - if (base.newRelativeX !== 0) { - newPosition = base.getNewPosition(); - base.goTo(newPosition, false, "drag"); - if (locals.targetElement === ev.target && base.browser.isTouch !== true) { - $(ev.target).on("click.disable", function (ev) { - ev.stopImmediatePropagation(); - ev.stopPropagation(); - ev.preventDefault(); - $(ev.target).off("click.disable"); - }); - handlers = $._data(ev.target, "events").click; - owlStopEvent = handlers.pop(); - handlers.splice(0, 0, owlStopEvent); - } - } - swapEvents("off"); - } - base.$elem.on(base.ev_types.start, ".owl-wrapper", dragStart); - }, - - getNewPosition : function () { - var base = this, - newPosition = base.closestItem(); - - if (newPosition > base.maximumItem) { - base.currentItem = base.maximumItem; - newPosition = base.maximumItem; - } else if (base.newPosX >= 0) { - newPosition = 0; - base.currentItem = 0; - } - return newPosition; - }, - closestItem : function () { - var base = this, - array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray, - goal = base.newPosX, - closest = null; - - $.each(array, function (i, v) { - if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") { - closest = v; - if (base.options.scrollPerPage === true) { - base.currentItem = $.inArray(closest, base.positionsInArray); - } else { - base.currentItem = i; - } - } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") { - if (base.options.scrollPerPage === true) { - closest = array[i + 1] || array[array.length - 1]; - base.currentItem = $.inArray(closest, base.positionsInArray); - } else { - closest = array[i + 1]; - base.currentItem = i + 1; - } - } - }); - return base.currentItem; - }, - - moveDirection : function () { - var base = this, - direction; - if (base.newRelativeX < 0) { - direction = "right"; - base.playDirection = "next"; - } else { - direction = "left"; - base.playDirection = "prev"; - } - return direction; - }, - - customEvents : function () { - /*jslint unparam: true*/ - var base = this; - base.$elem.on("owl.next", function () { - base.next(); - }); - base.$elem.on("owl.prev", function () { - base.prev(); - }); - base.$elem.on("owl.play", function (event, speed) { - base.options.autoPlay = speed; - base.play(); - base.hoverStatus = "play"; - }); - base.$elem.on("owl.stop", function () { - base.stop(); - base.hoverStatus = "stop"; - }); - base.$elem.on("owl.goTo", function (event, item) { - base.goTo(item); - }); - base.$elem.on("owl.jumpTo", function (event, item) { - base.jumpTo(item); - }); - }, - - stopOnHover : function () { - var base = this; - if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) { - base.$elem.on("mouseover", function () { - base.stop(); - }); - base.$elem.on("mouseout", function () { - if (base.hoverStatus !== "stop") { - base.play(); - } - }); - } - }, - - lazyLoad : function () { - var base = this, - i, - $item, - itemNumber, - $lazyImg, - follow; - - if (base.options.lazyLoad === false) { - return false; - } - for (i = 0; i < base.itemsAmount; i += 1) { - $item = $(base.$owlItems[i]); - - if ($item.data("owl-loaded") === "loaded") { - continue; - } - - itemNumber = $item.data("owl-item"); - $lazyImg = $item.find(".lazyOwl"); - - if (typeof $lazyImg.data("src") !== "string") { - $item.data("owl-loaded", "loaded"); - continue; - } - if ($item.data("owl-loaded") === undefined) { - $lazyImg.hide(); - $item.addClass("loading").data("owl-loaded", "checked"); - } - if (base.options.lazyFollow === true) { - follow = itemNumber >= base.currentItem; - } else { - follow = true; - } - if (follow && itemNumber < base.currentItem + base.options.items && $lazyImg.length) { - base.lazyPreload($item, $lazyImg); - } - } - }, - - lazyPreload : function ($item, $lazyImg) { - var base = this, - iterations = 0, - isBackgroundImg; - - if ($lazyImg.prop("tagName") === "DIV") { - $lazyImg.css("background-image", "url(" + $lazyImg.data("src") + ")"); - isBackgroundImg = true; - } else { - $lazyImg[0].src = $lazyImg.data("src"); - } - - function showImage() { - $item.data("owl-loaded", "loaded").removeClass("loading"); - $lazyImg.removeAttr("data-src"); - if (base.options.lazyEffect === "fade") { - $lazyImg.fadeIn(400); - } else { - $lazyImg.show(); - } - if (typeof base.options.afterLazyLoad === "function") { - base.options.afterLazyLoad.apply(this, [base.$elem]); - } - } - - function checkLazyImage() { - iterations += 1; - if (base.completeImg($lazyImg.get(0)) || isBackgroundImg === true) { - showImage(); - } else if (iterations <= 100) {//if image loads in less than 10 seconds - window.setTimeout(checkLazyImage, 100); - } else { - showImage(); - } - } - - checkLazyImage(); - }, - - autoHeight : function () { - var base = this, - $currentimg = $(base.$owlItems[base.currentItem]).find("img"), - iterations; - - function addHeight() { - var $currentItem = $(base.$owlItems[base.currentItem]).height(); - base.wrapperOuter.css("height", $currentItem + "px"); - if (!base.wrapperOuter.hasClass("autoHeight")) { - window.setTimeout(function () { - base.wrapperOuter.addClass("autoHeight"); - }, 0); - } - } - - function checkImage() { - iterations += 1; - if (base.completeImg($currentimg.get(0))) { - addHeight(); - } else if (iterations <= 100) { //if image loads in less than 10 seconds - window.setTimeout(checkImage, 100); - } else { - base.wrapperOuter.css("height", ""); //Else remove height attribute - } - } - - if ($currentimg.get(0) !== undefined) { - iterations = 0; - checkImage(); - } else { - addHeight(); - } - }, - - completeImg : function (img) { - var naturalWidthType; - - if (!img.complete) { - return false; - } - naturalWidthType = typeof img.naturalWidth; - if (naturalWidthType !== "undefined" && img.naturalWidth === 0) { - return false; - } - return true; - }, - - onVisibleItems : function () { - var base = this, - i; - - if (base.options.addClassActive === true) { - base.$owlItems.removeClass("active"); - } - base.visibleItems = []; - for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) { - base.visibleItems.push(i); - - if (base.options.addClassActive === true) { - $(base.$owlItems[i]).addClass("active"); - } - } - base.owl.visibleItems = base.visibleItems; - }, - - transitionTypes : function (className) { - var base = this; - //Currently available: "fade", "backSlide", "goDown", "fadeUp" - base.outClass = "owl-" + className + "-out"; - base.inClass = "owl-" + className + "-in"; - }, - - singleItemTransition : function () { - var base = this, - outClass = base.outClass, - inClass = base.inClass, - $currentItem = base.$owlItems.eq(base.currentItem), - $prevItem = base.$owlItems.eq(base.prevItem), - prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem], - origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2, - animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend'; - - base.isTransition = true; - - base.$owlWrapper - .addClass('owl-origin') - .css({ - "-webkit-transform-origin" : origin + "px", - "-moz-perspective-origin" : origin + "px", - "perspective-origin" : origin + "px" - }); - function transStyles(prevPos) { - return { - "position" : "relative", - "left" : prevPos + "px" - }; - } - - $prevItem - .css(transStyles(prevPos, 10)) - .addClass(outClass) - .on(animEnd, function () { - base.endPrev = true; - $prevItem.off(animEnd); - base.clearTransStyle($prevItem, outClass); - }); - - $currentItem - .addClass(inClass) - .on(animEnd, function () { - base.endCurrent = true; - $currentItem.off(animEnd); - base.clearTransStyle($currentItem, inClass); - }); - }, - - clearTransStyle : function (item, classToRemove) { - var base = this; - item.css({ - "position" : "", - "left" : "" - }).removeClass(classToRemove); - - if (base.endPrev && base.endCurrent) { - base.$owlWrapper.removeClass('owl-origin'); - base.endPrev = false; - base.endCurrent = false; - base.isTransition = false; - } - }, - - owlStatus : function () { - var base = this; - base.owl = { - "userOptions" : base.userOptions, - "baseElement" : base.$elem, - "userItems" : base.$userItems, - "owlItems" : base.$owlItems, - "currentItem" : base.currentItem, - "prevItem" : base.prevItem, - "visibleItems" : base.visibleItems, - "isTouch" : base.browser.isTouch, - "browser" : base.browser, - "dragDirection" : base.dragDirection - }; - }, - - clearEvents : function () { - var base = this; - base.$elem.off(".owl owl mousedown.disableTextSelect"); - $(document).off(".owl owl"); - $(window).off("resize", base.resizer); - }, - - unWrap : function () { - var base = this; - if (base.$elem.children().length !== 0) { - base.$owlWrapper.unwrap(); - base.$userItems.unwrap().unwrap(); - if (base.owlControls) { - base.owlControls.remove(); - } - } - base.clearEvents(); - base.$elem - .attr("style", base.$elem.data("owl-originalStyles") || "") - .attr("class", base.$elem.data("owl-originalClasses")); - }, - - destroy : function () { - var base = this; - base.stop(); - window.clearInterval(base.checkVisible); - base.unWrap(); - base.$elem.removeData(); - }, - - reinit : function (newOptions) { - var base = this, - options = $.extend({}, base.userOptions, newOptions); - base.unWrap(); - base.init(options, base.$elem); - }, - - addItem : function (htmlString, targetPosition) { - var base = this, - position; - - if (!htmlString) {return false; } - - if (base.$elem.children().length === 0) { - base.$elem.append(htmlString); - base.setVars(); - return false; - } - base.unWrap(); - if (targetPosition === undefined || targetPosition === -1) { - position = -1; - } else { - position = targetPosition; - } - if (position >= base.$userItems.length || position === -1) { - base.$userItems.eq(-1).after(htmlString); - } else { - base.$userItems.eq(position).before(htmlString); - } - - base.setVars(); - }, - - removeItem : function (targetPosition) { - var base = this, - position; - - if (base.$elem.children().length === 0) { - return false; - } - if (targetPosition === undefined || targetPosition === -1) { - position = -1; - } else { - position = targetPosition; - } - - base.unWrap(); - base.$userItems.eq(position).remove(); - base.setVars(); - } - - }; - - $.fn.owlCarousel = function (options) { - return this.each(function () { - if ($(this).data("owl-init") === true) { - return false; - } - $(this).data("owl-init", true); - var carousel = Object.create(Carousel); - carousel.init(options, this); - $.data(this, "owlCarousel", carousel); - }); - }; - - $.fn.owlCarousel.options = { - - items : 5, - itemsCustom : false, - itemsDesktop : [1199, 4], - itemsDesktopSmall : [979, 3], - itemsTablet : [768, 2], - itemsTabletSmall : false, - itemsMobile : [479, 1], - singleItem : false, - itemsScaleUp : false, - - slideSpeed : 200, - paginationSpeed : 800, - rewindSpeed : 1000, - - autoPlay : 3000, - stopOnHover : true, - - navigation : false, - navigationText : ["prev", "next"], - rewindNav : true, - scrollPerPage : false, - - pagination : true, - paginationNumbers : false, - - responsive : true, - responsiveRefreshRate : 200, - responsiveBaseWidth : window, - - baseClass : "owl-carousel", - theme : "owl-theme", - - lazyLoad : false, - lazyFollow : true, - lazyEffect : "fade", - - autoHeight : false, - - jsonPath : false, - jsonSuccess : false, - - dragBeforeAnimFinish : true, - mouseDrag : true, - touchDrag : true, - - addClassActive : false, - transitionStyle : false, - - beforeUpdate : false, - afterUpdate : false, - beforeInit : false, - afterInit : false, - beforeMove : false, - afterMove : false, - afterAction : false, - startDragging : false, - afterLazyLoad: false - }; -}(jQuery, window, document)); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader-small.gif b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader-small.gif deleted file mode 100644 index f7eaf1e4..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader-small.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader.gif b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader.gif deleted file mode 100644 index 2d390e45..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader.gif__ b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader.gif__ deleted file mode 100644 index a534f19e..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/images/loader.gif__ and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/jqx.base.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/jqx.base.css deleted file mode 100644 index 921b1afa..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/jqx.base.css +++ /dev/null @@ -1,6762 +0,0 @@ -/*Rounded Corners*/ -/*top-left rounded Corners*/ -.jqx-rc-tl -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; -} -/*top-right rounded Corners*/ -.jqx-rc-tr -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom-left rounded Corners*/ -.jqx-rc-bl -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*bottom-right rounded Corners*/ -.jqx-rc-br -{ - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*top rounded Corners*/ -.jqx-rc-t -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -/*bottom rounded Corners*/ -.jqx-rc-b -{ - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*right rounded Corners*/ -.jqx-rc-r -{ - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; -} -/*left rounded Corners*/ -.jqx-rc-l -{ - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; -} -/*all rounded Corners*/ -.jqx-rc-all -{ - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} -/*reset rounded corners*/ -.jqx-rc-reset -{ - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} - -/*Reset Style*/ -.jqx-reset -{ - padding: 0; - margin: 0; - border: none; - background: transparent; - outline: none; - box-sizing: content-box; -} -.jqx-clear { - align:left; valign:top; left: 0px; top: 0px; -webkit-appearance: none !important; outline: none !important; padding: 0px; margin: 0px; -} -.jqx-popup { - box-sizing: content-box; -} -.jqx-position-reset { - position: static !important; -} -.jqx-border-reset { - border: none !important; -} -.jqx-overflow-hidden { - overflow: hidden !important; -} -.jqx-position-relative { - position: relative !important; -} -.jqx-position-absolute { - position: absolute !important; -} -.jqx-max-size { - width: 100% !important; - height: 100% !important; -} -.jqx-background-reset { - background: transparent !important; -} -/*Disable browser selection*/ -.jqx-disableselect -{ - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -ms-user-select:none; - -webkit-touch-callout:none; - -webkit-tap-highlight-color: rgba(0,0,0,0); -} -.jqx-enableselect { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select:text; - user-select:all; -} -.jqx-hideborder -{ - border: none !important; -} -.jqx-hidescrollbars -{ - overflow: hidden !important; -} -/*jqxButton, jqxToggleButton, jqxRepeatButton Style*/ -.jqx-button{outline: none; border: 1px solid transparent; padding: 3px; text-align: center; vertical-align: central; margin: 0 0 0 0; cursor: default; } -button.jqx-button, input[type=button].jqx-button, input[type=submit].jqx-button { - box-sizing: border-box !important; -moz-box-sizing: border-box !important; -} - -.jqx-buttongroup{} -.jqx-group-button-normal { - vertical-align: middle; - text-align: center; -} -/*applied to the link button's anchor element.*/ -.jqx-link -{ - text-decoration: none; - color: #111111; -} - -/*shows elements.*/ -.jqx-visible -{ - display: block; -} -/*hides elements.*/ -.jqx-hidden -{ - display: none; -} -.jqx-widget, .jqx-widget-content, .jqx-widget-header, .jqx-fill-state-normal { - line-height: 1.231; -} -/*jqxGauge Style*/ -.jqx-gauge-label, .jqx-gauge-caption -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.jqx-knob { - text-align: center; -} -/*jqxChart Style*/ -.jqx-knob-label, -.jqx-chart-axis-text, -.jqx-chart-label-text, -.jqx-chart-tooltip-text, -.jqx-chart-legend-text -{ - fill: #333333; - color: #333333; - font-size: 11px; - font-family: Verdana; -} -.jqx-chart-axis-description -{ - fill: #555555; - color: #555555; - font-size: 11px; - font-family: Verdana; -} -.jqx-chart-title-text -{ - fill: #111111; - color: #111111; - font-size: 14px; - font-weight: bold; - font-family: Verdana; -} -.jqx-chart-title-description -{ - fill: #111111; - color: #111111; - font-size: 12px; - font-weight: normal; - font-family: Verdana; -} - -/*applied to the Grid's element.*/ -.jqx-grid -{ - overflow: hidden; - border-style: solid; - border-width: 1px; -} -/*applied to the Pager.*/ -.jqx-grid-pager -{ - border: none; - border-top: 1px solid transparent; -} -/*applied to the Top Pager.*/ -.jqx-grid-pager-top -{ - border: none; - border-bottom: 1px solid transparent; -} -.jqx-grid-pager-number{ - padding: 2px 5px; - text-decoration: none; - margin: 1px; - border: 1px solid transparent; - color: inherit !important; - *color: expression(this.parentNode.currentStyle['color']) !important; - outline: none; - font-weight: normal !important; -} -.jqx-grid-menu-item-touch { - padding-top: 6px !important; - padding-bottom: 6px !important; -} -/*applied to the Grid's bottom-right area between the horizontal and vertical scrollbars.*/ -.jqx-grid-bottomright -{ - -} -/*applied to the Grid's header area.*/ -.jqx-grid-header -{ - border-style: solid; - border-width: 0px 0px 1px 0px; - overflow: hidden; - border-color: transparent; - margin: 0px; - padding: 0px; - } - /*applied to the columns.*/ -.jqx-grid-column-header, .jqx-grid-columngroup-header { - border-style: solid; - border-width: 0px 1px 0px 0px; - border-color: transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -.jqx-grid-column-header-rtl, .jqx-grid-columngroup-header-rtl { - border-width: 0px 0px 0px 1px; -} -.jqx-grid-columngroup-header { - border-bottom-width: 1px; - border-left-width: 1px; -} - /*applied to the column's button.*/ - .jqx-grid-column-menubutton { - border-style: solid; - border-width: 0px 0px 0px 1px; - border-color: transparent; - background-image: url('images/menubutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } -.jqx-grid-column-menubutton-rtl { - border-width: 0px 1px 0px 0px; -} - /*applied to the column's sort button when the sort order is ascending.*/ - .jqx-grid-column-sortascbutton { - border: none; - background-image: url('images/sortascbutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } - /*applied to the column's sort button when the sort order is descending.*/ - .jqx-grid-column-sortdescbutton { - border: none; - background-image: url('images/sortdescbutton.png'); - background-repeat: no-repeat; - background-position: center; - cursor: pointer; - } - /*applied to the column's filter button.*/ - .jqx-grid-column-filterbutton - { - border: none; - background-image: url('images/filter.png'); - background-repeat: no-repeat; - background-position: center; - } - /*applied to the column's resize line.*/ - .jqx-grid-column-resizeline { - border-right: 1px dotted #555; - } - /*applied to the validation popup during cell editing.*/ - .jqx-grid-validation - { - background: #df2227 !important; - color: #fff !important; - padding: 4px 8px; - } -.jqx-grid-validation-label { - color: #fff !important; - background: #df2227 !important; - border: 1px solid #df2227 !important; -} - .jqx-grid-validation-arrow-up - { - background-image: url('images/red_arrow_up.png'); - background-repeat: no-repeat; - background-position: center center; - } - .jqx-grid-validation-arrow-down - { - background-image: url('images/red_arrow_down.png'); - background-repeat: no-repeat; - background-position: center center; - } - /*applied to the column's resize start line.*/ - .jqx-grid-column-resizestartline { - border-right: 1px solid #444; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .jqx-grid-sortasc-icon - { - background-image: url('images/sortasc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the sort ascending menu item in the Grid's Context Menu*/ - .jqx-grid-sortdesc-icon - { - background-image: url('images/sortdesc.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grid menu's sort remove item/*/ - .jqx-grid-sortremove-icon - { - background-image: url('images/sortremove.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } - /*applied to the grouping column's drag and drop item when the drop operation is allowed.*/ - .jqx-grid-drag-icon - { - background-image: url('images/drag.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the grouping column's drag and drop item when the drop operation is not allowed.*/ - .jqx-grid-dragcancel-icon - { - background-image: url('images/dragcancel.png'); - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - } - /*applied to the 'group by' menu item.*/ - .jqx-grid-groupby-icon - { - background-repeat: no-repeat; - background-position: left center; - width: 16px; - height: 16px; - float: left; - margin-left: -4px; - margin-right: 4px; - } -/*applied to the column anchor tags.*/ - .jqx-grid-column-header a:link, .jqx-grid-column-header a:visited - { - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -.jqx-grid-toolbar a:link, .jqx-grid-toolbar a:visited { - margin: 4px; - height: 18px; - line-height: 18px !important; - color: inherit; - outline: 0 none; - text-decoration: none; - cursor: pointer; -} -/*applied to the groups header area.*/ - .jqx-grid-groups-header, .jqx-grid-toolbar, .jqx-scheduler-toolbar { - border-style: solid; - border-width: 0px 0px 1px 0px; - border-color: #aaa; - white-space: nowrap; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } -/*applied to a grouping row.*/ - .jqx-grid-groups-row { - font-weight:bold; - white-space: nowrap; - text-align: left; - padding: 0px; - top: 50%; - margin-top: -8px; - } - /*applied to the row details.*/ - .jqx-grid-groups-row-details { - font-weight: normal; - } - /*applied to a grouping column.*/ - .jqx-grid-group-column - { - border: 1px solid transparent; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - padding: 0px; - margin: 0px; - } - /*applied to the lines between the group columns.*/ - .jqx-grid-group-column-line - { - background: #aaa; - } - /*applied to the drop line indicators displayed in the grouping header.*/ - .jqx-grid-group-drag-line - { - background: #80be09; - } - /*applied to the anchor tags inside a grouping column.*/ - .jqx-grid-group-column a:link{ - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); -} - .jqx-grid-group-column a:visited{ - color: inherit; - display: block; - margin: 4px; - height: 18px; - line-height: 18px !important; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a grid cell*/ -.jqx-grid-cell { - border-style: solid; - border-width: 0px 1px 1px 0px; - margin-right: 1px; - margin-bottom: 1px; - border-color: transparent; - background: #fff; - white-space: nowrap; - font-weight: normal; - font-size: inherit; - overflow: hidden; - position: absolute !important; - height: 100%; - } -.jqx-grid-cell-locked { - color: #aaa !important; -} -.jqx-grid-cell-left-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: left; - margin-right: 2px; - margin-left: 4px; -} -.jqx-grid-cell-middle-align { - text-overflow: ellipsis; - overflow: hidden; - padding-bottom: 2px; - text-align: center; -} -.jqx-grid-cell-right-align { - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 2px; - text-align: right; - margin-right: 4px; - margin-left: 2px; -} - -/*applied to a grid cell that is part of a rows group.*/ - .jqx-grid-group-cell{ - overflow: hidden; - position: absolute !important; - height: 100%; - background: #fff; - } -/*applied to the grid cells in the sort column*/ - .jqx-grid-cell-sort { - background-color: #f0f0f0; - } - - /*applied to the grid cells in the filter column*/ - .jqx-grid-cell-filter { - background-color: #e6e6e6; - } -.jqx-grid-cell-add-new-row { - background: #fdfcf3 !important; - color: #000 !important; -} - - /*applied to the grid cells area.*/ -.jqx-grid-content { - border-style: solid; - border-width: 0px 0px 0px 0px; - border-color: transparent; - white-space: nowrap; - overflow: hidden; - } - /*applied to a grid cell that is part of a rows group.*/ -.jqx-grid-group-cell, .jqx-grid-empty-cell { - border-style: solid; - border-width: 0px 0px 1px 0px; - white-space: nowrap; - font-weight: normal; - } -.jqx-widget .jqx-grid-cleared-cell, .jqx-grid-cleared-cell { - border: transparent !important; -} -.jqx-grid-cell-wrap {white-space: normal !important;} - -.jqx-tree-grid-indent { - width: 15px; - display: inline-block; - height: 8px; - overflow: hidden; - vertical-align: top; -} -.jqx-tree-grid-title { - text-decoration: none; - vertical-align: top; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.jqx-tree-grid-collapse-button, .jqx-tree-grid-expand-button { - display: inline-block; - margin-top: 0px; - margin-right: 0px; - position: relative; - width: 15px; - height: 16px; - vertical-align: top; -} -.jqx-tree-grid-checkbox { - float: none !important; - width: 14px; - height: 14px; - cursor: pointer; - margin-right: 2px !important; - margin-left: 2px !important; -} -.jqx-tree-grid-icon { - float: none !important; - width: 14px; - height: 14px; - margin-right: 4px; -} -.jqx-tree-grid-icon-rtl { - margin-right: 0px; - margin-left: 4px; -} -.jqx-tree-grid-icon-size { - width: 14px; - height: 14px; - line-height: 16px; -} - -.jqx-tree-grid-checkbox-tick { - width: 100%; - height: 100%; -} -.jqx-tree-grid-expand-button { - height: 16px; - width: 15px; - vertical-align: top; -} - -/*applied to a cell in jqxDataTable*/ -.jqx-cell { - min-height: 23px; - padding: 6px 4px; - margin: 0; - border-collapse: separate; - border-spacing: 0px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-top-width: 0px; - border-left-width: 0px; - box-sizing: border-box; - -moz-box-sizing: border-box; - white-space: normal; - line-height: 1.231; -} -.jqx-grid-cell-nowrap {white-space: nowrap;} - -.jqx-cell-editor { - padding-left: 4px !important; - padding-right: 3px !important; -} -.jqx-left-align { - text-align: left; -} -.jqx-center-align { - text-align: center; -} -.jqx-right-align { - text-align: right; -} -.jqx-top-align { - vertical-align:top; -} -.jqx-bottom-align { - vertical-align: bottom; -} - -.jqx-grid-table .jqx-grid-cell { - position: static !important; - zoom: 1 !important; -} -/*applied to the Grid's Table element.*/ -.jqx-grid-table { - font-size: 13px; - table-layout: fixed; - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 0px; - -webkit-overflow-scrolling: touch; - outline: none; - zoom: 1 !important; - empty-cells: show; - border-right: 1px solid #aaa; - line-height: 1.231; - width: auto; - border: none; -} -.jqx-grid-table-rtl { - border-left-width: 1px; - border-right-width: 0px; -} -.jqx-details table { - border-collapse: collapse; - table-layout: fixed; - border-spacing: 0px; -} - - /*applied to a grid cell that is part of a details row and grouping is enabled.*/ -.jqx-grid-group-details-cell { - - } - /*applied to a grid cell that is part of a details row.*/ -.jqx-grid-details-cell { - border-width: 0px 1px 0px 0px; - } - /*applied to a grid cell. Represents the alternating cell background.*/ -.jqx-grid-cell-alt { - background: #f9f9f9; - } -/*applied to a sorted and alternating grid cell*/ -.jqx-grid-cell-sort-alt { - background-color: #e5e5e5; - }/*applied to a sorted and alternating grid cell*/ -.jqx-grid-cell-filter-alt { - background-color: #f0f0f0; - } - /*applied to a pinned grid cell.*/ -.jqx-grid-cell-pinned { - background-color: #e5e5e5; - } - /*applied to a pinned grid cell. Represents the alternating cell background.*/ -.jqx-grid-cell-pinned-alt { - background-color: #e5e5e5; - } - /*applied to a selected grid cell.*/ - .jqx-grid-cell-selected { - border-left: 0px solid transparent; - } - .jqx-cell-rtl { - border-left-width: 1px; - border-right-width: 0px; - } - .jqx-grid-cell-rtl { - border-width: 0px 0px 1px 1px; - } - .jqx-grid-table .jqx-grid-cell { - border-width: 0px 0px 1px 1px; - } -.jqx-grid-table-one-cell { - border: none; - border-right-width: 1px; - border-right-style:solid; - border-right-color:#aaa; -} - - .jqx-grid-table .jqx-grid-cell:first-child { - border-left-width: 0px; - } - - /*applied to the selection area.*/ - .jqx-grid-selectionarea { - border: 1px solid transparent; - opacity: 0.5; - filter: alpha(opacity=50); - } - /*applied to a hovered grid cell.*/ - .jqx-grid-cell-hover { - border-color: transparent; - } - /*applied to a grid cell when the grid is empty.*/ - .jqx-grid-empty-cell{ overflow: visible; border-bottom: none;} - - /*applied to the Grid when its loading the data.*/ - .jqx-grid-load -{ - padding-right: 0px; - background-image: url(images/loader.gif); - background-position: 50% 50%; - background-repeat: no-repeat; - z-index: 9999; - display: block; -} -/*applied to a group's collapse button.*/ -.jqx-grid-group-collapse -{ - padding-right: 0px; - background-image: url(images/icon-right.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.jqx-grid-group-collapse-rtl -{ - padding-right: 0px; - background-image: url(images/icon-left.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to a group's expand button.*/ -.jqx-grid-group-expand, .jqx-grid-group-expand-rtl -{ - padding-right: 0px; - background-image: url(images/icon-down.png); - background-position: 50% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*jqxProgresBar Style*/ -.jqx-progressbar -{ - overflow: hidden; - outline: none; - border: 1px solid transparent; - height: 2em; -} -/*applied to the progressbar's value element*/ -.jqx-progressbar-value -{ - outline: none; - border: 0px solid transparent; - height: 100%; -} -/*applied to the progress bar's vertical value element- when the widget's orientation is 'vertical'*/ -.jqx-progressbar-value-vertical -{ - outline: none; - border: 0px solid transparent; - height: 100%; - background: transparent; -} -/*applied to the progressbar's text element*/ -.jqx-progressbar-text -{ - font-size: 10px; - border: none; -} -/*applied to the progress bar when the widget is in disabled state*/ -.jqx-progressbar-disabled -{ - outline: none; - border: 1px solid transparent; - height: 2em; -} - -/*jqxMenu Style*/ -.jqx-menu -{ - border: 1px solid transparent; - float: none; - margin: 0px; - height: 100%; - padding: 0px; - overflow: hidden; - text-align: left; -} -.jqx-menu-dropdown-column -{ - float: left; -} -/*applied to the menu when it is horizontal. Sets the menu's background*/ -.jqx-menu-horizontal -{ - margin: 0px; - padding: 0px; - overflow: hidden; - text-align: center; -} -/*applied to the menu when it is vertical. Sets the menu's background*/ -.jqx-menu-vertical -{ - text-align: left; -} -/*applied to the sub menu. Sets the sub menu's background*/ -.jqx-menu-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - display: none; - float: none; - width: 150px; - border-style: solid; - border-width: 1px; - text-align: left; - padding: 2px; -} -/*applied to the sub menu's ul elements.*/ -.jqx-menu-dropdown ul -{ - left: 100%; - margin: 0px; - padding: 0px; - right: 0; - overflow: hidden; - border: none; -} -/*applied to the menu's ul elements.*/ -.jqx-menu ul -{ - left: 100%; - margin: 0px; - padding: 2px; - right: 0; - overflow: hidden; - background-color: transparent; - border: none; -} -/*applied to the menu's li elements.*/ -.jqx-menu li, .jqx-menu-dropdown li -{ - line-height: 1.3 !important; -} -/*applied to the top level menu items.*/ -.jqx-menu-item-top -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - left: 100%; - overflow: hidden; - color: inherit; - right: 0; - margin: 0px 1px 0px 1px; - cursor: pointer; -} -/*applied to the sub menu items.*/ -.jqx-menu-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 4px 8px 4px 8px; - margin: 1px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when the mouse is over the item.*/ -.jqx-menu-item-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a top-level menu item when the mouse is over it.*/ -.jqx-menu-item-top-hover -{ - color: inherit; - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - top: 50%; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a sub menu item when its sub menu is opened.*/ -.jqx-menu-item-selected -{ - right: 0; - list-style: none; - margin: 1px; - left: 100%; - padding: 4px 8px 4px 8px; - text-align: left; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to a disabled sub menu item.*/ -.jqx-menu-item-disabled -{ - -} -/*applied to a top-level menu item when its sub menu is opened.*/ -.jqx-menu-item-top-selected -{ - right: 0; - list-style: none; - margin: 0px 1px 0px 1px; - left: 100%; - padding: 4px 8px 4px 8px; - cursor: pointer; -} -/*applied to the menu separator items.*/ -.jqx-menu-item-separator -{ - text-indent: 0; - background-color: #ddd; - border: none; - list-style: none; - height: 1px; - line-height:0 !important; - padding: 0px; - margin: 1px 2px 1px 2px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - font-size: 1px; -} -/*applied to a sub menu item when it has sub menu items. Displays right arrow icon.*/ -.jqx-menu-item-arrow-right -{ - background-image: url(images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items. Displays down arrow icon.*/ -.jqx-menu-item-arrow-down -{ - background-image: url(images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items. Displays up arrow icon.*/ -.jqx-menu-item-arrow-up -{ - background-image: url(images/icon-up.png); -} -.jqx-menu-minimized { - position: relative; -} -.jqx-menu-title { - position: relative; - float: right; - margin-top: 4px; - padding-top: 4px; - padding-right: 20px; -} -.jqx-menu-minimized-button -{ - background-image: url('images/icon-menu-minimized.png'); - background-repeat: no-repeat; - background-position: left center; - height: 24px; - width: 24px; - padding: 0px; - margin-left: 7px; - margin-top: 4px; - float : left; -} -.jqx-menu-ul-minimized { - display: block!important; - width: auto !important; -} -.jqx-menu-ul-minimized ul { - margin-top: 0px; - margin-bottom: 0px; - padding-top: 0px; - padding-bottom: 0px; - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - -o-box-shadow : none !important; - box-shadow : none !important; -} -.jqx-menu-minimized li:last-child { - padding-bottom: 0px; - margin: 0px; -} -.jqx-menu-item-arrow-right, .jqx-menu-item-arrow-down, .jqx-menu-item-arrow-up, .jqx-menu-item-arrow-right { - background-position: 100% 50%; - background-repeat: no-repeat; - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; -} -/*applied to a sub menu item when it has sub menu items. Displays left arrow icon.*/ -.jqx-menu-item-arrow-left -{ - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; - background-image: url(images/icon-left.png); - background-position: 0 50%; - background-repeat: no-repeat; -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays right arrow icon.*/ -.jqx-menu-item-arrow-right-selected -{ - background-image: url(images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays down arrow icon.*/ -.jqx-menu-item-arrow-down-selected -{ - background-image: url(images/icon-down.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays up arrow icon.*/ -.jqx-menu-item-arrow-up-selected -{ - background-image: url(images/icon-up.png); -} -.jqx-menu-item-arrow-right-selected, .jqx-menu-item-arrow-up-selected, .jqx-menu-item-arrow-down-selected, .jqx-menu-item-arrow-top-right { - padding-right: 0px; - margin-right: -8px; - width: 17px; - height: 15px; - background-position: 100% 50%; - background-repeat: no-repeat; -} -/*applied to a top-level menu item when it has sub menu items. Displays right arrow icon.*/ -.jqx-menu-item-arrow-top-right -{ - background-image: url(images/icon-right.png); -} -/*applied to a sub menu item when it has sub menu items and its sub menu is opened. Displays left arrow icon.*/ -.jqx-menu-item-arrow-left-selected -{ - background-image: url(images/icon-left.png); -} -/*applied to a top-level menu item when it has sub menu items. Displays left arrow icon.*/ -.jqx-menu-item-arrow-top-left -{ - background-image: url(images/icon-left.png); -} -.jqx-menu-item-arrow-left-selected, .jqx-menu-item-arrow-top-left { - background-position: 0 50%; - background-repeat: no-repeat; - padding-right: 0px; - padding-left: 5px; - width: 17px; - height: 15px; -} -/*applied to the anchor elements*/ -.jqx-menu-item a:link, .jqx-menu-item a:visited, .jqx-menu-item a:hover, .jqx-menu-item-top a:link, .jqx-menu-item-top a:visited, .jqx-menu-item-top a:hover -{ - text-decoration: none; - color: inherit; - outline: none; - background-color: transparent; - *color: expression(this.parentNode.currentStyle['color']); -} - -/*applied to the menu widget when it is disabled.*/ -.jqx-menu-disabled -{ - cursor: default; -} -/*applied to the anchor elements of all disabled menu items.*/ -.jqx-menu-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.jqx-menu-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.jqx-menu-disabled a:hover -{ - cursor: default; -} -.jqx-menu-dropdown -{ - right: -1px; -} - -/*jqxtree Style*/ -.jqx-tree -{ - left: 100%; - right: 0; - float: none; - margin: 0px; - border-style: solid; - border-width: 1px; - padding: 0px; - overflow: hidden; - text-align: left; - outline: none; - white-space: nowrap; - line-height: 14px !important; -} -/*applied to the jqxTree root UL element.*/ -.jqx-tree-dropdown-root -{ - left: 100%; - padding: 0px 5px 0px 5px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: #fff; - text-align: left; - outline: none; - white-space: nowrap; - margin: 0px; -} -.jqx-tree-dropdown-root-rtl { - padding: 0px 5px 0px 0px; - text-align: right; - float: right; - margin: 0px; -} - -/*applied to the jqxTree UL elements.*/ -.jqx-tree-dropdown -{ - left: 100%; - margin: 0px; - padding: 0px 0px 0px 10px; - right: 0; - display: block; - float: none; - background-color: transparent; - border-style: solid; - border-width: 0px; - border-color: transparent; - text-align: left; - outline: none; -} -.jqx-tree-dropdown-rtl { - padding: 3px 0px 0px 0px; - text-align: right; -} - -/*applied to a tree item.*/ -.jqx-tree-item -{ - border: 1px solid transparent; - text-indent: 0; - list-style: none; - padding: 3px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - right: 0; - text-align: left; - cursor: default; - text-decoration: none; -} -/*applied to the jqxTree LI elements.*/ -.jqx-tree-item-li -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - left: 100%; - right: 0; - text-align: left; - outline: none; - margin: 0px; - margin-top: 1px; - padding: 0px; -} -/*applied to the last LI elements in an UL element.*/ -.jqx-tree-item-u-last -{ - margin: 0px 0px 0px 0px; -} -/*applied to a tree item when the mouse is over the item.*/ -.jqx-tree-item-hover -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -/*applied to a tree item when the item is selected.*/ -.jqx-tree-item-selected -{ - color: inherit; - right: 0; - padding: 3px; - margin: 0px; - list-style: none; - left: 100%; - cursor: pointer; - text-decoration: none; -} -.jqx-tree-item-rtl { - text-align: right; -} -.jqx-tree-item-li-rtl { - text-align: right; -} -/*applied to the anchor element of a tree item.*/ -.jqx-tree-item a:link, .jqx-tree-item a:visited -{ - text-indent: 0; - background-color: transparent; - border: 0px solid transparent; - list-style: none; - padding: 0px; - margin: 0px; - float: none; - overflow: hidden; - left: 100%; - color: inherit; - right: 0; - text-align: left; - cursor: pointer; - text-decoration: none; - outline: none; -} -.jqx-tree-item-selected, .jqx-tree-item-hover a:hover -{ - color: inherit; -} -.jqx-tree-item-selected, .jqx-tree-item-hover a:visited -{ - color: inherit; -} - -/*applied to a tree item when the item is disabled.*/ -.jqx-tree-item-disabled -{ - -} -/*applied to a tree item when it has sub items and is collapsed. Displays an arrow icon next to the item.*/ -.jqx-tree-item-arrow-collapse, .jqx-tree-item-arrow-collapse-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(images/icon-right.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.jqx-tree-item-arrow-collapse-rtl, .jqx-tree-item-arrow-collapse-hover-rtl { - background-image: url(images/icon-left.png); -} - -/*applied to a tree item when it has sub items and is expanded. Displays an arrow icon next to the item.*/ -.jqx-tree-item-arrow-expand, .jqx-tree-item-arrow-expand-hover -{ - padding-right: 0px; - width: 17px; - height: 17px; - background-image: url(images/icon-down.png); - background-position: 100% 50%; - background-repeat: no-repeat; - cursor: pointer; -} -/*applied to the tree when it is disabled.*/ -.jqx-tree-disabled -{ - cursor: default; -} -/*applied to the anchor elements in a tree when it is disabled.*/ -.jqx-tree-disabled a:link -{ - cursor: default; - text-decoration: none; -} -.jqx-tree-disabled a:visited -{ - cursor: default; - text-decoration: none; -} -.jqx-tree-disabled a:hover -{ - cursor: default; -} - - -/*jqxTabs*/ -.jqx-tabs -{ - outline: none; - margin: 0 0 0 0; - padding: 0px; - overflow: hidden; - background: transparent; - border: 1px solid transparent; -} -/*applied to the tab close button.*/ -.jqx-tabs-close-button -{ - outline: none; - background-image: url(images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - position: relative; - left: 5px; -} -/*applied to the tab close button when the tab is selected.*/ -.jqx-tabs-close-button-selected -{ - outline: none; - background-image: url(images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -/*applied to the tab close button when the mouse is over the tab.*/ -.jqx-tabs-close-button-hover -{ - outline: none; - background-image: url(images/close.png); - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.jqx-tabs-close-button, .jqx-tabs-close-button-selected, .jqx-tabs-close-button-hover{background-repeat:no-repeat; background-position:center;} -/*applied to the tab's left scroll arrow.*/ -.jqx-tabs-arrow-left -{ - outline: none; - position: relative; - z-index: 15; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; - background-image: url('images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -/*applied to the tab's right scroll arrow.*/ -.jqx-tabs-arrow-right -{ - outline: none; - position: relative; - z-index: 15; - background-image: url('images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; - float: left; - cursor: pointer; - margin: 0 0 0 0; - padding: 0 0 0 0; -} -.jqx-tabs-arrow-background -{ - background: #eeeeee; -} -/*applied to the tab's title.*/ -.jqx-tabs-title -{ - outline: none; - display: block; - cursor: pointer; - white-space: nowrap; - left: 100%; - right: 0; - text-indent: 0px; - list-style: none; - border: 1px solid transparent; - margin: 0px 2px 0px 0px; - overflow: hidden; - z-index: 1; - padding-left: 13px; - padding-right: 13px; - padding-bottom: 5px; - padding-top: 5px; - background: transparent; - height: auto; - position: relative; -} -.jqx-tabs-title-bottom -{ -} -.jqx-tabs-title a:link -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.jqx-tabs-title a:hover -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.jqx-tabs-title a:active -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -.jqx-tabs-title a:visited -{ - color: inherit; - *color: expression(this.parentNode.currentStyle['color']); - text-decoration: none; -} -/*applied to the tab's title when the tab is selected and the jqxTab's position property is set to 'top' .*/ -.jqx-tabs-title-selected-top -{ - z-index: 99; - outline: none; - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid #fff; - background-color: #fff; - padding-bottom: 7px; -} -/*applied to the tab's title when the tab is selected and the jqxTab's position property is set to 'bottom' .*/ -.jqx-tabs-title-selected-bottom -{ - outline: none; - border-top: 1px solid #fff; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - padding-top: 7px; - padding-bottom: 5px; - margin-top: -2px; - background-color: #fff; -} -/*applied to the tab's title when the tab is hovered and the jqxTab's position property is set to 'top' .*/ -.jqx-tabs-title-hover-top -{ - outline: none; - border: 1px solid transparent; - padding-bottom: 5px; -} -/*applied to the tab's title when the tab is hovered and the jqxTab's position property is set to 'bottom' .*/ -.jqx-tabs-title-hover-bottom -{ - outline: none; - border: 1px solid transparent; - padding-top: 5px; -} -/*applied to the tab's title when the tab is disabled.*/ -.jqx-tabs-title-disable -{ - -} -/*applied to the tab's header.*/ -.jqx-tabs-header -{ - padding-left: 0px; - padding-right: 0px; - padding-top: 3px; - padding-bottom: 1px; - margin: 0px; - border-top: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid #aaa; - background: #eeeeee; -} -/*applied to the tab's header when the position is bottom.*/ -.jqx-tabs-header-bottom -{ - padding-top: 1px; - padding-bottom: 3px; - border-top: 0px solid #aaa; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-bottom: 1px solid transparent; -} -/*applied to the tab's header when the tab is collapsed.*/ -.jqx-tabs-header-collapsed -{ - border: 1px solid #aaa; -} -/*applied to the tab's header when the position is bottom and tab is collapsed.*/ -.jqx-tabs-header-collapsed-bottom -{ - border: 1px solid #aaa; -} -.jqx-tabs-collapsed -{ - border: 0px solid transparent; -} -.jqx-tabs-collapsed-bottom -{ - border: 0px solid transparent; -} -/*applied to the tab's selection tracker container element.*/ -.jqx-tabs-selection-tracker-container -{ - outline: none; - position: relative; - text-indent: 0px; - margin: 0 0 0 0; - padding: 0 0 0 0; - width: 100%; - background: transparent; - height: 0px; -} -/*applied to the tab's selection tracker when the jqxTab's position property is set to 'top'.*/ -.jqx-tabs-selection-tracker-top -{ - border-top: 1px solid transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - padding-bottom: 2px; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; -} -/*applied to the tab's selection tracker when the jqxTab's position property is set to 'bottom'.*/ -.jqx-tabs-selection-tracker-bottom -{ - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-bottom: 1px solid transparent; - background-color: #fff; - outline: none; - position: absolute; - z-index: 10; - margin-top: -1px; - padding-bottom: 2px; -} -/*applied to the tab's content element which represents a DIV element.*/ -.jqx-tabs-content -{ - outline: none; - border-bottom: 0px solid transparent; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - text-align: left; - clear: both; -} -.jqx-tabs-content-element -{ - height: 100%; - overflow: auto; -} - -/*jqxCheckBox*/ -.jqx-checkbox -{ - overflow:hidden; - text-align: left; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; - text-overflow: ellipsis; -} -/*applied to the check box.*/ -.jqx-checkbox-default -{ - text-align: left; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when the mouse cursor is over it.*/ -.jqx-checkbox-hover -{ - cursor: pointer; - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the widget when it is disabled.*/ -.jqx-checkbox-disabled -{ - cursor: default; - background: transparent; - padding: 0px; - border: none; - outline: none; - margin: 0px 0px 0px 0px; -} -/*applied to the check box when the widget is disabled.*/ -.jqx-checkbox-disabled-box -{ - float: left; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0px 3px 0px 3px; -} -/*applied to the check box when it is checked. Displays a check icon.*/ -.jqx-checkbox-check-checked -{ - float: left; - background: transparent url(images/check_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when the widget is disabled. Displays a disabled check icon.*/ -.jqx-checkbox-check-disabled -{ - float: left; - background: transparent url(images/check_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate.*/ -.jqx-checkbox-check-indeterminate -{ - float: left; - background: transparent url(images/check_indeterminate_black.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its state is indeterminate and it is disabled.*/ -.jqx-checkbox-check-indeterminate-disabled -{ - float: left; - background: transparent url(images/check_indeterminate_disabled.png) center center no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; -} -/*applied to the check box when its in rtl mode.*/ -.jqx-checkbox-rtl { - float: right; -} -/*jqxRadioButton*/ -.jqx-radiobutton -{ - overflow:hidden; - text-overflow: ellipsis; - border: none; - outline: none; - margin: 0 0 0 0; - white-space: nowrap; -} -/*applied to the radio button.*/ -.jqx-radiobutton-default -{ - cursor: pointer; - float: left; - background: transparent url(images/roundbg_classic_normal.png) left center scroll repeat-x; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when the mouse is over it.*/ -.jqx-radiobutton-hover -{ - cursor: pointer; - float: left; - background: transparent; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 1px 3px 0px 3px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -/*applied to the radio button when it is disabled.*/ -.jqx-radiobutton-disabled -{ - cursor: default; -} -/*applied to the radio button's radio icon when it is disabled.*/ -.jqx-radiobutton-disabled-box -{ -} -/*applied to the radio button when it is checked.*/ -.jqx-radiobutton-check-checked -{ - float: left; - background: transparent url(images/roundbg_check_black.png) left top no-repeat; - padding: 0px; - border: 1px solid transparent; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 7px; - height: 7px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is checked and disabled.*/ -.jqx-radiobutton-check-disabled -{ -} -/*applied to the radio button when it is in indeterminate state.*/ -.jqx-radiobutton-check-indeterminate -{ - float: left; - background: transparent url(images/roundbg_check_indeterminate.png) left top no-repeat; - padding: 0px; - border: none; - outline: none; - margin: 0 0 0 0; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - width: 6px; - height: 6px; - margin-left: 2px; - margin-top: 2px; -} -/*applied to the radio button when it is in indeterminate state and disabled.*/ -.jqx-radiobutton-check-indeterminate-disabled -{ -} -/*applied to the radio button when its in rtl mode.*/ -.jqx-radiobutton-rtl { - float: right; -} - -/*jqxRating*/ -.jqx-rating -{ - margin: 0px; - padding: 0px; - outline: none; - overflow: hidden; -} -.jqx-rating-image -{ - border-width: 0px; -} -.jqx-rating-image-default -{ - margin: 0px; - padding: 0px; - outline: none; - background-color: transparent; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(images/star.png); - overflow: hidden; -} -/*applied to the rating when it is hovered.*/ -.jqx-rating-image-hover -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(images/star_hover.png); - overflow: hidden; -} -/*applied to the rating when it is disabled.*/ -.jqx-rating-image-backward -{ - background-color: transparent; - padding: 0px; - background-repeat: no-repeat; - cursor: pointer; - background-image: url(images/star_disabled.png); - overflow: hidden; -} -/*jqxCalendar Style*/ -.jqx-calendar -{ - border: 1px solid transparent; - -webkit-appearance: none; - overflow: hidden; - outline: none; - padding: 0px; - margin: 0 0 0 0; - cursor: default; - border-collapse: separate; -} -.jqx-calendar td { - padding-top: 0px; - padding-bottom: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -.jqx-calendar table { - margin: 0px; - padding: 0px; - border-collapse: separate; - border-spacing: 1px; - font-size: 13px; - line-height: 1.231; -} -/*applied to the calendar's row header. This header displays the week numbers.*/ -.jqx-calendar-row-header -{ - outline: none; - border: 0px solid #f2f2f2; - padding: 0; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's column. This header displays the day names.*/ -.jqx-calendar-column-header -{ - outline: none; - text-align: right; - padding: 3px; - border-top: none; - border-bottom: 1px solid transparent; - border-left: none; - border-right: none; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's top-left header. This header is displayed before the day names and above the week numbers.*/ -.jqx-calendar-top-left-header -{ - outline: none; - border: 0px solid #f2f2f2; - margin: 0 0 0 0; - cursor: default; -} -/*applied to the calendar's navigation buttons.*/ -.jqx-calendar-title-navigation -{ - cursor: pointer; - background-color: transparent; - margin: 0; - padding: 0; - border: none; - width: 25px; - height: 25px; -} -/*applied to the month table*/ -.jqx-calendar-month -{ - margin: 0; padding: 0; - border: none; - width: 100%; -} -/*applied to the calendar's title content.*/ -.jqx-calendar-title-content -{ - cursor: pointer; - text-align: center; -} -/*applied to the calendar's navigation title.*/ -.jqx-calendar-title-header -{ - border-left: none; - border-top: none; - border-right: none; - border-bottom-width: 1px; - border-bottom-style: solid; - margin: 0 0 0 0; -} -.jqx-calendar-title-header td { - padding-left: 0px; - padding-right: 0px; - border: none; -} -/*applied to the calendar's navigation title when the calendar is disabled.*/ -.jqx-calendar-title-header-disabled -{ - border-bottom-width: 1px; - border-bottom-style:solid; - margin: 0 0 0 0; - border-left: 0px solid transparent; - border-right: 0px solid transparent; - border-top: 0px solid transparent; - -} -/*applied to a calendar cell.*/ -.jqx-calendar-cell -{ - border: 1px solid transparent; - margin: 0px; - outline: none; - text-align: center; - padding: 1px; - cursor: pointer; - background-color: transparent; -} -.jqx-calendar-cell td -{ - padding: 0; - margin: 0; -} -/*applied to a calendar cell in decade and year views.*/ -.jqx-calendar-cell-decade, .jqx-calendar-cell-year { - text-align: center; - } - -.jqx-calendar .jqx-fill-state-normal -{ - background: transparent; - border: 1px solid transparent; -} - -/*applied to a calendar cell when the cell is hidden. A cell can be hidden when the showOtherMonthDays property is false and the calendar hides the cells with dates from the other months*/ -.jqx-calendar-cell-hidden -{ - margin: 0 0 0 0; - visibility: hidden; - cursor: default; -} -/*applied to a calendar cell when the cell's date is a weekend date.*/ -.jqx-calendar-cell-weekend -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a special date(holiday, vacation, birthay. See the SpecialDates demo).*/ -.jqx-calendar-cell-specialDate -{ - color: #FF0000 !important; - background-color: transparent; - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date is a restricted date.*/ -.jqx-calendar-cell-restrictedDate -{ - background-color: rgba(251, 132, 153, 1); - border: 1px solid #fff; - margin: 0 0 0 0; - cursor: pointer; -} -.jqx-calendar-cell-selected-invalid -{ - color: #FFF !important; - background: #FF0000 !important; - border: 1px solid #FF0000 !important; -} -/*applied to a calendar cell when the cell's date is the today date.*/ -.jqx-calendar-cell-today -{ - color: #898989; - background-color: #ffffdb; - border: 1px solid #fdc066; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is hovered.*/ -.jqx-calendar-cell-hover -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell is selected.*/ -.jqx-calendar-cell-selected -{ - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the cell's date represents a date from the previous or next month.*/ -.jqx-calendar-cell-othermonth -{ - color: #898989 !important; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to a calendar cell when the calendar is disabled.*/ -.jqx-calendar-cell-disabled -{ - color: #ccc; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers.*/ -.jqx-calendar-row-cell -{ - outline: none; - text-align: center; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the row header that displays the week numbers and the calendar is disabled.*/ -.jqx-calendar-row-cell-disabled -{ - -} -.jqx-calendar-footer -{ - margin: 5px; - color: inherit; - font-size: 13px; -} - -.jqx-calendar-title-container -{ - overflow: hidden; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names.*/ -.jqx-calendar-column-cell -{ - overflow: hidden; - text-align: center; - outline: none; - font-weight: normal; - padding: 1px; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: default; -} -/*applied to a calendar cell when the cell is from the column header that displays the day names and the calendar is disabled.*/ -.jqx-calendar-column-cell-disabled -{ - -} -/*applied to the calendar's cell area element.*/ -.jqx-calendar-view -{ - -webkit-appearance: none; - outline: none; - padding: 0px; - border: 0px solid #fff; - margin: 0 0 0 0; - cursor: default; -} - -/*jqxExpander and jqxNavigationBar Style*/ -.jqx-expander -{ -} -/*applied to the Expander's header and content*/ -.jqx-expander-header, .jqx-expander-content -{ - border-left-width: 1px; - border-right-width: 1px; - border-left-style: solid; - border-right-style: solid; - padding-top: 5px; - padding-bottom: 5px; - outline: 0; -} -/*applid to the content of the expander header.*/ -.jqx-expander-header-content -{ - padding-left: 3px; -} -/*applid to the content of the expander header.*/ -.jqx-expander-header-content-rtl -{ - padding-right: 3px; -} - .jqx-expander-content{padding-top: 0px;padding-bottom:0px; overflow: auto; outline: 0;} -/*applied to the Expander's header and its content when it is on the top of the header*/ -.jqx-expander-header, .jqx-expander-content-top -{ - border-top-width: 1px; - border-top-style: solid; -} -/*applied to the Expander's header and its content when it is on the bottom of the header*/ -.jqx-expander-header, .jqx-expander-content-bottom -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -/*applied to the Expander's header*/ -.jqx-expander-header -{ - cursor: pointer; - overflow: hidden; -} -/*applied to the Expander's header when the expander is disabled or the toggleMode is "none"*/ -.jqx-expander-header-disabled -{ - cursor: default; -} -/*applied to the Expander's arrow*/ -.jqx-expander-arrow -{ - width: 17px; - height: 17px; - position: relative; -} -/*applied to the Expander's content if it is empty*/ -.jqx-expander-content-empty -{ - border-width: 0px; - padding: 0px; -} - -/*applied to jqxNavigationBar. The NavigationBar internally uses jqxExpander's classes and inherits all header and content style settings from the Expander.*/ -.jqx-navigationbar -{ - border: none; - margin: 0px; - -webkit-appearance: none; - outline: none; -} -/*jqxPanel Style*/ -.jqx-panel -{ - border: 1px solid transparent; - -webkit-appearance: none; - outline: none; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the Panel's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.jqx-panel-bottomright -{ - -} -/*applied to the DropDownButton's Popup.*/ -.jqx-dropdownbutton-popup { - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - } - -.jqx-listbox -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - padding: 0px; - margin: 0px; - cursor: default; - overflow: hidden; -} -/*applied to the ListBox's element displayed when the horizontal and vertical scrollbars are visible and the element is positioned below the vertical scrollbar and on the right -of the horizontal scrollbar.*/ -.jqx-listbox-bottomright -{ - -} -/*applied to the ListBox's groups.*/ -.jqx-listitem-state-group -{ - white-space: nowrap; - padding: 4px 2px 4px 2px; - background: transparent; - font-weight: bold; - text-align: left; - outline: none; - overflow: hidden; - vertical-align: middle; - cursor: default; -} -/*applied to a list item in default state.*/ -.jqx-listitem-state-normal -{ - white-space: nowrap; - padding: 3px; - margin: 1px; - border: 1px solid transparent; - outline: none; - visibility: inherit; - display: inherit; - text-align: left; - overflow: hidden; - position: absolute; - left: 0; - top: 0; - cursor: default; -} -/*applied to a list item in hovered state.*/ -.jqx-listitem-state-hover -{ - white-space: nowrap; - background: transparent; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -/*applied to a list item when the item is selected.*/ -.jqx-listitem-state-selected -{ - white-space: nowrap; - padding: 3px 3px 3px 3px; - margin: 1px; - border: 1px solid transparent; -} -.jqx-listbox-feedback -{ - height: 1px; - border-top: 1px dashed #000; -} -.jqx-listitem-element -{ - -ms-touch-action: none; - border: none; - width:100%; - height: 100%; - align:left; - valign:top; - position: absolute; -} -/*jqxComboBox Style*/ -/*applied to the jqxComboBox's content which displays the text.*/ -.jqx-combobox-content -{ - padding: 0px; - overflow: hidden; - padding-left: 0px; - padding-top: 0px; - padding-bottom: 0px; - padding-right: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: none; - border: none; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-bottom-left-radius: 3px; - border-bottom-left-radius: 3px; - border-right: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.jqx-combobox-content-rtl { - border: none; - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 0px; - border-top-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 3px; - border-right: none; - border-left: 1px solid transparent; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the ComboBox's input field.*/ -.jqx-combobox-input -{ - -webkit-appearance: none; - -webkit-border-radius: 0px; - padding: 0 0 0 0; - outline: none; - border: 0px solid #aaa; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.jqx-combobox-input::-ms-clear { - display: none; -} -/*applied to the ComboBox's content when the widget is disabled.*/ -.jqx-combobox-content-disabled -{ - color: #AAA; -} -/*applied to the ComboBox's arrow button.*/ -.jqx-combobox-arrow-normal, .jqx-action-button -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; - border: none; - cursor: pointer; -} -/*applied to the ComboBox's arrow button*/ -.jqx-combobox-arrow-hover, .jqx-combobox-arrow-selected -{ - -webkit-appearance: none; - outline: none; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox in normal state.*/ -.jqx-combobox-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the mouse is over the widget.*/ -.jqx-combobox-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the popup ListBox is shown.*/ -.jqx-combobox-state-selected -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; -} -/*applied to the ComboBox when the widget is focused.*/ -.jqx-combobox-state-focus -{ - border: 1px solid transparent; -} -.jqx-combobox-multi-item { - padding: 1px 3px; - margin: 2px; - white-space: nowrap; - border-style: solid; - font-weight: normal; - overflow: hidden; - text-align: left; - -} -.jqx-combobox-multi-item a:link, .jqx-combobox-multi-item a:visited { - color: inherit; - display: block; - outline: 0 none; - text-decoration: none; - cursor: pointer; - *color: expression(this.parentNode.currentStyle['color']); -} -/*applied to the ComboBox when the widget is disabled.*/ -.jqx-combobox-state-disabled -{ - white-space: nowrap; - margin: 0px; - color: #AAA; -} -/*jqxSelect Style*/ -.jqx-select { - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - -webkit-appearance: none; - outline: 0 none; -} -.jqx-select-content { - cursor: pointer; - text-overflow: ellipsis; -} -.jqx-select-container { - padding: 0; -} -.jqx-select-item -{ - padding: 3px; - margin: 1px; - white-space: normal !important; - cursor: default; -} -/*jqxDropDownList Style*/ -/*applied to the dropdownlist's content element which displays the selected item's text or html.*/ -.jqx-dropdownlist-content -{ - padding: 0px; - overflow: hidden; - padding-left: 3px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; - text-align: left; - vertical-align: middle; - white-space: nowrap; - -webkit-appearance: none; - outline: 0 none; - border: none; -} -.jqx-dropdownlist-content-rtl { - padding-left: 0px; - padding-right: 3px; -} - -/*applied to the dropdownlist's content element which displays the selected item's text or html and the widget is disabled. */ -.jqx-dropdownlist-content-disabled -{ -} -/*applied to the dropdownlist in default state.*/ -.jqx-dropdownlist-state-normal -{ - -webkit-appearance: none; - outline: none; - border: 1px solid transparent; - overflow: hidden; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in hovered state.*/ -.jqx-dropdownlist-state-hover -{ - overflow: hidden; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in selected state.*/ -.jqx-dropdownlist-state-selected -{ - overflow: hidden; - background-color: transparent; - border: 1px solid transparent; - margin: 0 0 0 0; - cursor: pointer; -} -/*applied to the dropdownlist in focused state.*/ -.jqx-dropdownlist-state-focus -{ - border: 1px solid #909090; -} -/*applied to the dropdownlist in disabled state.*/ -.jqx-dropdownlist-state-disabled -{ - -} -/*jqxScrollBar Style*/ -.jqx-scrollbar -{ - background: transparent; - margin: 0; - padding: 0; - border: none; -} -/*applied to the scrollbar in default state.*/ -.jqx-scrollbar-state-normal -{ - background: #efefef; - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in default state.*/ -.jqx-scrollbar-button-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in hovered state.*/ -.jqx-scrollbar-button-state-hover -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the scrollbar buttons in pressed state.*/ -.jqx-scrollbar-button-state-pressed -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.jqx-scrollbar-thumb-state-normal-horizontal -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the horizontal scrollbar thumb in hovered state.*/ -.jqx-scrollbar-thumb-state-hover-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the horizontal scrollbar thumb in default state.*/ -.jqx-scrollbar-thumb-state-pressed-horizontal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.jqx-scrollbar-thumb-state-normal -{ - margin: 0px; - padding: 0px; - border: 1px solid transparent; - touch-action:none; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.jqx-scrollbar-thumb-state-hover -{ - margin: 0px; - padding: 0px; - background: transparent; - border: 1px solid transparent; -} -/*applied to the vertical scrollbar thumb in default state.*/ -.jqx-scrollbar-thumb-state-pressed -{ - margin: 0px; - padding: 0px; - background: #d1d1d1; - border: 1px solid #909090; -} - -/* jqxWindow */ -.jqx-window -{ - position: absolute; - overflow: hidden; - border: 1px solid transparent; -} -/*applied to the jqxWindow when it’s disabled*/ -.jqx-window-disabled -{ -} -/*applied to the window’s header*/ -.jqx-window-header -{ - outline: none; - border-width: 0px; - border-bottom: 1px solid transparent; - overflow: hidden; - padding: 5px; - height: auto; - white-space: nowrap; - overflow: hidden; -} -/*applied to the window’s header when the window is disabled*/ -.jqx-window-header-disabled -{ - -} -/*applied to the window’s content*/ -.jqx-window-content -{ - outline: none; - overflow: auto; - text-align: left; - background-color: transparent; - padding: 5px; - -webkit-background-clip: padding-box; background-clip: padding-box; -} -/*applied to the window’s content when the window is disabled*/ -.jqx-window-content-disabled -{ - outline: none; - overflow: auto; - text-align: left; - padding: 5px; -} -/*applied to the window’s close button*/ -.jqx-window-close-button -{ - cursor: pointer; - background-image: url(images/close.png); - background-repeat: no-repeat; -} -/*applied to the window's collapse button*/ -.jqx-window-collapse-button -{ - background-image: url(images/icon-up.png); - cursor: pointer; - margin-top: 1px; -} -/*applied to the window's collapse button when the window is collapsed*/ -.jqx-window-collapse-button-collapsed -{ - margin-top: 0px; - cursor: pointer; - background-image: url(images/icon-down.png); -} -/*setting styles of the modal window’s background*/ -.jqx-window-modal -{ - background-color: Black; -} -.jqx-window-close-button-hover -{ -} -.jqx-docking -{ - overflow: hidden; -} -.jqx-docking-panel -{ - margin: 0px; - padding: 0px; - min-height: 100px; -} -.jqx-docking-drop-indicator -{ - border-style: dashed; - border-width: 1px; - margin: 0px; -} -.jqx-docking-window -{ - margin: 0px; -} - -/* jxSlider */ -/* applied to jqxSlider widget */ -.jqx-slider -{ - outline: none; - clear: both; - position: relative; - overflow:hidden; -} -/*applied to the ticks which can be in the top/bottom/both sides of the jqxSlider*/ -.jqx-slider-tick -{ - border-left: 1px solid transparent; - z-index: 9; -} -/*applied to the ticks when the slider is in horizontal mode*/ -.jqx-slider-tick-horizontal -{ - width: 1px; - border-left: none; - margin-top: 1px; -} -/*applied to the ticks when the slider is in vertical mode*/ -.jqx-slider-tick-vertical -{ - height: 1px; - border-top: none; -} -/*applied to the ticks container*/ -.jqx-slider-tickscontainer -{ - z-index: 10; - position: relative; - margin-top: 0px; - margin-bottom: 0px; - z-index: 9; -} -/*applied to the jqxSlider thumb used for changing/indicating current value*/ -.jqx-slider-slider -{ - cursor: pointer; - width: 16px; - height: 16px; - z-index: 15; - position: absolute; - left: 0px; - top: 0px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.jqx-slider-button -{ - cursor: pointer; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - box-sizing: content-box !important; -} -/*applied to the slider's thumb when the slider is in horizontal mode*/ -.jqx-slider-slider-horizontal -{ - margin-top: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; -} -/*applied to the slider's thumb when the slider is in vertical mode*/ -.jqx-slider-slider-vertical -{ - margin-left: -5px; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - border: 1px solid transparent; - } -/*applied to the track where is located the thumb*/ -.jqx-slider-track -{ - height: 8px; - float:left; - position: relative; - z-index: 20; -} -/*used in horizontal slider*/ -.jqx-slider-track-horizontal -{ - height: 8px; - margin-top: 2px; -} -/*used in vertical slider*/ -.jqx-slider-track-vertical -{ - width: 8px; -} -/*applied to the div which is between the thumbs in a range slider or from beginning of the track to the current thumb position in the default slider*/ -.jqx-slider-rangebar -{ - -} - -/* jqxSplitter */ -.jqx-splitter -{ - overflow: hidden; - border: 1px solid transparent; - position: relative; -} -/* Split bar's class when the jqxSplitter is with horizontal orientation */ -.jqx-splitter-splitbar-vertical -{ - border: 1px solid transparent; - border-top-width: 0px; - border-bottom-width: 0px; - cursor: e-resize; - cursor: col-resize; - position: absolute; -} -/* Split bar's mouse over state */ -.jqx-splitter-splitbar-hover -{ - background-color: transparent; -} -/* Split bar's class when the jqxSplitter is with horizontal orientation. */ -.jqx-splitter-splitbar-horizontal -{ - position: absolute; - border: 1px solid transparent; - border-left-width: 0px; - border-right-width: 0px; - cursor: n-resize; - cursor: row-resize; -} -/* This class is applied to the splitter when it's dragged to it's max left/right boundary */ -.jqx-splitter-splitbar-invalid -{ - background: #FF0000 !important; -} -/* This class is added to split bar's collapse button when the splitter is with vectical orientation. */ -.jqx-splitter-collapse-button-horizontal -{ - cursor: pointer; - width: 45px; - height: 5px; -} -/* This class is added to split bar's collapse button when the splitter is with horizontal orientation. */ -.jqx-splitter-collapse-button-vertical -{ - cursor: pointer; - width: 5px; - height: 45px; -} -/* This class is added when the user disable the splitter. */ -.jqx-splitter-splitbar-collapsed -{ - cursor: default; -} -/* Applied to the jqxSplitter panels. */ -.jqx-splitter-panel -{ - border: none; - outline: none; - position: absolute; - overflow: hidden; -} -/* This class is added to a nested splitter.*/ -.jqx-splitter-nested, .jqx-splitter-panel-nested -{ - border: none; - overflow: hidden; -} -.jqx-draggable -{ - -} -.jqx-draggable-dragging -{ - border: 0px solid black; -} -.jqx-draggable-disabled -{ - cursor: default; -} -.jqx-validator-hint -{ - height: 18px; - width: auto; - display: inline-block; - cursor: pointer; - padding-left: 5px; - padding-right: 5px; - font-family: Verdana; - font-size: 13px; - border: 1px solid #6E0000; - background-color: #942724; - color: #fff; - z-index: 99999; - white-space: nowrap; -} -.jqx-validator-hint-arrow -{ - z-index: 99999; - height: 9px; - width: 9px; - padding: 0px; - margin: 0px; - background-color: transparent; - background-image: url(images/multi-arrow.gif); -} -.jqx-validator-error-label { - color: #dd4b39; - vertical-align:top; - text-align: left; - display: block; - cursor: default; - line-height: 17px; - } -.jqx-validator-error-element { - border-color: #dd4b39 !important; -} - -.jqx-switchbutton -{ - outline: none; - overflow: hidden; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border: 1px solid #ccc; -} -.jqx-switchbutton-thumb -{ - display: inline-block; - cursor: pointer; - border: 1px solid #ccc; -} -.jqx-switchbutton-label -{ - font-size: 15px; - font-family: Sans-Serif; - text-align: center; - text-transform: uppercase; - font-weight: bold; -} -.jqx-switchbutton-wrapper -{ -} -.jqx-switchbutton-label-on -{ - -} -.jqx-switchbutton-label-off -{ - -} - -/*left, right, up and down arrow icons.*/ -.jqx-left-arrow -{ - background: transparent; - background-image: url('images/icon-left.png'); - cursor: pointer; -} -.jqx-right-arrow -{ - background: transparent; - background-image: url('images/icon-right.png'); - cursor: pointer; -} -.jqx-icon-delete -{ - background-image: url('images/icon-delete.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-edit -{ - background-image: url('images/icon-edit.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-save -{ - background-image: url('images/icon-save.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-cancel -{ - background-image: url('images/icon-cancel.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-up, .jqx-icon-arrow-up-hover, .jqx-icon-arrow-up-selected -{ - background-image: url('images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-down, .jqx-icon-arrow-down-hover, .jqx-icon-arrow-down-selected -{ - background-image: url('images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} - -.jqx-icon-arrow-left, .jqx-icon-arrow-left-hover, .jqx-icon-arrow-left-selected -{ - background-image: url('images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-right, .jqx-icon-arrow-right-hover, .jqx-icon-arrow-right-selected -{ - background-image: url('images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-first, .jqx-icon-arrow-first-hover, .jqx-icon-arrow-first-selected -{ - background-image: url('images/icon-first.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-last, .jqx-icon-arrow-last-hover, .jqx-icon-arrow-last-selected -{ - background-image: url('images/icon-last.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-up-hover -{ - background-image: url('images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-down-hover -{ - background-image: url('images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-left-hover -{ - background-image: url('images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-right-hover -{ - background-image: url('images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} - -.jqx-icon-arrow-up-selected -{ - background-image: url('images/icon-up.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-down-selected -{ - background-image: url('images/icon-down.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-left-selected -{ - background-image: url('images/icon-left.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-arrow-right-selected -{ - background-image: url('images/icon-right.png'); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-close -{ - cursor: pointer; - background-image: url(images/close.png); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-close-white { - background-image: url(images/close_white.png); - } -.jqx-icon-close-hover -{ - cursor: pointer; - background-image: url(images/close.png); - background-repeat: no-repeat; - background-position: center; -} -.jqx-icon-search -{ - cursor: pointer; - background-image: url(images/search.png); - background-repeat: no-repeat; - background-position: center; - margin-top: 1px; - background-size: 13px; - width: 13px; - height: 13px; -} -.jqx-icon-plus -{ - background-image: url(images/plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.jqx-icon-plus-alt, .jqx-icon-plus-alt-white -{ - background-image: url(images/icon-plus.png); - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - width: 16px; - height: 16px; -} -.jqx-icon-plus-alt-white { - background-image: url(images/icon-plus-white.png); -} -/* jqxScrollView */ -.jqx-scrollview-button -{ - width: 10px; - height: 10px; - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - display: inline-block; - margin: 2px; - cursor: pointer; - background-color: #aaaeaf; -} -.jqx-scrollview -{ - background-color: #000; - -ms-touch-action: auto !important; -} -.jqx-icon-calendar, .jqx-icon-calendar-hover, .jqx-icon-calendar-pressed -{ - background-image: url('images/icon-calendar.png'); - background-repeat: no-repeat; - background-position: left top; - position: relative; - width: 15px !important; - height: 15px !important; - margin-top: -7.5px !important; -} -/*applied to Inputs*/ -.jqx-input{overflow: hidden; background-color: inherit; border-color: #c7c7c7;} -.jqx-input-invalid { - color: red !important; -} -.jqx-input-group {overflow: hidden;} -.jqx-input-group-addon {border: 1px solid transparent; position: relative; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important; padding: 2px 8px !important; float: left; white-space: nowrap; vertical-align: middle; } -.jqx-input-group-addon:first-child { - border-right-width: 0px; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; -} -.jqx-input-group-addon:last-child { - border-left-width: 0px; - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; -} -.jqx-input-group-addon:not(:last-child):not(:first-child) { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-top-right-radius: 0 !important; - border-left-width: 0px; -} -.jqx-input-group .jqx-input { - padding: 2px 1px !important; - border-left-width: 1px !important; - border-right-width: 1px !important; -} -.jqx-editor { - border-style: solid; - border-width: 1px; - border-color: transparent; - overflow: hidden; - box-sizing: border-box !important; -} -.jqx-editor-window { - overflow: hidden; -} -.jqx-editor-inline { - padding: 0px; - border-width: 1px; - border-style: solid; - border-color: transparent; -} -.jqx-editor-inline p { - margin: 0px;padding:0 .2em; -} -.jqx-editor-inline-focus { - border-width: 1px; - border-style: solid; - overflow: auto; -} -.jqx-editor iframe { - border: 0; - margin: 0; - padding: 0; - background: #fff; - display: inline; - vertical-align: top; - width: 100%; - height: 100%; -} -.jqx-editor-color-bar { - height: 3px; -} -.jqx-editor-color-picker table { - margin: 0; - padding: 0 4px 4px; - empty-cells: show; - border-collapse: separate; -} -.jqx-editor-color-picker td { - border-collapse: separate; - border: 1px solid transparent; - cursor: pointer; - margin: 0; - position: relative; -} -.jqx-editor-color-picker td:hover { - border: 1px solid #000; -} -.jqx-editor-color-picker-selected-cell { - outline: 1px solid #000; -} -.jqx-editor-color-picker td div{ - width: 16px; - height: 16px; -} -.jqx-editor-content { - width: 100%; - border-style: solid; - border-width: 1px; - outline: 0; - left: 0px; - position: relative; - box-sizing: border-box !important; -} -.jqx-editor-container { - position: relative; - padding: 4px; - padding-top: 0px; - width: 100%; - height: 100%; - box-sizing: border-box !important; -} -.jqx-editor-toolbar-container { - top: 0px; left: 0px; - box-sizing: border-box !important; -} -.jqx-editor-toolbar-inline { - padding: 0px 4px; - border-width: 1px; - border-style: solid; -} -.jqx-editor-toolbar { - margin: 0; - padding: 0px; - padding-bottom: 4px; -} -.jqx-editor-toolbar-icon { - height: 21px; - width: 21px; - vertical-align: middle; - opacity: .667; - margin: 2px 0; - background: url('images/html_editor.png') no-repeat; -} -.jqx-editor-toolbar-icon-bold { - background-position: 0px 0px !important; -} -.jqx-editor-toolbar-icon-italic { - background-position: -21px 0px !important; -} -.jqx-editor-toolbar-icon-underline { - background-position: -42px 0px !important; -} -.jqx-editor-toolbar-icon-fontname { - background-position: -63px 0px !important; -} -.jqx-editor-toolbar-icon-fontsize { - background-position: -84px 0px !important; -} -.jqx-editor-toolbar-icon-createlink { - background-position: -147px 0px !important; -} -.jqx-editor-toolbar-icon-insertorderedlist { - background-position: -168px 0px !important; -} -.jqx-editor-toolbar-icon-insertunorderedlist { - background-position: -189px 0px !important; -} -.jqx-editor-toolbar-icon-outdent { - background-position: -210px 0px !important; -} -.jqx-editor-toolbar-icon-indent { - background-position: -231px 0px !important; -} -.jqx-editor-toolbar-icon-insertimage { - background-position: -337px 0px !important; -} -.jqx-editor-toolbar-icon-justifyleft { - background-position: -252px 0px !important; -} -.jqx-editor-toolbar-icon-justifycenter { - background-position: -273px 0px !important; -} -.jqx-editor-toolbar-icon-justifyright { - background-position: -294px 0px !important; -} -.jqx-editor-toolbar-icon-removeformat { - background-position: -316px 0px !important; -} -.jqx-editor-toolbar-icon-viewsource { - background-position: -359px 0px !important; -} -.jqx-editor-toolbar-icon-forecolor { - background-position: -105px 0px !important; - height: 15px; -} -.jqx-editor-toolbar-icon-backcolor { - background-position: -380px 0px !important; - height: 15px; -} - -.jqx-editor-toolbar-icon:hover { - opacity: 1; -} -.jqx-fill-state-disabled .jqx-editor-toolbar-icon { - opacity: .667; -} -.jqx-editor-toolbar-item { - display: inline-block; - margin-left: 2px; - vertical-align: middle; -} -.jqx-editor-toolbar-separator { - border-left: 1px solid #ccc; - margin: 0 2px; - outline: none; - overflow: hidden; - padding: 0; - text-decoration: none; - vertical-align: middle; - width: 0; - display: inline-block; -} -.jqx-editor-toolbar-group { - display: inline-block; - margin-right: 4px; - margin-top: 4px; - white-space: nowrap; -} -.jqx-editor-toolbar-button { - text-decoration: none; - vertical-align: middle; - cursor: default; - display: inline-block; - padding: 0px !important; - margin-right: 2px; -} -.jqx-editor-toolbar-group .jqx-editor-toolbar-button { - margin-right: -1px; - box-shadow: none; - position: relative; - margin-left: 0px !important; -} -.jqx-editor-toolbar-group .jqx-editor-toolbar-button:hover, .jqx-editor-toolbar-group .jqx-editor-toolbar-button:active { - z-index: 55; -} -.jqx-editor-toolbar-group .jqx-editor-toolbar-button.jqx-fill-state-normal { - background: transparent !important; -} - -.jqx-date-time-input-popup table td a -{ - border: 1px transparent solid; - width: 100%; - display: inline-block; - margin: 0; - padding: 0; - outline: 0; - color: #333; -} -.jqx-date-time-input-popup table td input { - width: 25px; - margin: 0; - text-align: center; - padding: 4px 6px; - height:20px; - line-height: 20px; - vertical-align: middle; -} - -.jqx-scheduler .jqx-cell { - padding: 0px !important; - cursor: default; -} -.jqx-scheduler .jqx-widget-header.jqx-grid-header -{ - border-bottom-color: transparent; - border-bottom-width: 0px; -} -.jqx-scheduler .jqx-grid-column-header, .jqx-scheduler.jqx-widget .jqx-grid-column-header -{ - border-bottom: 1px solid #c5c5c5; -} - -.jqx-scheduler-all-day-cell -{ - text-align: left; -} -.jqx-scheduler-all-day-cell span -{ - margin-left:3px; -} - -.jqx-scheduler-month-cell { - background: #f2f2f2; - color: #000; - opacity: 0.8; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: inherit; - vertical-align: top; - text-align: left; -} -.jqx-scheduler-month-cell-touch { - background: transparent; - border:none; - vertical-align:middle; - text-align:center; -} -.jqx-scheduler-month-cell-popup { - border: 1px solid #333; - background: #f2f2f2; - box-shadow: 0 5px 0px rgba(0,0,0,.15)!important; -} -.jqx-widget .jqx-scheduler-middle-cell, .jqx-scheduler-middle-cell { - border-bottom-color: #ddd !important; -} -.jqx-scheduler-cell-selected.jqx-scheduler-middle-cell -{ - border-bottom-style:dotted; -} -.jqx-scheduler-work-time-cell -{ - background: #fff; -} -.jqx-scheduler-not-work-time-cell -{ - background: #eee; -} -.jqx-scheduler-month-outer-cell -{ - color: #555; -} -.jqx-scheduler-month-weekend-cell -{ - background: #eee; -} -.jqx-scheduler-disabled-cell { - background: #e9edf1; -} -.jqx-scheduler-toolbar -{ - font-size: 14px; -} -.jqx-scheduler-time-column, .jqx-scheduler-toolbar { - background-image: none !important; - background: #fff !important; - color: #333 !important; -} -.jqx-scheduler-week-number-column { - background: #e8e8e8 !important; - color: #333; -} -.jqx-scheduler-time-column-header-cell -{ - border-left-color:transparent !important; -} -.jqx-scheduler-time-column-header-cell-rtl -{ - border-right-color:transparent !important; -} -.jqx-scheduler-appointment { - overflow: visible; - border: 1px solid #555; - white-space:pre-line; - cursor:pointer; - vertical-align: middle; - text-overflow:ellipsis; - user-select: none; -} -.jqx-scheduler-appointment-rtl { - direction: rtl; - text-align: right; -} - -.jqx-scheduler-appointment-content { - overflow: hidden; - text-overflow:ellipsis; - height:100%; - padding-left:5px; - padding-right:5px; -} -.jqx-scheduler-appointment-inner-content { - overflow:hidden; - width:100%; - text-overflow: ellipsis; - padding-bottom: 3px; -} -.jqx-scheduler-appointment-duration-status { - height: 0px; - border-bottom-width: 2px; - border-bottom-style: dotted; - border-color: #f05c2d; - background: #f05c2d; - position:absolute; - bottom: -1px; left: 0px; - border-radius: 5px; -} -.jqx-scheduler-appointment-status { - width: 4px; - height: 100%; - border-right-width: 1px; - border-right-style:solid; - position:absolute; - top: 0px; left: 0px; -} -.jqx-scheduler-appointment-status-rtl { - width: 4px; - height: 100%; - border-right-width: 0px; - border-right-style:none; - border-left-width: 1px; - border-left-style:solid; - position:absolute; - top: 0px; right:0px; -} -.jqx-scheduler-appointment-status-stripes { - background-image: url('images/stripes.png'); - background-repeat:repeat-y; - background-position: left top; -} -.jqx-scheduler-appointment-resize-indicator { - width: 4px; - height: 4px; - position: absolute; - border: 1px solid black; - background: white; - display: none; -} -.jqx-scheduler-appointment-top-resize-indicator { - top: -3px; - left: 50%; - margin-left:-2px; - cursor: row-resize; -} -.jqx-scheduler-appointment-bottom-resize-indicator { - cursor: row-resize; - bottom: -3px; - left: 50%; - margin-left:-2px; -} -.jqx-scheduler-appointment-left-resize-indicator { - cursor: col-resize; - top: 50%; - left: -3px; - margin-top: -2px; -} -.jqx-scheduler-appointment-right-resize-indicator { - cursor: col-resize; - top: 50%; - margin-top: -2px; - right: -3px; -} - -.jqx-scheduler-appointment span { - vertical-align: middle; - text-overflow:ellipsis; - position: relative; - top: -1px; -} -.jqx-scheduler-feedback-appointment { - opacity: 0.7; - position:absolute; - z-index:99999; -} -.jqx-scheduler-selected-appointment { - border: 1px solid #316293 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - white-space:pre-line; -} -.jqx-scheduler-appointment:hover { - border: 1px solid #3f7ebe !important; - } -.jqx-scheduler-feedback-drag-appointment { - background: #aaa !important; -} -.jqx-icon-recurrence, .jqx-icon-recurrence-exception,.jqx-icon-recurrence-white, .jqx-icon-recurrence-exception-white, .jqx-icon-time -{ - background-image: url('images/icon-recurrence.png'); - background-repeat: no-repeat; - background-position: center; - width: 16px; - height: 16px; - float: left; - margin:3px; - margin-left:5px; -} -.jqx-icon-time -{ - background-image: url('images/icon-time.png'); - margin:0px; - position: relative; - left: 1px; - margin-top:-8px; -} -.jqx-icon-time-white -{ - background-image: url('images/icon-time-white.png'); -} -.jqx-icon-recurrence-exception -{ - background-image: url('images/icon-recurrence-exception.png'); -} -.jqx-icon-recurrence-exception-white { - background-image: url('images/icon-recurrence-exception-white.png'); -} -.jqx-icon-recurrence-white { - background-image: url('images/icon-recurrence-white.png'); - } -.jqx-scheduler-cell-hover { - border-color: #3f7ebe !important; - background: #a2c0df !important; -} -.jqx-scheduler-cell-selected { - border-color: #316293 !important; - background: #2f7eb6 !important; -} -.jqx-scheduler-edit-dialog-label { - clear: both; - float: left; - margin-left: 2%; - padding: 4px; - text-align: right; - width: 18%; - line-height: 25px; -} -.jqx-scheduler-edit-dialog-field { - clear: right; - float: right; - margin-right: 2%; - padding: 4px; - width: 72%; -} -.jqx-scheduler-edit-dialog-label-rtl { - clear: both; - float: right; - margin-left: 0px; - margin-right: 2%; - padding: 4px; - text-align: left; - width: 18%; - line-height: 25px; -} -.jqx-scheduler-edit-dialog-field-rtl { - clear: left; - float: left; - margin-right: 0px; - margin-left: 2%; - padding: 4px; - width: 72%; -} -.jqx-scheduler-legend-bar -{ - overflow:hidden; - border-color:inherit; - border: none; -} -.jqx-scheduler-legend-bar-bottom -{ - border-top-width: 1px; - border-top-style:solid; -} -.jqx-scheduler-legend-bar-top -{ - border-bottom-width: 1px; - border-bottom-style:solid; -} -.jqx-scheduler-legend { - width:14px; - height:14px; - float: left; - margin-right: 3px; - border-style:solid; - border-width:1px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.jqx-scheduler-legend-label { - float: left; - margin-right: 12px; - cursor: pointer; - vertical-align: middle; - margin-top:4px; -} -.jqx-scheduler-cell-selected .jqx-scheduler-agenda-date { - color: #fff; -} -.jqx-scheduler-cell-selected .jqx-scheduler-agenda-time { - color: #fff; -} -.jqx-scheduler-cell-selected .jqx-scheduler-agenda-appointment, .jqx-scheduler-cell-selected .jqx-scheduler-agenda-appointment-rtl { - color: #fff; -} - -.jqx-scheduler-agenda-date { - padding-top:5px; - padding-bottom:5px; -} -.jqx-scheduler-agenda-time { - padding: 5px; -} -.jqx-scheduler-agenda-appointment, .jqx-scheduler-agenda-appointment-rtl { - cursor: pointer; -} -.jqx-scheduler-agenda-appointment-resource, .jqx-scheduler-agenda-appointment-resource-rtl { - margin: 5px; - cursor: pointer; -} -.jqx-scheduler-agenda-appointment-resource-rtl, .jqx-scheduler-agenda-appointment-rtl { - float: right; -} -.jqx-scheduler-agenda-day { - margin: 3px; - font-size: 33px; - font-weight: normal; -} -.jqx-scheduler-agenda-week { - font-style: normal; - font-size:13px; -} -.jqx-scheduler-agenda-date { - font-size: 10px; -} -.jqx-scheduler-cell-focus -{ - border-style:dotted; - border-color: #59a0d5 !important; - background: #59a0d5 !important; -} -/*applied to all widgets*/ -.jqx-widget{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; zoom: 1 !important; color: #000000; -moz-background-clip: padding; background-clip: padding-box; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-appearance: none; -webkit-background-clip: padding-box; direction: ltr !important; -webkit-tap-highlight-color: rgba(0,0,0,0); font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 13px;} - -.jqx-item{-ms-touch-action: none; -moz-box-sizing: content-box; box-sizing: content-box; color: inherit; -webkit-text-size-adjust: none;} - -/*applied to containers to set a background and border color. Tabs, NavigationBar, Calendar content.*/ -.jqx-widget-content {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none; -moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 13px; border-color: #c7c7c7; background: #fff; } -/*applied to header areas. Tabs, Menu, Window, Calendar.*/ -.jqx-widget-header {-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;-moz-background-clip: padding; -webkit-text-size-adjust: none; background-clip: padding-box; -webkit-background-clip: padding-box; -webkit-tap-highlight-color: rgba(0,0,0,0); border-color: #c5c5c5; background: #e8e8e8; } - -.jqx-fill-state-normal{-moz-box-sizing: content-box; box-sizing: content-box; -ms-touch-action: none;font-family: Verdana,Arial,sans-serif; font-style: normal; font-size: 13px; border-color:#aaa; background: #efefef; } -.jqx-fill-state-hover {-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #e8e8e8;} -.jqx-fill-state-pressed{-moz-box-sizing: content-box; box-sizing: content-box; border-color:#999; background: #d1d1d1;} -.jqx-fill-state-focus {border-color: #555; } -.jqx-fill-state-disabled {cursor: default; color: #000; opacity: .55; filter:Alpha(Opacity=45);} -.jqx-fill-state-normal td, .jqx-fill-state-hover td, .jqx-fill-state-pressed td, .jqx-fill-state-disabled td, .jqx-fill-state-focus td, .jqx-widget td, .jqx-widget-content td, .jqx-widget-header td { - box-sizing: border-box; -moz-box-sizing: border-box; -} -.jqx-widget .jqx-grid-cell, .jqx-widget .jqx-grid-column-header, .jqx-widget .jqx-grid-group-cell {border-color: #aaa;} -.jqx-widget .jqx-grid-column-menubutton, .jqx-widget .jqx-grid-column-sortascbutton, .jqx-widget .jqx-grid-column-sortdescbutton, .jqx-widget .jqx-grid-column-filterbutton -{ - background-color: transparent; - border-color: #aaa; -} -.jqx-grid-column-header a:link, .jqx-grid-column-header a:visited -{ - *color: expression(this.parentNode.currentStyle['color']); -} -.jqx-grid-bottomright, .jqx-panel-bottomright, .jqx-listbox-bottomright -{ - background-color: #e5e5e5; -} - -.jqx-tabs-title-selected-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's title when the tab is selected and the jqxTab's position property is set to 'bottom' .*/ -.jqx-tabs-title-selected-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; - background-color: #fff; -} -/*applied to the tab's selection tracker when the jqxTab's position property is set to 'top'.*/ -.jqx-tabs-selection-tracker-top -{ - border-color: #aaa; - border-bottom: 1px solid #fff; -} -/*applied to the tab's selection tracker when the jqxTab's position property is set to 'bottom'.*/ -.jqx-tabs-selection-tracker-bottom -{ - border-color: #aaa; - border-top: 1px solid #fff; -} -/*jqxMaskedInput and jqxNumberInput Styles*/ -.jqx-input -{ - -webkit-appearance: none; - padding: 0 0 0 0; - outline: none; - border-width: 1px; - border-style: solid; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -input[type=text].jqx-input, input[type=password].jqx-input { - min-height: 16px; - min-width: 16px; - margin: 0px; - border-width: 1px; - border-style: solid; - font-size: 13px; - padding: 0px; - padding-left:3px; - padding-right: 3px; -} -.jqx-input::-ms-reveal { - display: none; -} -.jqx-input::-ms-clear { - display: none; -} -.jqx-input-content::-ms-clear { - display: none; -} -.jqx-input::-ms-value { - margin: 0px; - padding: 0px; - min-height: 13px; - line-height: 13px; -} - -/*applied to the input when the validation fails.*/ -.jqx-input-invalid -{ - border-color: #dd4b39 !important; -} - -/*applied to the input's content.*/ -.jqx-input-content -{ - -webkit-appearance: none; - padding: 1px; - resize: none; - outline: none; - outline-width: 0px; - -webkit-user-modify:inherit; -moz-user-modify:inherit; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -/*applied to the input when it is disabled.*/ -.jqx-input-disabled -{ - -webkit-appearance: none; - resize: none; - outline: none; - outline-width: 0px; -} -/*applied to the list menu.*/ -.jqx-listmenu-widget { - -ms-touch-action: auto; -} -.jqx-listmenu-widget .jqx-widget-content{ - -ms-touch-action: auto; -} -.jqx-listmenu-widget .jqx-widget-header{ - -ms-touch-action: auto; -} -.jqx-listmenu-widget li{ - -ms-touch-action: auto; -} -.jqx-menu-popup { - -} -.jqx-menu-vertical -{ - background-color: #efefef; -} -.jqx-color-picker -{ - -} -.jqx-color-picker-panel -{ -} -.jqx-color-picker-map -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('images/colorpicker/map-saturation.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.jqx-color-picker-map-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('images/colorpicker/map-hue.png'); - background-repeat: no-repeat; - background-position: left top; - overflow: hidden; -} -.jqx-color-picker-map-overlay -{ - background-color: transparent; - background-image: url('images/colorpicker/map-saturation-overlay.png'); - background-repeat: no-repeat; - background-position: left top; -} -.jqx-color-picker-bar -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('images/colorpicker/bar-saturation.png'); - background-repeat: no-repeat; - background-position: left top; -} -.jqx-color-picker-bar-hue -{ - border: 1px solid #A0A0A0; - background-color: transparent; - background-image: url('images/colorpicker/bar-hue.png'); - background-repeat: no-repeat; - background-position: left top; -} -.jqx-color-picker-preview -{ - border: 1px solid #A0A0A0; -} -.jqx-color-picker-pointer -{ - background-image: url('images/crosshair.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.jqx-color-picker-pointer-alt -{ - background-image: url('images/crosshair-white.png'); - background-repeat: no-repeat; - height: 16px; - width: 16px; -} -.jqx-color-picker-bar-pointer -{ - background-image: url('images/pointer.png'); - background-repeat: no-repeat; - height: 15px; - margin-left: 6px; - background-position: right top; -} -.jqx-icon -{ - width: 16px; - height: 16px; - margin: 0 auto; - position: relative; - top: 50%; - margin-top: -8px; -} -.jqx-input-icon -{ - width: 13px; - height: 13px; - margin: 0 auto; -} -.jqx-scrollbar-thumb-state-normal-touch -{ - border-color:#c3c3c3; background: #c3c3c3; -} -.jqx-touch, .jqx-touch .jqx-fill-state-normal, .jqx-touch .jqx-widget-content, .jqx-touch .jqx-widget-header, .jqx-touch a:link{} -.jqx-scrollbar .jqx-icon-arrow-up{width: 100%; height: 100%;} -.jqx-scrollbar .jqx-icon-arrow-down{width: 100%; height: 100%;} -.jqx-scrollbar .jqx-icon-arrow-left{width: 100%; height: 100%;} -.jqx-scrollbar .jqx-icon-arrow-right{width: 100%; height: 100%;} -/*jqx-listmenu*/ -.jqx-listmenu-widget -{ - border-width: 1px; - border-style: solid; -} -ol.jqx-listmenu, ul.jqx-listmenu -{ - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - line-height: 1; - counter-reset: section; -} -.jqx-listmenu li -{ - margin-left: 0px; - list-style: none; - line-height: 1; -} -.jqx-listmenu -{ - width: 100%; -} -.jqx-listmenu-header -{ - padding: 15px; -} -.jqx-listmenu-item -{ - cursor: pointer; - padding: 15px; - float: none; - overflow: hidden; - text-align: left; - position: relative; -} - -.jqx-listmenu-separator -{ - padding: 10px; - counter-reset: section; -} -.jqx-listmenu-header-label -{ - margin-left: 30px; -} -.jqx-listmenu-arrow-right -{ - width: 16px; - height: 16px; - position: absolute; - top: 50%; - margin-top: -7px; - right: 7px; -} -.jqx-listmenu-arrow-rtl { - right: 0px; - left: 7px; -} -.jqx-listmenu-arrow-right-pressed -{ - width: 16px; - height: 16px; -} -.jqx-listmenu-header .jqx-button -{ - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - padding: 6px 10px; -} -.jqx-listmenu-filter-input -{ - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - border: 1px solid; - outline: none; - width: 97%; - padding: 3px; - padding-left: 10px; - padding-right: 10px; - border-color: #c7c7c7; - background-color: #fff; - font-size: 20px; - min-height: 25px !important; - height: 25px; -} -.jqx-listmenu-filter -{ - text-align: center; - padding: 4px; -} -ol li .jqx-listmenu-item-label:before -{ - content: counter(section) ". "; - counter-increment: section; -} -.jqx-listmenu div -{ - clear: both; -} -.jqx-listmenu-auto-separator -{ -} -.jqx-listmenu-item-readonly -{ - cursor: default; -} -.jqx-tooltip -{ - position: absolute; - width: auto; - height: auto; -} -.jqx-tooltip-main -{ - position: relative; - width: 100%; - height: 100%; - text-align: center; - filter: inherit; - border-style: solid; - border-width: 1px; -} -.jqx-tooltip-text -{ - padding: 5px 8px; - overflow: hidden; - filter: inherit; -} -.jqx-tooltip, .jqx-tooltip-text, .jqx-tooltip-main { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-background-clip: padding; background-clip: padding-box; -webkit-background-clip: padding-box; -} -.jqx-tooltip-arrow -{ - position: absolute; - width: 0px; - height: 0px; - display: block; - border-style: solid; - margin: -6px 0 0 -7px; - background: transparent !important; - filter: inherit; -} -.jqx-tooltip-arrow-t-b -{ - border-left-color: transparent !important; - border-right-color: transparent !important; -} -.jqx-tooltip-arrow-l-r -{ - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} -/*Sets the text-alignment to right.*/ -.jqx-rtl{text-align: right !important;} -.jqx-shadow{ - -webkit-box-shadow: 0 2px 3px rgba(0,0,0,.15)!important; - -moz-box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; - box-shadow : 0 2px 3px rgba(0,0,0,.15)!important; -} -.jqx-noshadow { - -webkit-box-shadow: none !important; - -moz-box-shadow : none !important; - box-shadow : none !important; -} -.jqx-passwordinput-password-icon, .jqx-passwordinput-password-icon-rtl -{ - background-image: url(images/icon-showpassword.png) !important; - background-repeat: no-repeat !important; - width: 14px; - height: 9px; -} -.jqx-passwordinput-password-icon-ltr -{ - background-position: right !important; -} -.jqx-passwordinput-password-icon-rtl -{ - background-position: left !important; -} -.jqx-passwordinput-password-strength-inicator -{ - width: 20%; - height: 5px; - margin-top: 5px; -} -/*top rounded Corners*/ -.jqx-rc-t-expanded -{ - -moz-border-radius-topleft: 0px !important; - -webkit-border-top-left-radius: 0px !important; - border-top-left-radius: 0px !important; - -moz-border-radius-topright: 0px !important; - -webkit-border-top-right-radius: 0px !important; - border-top-right-radius: 0px !important; -} -/*bottom rounded Corners*/ -.jqx-rc-b-expanded -{ - -moz-border-radius-bottomleft: 0px !important; - -webkit-border-bottom-left-radius: 0px !important; - border-bottom-left-radius: 0px !important; - -moz-border-radius-bottomright: 0px !important; - -webkit-border-bottom-right-radius: 0px !important; - border-bottom-right-radius: 0px !important; -} -.jqx-treemap-rectangle { - font-size: 13px; - font-weight: normal; - border: 1px solid #555; - color: #222; - text-shadow: 0px 0px 0px; - overflow: hidden; - text-overflow: ellipsis; -} -.jqx-treemap-label { - text-overflow: ellipsis; - overflow: hidden; -} -.jqx-treemap-rectangle-parent { - color: #222; - font-size: 15px; - font-family: Verdana; - font-weight: bold; -} -.jqx-treemap-legend-label { - color: #fff; -} -.jqx-treemap-legend { - width: 350px; - background-color: rgba(0, 0, 0, 0.1); - z-index: 41; - overflow: hidden; -} -.jqx-treemap-legend-table { - table-layout: fixed; - width: 100%; -} -.jqx-treemap-legend-color { - height: 3px; -} -.jqx-treemap-legend-values { - height: 12px; - width: 100%; -} -.jqx-treemap-legend-value { - font-size: 9px; - position: absolute; - color: #fff; -} -.jqx-treemap-rectangle-hover { - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5); - z-index: 40; -} -/*jqxRangeSelector*/ -.jqx-rangeselector, .jqx-rangeselector-content, .jqx-rangeselector-slider, .jqx-rangeselector-markers, -.jqx-rangeselector-ticks-container, .jqx-rangeselector-ticks, .jqx-rangeselector-shutter -{ - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-sizing: content-box !important; -} -.jqx-rangeselector-markers { - -} -.jqx-rangeselector-content, .jqx-rangeselector-ticks, .jqx-rangeselector-labels, .jqx-rangeselector-shutter, .jqx-rangeselector-markers, .jqx-rangeselector-marker-arrow -{ - position: absolute; -} -.jqx-rangeselector-ticks-container, .jqx-rangeselector-ticks, .jqx-rangeselector-shutter, .jqx-rangeselector-slider -{ - height: 100%; -} -.jqx-rangeselector-ticks-container, .jqx-rangeselector-slider -{ - width: 100%; - box-shadow: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - -moz-border-radius: 0px !important; - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} -.jqx-rangeselector-group-labels-rtl, .jqx-rangeselector-group-labels-ticks, .jqx-rangeselector-slider -{ - float: left; -} -.jqx-rangeselector-slider, .jqx-rangeselector-markers, .jqx-rangeselector-marker-arrow -{ - border-style: solid; -} -.jqx-rangeselector-ticks, .jqx-rangeselector-group-labels-ticks -{ - width: 1px; - background: #aaa; -} -.jqx-rangeselector-labels, .jqx-rangeselector-markers -{ - white-space: nowrap; - width: auto; -} -.jqx-rangeselector-slider, .jqx-rangeselector-markers -{ - border-width: 1px !important; -} -.jqx-rangeselector-ticks-container -{ - background-color: transparent; - position: relative; -} -.jqx-rangeselector-shutter -{ - opacity: 0.75; - background: #efefef; - border-width: 0px !important; -} -.jqx-rangeselector-slider -{ - background-color: transparent !important; - border-top: none !important; - background-image: none !important; - border-bottom: none !important; - border-color: #aaa; - border-right-color: transparent !important; - position: relative; - overflow: hidden; -} -.jqx-rangeselector-inner-slider -{ - position: absolute; - right: 0; - background: #aaa; - width: 1px; - height: 100%; -} -.jqx-rangeselector-ticks -{ - margin-top: 0px; -} -.jqx-rangeselector-labels, .jqx-rangeselector-group-labels -{ - margin-top: 4px; -} -.jqx-rangeselector-markers -{ - height: 20px; - padding: 5px; - opacity: 0.75; -} -.jqx-rangeselector-marker-arrow -{ - width: 0px; - height: 0px; - display: block; - margin: -6px 0 0 -7px; - background-color: transparent !important; - filter: inherit; - border-top-width: 5px; - border-bottom-width: 5px; - border-right-color: transparent !important; - border-left-color: transparent !important; - background-clip: border-box; - background-repeat: repeat; - box-shadow: none !important; - -webkit-box-shadow: none !important; - background-image: none !important; -} -.jqx-rangeselector-marker-arrow-top { - border-bottom-color: transparent !important; -} -.jqx-rangeselector-marker-arrow-bottom { - border-top-color: transparent !important; -} -.jqx-rangeselector-marker-left-arrow -{ - border-right-width: 0px; - border-left-width: 5px; -} -.jqx-rangeselector-marker-right-arrow -{ - border-right-width: 5px; - border-left-width: 0px; -} -.jqx-rangeselector-markers-value -{ - overflow: hidden; - white-space: nowrap; -} -.jqx-rangeselector-group-labels-rtl -{ - margin-right: 10px; - direction: rtl; -} -.jqx-rangeselector-group-labels-ticks -{ - height: 17px; -} -.jqx-rangeselector-group-labels-ticks-rtl -{ - margin-left: 5px; -} -.jqx-action-button { - border: none; - border-left: 1px solid #c7c7c7; -} -.jqx-action-button-rtl { - border: none; - border-right: 1px solid #c7c7c7; - cursor: pointer; -} -/*jqxBulletChart*/ -.jqx-bulletchart -{ -} -.jqx-bulletchart, .jqx-bulletchart-title-container-horizontal, .jqx-bulletchart-title-container-vertical, .jqx-bulletchart-chart-container-horizontal, .jqx-bulletchart-chart-container-vertical -{ - position: relative; -} -.jqx-bulletchart-title-inner-container, .jqx-bulletchart-range, .jqx-bulletchart-pointer, .jqx-bulletchart-target, .jqx-bulletchart-ticks, .jqx-bulletchart-labels -{ - position: absolute; -} -.jqx-bulletchart-title-container-vertical, .jqx-bulletchart-title, .jqx-bulletchart-description, .jqx-bulletchart-range-vertical -{ - width: 100%; -} -.jqx-bulletchart-title-container-horizontal, .jqx-bulletchart-chart-container-horizontal -{ - float: left; - overflow: hidden; -} -.jqx-bulletchart-title, .jqx-bulletchart-description -{ - text-align: center; -} -.jqx-bulletchart-title-inner-container -{ - margin: auto; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.jqx-bulletchart-title-inner-container-ltr -{ - padding-right: 5px; -} -.jqx-bulletchart-title-inner-container-rtl -{ - padding-left: 5px; -} -.jqx-bulletchart-title-description-ltr -{ - text-align: right; -} -.jqx-bulletchart-title-description-rtl -{ - text-align: left; -} -.jqx-bulletchart-title-description-vertical -{ - text-align: center; -} -.jqx-bulletchart-title -{ - font-size: 110%; - font-weight: bold; -} -.jqx-bulletchart-description -{ - font-size: 90%; -} -.jqx-bulletchart-range-horizontal -{ - height: 100%; -} -.jqx-bulletchart-target-horizontal -{ - top: 10%; - height: 80%; -} -.jqx-bulletchart-target-vertical -{ - left: 10%; - width: 80%; -} -.jqx-bulletchart-ticks -{ - background-color: #AAAAAA; -} -.jqx-bulletchart-ticks-horizontal -{ - width: 1px; -} -.jqx-bulletchart-ticks-vertical -{ - height: 1px; -} -.jqx-bulletchart-zero-tick -{ -} -.jqx-bulletchart-labels -{ -} -/*jqxNotification*/ -.jqx-notification -{ - padding: 10px; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - pointer-events: auto; -} -.jqx-notification-table -{ - width: 100%; - font-size: inherit; - font-weight: inherit; - font-style: inherit; - color:inherit; -} -.jqx-notification-container -{ - position: fixed; - height: auto; - width: auto; - pointer-events: none; -} -.jqx-notification-container-full-width -{ - width: 100%; -} -.jqx-notification-container-full-height -{ - height: 100%; -} -#jqxNotificationDefaultContainer-top-right, #jqxNotificationDefaultContainer-bottom-left -{ - direction: rtl; -} -.jqx-notification-icon, .jqx-notification-content -{ - vertical-align: middle; -} -.jqx-notification-content -{ -} -.jqx-notification-content-rtl -{ - direction: rtl; -} -.jqx-link, .jqx-inverse, .jqx-primary, .jqx-warning, .jqx-danger, .jqx-success, .jqx-info { - background: none !important; - box-shadow: none !important; - text-shadow: none !important; -} - -.jqx-primary .jqx-icon-calendar, .jqx-primary .jqx-icon-calendar-hover, .jqx-primary .jqx-icon-calendar-pressed { - background-image: url('images/icon-calendar-white.png'); -} -.jqx-primary .jqx-icon-time, .jqx-primary .jqx-icon-time-hover, .jqx-primary .jqx-icon-time-pressed { - background-image: url('images/icon-time-white.png'); -} -.jqx-success .jqx-icon-calendar, .jqx-success .jqx-icon-calendar-hover, .jqx-success .jqx-icon-calendar-pressed { - background-image: url('images/icon-calendar-white.png'); -} -.jqx-success .jqx-icon-time, .jqx-success .jqx-icon-time-hover, .jqx-success .jqx-icon-time-pressed { - background-image: url('images/icon-time-white.png'); -} -.jqx-warning .jqx-icon-calendar, .jqx-warning .jqx-icon-calendar-hover, .jqx-warning .jqx-icon-calendar-pressed { - background-image: url('images/icon-calendar-white.png'); -} -.jqx-warning .jqx-icon-time, .jqx-warning .jqx-icon-time-hover, .jqx-warning .jqx-icon-time-pressed { - background-image: url('images/icon-time-white.png'); -} - -.jqx-danger .jqx-icon-calendar, .jqx-danger .jqx-icon-calendar-hover, .jqx-danger .jqx-icon-calendar-pressed { - background-image: url('images/icon-calendar-white.png'); -} -.jqx-danger .jqx-icon-time, .jqx-danger .jqx-icon-time-hover, .jqx-danger .jqx-icon-time-pressed { - background-image: url('images/icon-time-white.png'); -} - -.jqx-info .jqx-icon-calendar, .jqx-info .jqx-icon-calendar-hover, .jqx-info .jqx-icon-calendar-pressed { - background-image: url('images/icon-calendar-white.png'); -} -.jqx-info .jqx-icon-time, .jqx-info .jqx-icon-time-hover, .jqx-info .jqx-icon-time-pressed { - background-image: url('images/icon-time-white.png'); -} - -.jqx-inverse .jqx-icon-calendar, .jqx-inverse .jqx-icon-calendar-hover, .jqx-inverse .jqx-icon-calendar-pressed { - background-image: url('images/icon-calendar-white.png'); -} -.jqx-inverse .jqx-icon-time, .jqx-inverse .jqx-icon-time-hover, .jqx-inverse .jqx-icon-time-pressed { - background-image: url('images/icon-time-white.png'); -} - - -.jqx-notification-info, .jqx-info -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5bc0de !important; - *background-color: #5bc0de !important; - border-left-color: #46b8da !important; - border-right-color: #46b8da !important; - border-top-color: #46b8da !important; - border-bottom-color: #46b8da !important; -} -.jqx-info:hover, -.jqx-info:focus, -.jqx-info:active, -.jqx-info.active, -.jqx-info.disabled, -.jqx-info[disabled] { - color: #ffffff !important; - background-color: #31b0d5 !important; - *background-color: #31b0d5 !important; - border-color: #269abc !important; -} - -.jqx-fill-state-pressed.jqx-info, -.jqx-info:active, -.jqx-info.active { - background-color: #269abc \9 !important; -} -.jqx-notification-warning, .jqx-warning -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #f0ad4e !important; - *background-color: #f0ad4e !important; - border-left-color: #eea236 !important; - border-right-color: #eea236 !important; - border-top-color: #eea236 !important; - border-bottom-color: #eea236 !important; -} -.jqx-warning:hover, -.jqx-warning:focus, -.jqx-warning:active, -.jqx-warning.active, -.jqx-warning.disabled, -.jqx-warning[disabled] { - color: #ffffff !important; - background-color: #ec971f !important; - *background-color: #ec971f !important; - border-color: #d58512 !important; -} - -.jqx-fill-state-pressed.jqx-warning, -.jqx-warning:active, -.jqx-warning.active { - background-color: #d58512 \9 !important; - border-color: #985f0d !important; -} -.jqx-notification-success, .jqx-success -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #5cb85c !important; - *background-color: #5cb85c !important; - border-left-color: #4cae4c !important; - border-right-color: #4cae4c !important; - border-top-color: #4cae4c !important; - border-bottom-color: #4cae4c !important; -} -.jqx-success:hover, -.jqx-success:focus, -.jqx-success:active, -.jqx-success.active, -.jqx-success.disabled, -.jqx-success[disabled] { - color: #ffffff !important; - background-color: #449d44 !important; - *background-color: #449d44 !important; - border-color: #398439 !important; -} -.jqx-fill-state-pressed.jqx-success, -.jqx-success:active, -.jqx-success.active { - background-color: #398439 !important; - border-color: #255625 !important; -} -.jqx-notification-error, .jqx-danger -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #d9534f !important; - *background-color: #d9534f !important; - border-left-color: #d43f3a !important; - border-right-color: #d43f3a !important; - border-top-color: #d43f3a !important; - border-bottom-color: #d43f3a !important; -} -.jqx-danger:hover, -.jqx-danger:focus, -.jqx-danger:active, -.jqx-danger.active, -.jqx-danger.disabled, -.jqx-danger[disabled] { - color: #ffffff !important; - background-color: #c9302c !important; - *background-color: #c9302c !important; - border-color: #ac2925 !important; -} - -.jqx-fill-state-pressed.jqx-danger, .jqx-danger:active, -.jqx-danger.active { - background-color: #ac2925 !important; - border-color: #761c19 !important; -} -.jqx-notification-mail, .jqx-primary -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #337ab7 !important; - *background-color: #337ab7 !important; - border-left-color: #2e6da4 !important; - border-right-color: #2e6da4 !important; - border-top-color: #2e6da4 !important; - border-bottom-color: #2e6da4 !important; -} -.jqx-primary:hover, -.jqx-primary:focus, -.jqx-primary:active, -.jqx-primary.active, -.jqx-primary.disabled, -.jqx-primary[disabled] { - color: #ffffff !important; - background-color: #286090 !important; - *background-color: #286090 !important; -} - -.jqx-fill-state-pressed.jqx-primary, -.jqx-primary:active, -.jqx-primary.active { - background-color: #204d74 !important; -} -.jqx-notification-time, .jqx-inverse -{ - color: #ffffff !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !important; - background-color: #363636 !important; - *background-color: #222222 !important; - border-left-color: #222222 !important; - border-right-color: #222222 !important; - border-top-color: #222222 !important; - border-bottom-color: #000000 !important; -} -.jqx-inverse:hover, -.jqx-inverse:focus, -.jqx-inverse:active, -.jqx-inverse.active, -.jqx-inverse.disabled, -.jqx-inverse[disabled] { - color: #ffffff !important; - background-color: #222222 !important; - *background-color: #151515 !important; -} - -.jqx-fill-state-pressed.jqx-inverse, -.jqx-inverse:active, -.jqx-inverse.active { - background-color: #080808 !important; - background-image: linear-gradient(to bottom, #444444, #444444) !important; -} -.jqx-link, -.jqx-link:active, -.jqx-link[disabled] { - background-color: transparent !important; - background-image: none !important; - -webkit-box-shadow: none !important; - -moz-box-shadow: none !important; - box-shadow: none !important; -} - -.jqx-link { - color: #0088cc !important; - cursor: pointer !important; - border-color: transparent !important; - -webkit-border-radius: 0 !important; - -moz-border-radius: 0 !important; - border-radius: 0 !important; -} - -.jqx-link:hover, -.jqx-link:focus { - color: #005580 !important; - text-decoration: underline !important; - background-color: transparent !important; -} - -.jqx-link[disabled]:hover, -.jqx-link[disabled]:focus { - color: #333333 !important; - text-decoration: none !important; -} -.jqx-link:focus, .jqx-inverse:focus, .jqx-primary:focus, .jqx-warning:focus, .jqx-danger:focus, .jqx-success:focus, .jqx-info:focus, -.jqx-link:hover, .jqx-inverse:hover, .jqx-primary:hover, .jqx-warning:hover, .jqx-danger:hover, .jqx-success:hover, .jqx-info:hover { - background-position: 0 -15px !important; - -webkit-transition: background-position 0.1s linear !important; - -moz-transition: background-position 0.1s linear !important; - -o-transition: background-position 0.1s linear !important; - transition: background-position 0.1s linear !important; -} -.jqx-link:active, .jqx-inverse:active, .jqx-primary:active, .jqx-warning:active, .jqx-danger:active, .jqx-success:active, .jqx-info:active { - background-image: none !important; - outline: 0 !important; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05) !important; -} -.jqx-notification-icon -{ - background-repeat: no-repeat; -} -.jqx-notification-icon-ltr -{ - background-position: left center; -} -.jqx-notification-icon-rtl -{ - background-position: right center; -} -.jqx-notification-icon-info, .jqx-notification-icon-warning, .jqx-notification-icon-success, .jqx-notification-icon-error, .jqx-notification-icon-mail, .jqx-notification-icon-time -{ - width: 30px; - height: 25px; -} -.jqx-notification-icon-info -{ - background-image: url('images/info.png'); -} -.jqx-notification-icon-warning -{ - background-image: url('images/warning.png'); -} -.jqx-notification-icon-success -{ - background-image: url('images/success.png'); -} -.jqx-notification-icon-error -{ - background-image: url('images/error.png'); -} -.jqx-notification-icon-mail -{ - background-image: url('images/mail.png'); -} -.jqx-notification-icon-time -{ - background-image: url('images/time.png'); -} -.jqx-notification-close-button-info, .jqx-notification-close-button-success, .jqx-notification-close-button-mail, .jqx-notification-close-button-time, .jqx-notification-close-button-error -{ - background-image: url('images/close_white.png'); -} -.jqx-notification-close-button-warning -{ - background-image: url('images/close_black.png'); -} -.jqx-notification-close-button-container, .jqx-notification-close-button -{ - width: 16px; - height: 16px; -} -.jqx-notification-close-button-container -{ - vertical-align: top; -} -.jqx-notification-close-button -{ - position: relative; - top: -11px; - background-repeat: no-repeat; - cursor: pointer; -} -.jqx-notification-close-button-ltr -{ - right: -11px; - background-position: right top; -} -.jqx-notification-close-button-rtl -{ - left: -11px; - background-position: left top; -} -.jqx-navbar { - width: 100%; - border-style: solid; - border-width: 1px; -} -.jqx-navbar ul:before, -.jqx-navbar ul:after { - content: ""; - display: table; -} -.jqx-navbar ul:after { - clear: both; -} -.jqx-navbar ul { - list-style: none; - margin: 0; - padding: 0; - position: relative; - display: block; - border: 0; - max-width: 100%; - overflow: visible; -} -.jqx-navbar-block { - margin: 0; - overflow:hidden; - padding: 0px 12px; - border-width:0px; - float: left; - min-height: 1px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - box-shadow: none !important; - border-radius: 0px !important; -} -.jqx-navbar-block-rtl { - float:right; -} -.jqx-ribbon -{ - position: relative; - overflow: hidden; -} -.jqx-ribbon-auto -{ - display: inline-block; -} -.jqx-ribbon-popup -{ - overflow: visible; -} -.jqx-ribbon-header -{ - position: absolute; - margin: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - overflow: hidden; - float: left; - display: block; - box-shadow: none !important; -} -.jqx-ribbon-header-auto -{ - position: relative; -} -.jqx-ribbon-header-horizontal -{ - width: 100%; - min-height: 30px; - padding: 0px; - white-space: nowrap; -} -.jqx-ribbon-header-bottom -{ - bottom: 0; -} -.jqx-ribbon-header-vertical -{ - min-width: 75px; - height: 100%; - float: left; - padding: 0px; -} -.jqx-ribbon-header-right -{ - right: 0; -} -.jqx-ribbon-header-horizontal-popup, .jqx-ribbon-header-vertical-popup -{ - position: relative; -} -.jqx-ribbon-header-horizontal-popup -{ - height:100%; -} -.jqx-ribbon-header-vertical-popup -{ - width: 100%; -} -.jqx-ribbon-item -{ - position: relative; - list-style-type: none; - padding: 5px; - border: 1px solid transparent; - box-sizing: border-box; - text-overflow: ellipsis; - cursor: default; - min-width: 10px; - vertical-align: top; -} -.jqx-ribbon-item-top, .jqx-ribbon-item-bottom -{ - height: 100%; - display: inline-block; - margin-left: 1px; - margin-right: 1px; -} -.jqx-ribbon-item-top -{ - margin-top: 1px; -} -.jqx-ribbon-item-bottom -{ - margin-top: -1px; -} -.jqx-ribbon-item-left, .jqx-ribbon-item-right -{ - width: 100%; - margin-top: 2px; -} -.jqx-ribbon-item-left -{ - margin-left: 1px; -} -.jqx-ribbon-item-right -{ - margin-left: -1px; -} -.jqx-ribbon-item-hover -{ - border-color: inherit; -} -.jqx-ribbon-item-top.jqx-ribbon-item-hover -{ - border-bottom-color: inherit !important; -} -.jqx-ribbon-item-bottom.jqx-ribbon-item-hover -{ - border-top-color: inherit !important; -} -.jqx-ribbon-item-left.jqx-ribbon-item-hover -{ - border-right-color: inherit !important; -} -.jqx-ribbon-item-right.jqx-ribbon-item-hover -{ - border-left-color: inherit !important; -} -.jqx-ribbon-item-selected -{ - border-color: inherit; -} -.jqx-ribbon-item-top.jqx-ribbon-item-selected -{ - border-bottom-color: transparent; -} -.jqx-ribbon-item-bottom.jqx-ribbon-item-selected -{ - border-top-color: transparent; -} -.jqx-ribbon-item-left.jqx-ribbon-item-selected -{ - border-right-color: transparent; -} -.jqx-ribbon-item-right.jqx-ribbon-item-selected -{ - border-left-color:transparent; -} -.jqx-ribbon-content -{ - background-image: none !important; - background-color: transparent !important; - box-sizing: border-box; -} -.jqx-ribbon-content-horizontal -{ - clear: both; - height: 100%; -} -.jqx-ribbon-content-vertical -{ - height: 100%; - width: 100%; - float: left; - border-width: 1px; -} -.jqx-ribbon-content-popup -{ - z-index:99999; - position: absolute; - border-left: none; -} -.jqx-ribbon-content-popup.jqx-ribbon-content-horizontal -{ - width: 100%; - height: auto; -} -.jqx-ribbon-content-popup.jqx-ribbon-content-vertical -{ - width: auto; - height: 100%; -} -.jqx-ribbon-content-popup-top { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.jqx-ribbon-content-popup-bottom { - -webkit-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 -6px 15px rgba(0, 0, 0, 0.15); -} -.jqx-ribbon-content-popup-left { - -webkit-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); - box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); -} -.jqx-ribbon-content-popup-right { - -webkit-box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); - box-shadow: -6px 6px 15px 0 rgba(0,0,0,0.15); -} - -.jqx-ribbon-content-auto-width -{ - width: auto; -} -.jqx-ribbon-content-section -{ - width: 100%; - height: 100%; - display: none; - border-width: 1px; - border-style: solid; - box-sizing: inherit; - overflow: auto; -} -.jqx-ribbon-content-section-top -{ - border-top: none; -} -.jqx-ribbon-content-section-bottom -{ - bottom: 0; - border-bottom: none; -} -.jqx-ribbon-content-section-left -{ - border-left: none; -} -.jqx-ribbon-content-section-right -{ - border-right: none; - right: 0; -} -.jqx-ribbon-content-section-popup -{ - position: relative; -} -.jqx-ribbon-content-section-horizontal-popup -{ - height: auto; -} -.jqx-ribbon-content-section-vertical-popup -{ - width: auto; -} -.jqx-ribbon-header-rtl -{ - text-align: right; -} -.jqx-ribbon-header-horizontal.jqx-ribbon-header-rtl -{ - direction: rtl; -} -.jqx-ribbon-item-rtl -{ - direction: rtl; -} -.jqx-ribbon-scrollbutton -{ - position: absolute; - display: none; - box-sizing: border-box; - cursor: pointer; - background-repeat: no-repeat !important; - background-position: center !important; - z-index: 1000; -} -.jqx-ribbon-scrollbutton-top, .jqx-ribbon-scrollbutton-bottom -{ - width: 17px; -} -.jqx-ribbon-scrollbutton-left, .jqx-ribbon-scrollbutton-right -{ - height: 17px; -} -.jqx-ribbon-scrollbutton-top -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.jqx-ribbon-scrollbutton-bottom -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.jqx-ribbon-scrollbutton-left -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.jqx-ribbon-scrollbutton-right -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.jqx-ribbon-scrollbutton-top.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-top.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-near, .jqx-ribbon-scrollbutton-bottom.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-bottom.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-near -{ - left: 1px; - border-right-width: 1px; - border-right-style: solid; -} -.jqx-ribbon-scrollbutton-top.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-far, .jqx-ribbon-scrollbutton-bottom.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-far -{ - right: 18px; - border-left-width: 1px; - border-left-style: solid; -} -.jqx-ribbon-scrollbutton-top.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-top.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-far, .jqx-ribbon-scrollbutton-bottom.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-bottom.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-far -{ - right: 1px; - border-left-width: 1px; - border-left-style: solid; -} -.jqx-ribbon-scrollbutton-top.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-near, .jqx-ribbon-scrollbutton-bottom.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-near -{ - left: 18px; - border-right-width: 1px; - border-right-style: solid; -} -.jqx-ribbon-scrollbutton-left.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-left.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-near, .jqx-ribbon-scrollbutton-right.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-right.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-near -{ - top: 1px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.jqx-ribbon-scrollbutton-left.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-far, .jqx-ribbon-scrollbutton-right.jqx-ribbon-scrollbutton-lt.jqx-ribbon-scrollbutton-far -{ - bottom: 18px; - border-top-width: 1px; - border-top-style: solid; -} -.jqx-ribbon-scrollbutton-left.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-left.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-far, .jqx-ribbon-scrollbutton-right.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-both, .jqx-ribbon-scrollbutton-right.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-far -{ - bottom: 1px; - border-top-width: 1px; - border-top-style: solid; -} -.jqx-ribbon-scrollbutton-left.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-near, .jqx-ribbon-scrollbutton-right.jqx-ribbon-scrollbutton-rb.jqx-ribbon-scrollbutton-near -{ - top: 18px; - border-bottom-width: 1px; - border-bottom-style: solid; -} -.jqx-ribbon-scrollbutton-inner -{ - width: 100%; - height: 100%; - background-repeat: no-repeat; - background-position: center; -} -.jqx-ribbon-selection-token -{ - position: absolute; - z-index: 1000; -} -.jqx-ribbon-selection-token-top, .jqx-ribbon-selection-token-bottom -{ - height: 1px; -} -.jqx-ribbon-selection-token-left, .jqx-ribbon-selection-token-right -{ - width: 1px; -} -.jqx-ribbon-auto, .jqx-ribbon-item-top, .jqx-ribbon-item-bottom, .jqx-ribbon-content -{ - *display: inline; -} -.jqx-ribbon-content-left -{ - *float: none; -} -.jqx-ribbon-content-right -{ - *float: left; -} -.jqx-ribbon-content.jqx-ribbon-content-popup -{ - *left: 0; -} -.jqx-ribbon-content-popup .jqx-ribbon-content-section -{ - *overflow: visible; -} -.jqx-ribbon-content-section-popup -{ - *position: absolute; -} -.jqx-toolbar, .jqx-toolbar-minimized-popup-separator -{ - box-sizing: border-box; -} -.jqx-toolbar, .jqx-toolbar-minimized-popup -{ - padding: 5px; -} -.jqx-toolbar -{ - position: relative; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.jqx-toolbar-tool -{ - float: left; - margin-top: 0; - margin-bottom: 0; -} -.jqx-toolbar-tool-rtl -{ - float: right; -} -.jqx-toolbar-tool-no-separator-ltr -{ - margin-right: 2px !important; -} -.jqx-toolbar-tool-no-separator-rtl -{ - margin-left: 2px !important; -} -.jqx-toolbar-tool-separator-ltr -{ - margin-right: 6px !important; -} -.jqx-toolbar-tool-separator-rtl -{ - margin-left: 6px !important; -} -.jqx-toolbar-tool-inner-button -{ - margin-right: 0; - margin-left: 0; - border-radius: 0 !important; -} -.jqx-toolbar-minimized-button, .jqx-toolbar-minimized-popup -{ - position: absolute; -} -.jqx-toolbar-minimized-button -{ - height: 100%; - right: 0; - cursor: pointer; - margin-top: -5px; - margin-right: 5px; - display: none; -} -.jqx-toolbar-minimized-button-rtl -{ - left: 0; - margin-left: 5px; - margin-right: 0; -} -.jqx-toolbar-minimized-popup -{ - border-width: 1px; - border-top-width: 0; - border-style: solid; - visibility: hidden; - z-index: 99999; -} -.jqx-toolbar-tool-minimized -{ - margin: 1px 0 !important; -} -.jqx-toolbar-minimized-popup-separator -{ - width: 100%; - height: 2px; - margin: 5px 0; - display: none; -} -.jqx-complex-input-spin-buttons-container -{ - border-width: 1px; - border-style: solid; - position: relative; - -webkit-box-sizing: border-box !important; - -moz-box-sizing: border-box !important; - box-sizing: border-box !important; - padding: 2px 8px !important; - white-space: nowrap; - vertical-align: middle; -} -.jqx-formatted-input, .jqx-complex-input -{ - padding-right: 2px !important; - text-align: right; -} -.jqx-formatted-input-lower-case, .jqx-complex-input -{ - text-transform: lowercase; -} -.jqx-formatted-input-upper-case -{ - text-transform: uppercase; -} -.jqx-formatted-input-item -{ - word-wrap: break-word; -} -.jqx-formatted-input-item-rtl, .jqx-complex-input-rtl -{ - direction: rtl !important; -} -.jqx-formatted-input-spin-buttons-container, .jqx-formatted-input-addon -{ - height: 100%; -} -.jqx-formatted-input-spin-buttons-container -{ - width: 18px; - padding: 0 0 0 1px !important; - overflow: hidden; -} -.jqx-formatted-input-spin-buttons-container-rtl -{ - border-right-width: 0px; - padding: 0 0 0 2px !important; -} -.jqx-formatted-input-spin-buttons-container-rtl-border -{ - border-left-width: 1px !important; -} -.jqx-formatted-input-spin-button -{ - position: relative; - width: 17px; - height: 50%; - margin-left: -1px; - border-width: 0px; - padding: 0px; - overflow: hidden; - cursor: pointer; -} -.jqx-formatted-input-addon -{ - width: 19px; - padding: 0 !important; - cursor: pointer; -} -.jqx-formatted-input-addon-rtl -{ - border-right-width: 1px !important; -} -.jqx-complex-input-parent -{ - overflow: hidden; -} -.jqx-complex-input-child -{ - height: 100%; - float: left; - box-sizing: border-box; -} -.jqx-complex-input-child-rtl -{ - float: right; -} -.jqx-complex-input-spin-buttons-container-ltr -{ - border-left-width: 0; -} -.jqx-complex-input-spin-buttons-container-rtl -{ - border-left-width: 1px !important; - border-right-width: 0; -} -.jqx-file-upload -{ - position: relative; - overflow: auto; -} -.jqx-file-upload, .jqx-file-upload-file-row, .jqx-file-upload-file-name, .jqx-file-upload-file-cancel, .jqx-file-upload-file-upload -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; -} -.jqx-file-upload-buttons-container, .jqx-file-upload-iframe, .jqx-file-upload-loading-element -{ - display: none; -} -.jqx-file-upload-file-input-ie9, .jqx-file-upload-buttons-container, .jqx-file-upload-file-row, .jqx-file-upload-icon -{ - width: 100%; -} -.jqx-file-upload-file-input-ie9, .jqx-file-upload-file-name, .jqx-file-upload-file-cancel, .jqx-file-upload-file-upload, .jqx-file-upload-icon, .jqx-file-upload-loading-element -{ - height: 100%; -} -.jqx-file-input-iframe, .jqx-file-upload-form-ie9 -{ - position: absolute; -} -.jqx-file-input-iframe -{ - width: 0; - height: 0; - border: none; -} -.jqx-file-upload-form, .jqx-file-upload-file-input -{ - visibility: hidden; - display: none; -} -.jqx-file-upload-form-ie9, .jqx-file-upload-file-input-ie9 -{ - display: block; - visibility: visible; -} -.jqx-file-upload-form-ie9 -{ - z-index: 10000; - opacity: 0; - filter: alpha(opacity=0); -} -.jqx-file-upload-file-name -{ - width: auto; - padding: 0 2px 0 2px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - *float: left; -} -.jqx-file-upload-button-browse-rtl, .jqx-file-upload-button-upload-rtl, .jqx-file-upload-button-cancel-rtl, .jqx-file-upload-file-name-rtl, .jqx-file-upload-file-cancel, .jqx-file-upload-file-upload, .jqx-file-upload-loading-element -{ - float: right; -} -.jqx-file-upload, .jqx-file-upload-file-row -{ - padding: 5px; -} -.jqx-file-upload-button-browse -{ - display: block; -} -.jqx-file-upload-buttons-container -{ - height: auto; - margin-top: 10px; -} -.jqx-file-upload-button-browse-rtl, .jqx-file-upload-button-upload-rtl, .jqx-file-upload-button-cancel-rtl, .jqx-file-upload-file-name-rtl, .jqx-file-upload-file-cancel-rtl, .jqx-file-upload-file-upload-rtl -{ - direction: rtl !important; -} -.jqx-file-upload-button-cancel, .jqx-file-upload-button-upload-rtl -{ - margin-left: 5px; -} -.jqx-file-upload-button-upload-rtl-ie -{ - margin-right: 5px; -} -.jqx-file-upload-button-cancel-rtl, .jqx-file-upload-button-upload-rtl-ie -{ - margin-left: 0; -} -.jqx-file-upload-file-row -{ - height: 30px; - margin-bottom: 3px; - clear: both; -} -.jqx-file-upload-file-cancel, .jqx-file-upload-file-upload, .jqx-file-upload-loading-element -{ - width: 17px; - margin: 0 1px 0 1px; -} -.jqx-file-upload-file-cancel-rtl, .jqx-file-upload-file-upload-rtl, .jqx-file-upload-loading-element-rtl -{ - float: none; - *float: left; -} -.jqx-file-upload-button-browse, .jqx-file-upload-button-upload, .jqx-file-upload-button-cancel, .jqx-file-upload-form-ie9, .jqx-file-upload-file-input-ie9, .jqx-file-upload-file-cancel, .jqx-file-upload-file-upload -{ - cursor: pointer; - white-space:nowrap; -} -.jqx-file-upload-file-name, .jqx-file-upload-file-cancel, .jqx-file-upload-file-upload -{ - display: inline-block; -} -.jqx-file-upload-icon-upload, .jqx-file-upload-loading-element -{ - margin-top: 1px; -} -.jqx-file-upload-loading-element -{ - background-image: url('images/loader-small.gif'); - background-repeat: no-repeat; -} - -.jqx-date-time-input-popup .jqx-icon { - margin-top:0px; -} - - -.jqx-text-area-element -{ - height: 100%; - width: 100%; - overflow: hidden; - border: none; - outline: none; - left: 0px; - top: 0px; - margin: 0px; - position: absolute; - resize: none; -} -.jqx-text-area-element-rtl -{ - direction: rtl !important; -} -.jqx-responsive-panel -{ - overflow: auto; -} -.jqx-responsive-panel, .jqx-responsive-panel-button -{ - border-width: 1px; - border-style: solid; -} -.jqx-responsive-panel-button -{ - display: none; - cursor: pointer; -} -.jqx-responsive-panel-button-inner -{ - margin: 0; - width: 100%; - height: 100%; - background-position: center; -} -.jqx-loader -{ - margin: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background-color: rgba(255,255,255,0.5); - z-index: 999; - border-style: solid; - border-width: 1px; -} -.jqx-loader-ie-transparency -{ - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff)"; /*For IE 8*/ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7fffffff, endColorstr=#7fffffff); /*For IE 7*/ -} -.jqx-loader-modal -{ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - position: fixed; - height: 100%; - width: 100%; - z-index: 99; - cursor: default; - top: 0; - left: 0; - background-color: black; - opacity: 0.6; -} -.jqx-loader-icon -{ - background-image: url("images/loader.gif"); - background-repeat: no-repeat; - background-position: center; - width: 100%; - height: 100%; - position: absolute; - z-index: 999; -} -.jqx-loader-text -{ - z-index: 999; - position: relative; -} -.jqx-loader-text-left -{ - margin-left: 5px; - position: absolute; - top: 50%; -} -.jqx-loader-text-right -{ - margin-right: 5px; - position: absolute; - top: 50%; - right: 0px; -} -.jqx-loader-text-top -{ - text-align: center; - margin-top: 5px; -} -.jqx-loader-text-bottom -{ - bottom: 0px; - position: absolute; - text-align: center; - margin: 0 auto; - width: 100%; - margin-bottom: 5px; -} -.jqx-loader-rtl -{ - direction: rtl; -} -/* jqxLayout and jqxDockingLayout */ -.jqx-layout, .jqx-layout-group-root, .jqx-layout-pseudo-window-header, .jqx-docking-layout-overlay-inner-square-content -{ - position: relative; -} -.jqx-layout-pseudo-window-pin-background, .jqx-layout-pseudo-window-close-background, .jqx-layout-resize-feedback, .jqx-layout-overlay, .jqx-docking-layout-overlay, .jqx-docking-layout-overlay-highlight-right, .jqx-docking-layout-overlay-highlight-bottom, .jqx-docking-layout-overlay-square-edge, .jqx-docking-layout-drop-overlay -{ - position: absolute; -} -.jqx-layout -{ - background-color: #c5c5c5; -} -.jqx-layout-group-root, .jqx-layout-pseudo-window-pin-icon, .jqx-layout-pseudo-window-pinned-icon, .jqx-layout-pseudo-window-close-icon, .jqx-layout-overlay -{ - width: 100%; - height: 100%; -} -.jqx-layout-group-default-horizontal > div, .jqx-layout-pseudo-window-title-ltr, .jqx-docking-layout-overlay-square, .jqx-docking-layout-overlay-mini-window-edge-horizontal, .jqx-docking-layout-overlay-square-edge-arrow-container-horizontal -{ - float: left; -} -.jqx-layout-group-tabbed -{ - position: static; - box-sizing: border-box; - min-height: 0 !important; -} -.jqx-layout-group-tabbed .jqx-window-content, .jqx-docking-layout-group-floating .jqx-window-content -{ - padding: 0; -} -.jqx-layout-group-tabbed .jqx-ribbon-content-section, .jqx-layout-window, .jqx-docking-layout-group-floating .jqx-ribbon-content-section -{ - border: none; -} -.jqx-layout-window -{ - position: static; -} -.jqx-layout-group-auto-hide-content-vertical, .jqx-layout-group-auto-hide-content-horizontal -{ - overflow: auto; -} -.jqx-layout-group-auto-hide-content-vertical -{ - width: 150px; -} -.jqx-layout-group-auto-hide-content-horizontal -{ - width: 100%; - height: 150px; -} -.jqx-layout-pseudo-window -{ - border-width: 1px; - border-style: solid; - box-sizing: border-box; - box-shadow: none !important; -} -.jqx-layout-pseudo-window-header, .jqx-layout-pseudo-window-content -{ - width: 100%; - box-sizing: border-box; -} -.jqx-layout-pseudo-window-header -{ - height: 30px; -} -.jqx-layout-pseudo-window-pin-background, .jqx-layout-pseudo-window-close-background -{ - width: 16px; - height: 16px; - top: 5px; -} -.jqx-layout-pseudo-window-pin-background-ltr -{ - right: 15px; -} -.jqx-layout-pseudo-window-close-background-ltr -{ - right: 0; -} -.jqx-layout-pseudo-window-pin-background-rtl -{ - left: 15px; -} -.jqx-layout-pseudo-window-close-background-rtl -{ - left: 0; -} -.jqx-layout-pseudo-window-pin-icon, .jqx-layout-pseudo-window-pinned-icon, .jqx-layout-pseudo-window-close-icon -{ - cursor: pointer; -} -.jqx-layout-pseudo-window-title -{ - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.jqx-layout-pseudo-window-pin-icon -{ - background-image: url("images/pin.png"); -} -.jqx-layout-pseudo-window-pinned-icon -{ - background-image: url("images/pinned.png"); -} -.jqx-layout-pseudo-window-title-rtl -{ - float: right; -} -.jqx-layout-resize-feedback -{ - z-index: 9999; - top: 0; - left: 0; - border-width: 1px; - border-style: solid; - box-sizing: border-box; - opacity: 0.6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - *filter: alpha(opacity=60); - display: none; -} -.jqx-layout-resize-feedback-horizontal -{ - width: 100%; - height: 4px; - cursor: row-resize; -} -.jqx-layout-resize-feedback-vertical -{ - width: 4px; - height: 100%; - cursor: col-resize; -} -.jqx-layout-resize-feedback-warning -{ - border-color: #800000 !important; - background-color: Red !important; -} -.jqx-layout-overlay -{ - top: 0; - left: 0; - display: none; - background-color: transparent; - z-index: 8999; -} -.jqx-layout-ribbon-header-ltr -{ - padding-left: 20px; -} -.jqx-layout-ribbon-header-rtl -{ - padding-right: 20px; -} - -/* jqxDockingLayout-specific */ -.jqx-docking-layout-group-floating -{ - border-color: #FFD280 !important; -} -.jqx-docking-layout-group-floating .jqx-window-header -{ - border-color: #FFD280; - background-color: #FFD280 !important; - background: -webkit-linear-gradient(#FFE4B5, #FFD280) !important; - background: -o-linear-gradient(#FFE4B5, #FFD280) !important; - background: -moz-linear-gradient(#FFE4B5, #FFD280) !important; - background: linear-gradient(#FFE4B5, #FFD280 ) !important; -} -.jqx-docking-layout-overlay, .jqx-docking-layout-overlay-square-edge -{ - display: none; - z-index: 99999; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - *filter: alpha(opacity=90); -} -.jqx-docking-layout-overlay -{ - width: 100px; - height: 100px; - left: 100px; - top: 70px; -} -.jqx-docking-layout-overlay-section -{ - height: 33px; - width: 100px; -} -.jqx-docking-layout-overlay-square -{ - width: 26px; - height: 26px; - padding: 3px; -} -.jqx-docking-layout-overlay-square-invisible -{ - background-color: transparent !important; - background-image: none !important; -} -.jqx-docking-layout-overlay-square-top, .jqx-docking-layout-overlay-square-left, .jqx-docking-layout-overlay-square-center, .jqx-docking-layout-overlay-square-right, .jqx-docking-layout-overlay-highlight-bottom -{ - border-top-width: 1px; - border-top-style: solid; -} -.jqx-docking-layout-overlay-square-top, .jqx-docking-layout-overlay-square-left, .jqx-docking-layout-overlay-square-bottom, .jqx-docking-layout-overlay-highlight-right -{ - border-left-width: 1px; - border-left-style: solid; -} -.jqx-docking-layout-overlay-square-top, .jqx-docking-layout-overlay-square-right, .jqx-docking-layout-overlay-square-bottom, .jqx-docking-layout-overlay-highlight-left -{ - border-right-width: 1px; - border-right-style: solid; -} -.jqx-docking-layout-overlay-square-left, .jqx-docking-layout-overlay-square-center, .jqx-docking-layout-overlay-square-right, .jqx-docking-layout-overlay-square-bottom, .jqx-docking-layout-overlay-inner-square-header, .jqx-docking-layout-overlay-highlight-top -{ - border-bottom-width: 1px; - border-bottom-style: solid; -} -.jqx-docking-layout-overlay-square-center -{ - border-color: transparent !important; -} -.jqx-docking-layout-overlay-inner-square, .jqx-docking-layout-overlay-inner-square-header, .jqx-docking-layout-overlay-inner-square-content, .jqx-docking-layout-overlay-highlight-top, .jqx-docking-layout-overlay-highlight-bottom, .jqx-docking-layout-overlay-mini-window-edge-vertical -{ - width: 24px; -} -.jqx-docking-layout-overlay-inner-square -{ - border-width: 1px; - border-style: solid; - height: 24px; -} -.jqx-docking-layout-overlay-inner-square-header -{ - height: 5px; -} -.jqx-docking-layout-overlay-inner-square-content -{ - height: 18px; -} -.jqx-docking-layout-overlay-highlight -{ -} -.jqx-docking-layout-overlay-highlight-top -{ - height: 9px; - border-bottom-style: dashed; -} -.jqx-docking-layout-overlay-highlight-left, .jqx-docking-layout-overlay-highlight-right -{ - width: 12px; - height: 18px; -} -.jqx-docking-layout-overlay-highlight-left -{ - border-right-style: dashed; -} -.jqx-docking-layout-overlay-highlight-right -{ - right: 0; - border-left-style: dashed; -} -.jqx-docking-layout-overlay-highlight-bottom -{ - bottom: 0; - height: 9px; - border-top-style: dashed; -} -.jqx-docking-layout-drop-overlay -{ - display: none; - background-color: #6495ED; - opacity: 0.5; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - *filter: alpha(opacity=50); - z-index: 10000; -} -.jqx-docking-layout-square-disabled -{ - visibility: hidden; -} -.jqx-docking-layout-overlay-square-edge, .jqx-docking-layout-overlay-mini-window-edge-horizontal, .jqx-docking-layout-overlay-mini-window-edge-vertical -{ - border-style: solid; - border-width: 1px; -} -.jqx-docking-layout-overlay-inner-square-edge -{ - width: 26px; - height: 26px; -} -.jqx-docking-layout-overlay-mini-window-edge-horizontal -{ - height: 24px; -} -.jqx-docking-layout-overlay-mini-window-edge-vertical -{ - height: 13px; -} -.jqx-docking-layout-overlay-mini-window-edge-horizontal, .jqx-docking-layout-overlay-inner-square-header-horizontal, .jqx-docking-layout-overlay-inner-square-content-horizontal -{ - width: 13px; -} -.jqx-docking-layout-overlay-inner-square-content-vertical -{ - height: 7px; -} -.jqx-docking-layout-overlay-square-edge-arrow -{ - border-style: solid; - border-width: 5px; - width: 0px; - height: 0px; - display: block; - background: transparent !important; - *filter: inherit; -} -.jqx-docking-layout-overlay-square-edge-arrow-left, .jqx-docking-layout-overlay-square-edge-arrow-right, .jqx-docking-layout-overlay-square-edge-arrow-top -{ - border-top-color: transparent !important; -} -.jqx-docking-layout-overlay-square-edge-arrow-left, .jqx-docking-layout-overlay-square-edge-arrow-right, .jqx-docking-layout-overlay-square-edge-arrow-bottom -{ - border-bottom-color: transparent !important; -} -.jqx-docking-layout-overlay-square-edge-arrow-left, .jqx-docking-layout-overlay-square-edge-arrow-top, .jqx-docking-layout-overlay-square-edge-arrow-bottom -{ - border-left-color: transparent !important; -} -.jqx-docking-layout-overlay-square-edge-arrow-right, .jqx-docking-layout-overlay-square-edge-arrow-top, .jqx-docking-layout-overlay-square-edge-arrow-bottom -{ - border-right-color: transparent !important; -} -.jqx-docking-layout-overlay-square-edge-arrow-left, .jqx-docking-layout-overlay-square-edge-arrow-right -{ - margin-top: 8px; -} -.jqx-docking-layout-overlay-square-edge-arrow-top, .jqx-docking-layout-overlay-square-edge-arrow-bottom -{ - margin-left: 8px; -} - -.jqx-tag-cloud ul { - padding-left: 5px; -} - -.jqx-tag-cloud-item{ - padding: 3px; - display:inline-block; -} - -.jqx-tag-cloud-item a { - text-decoration: initial; -} - -.jqx-tag-cloud-item a:hover { - text-decoration: underline; -} -.jqx-popover { - position: absolute; - top: 0; - left: 0; - z-index: 9999; - background-color: #ffffff; - border: 1px solid #aaa; - border: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); -} -.jqx-popover-modal-background -{ - position:fixed; - left:0px; - top:0px; - width:100%; - height:100%; - z-index:999; - /* Fallback for web browsers that don't support RGBa */ - background-color: rgb(0, 0, 0); - /* RGBa with 0.6 opacity */ - background-color: rgba(0, 0, 0, 0.6); - /* For IE 5.5 - 7*/ - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - /* For IE 8*/ - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -.jqx-popover-close-button { - width:16px; - height:16px; - float:right; -} -.jqx-popover-close-button-rtl { - float:left; -} -.jqx-popover.top { - margin-top: -10px; -} - -.jqx-popover.right { - margin-left: 10px; -} - -.jqx-popover.bottom { - margin-top: 10px; -} - -.jqx-popover.left { - margin-left: -10px; -} - -.jqx-popover-title { - padding: 8px 14px; - margin: 0; - border-bottom: 1px solid inherit; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} - -.jqx-popover-title:empty { - display: none; -} - -.jqx-popover-content { - padding: 9px 14px; -} - -.jqx-popover .jqx-popover-arrow, -.jqx-popover .jqx-popover-arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.jqx-popover .jqx-popover-arrow { - border-width: 11px; -} - -.jqx-popover .jqx-popover-arrow:after { - border-width: 10px; - content: ""; -} - -.jqx-popover.top .jqx-popover-arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: inherit; - border-bottom-width: 0; -} - -.jqx-popover.top .jqx-popover-arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #ffffff; - border-bottom-width: 0; -} - -.jqx-popover.right .jqx-popover-arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: inherit; - border-left-width: 0; -} - -.jqx-popover.right .jqx-popover-arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; -} - -.jqx-popover.bottom .jqx-popover-arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color:inherit; - border-top-width: 0; -} - -.jqx-popover.bottom .jqx-popover-arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #ffffff; - border-top-width: 0; -} - -.jqx-popover.left .jqx-popover-arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; border-left-color: inherit; -} - -.jqx-popover.left .jqx-popover-arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #ffffff; - border-right-width: 0; -} - - -.jqx-kanban-full-frame { - width: 100vw; - height: 100vh; -} - -.jqx-kanban-in-frame { - width: 100%; - height: 100%; - box-sizing: border-box; -} - -.jqx-kanban-rtl { - direction: rtl; - text-align: right; -} - -.jqx-kanban-column { - box-sizing: border-box; - border-style: solid; - border-width: 1px 1px 1px 0px; - float: left; -} - -.jqx-kanban-column-collapsed { - width: 50px; -} - -.jqx-kanban-column-first { - border-width: 1px; -} - -.jqx-kanban-column:first-of-type { - border-width: 1px 1px 1px 1px; -} - -.jqx-kanban-column-selected { - /* background-color: blue;*/ -} - -.jqx-kanban-column-header-collapsed { /*vertical column invisible*/ - display: none; - box-sizing: border-box; - height: 0px; - width: 0px; - position: relative; - cursor: pointer; -} - -.jqx-kanban-column-header-collapsed-show { /*vertical column visible*/ - display: block !important; - height: 100%; - box-sizing: border-box; - width: 100%; - position: relative; - cursor: pointer; -} - -.jqx-kanban-column-vertical-container { - padding-top: 0px; - padding-left: 0px; - transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - white-space: nowrap; -} - -.jqx-kanban-column-vertical-container-inverse { - padding-top: 0px; - padding-left: 20px; - transform: rotate(90deg); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -o-transform: rotate(90deg); - white-space: nowrap; -} -.jqx-kanban-column-vertical-container .jqx-kanban-column-header-title, .jqx-kanban-column-vertical-container .jqx-kanban-column-header-status{ - position:relative; -} - -.jqx-kanban-column-hide { /*colapsed*/ - display: none !important; -} - -.jqx-kanban-column-header { - border-width: 1px; - border-style: solid; - margin: 1px; - white-space: nowrap; - padding-left: 5px; - padding-right: 5px; - cursor: pointer; - overflow:hidden; - position: relative; -} -.jqx-kanban-column-header-button { - position: absolute; - right: 0px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.jqx-kanban-column-header .jqx-window-collapse-button { - margin-top:1px !important; -} -.jqx-kanban-column-header-custom-button { - position: absolute; - right: 20px; - top: 50%; - margin-top: -8px; - width:16px; - height:16px; -} -.jqx-kanban-column-header-custom-button-rtl { - left: 20px; -} -.jqx-kanban-column-header-button-rtl { - left: 0px; -} -.jqx-kanban-column-header-collapsed .jqx-kanban-column-header-button { - top: 100%; - right: 50%; - margin-top: -21px; - left: 50%; - margin-left:-8px; -} -.jqx-kanban-column-header-collapsed .jqx-kanban-column-header-custom-button { - top: 100%; - right: 50%; - margin-top: -41px; - left: 50%; - margin-left:-8px; -} - -.jqx-kanban-column-container { - margin: 1px; - overflow-y: auto; -} - -.jqx-kanban-item-placeholder { - height: 100px; - border: gray dotted 1px; - border-radius: 3px; - margin: 5px; -} - -.jqx-kanban-column-vertical-container-inverse-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.jqx-kanban-column-vertical-container-ie8-fix { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.jqx-kanban-item { - margin: 2px; - padding-top: 5px; - padding-bottom: 5px; - border-width: 1px; - border-style: solid; - border-color: inherit; - position: relative; - box-shadow: #ddd 2px 2px 3px; - cursor: pointer; - touch-action: none; - -ms-touch-action: none; -} - -.jqx-kanban-item-selected { -} - -.jqx-kanban-item-color-status { - background-color: #6bbd49; - width: 3px; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} -.jqx-kanban-item-color-status-rtl { - right:0px; - left:100%; -} -.jqx-kanban-item-text { - padding-left:6px; - padding-right:23px; - font-size: 14px; - padding-bottom:5px; - overflow:hidden; - text-overflow: ellipsis; -} -.jqx-kanban-rtl .jqx-kanban-item-text { - padding-right:6px; - padding-left:23px; -} -.jqx-kanban-column-header-title { -} - -.jqx-kanban-column-header-status { -} - -.jqx-kanban-item-content { - -} - -.jqx-kanban-item-avatar { - width: 22px; - height: 22px; - position: absolute; - right: 3px; - top: 3px; - background: #eee; - text-align: center; - overflow: hidden; -} -.jqx-kanban-item-avatar-rtl { - left: 3px; -} -.jqx-kanban-item-avatar-image { - width: 20px; - height: 20px; -} - -.jqx-kanban-item-avatar-image:hover { -} - -.jqx-kanban-item-footer { - border-top: 1px solid transparent; - border-color: inherit; - overflow: hidden; - padding-top: 5px; - margin-top: 5px; - padding-bottom:1px; - padding-left:6px; - padding-right:6px; -} - - -.jqx-kanban-item-keyword { - float: left; - margin:2px; - overflow: hidden; - text-overflow: ellipsis; - border: 1px solid transparent; - border-color:inherit; - padding-left:2px; - padding-right: 2px; - cursor: pointer; -} - -.jqx-kanban-item-keyword-rtl { - direction: rtl; - text-align: right; - float: right; -} - -.jqx-kanban-item-keyword:hover { -} - -.jqx-kanban-item-avatar { - height: 20px; -} - -.jqx-kanban-handle { - cursor: move; -} - -.jqx-kanban-clearing { - clear: both; -} -.jqx-sortable { - touch-action: none; - -ms-touch-action: none; -} - -.jqx-bar-gauge-tooltip { - position:absolute; - left:20px; - top:20px; - display:none; - padding: 6px 12px; - border:black solid 1px; - background-color: white; - color: #333333; - font-size: 11px; - font-weight:100; - font-family: Verdana; - border:black solid 1px; - border-radius:3px; - opacity: 1; - white-space: nowrap; - z-index:5; -} - -.jqx-bar-gauge-measure-text { - position: absolute; - top: 0; - right: 0; - visibility: hidden; - z-index:-99999; - margin:0px; - padding:0px; - border-width:0px; -} -.jqx-scrollbar-mobile { - background: transparent !important; -} - .jqx-scrollbar-mobile .jqx-scrollbar-state-normal { - background: transparent !important; - border-color: transparent !important; - } -.jqx-scrollbar-mobile .jqx-scrollbar-thumb-state-normal-horizontal, .jqx-scrollbar-mobile .jqx-scrollbar-thumb-state-normal{ - background: #808080 ! important; - border-color: #808080 !important; - border-width: 1px; - z-index:99999; - border-radius: 0px !important; -} - .jqx-scrollbar-mobile .jqx-scrollbar-thumb-state-normal { - width: 4px ! important; - } - .jqx-scrollbar-mobile .jqx-scrollbar-thumb-state-normal-horizontal { - height: 4px !important; - } - - -.jqx-primary .jqx-icon-arrow-down, .jqx-warning .jqx-icon-arrow-down, .jqx-danger .jqx-icon-arrow-down, .jqx-success .jqx-icon-arrow-down, .jqx-info .jqx-icon-arrow-down { - background-image: url('images/icon-down-white.png'); -} -.jqx-primary .jqx-icon-arrow-down-selected, .jqx-warning .jqx-icon-arrow-down-selected, .jqx-danger .jqx-icon-arrow-down-selected, .jqx-success .jqx-icon-arrow-down-selected, .jqx-info .jqx-icon-arrow-down-selected { - background-image: url('images/icon-down-white.png'); -} -.jqx-primary .jqx-icon-arrow-down-hover, .jqx-warning .jqx-icon-arrow-down-hover, .jqx-danger .jqx-icon-arrow-down-hover, .jqx-success .jqx-icon-arrow-down-hover, .jqx-info .jqx-icon-arrow-down-hover { - background-image: url('images/icon-down-white.png'); -} -.jqx-primary .jqx-icon-arrow-up, .jqx-warning .jqx-icon-arrow-up, .jqx-danger .jqx-icon-arrow-up, .jqx-success .jqx-icon-arrow-up, .jqx-info .jqx-icon-arrow-up { - background-image: url('images/icon-up-white.png'); -} -.jqx-primary .jqx-icon-arrow-up-selected, .jqx-warning .jqx-icon-arrow-up-selected, .jqx-danger .jqx-icon-arrow-up-selected, .jqx-success .jqx-icon-arrow-up-selected, .jqx-info .jqx-icon-arrow-up-selected { - background-image: url('images/icon-up-white.png'); -} -.jqx-primary .jqx-icon-arrow-up-hover, .jqx-warning .jqx-icon-arrow-up-hover, .jqx-danger .jqx-icon-arrow-up-hover, .jqx-success .jqx-icon-arrow-up-hover, .jqx-info .jqx-icon-arrow-up-hover { - background-image: url('images/icon-up-white.png'); -} - -.jqx-primary .jqx-icon-arrow-right, .jqx-warning .jqx-icon-arrow-right, .jqx-danger .jqx-icon-arrow-right, .jqx-success .jqx-icon-arrow-right, .jqx-info .jqx-icon-arrow-right { - background-image: url('images/icon-right-white.png'); -} -.jqx-primary .jqx-icon-arrow-right-selected, .jqx-warning .jqx-icon-arrow-right-selected, .jqx-danger .jqx-icon-arrow-right-selected, .jqx-success .jqx-icon-arrow-right-selected, .jqx-info .jqx-icon-arrow-right-selected { - background-image: url('images/icon-right-white.png'); -} -.jqx-primary .jqx-icon-arrow-right-hover, .jqx-warning .jqx-icon-arrow-right-hover, .jqx-danger .jqx-icon-arrow-right-hover, .jqx-success .jqx-icon-arrow-right-hover, .jqx-info .jqx-icon-arrow-right-hover { - background-image: url('images/icon-right-white.png'); -} -.jqx-primary .jqx-icon-arrow-left, .jqx-warning .jqx-icon-arrow-left, .jqx-danger .jqx-icon-arrow-left, .jqx-success .jqx-icon-arrow-left, .jqx-info .jqx-icon-arrow-left { - background-image: url('images/icon-left-white.png'); -} -.jqx-primary .jqx-icon-arrow-left-selected, .jqx-warning .jqx-icon-arrow-left-selected, .jqx-danger .jqx-icon-arrow-left-selected, .jqx-success .jqx-icon-arrow-left-selected, .jqx-info .jqx-icon-arrow-left-selected { - background-image: url('images/icon-left-white.png'); -} -.jqx-primary .jqx-icon-arrow-left-hover, .jqx-warning .jqx-icon-arrow-left-hover, .jqx-danger .jqx-icon-arrow-left-hover, .jqx-success .jqx-icon-arrow-left-hover, .jqx-info .jqx-icon-arrow-left-hover { - background-image: url('images/icon-left-white.png'); -} -.jqx-primary-item .jqx-listitem-state-hover, .jqx-primary-item .jqx-menu-item-hover, .jqx-primary-item .jqx-tree-item-hover, .jqx-primary-item .jqx-calendar-cell-hover, .jqx-primary-item .jqx-grid-cell-hover, -.jqx-primary-item .jqx-menu-vertical .jqx-menu-item-top-hover, .jqx-primary-item .jqx-input-popup .jqx-fill-state-hover, -.jqx-primary-item .jqx-input-popup .jqx-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-primary-item .jqx-listitem-state-selected, .jqx-primary-item .jqx-menu-item-selected, .jqx-primary-item .jqx-tree-item-selected, .jqx-primary-item .jqx-calendar-cell-selected, .jqx-primary-item .jqx-grid-cell-selected, -.jqx-primary-item .jqx-menu-vertical .jqx-primary-item .jqx-menu-item-top-selected, .jqx-primary-item .jqx-grid-selectionarea, .jqx-primary-item .jqx-input-button-header, .jqx-primary-item .jqx-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-warning-item .jqx-listitem-state-hover, .jqx-warning-item .jqx-menu-item-hover, .jqx-warning-item .jqx-tree-item-hover, .jqx-warning-item .jqx-calendar-cell-hover, .jqx-warning-item .jqx-grid-cell-hover, -.jqx-warning-item .jqx-menu-vertical .jqx-menu-item-top-hover, .jqx-warning-item .jqx-input-popup .jqx-fill-state-hover, -.jqx-warning-item .jqx-input-popup .jqx-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-warning-item .jqx-listitem-state-selected, .jqx-warning-item .jqx-menu-item-selected, .jqx-warning-item .jqx-tree-item-selected, .jqx-warning-item .jqx-calendar-cell-selected, .jqx-warning-item .jqx-grid-cell-selected, -.jqx-warning-item .jqx-menu-vertical .jqx-warning-item .jqx-menu-item-top-selected, .jqx-warning-item .jqx-grid-selectionarea, .jqx-warning-item .jqx-input-button-header, .jqx-warning-item .jqx-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-danger-item .jqx-listitem-state-hover, .jqx-danger-item .jqx-menu-item-hover, .jqx-danger-item .jqx-tree-item-hover, .jqx-danger-item .jqx-calendar-cell-hover, .jqx-danger-item .jqx-grid-cell-hover, -.jqx-danger-item .jqx-menu-vertical .jqx-menu-item-top-hover, .jqx-danger-item .jqx-input-popup .jqx-fill-state-hover, -.jqx-danger-item .jqx-input-popup .jqx-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-danger-item .jqx-listitem-state-selected, .jqx-danger-item .jqx-menu-item-selected, .jqx-danger-item .jqx-tree-item-selected, .jqx-danger-item .jqx-calendar-cell-selected, .jqx-danger-item .jqx-grid-cell-selected, -.jqx-danger-item .jqx-menu-vertical .jqx-danger-item .jqx-menu-item-top-selected, .jqx-danger-item .jqx-grid-selectionarea, .jqx-danger-item .jqx-input-button-header, .jqx-danger-item .jqx-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-success-item .jqx-listitem-state-hover, .jqx-success-item .jqx-menu-item-hover, .jqx-success-item .jqx-tree-item-hover, .jqx-success-item .jqx-calendar-cell-hover, .jqx-success-item .jqx-grid-cell-hover, -.jqx-success-item .jqx-menu-vertical .jqx-menu-item-top-hover, .jqx-success-item .jqx-input-popup .jqx-fill-state-hover, -.jqx-success-item .jqx-input-popup .jqx-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-success-item .jqx-listitem-state-selected, .jqx-success-item .jqx-menu-item-selected, .jqx-success-item .jqx-tree-item-selected, .jqx-success-item .jqx-calendar-cell-selected, .jqx-success-item .jqx-grid-cell-selected, -.jqx-success-item .jqx-menu-vertical .jqx-success-item .jqx-menu-item-top-selected, .jqx-success-item .jqx-grid-selectionarea, .jqx-success-item .jqx-input-button-header, .jqx-success-item .jqx-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-info-item .jqx-listitem-state-hover, .jqx-info-item .jqx-menu-item-hover, .jqx-info-item .jqx-tree-item-hover, .jqx-info-item .jqx-calendar-cell-hover, .jqx-info-item .jqx-grid-cell-hover, -.jqx-info-item .jqx-menu-vertical .jqx-menu-item-top-hover, .jqx-info-item .jqx-input-popup .jqx-fill-state-hover, -.jqx-info-item .jqx-input-popup .jqx-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-info-item .jqx-listitem-state-selected, .jqx-info-item .jqx-menu-item-selected, .jqx-info-item .jqx-tree-item-selected, .jqx-info-item .jqx-calendar-cell-selected, .jqx-info-item .jqx-grid-cell-selected, -.jqx-info-item .jqx-menu-vertical .jqx-info-item .jqx-menu-item-top-selected, .jqx-info-item .jqx-grid-selectionarea, .jqx-info-item .jqx-input-button-header, .jqx-info-item .jqx-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-inverse-item .jqx-listitem-state-hover, .jqx-inverse-item .jqx-menu-item-hover, .jqx-inverse-item .jqx-tree-item-hover, .jqx-inverse-item .jqx-calendar-cell-hover, .jqx-inverse-item .jqx-grid-cell-hover, -.jqx-inverse-item .jqx-menu-vertical .jqx-menu-item-top-hover, .jqx-inverse-item .jqx-input-popup .jqx-fill-state-hover, -.jqx-inverse-item .jqx-input-popup .jqx-fill-state-pressed { - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} -.jqx-inverse-item .jqx-listitem-state-selected, .jqx-inverse-item .jqx-menu-item-selected, .jqx-inverse-item .jqx-tree-item-selected, .jqx-inverse-item .jqx-calendar-cell-selected, .jqx-inverse-item .jqx-grid-cell-selected, -.jqx-inverse-item .jqx-menu-vertical .jqx-inverse-item .jqx-menu-item-top-selected, .jqx-inverse-item .jqx-grid-selectionarea, .jqx-inverse-item .jqx-input-button-header, .jqx-inverse-item .jqx-input-button-innerHeader { - - background-color: #f5f5f5 !important; - color: #333 !important; - text-shadow: none !important; - border-color: #f5f5f5 !important; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/jqx.web.css b/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/jqx.web.css deleted file mode 100644 index e4a68d3c..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/UI/js/dialog/styles/jqx.web.css +++ /dev/null @@ -1,314 +0,0 @@ -/*Rounded Corners*/ -/*top-left rounded Corners*/ -.jqx-rc-tl-web { - -moz-border-radius-topleft: 2px; - -webkit-border-top-left-radius: 2px; - border-top-left-radius: 2px; -} -/*top-right rounded Corners*/ -.jqx-rc-tr-web { - -moz-border-radius-topright: 2px; - -webkit-border-top-right-radius: 2px; - border-top-right-radius: 2px; -} -/*bottom-left rounded Corners*/ -.jqx-rc-bl-web { - -moz-border-radius-bottomleft: 2px; - -webkit-border-bottom-left-radius: 2px; - border-bottom-left-radius: 2px; -} -/*bottom-right rounded Corners*/ -.jqx-rc-br-web { - -moz-border-radius-bottomright: 2px; - -webkit-border-bottom-right-radius: 2px; - border-bottom-right-radius: 2px; -} -/*top rounded Corners*/ -.jqx-rc-t-web { - -moz-border-radius-topleft: 2px; - -webkit-border-top-left-radius: 2px; - border-top-left-radius: 2px; - -moz-border-radius-topright: 2px; - -webkit-border-top-right-radius: 2px; - border-top-right-radius: 2px; -} -/*bottom rounded Corners*/ -.jqx-rc-b-web { - -moz-border-radius-bottomleft: 2px; - -webkit-border-bottom-left-radius: 2px; - border-bottom-left-radius: 2px; - -moz-border-radius-bottomright: 2px; - -webkit-border-bottom-right-radius: 2px; - border-bottom-right-radius: 2px; -} -/*right rounded Corners*/ -.jqx-rc-r-web { - -moz-border-radius-topright: 2px; - -webkit-border-top-right-radius: 2px; - border-top-right-radius: 2px; - -moz-border-radius-bottomright: 2px; - -webkit-border-bottom-right-radius: 2px; - border-bottom-right-radius: 2px; -} -/*left rounded Corners*/ -.jqx-rc-l-web { - -moz-border-radius-topleft: 2px; - -webkit-border-top-left-radius: 2px; - border-top-left-radius: 2px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-bottom-left-radius: 2px; - border-bottom-left-radius: 2px; -} -/*all rounded Corners*/ -.jqx-rc-all-web { - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; -} - -.jqx-widget-web, .jqx-widget-content, .jqx-widget-header, .jqx-input-web { - -webkit-transition: box-shadow linear 0.2s; - -moz-transition: box-shadow linear 0.2s; - -o-transition: box-shadow linear 0.2s; - transition: box-shadow linear 0.2s; -} -.jqx-listitem-state-normal-web, .jqx-listitem-state-hover-web,.jqx-listitem-state-selected-web, -.jqx-tabs-title-selected-top-web, .jqx-tabs-title-selected-bottom-web{ - -webkit-transition: none; - -moz-transition: none; - -o-transition: none; - transition: none; -} -.jqx-fill-state-normal-web { - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75);; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75);; - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75);; -} - -.jqx-widget-header-web, .jqx-fill-state-normal-web { - text-shadow: 0 1px 0 rgb(240, 240, 240); - border-color: #b2b2b2; - border-color: rgba(0, 0, 0, 0.25); - color: #444; - background-color: #f0f0f0; - background-image: linear-gradient(#ededed, #ededed 38%, #dedede); - background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); - background-image: -moz-linear-gradient(#ededed, #ededed 38%, #dedede); - background-image: -o-linear-gradient(#ededed, #ededed 38%, #dedede); - -webkit-transition: color 200ms; -} -.jqx-widget-content-web { - border-color: #b2b2b2; - border-color: rgba(0, 0, 0, 0.25); -} -.jqx-fill-state-hover-web { - text-shadow: 0 1px 0 rgb(240, 240, 240); - border-color: #b2b2b2; - border-color: rgba(0, 0, 0, 0.3); - color: black; - background-color: #f0f0f0; - background-image: linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -moz-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -o-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); - -webkit-transition: color 200ms; -} - -.jqx-fill-state-pressed-web { - box-shadow: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - text-shadow: none; - background-color: #f0f0f0; - background-image: linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -moz-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -o-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); - -webkit-transition: color 200ms; -} - -.jqx-grid-column-menubutton-web { - background-color: transparent; -} - -.jqx-calendar-row-header-web, .jqx-calendar-top-left-header-web { - background-color: #f0f0f0; - border: 0px solid #f2f2f2; -} - -.jqx-calendar-column-header-web { - background-color: #FFF; - border-top: 1px solid #FFF; - border-bottom: 1px solid #e9e9e9; -} - -.jqx-scrollbar-state-normal-web { - background-color: #f0f0f0; - border: 1px solid #f0f0f0; -} -.jqx-grid-cell-hover-web { - box-shadow: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; -} -.jqx-scrollbar-thumb-state-normal-web { - background-color: #f0f0f0; - background-image: linear-gradient(left, #ededed, #ededed 38%, #dedede); - background-image: -webkit-linear-gradient(left, #ededed, #ededed 38%, #dedede); - background-image: -moz-linear-gradient(left, #ededed, #ededed 38%, #dedede); - background-image: -o-linear-gradient(left, #ededed, #ededed 38%, #dedede); - background-image: -ms-linear-gradient(left, #ededed, #ededed 38%, #dedede); -} - -.jqx-scrollbar-thumb-state-hover-web { - background-color: #f0f0f0; - background-image: linear-gradient(left,#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -webkit-linear-gradient(left,#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -moz-linear-gradient(left,#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -o-linear-gradient(left,#f0f0f0, #f0f0f0 38%, #e0e0e0); - background-image: -ms-linear-gradient(left,#f0f0f0, #f0f0f0 38%, #e0e0e0); -} -.jqx-splitter-collapse-button-vertical-web, .jqx-splitter-collapse-button-horizontal-web { - background: #b2b2b2; -} -.jqx-scrollbar-thumb-state-pressed-web, .jqx-progressbar-value-vertical-web{ - background-color: #f0f0f0; - background-image: linear-gradient(left, #e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -webkit-linear-gradient(left, #e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -moz-linear-gradient(left, #e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -o-linear-gradient(left, #e7e7e7, #e7e7e7 38%, #d7d7d7); - background-image: -ms-linear-gradient(left, #e7e7e7, #e7e7e7 38%, #d7d7d7); -} - -.jqx-grid-column-sortdescbutton-web, jqx-grid-column-filterbutton-web, .jqx-grid-column-sortascbutton-web { - background-color: transparent; - border-style: solid; - border-width: 0px 0px 0px 0px; - border-color: #b2b2b2; -} -.jqx-slider-rangebar-web { - background: #C3C3C3; -} -.jqx-menu-vertical-web { - background: #f5f5f5; - filter: none; -} - -.jqx-checkbox-check-checked-web { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAcklEQVQY02NgwA/YoJgoEA/Es4DYgJBCJSBeD8SboRinBiYg7kZS2IosyQ/Eakh8LySFq4FYHFlxGRBvBOJYqMRqJMU+yApNkSRAeC0Sux3dfSCTetE0wKyXxOWhMKhTYIr9CAUXyJMzgLgBagBBgDPGAI2LGdNt0T1AAAAAAElFTkSuQmCC'); -} - -.jqx-combobox-content-web, .jqx-input-web { - border-color: #b2b2b2; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); -} -.jqx-combobox-content-web { - border-color: #b2b2b2; - border-color: rgba(0, 0, 0, 0.25); - } -.jqx-fill-state-focus-web, .jqx-combobox-content-focus-web, .jqx-numberinput-focus-web { - outline: none; - border-color: #777777; -} -.jqx-dropdownbutton-popup-web.jqx-fill-state-focus-web { - -} -.jqx-grid-bottomright-web, .jqx-panel-bottomright-web, .jqx-listbox-bottomright-web { - background-color: #efefef; -} - -.jqx-tabs-title-selected-top-web, .jqx-tabs-selection-tracker-top-web { - border-color: #b2b2b2; - border-bottom: 1px solid #fff; - text-shadow: 0 1px 0 #f2f2f2; - filter: none; - color: #222; - background: #fff; -} - -.jqx-tabs-title-selected-bottom-web, .jqx-tabs-selection-tracker-bottom-web { - border-color: #b2b2b2; - border-top: 1px solid #fff; - text-shadow: 0 1px 0 #f2f2f2; - filter: none; - color: #222; - background: #fff; -} - -.jqx-popup-web { - -webkit-box-shadow: 4px 4px 23px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 4px 4px 23px rgba(0, 0, 0, 0.15); - box-shadow: 4px 4px 23px rgba(0, 0, 0, 0.15); -} -.jqx-menu-popup-web>div:first-child{ - padding-bottom: 15px !important; - padding-right: 15px !important; -} -.jqx-menu-popup-clear-web>div:first-child{ - padding-bottom: 0px !important; -} -.jqx-window-web, .jqx-tooltip-web { - -webkit-box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0,0,0,0.15); - -moz-box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0,0,0,0.15); - box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0,0,0,0.15); -} -.jqx-docking-web .jqx-window-web { - -webkit-box-shadow: none; - -moz-box-shadow: none; -} -.jqx-docking-panel-web .jqx-window-web { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.jqx-radiobutton-web { - background-repeat: no-repeat; - background: none; -} -.jqx-radiobutton-web-web, .jqx-radiobutton-hover-web { - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; - background-repeat: no-repeat; -} -.jqx-radiobutton-check-checked-web { - filter: none; - background: #666; - background-repeat: no-repeat; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.jqx-radiobutton-check-indeterminate-web { - filter: none; - background: #999; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.jqx-radiobutton-check-indeterminate-disabled-web { - filter: none; - background: #999; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.jqx-slider-track-horizontal-web, .jqx-slider-track-vertical-web { - border-color: #b2b2b2; - background: #f0f0f0; -} -.jqx-slider-button-web -{ - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; -} -.jqx-layout-web -{ - background-color: #b2b2b2; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_bin/MagicLine4NX.pkg b/src/main/webapp/MagicLine4Web/ML4Web/install_bin/MagicLine4NX.pkg deleted file mode 100644 index f4c12161..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_bin/MagicLine4NX.pkg and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_bin/magicline4nx_setup.exe b/src/main/webapp/MagicLine4Web/ML4Web/install_bin/magicline4nx_setup.exe deleted file mode 100644 index d1e9f58c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_bin/magicline4nx_setup.exe and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_bin/pfxexport/MagicPFXExport.exe b/src/main/webapp/MagicLine4Web/ML4Web/install_bin/pfxexport/MagicPFXExport.exe deleted file mode 100644 index 77690d4b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_bin/pfxexport/MagicPFXExport.exe and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/ML4Web_Install.html b/src/main/webapp/MagicLine4Web/ML4Web/install_page/ML4Web_Install.html deleted file mode 100644 index 977631eb..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/install_page/ML4Web_Install.html +++ /dev/null @@ -1,511 +0,0 @@ - - - - - - - - - - - - -보안프로그램 설치안내 - - -
              - - -
              -
              - 로딩중 - 고객님의 컴퓨터 성능에 따라 10초~1분 정도 소요되며,
              설치가 정상적으로 완료되면 확인 버튼을 누르시기 바랍니다.
              -
              -
              -

              자동으로 설치되지 않는 경우나, 정지가 되어있는 경우, [보안 프로그램 수동 설치] 버튼을 클릭하여 수동으로 설치하시기 바랍니다.

              - 보안프로그램 수동 설치 -
              - - - - - - -
              - - -

              - - -
              -
                -
              • 확인
              • -
              -
              - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/css/install_guide.css b/src/main/webapp/MagicLine4Web/ML4Web/install_page/css/install_guide.css deleted file mode 100644 index 228c0bae..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/install_page/css/install_guide.css +++ /dev/null @@ -1,71 +0,0 @@ -/* -CSS Reset -http://meyerweb.com/eric/tools/css/reset/ -*/ - -*{margin:0; padding:0;} -html,body{width:100%;height:100%} -h1, h2, h3, h4, h5, h6, div, p, ul, ol, li, dl, dt, dd, form, table{margin:0; padding:0;} -ul, ol, li{list-style:none;} -a{text-decoration:none;} - -fieldset, img{border:none;} -legend{width:0; height:0; margin:0; padding:0; display:none;} -input, select{vertical-align:middle;} -table{border-collapse:collapse;} -caption{display:none;} -body{margin:0; padding:0; } -body,p,h1,h2,h3,h4,h5,h6,ul,ol,li,dl,dt,dd,table,th,td,form,fieldset,legend,input,textarea,button{margin:0;padding:0;-webkit-text-size-adjust:none} -body,input,textarea,select,table,button{font-size:12px;line-height:1.40em;font-family:Malgun Gothic, "돋움",Dotum,"굴림",Gulim,Verdana,Helvetica,AppleGothic,Sans-serif} -body{position:relative; color:#373737; word-wrap:break-word;word-break:break-all} -img,fieldset{border:0} -a{color:#000;text-decoration:none;cursor:pointer} -em,address{font-style:normal} - - -#wrap{width:660px; border:1px solid #d2d7db; margin:0 auto;} -#header{width:660px; height:52px;} -#content_wrap{width:580px; padding:15px 40px;} -.section1{width:361px; height:85px; padding:33px 0 0 219px; background:url(../images/setup_content_bg.png) no-repeat;} -.section2{width:580px; height:33px; padding:20px 0;} -.section2 p{width:372px; margin-right:10px; display:inline-block; zoom:1; *display:inline;} -.section3{width:580px;} - -.loadbar{width:152px; height:21px; margin-left:66px; display:block;} -.loadbar_txt{width:370px; display:block; color:#193b65; font-weight:bold;} - -.btn_install{width:191px; height:32px; display:inline-block; zoom:1; *display:inline;} - -.step1_left{width:275px; height:200px; margin-right:20px; margin-bottom:20px; display:inline-block; *float:left; } -.step1_left_575{width:275px; height:160px; margin-right:20px; margin-bottom:20px; display:inline-block; *float:left; } -.step1{width:275px; height:200px; margin-bottom:20px; display:inline-block; *float:left;} -.step_txt{width:275px; height:44px; display:block; } -.step_txt2{width:275px; height:28px; padding-top:12px; display:block; } -.step_txt_575{width:575px; height:28px; padding-top:12px; display:block; } -.step_info{width:275px; height:167px; border:1px solid #d2d7db; } -.step_info_575{width:575px; height:124px; border:1px solid #d2d7db; } - -.section_h_text{font-size:14px; font-weight:bold; color:#1f84c7; margin-bottom:15px; display:block;} -.section_h_text2{font-size:14px; font-weight:bold; color:#1f84c7; margin-bottom:20px; display:block; text-align:center;} -.txt_blue{font-weight:bold; color:#1f84c7;} - -.menu_tab2{width:100%;overflow:hidden; height:37px; margin-bottom:25px; border-bottom:1px solid #d2d7db;} -.menu_tab2 ul{padding:23px 0; } -.menu_tab2 li{list-style:none;position:relative;top:-20px;float:left;} -.menu_tab2 li a{display:block;} - -.centered_linux { display: table; margin-left: auto; margin-right: auto;} - -.button_linux { - background-color: #008CBA; - border: none; - color: white; - font-size: 12px; - padding: 12px 28px; - text-align: center; - display: inline-block; - margin: 3px 8px; - cursor: pointer; - width: 113px; - position: relative; -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_install.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_install.png deleted file mode 100644 index 6189a158..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_install.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_ok.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_ok.png deleted file mode 100644 index 54f70d4a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_ok.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_ok_ov.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_ok_ov.png deleted file mode 100644 index b176efe2..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/btn_ok_ov.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac1.png deleted file mode 100644 index 6af8fea2..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac2.png deleted file mode 100644 index 638eacb5..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac3.png deleted file mode 100644 index 4b58044d..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac4.png deleted file mode 100644 index 4cb80bef..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac5.png deleted file mode 100644 index 770f0a00..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac6.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac6.png deleted file mode 100644 index c3bc99ff..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac6.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac7.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac7.png deleted file mode 100644 index 2cd7f939..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/mac/mac7.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_content_bg.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_content_bg.png deleted file mode 100644 index cdc387c3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_content_bg.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_header.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_header.png deleted file mode 100644 index cfb7c9f1..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_header.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_loadbar.gif b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_loadbar.gif deleted file mode 100644 index ed373e89..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_loadbar.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_loadbar.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_loadbar.png deleted file mode 100644 index f30a460b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_loadbar.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab.png deleted file mode 100644 index a71631d8..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab2.png deleted file mode 100644 index 50050a1d..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab2_ov.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab2_ov.png deleted file mode 100644 index 6d76bebb..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab2_ov.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab_ov.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab_ov.png deleted file mode 100644 index b00c2fe5..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/setup_tab_ov.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome1.png deleted file mode 100644 index bcd6a953..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome2.png deleted file mode 100644 index c36ce9f6..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome3.png deleted file mode 100644 index 4c0ca105..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome4.png deleted file mode 100644 index 676f9f70..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_chrome/win7_chrome4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox1.png deleted file mode 100644 index 35ad6e30..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox2.png deleted file mode 100644 index bb003960..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox3.png deleted file mode 100644 index 9e50c464..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox4.png deleted file mode 100644 index 12c6bd3f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox5.png deleted file mode 100644 index 5e03b0c9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_fox/win7_fox5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_1.png deleted file mode 100644 index b51385b0..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_2.png deleted file mode 100644 index cccf9111..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_3.png deleted file mode 100644 index 5e03b0c9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie10/win7_ie10_3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_1.png deleted file mode 100644 index 4c79dae4..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_2.png deleted file mode 100644 index bffa43cf..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_3.png deleted file mode 100644 index cccf9111..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_4.png deleted file mode 100644 index 5e03b0c9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie8/win7_ie8_4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_1.png deleted file mode 100644 index b51385b0..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_2.png deleted file mode 100644 index cccf9111..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_3.png deleted file mode 100644 index 5e03b0c9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_ie9/win7_ie9_3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera1.png deleted file mode 100644 index d9787989..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera2.png deleted file mode 100644 index dd9805b9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera3.png deleted file mode 100644 index bd5544c3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera4.png deleted file mode 100644 index cccf9111..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera5.png deleted file mode 100644 index 5e03b0c9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/win7_opera/win7_opera5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome1.png deleted file mode 100644 index 26d3afa9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome2.png deleted file mode 100644 index c42753b1..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome3.png deleted file mode 100644 index 21ef1ffa..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome4.png deleted file mode 100644 index 7f6205fb..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome5.png deleted file mode 100644 index 99f19e4b..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome6.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome6.png deleted file mode 100644 index aae2ebd9..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_chrome/xp_chrome6.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox1.png deleted file mode 100644 index 97778085..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox2.png deleted file mode 100644 index 09ae6473..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox3.png deleted file mode 100644 index 11d14048..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox4.png deleted file mode 100644 index 4fa0754f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox5.png deleted file mode 100644 index 755345c6..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox6.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox6.png deleted file mode 100644 index 5f0e4b27..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox6.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox7.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox7.png deleted file mode 100644 index 8737f2b7..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_fox/xp_fox7.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_0.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_0.png deleted file mode 100644 index d1590546..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_0.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_1.png deleted file mode 100644 index d8ca5b23..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_2.png deleted file mode 100644 index 18ff7c01..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_3.png deleted file mode 100644 index b236a4a3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_4.png deleted file mode 100644 index 06b42a5a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_5.png deleted file mode 100644 index 3f9e59a3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie6/xp_ie6_5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_0.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_0.png deleted file mode 100644 index d1590546..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_0.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_1.png deleted file mode 100644 index 15771df1..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_2.png deleted file mode 100644 index 58215a7f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_3.png deleted file mode 100644 index 1429e9f6..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_4.png deleted file mode 100644 index 3dd772f1..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_5.png deleted file mode 100644 index b236a4a3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_6.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_6.png deleted file mode 100644 index 5f0e4b27..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_6.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_7.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_7.png deleted file mode 100644 index 3f9e59a3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_ie8/xp_ie8_7.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera1.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera1.png deleted file mode 100644 index 680bc25a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera1.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera2.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera2.png deleted file mode 100644 index 49fbd52c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera2.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera3.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera3.png deleted file mode 100644 index a9055a2f..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera3.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera4.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera4.png deleted file mode 100644 index d3956448..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera4.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera5.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera5.png deleted file mode 100644 index 755345c6..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera5.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera6.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera6.png deleted file mode 100644 index 5f0e4b27..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera6.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera7.png b/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera7.png deleted file mode 100644 index 3f9e59a3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4Web/install_page/images/xp_opera/xp_opera7.png and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_API.min.js b/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_API.min.js deleted file mode 100644 index 1e223bd7..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_API.min.js +++ /dev/null @@ -1 +0,0 @@ -var JS_Crypto_API=(function(){function B(K){ML4WebLog.log("JS_Crypto_API Init() start...");magicjs.init(ConfigObject.MAGICJS_LIC);K(0,{result:"JS_Crypto_API init success..."})}function y(K,O){ML4WebLog.log("base64encode by javascript");var L="";try{var L=magicjs.base64.encode(K);if(typeof O==="function"){O(0,{result:L})}else{return L}}catch(N){if(typeof O==="function"){O(N.code,{errCode:888,errMsg:N.message})}else{return L}}}function G(K,O){ML4WebLog.log("base64decode by javascript");var L="";try{var L=magicjs.base64.decode(K);if(typeof O==="function"){O(0,{result:L})}else{return L}}catch(N){if(typeof O==="function"){O(N.code,{errCode:888,errMsg:N.message})}else{return L}}}function t(N,R,K,S){ML4WebLog.log("genHmac by javascript");try{var L=magicjs.hmac.create(N);L.init(magicjs.base64.decode(R));L.update(K);var O=L.generate();var P=magicjs.base64.encode(O);S(0,{Base64Result:P})}catch(Q){S(ML4WebLog.getErrCode("Crypto_JS_genHmac"),{errCode:888,errMsg:Q.message})}}function v(O,R,N,P,S){ML4WebLog.log("verifyHmac by javascript");try{var L=magicjs.hmac.create(O);L.init(magicjs.base64.decode(R));L.update(N);var K=L.verify(magicjs.base64.decode(P));S(0,{result:K})}catch(Q){S(ML4WebLog.getErrCode("Crypto_JS_verifyHmac"),{errCode:888,errMsg:Q.message})}}function x(L,S,K,N,T){ML4WebLog.log("encrypt by javascript");try{var P=magicjs.cipher.create(true,L,magicjs.base64.decode(S));P.init(magicjs.base64.decode(K));P.update(N);P.finish();var R=magicjs.base64.encode(P.output);var O=magicjs.hex.encode(P.output);if(typeof(T)=="undefined"){return{errCode:0,Base64Result:R,HexResult:O}}else{T(0,{Base64Result:R,HexResult:O})}}catch(Q){if(typeof(T)=="undefined"){ML4WebLog.log("- encrypt Error = "+Q.message);return{errCode:ML4WebLog.getErrCode("Crypto_JS_encrypt"),errMsg:Q.message}}else{T(ML4WebLog.getErrCode("Crypto_JS_encrypt"),{errCode:888,errMsg:Q.message})}}}function f(O,S,L,N,R){ML4WebLog.log("decrypt by javascript");try{var K=magicjs.cipher.create(false,O,magicjs.base64.decode(S));K.init(magicjs.base64.decode(L));K.update(magicjs.base64.decode(N));K.finish();var Q=K.output.data;R(0,{stringResult:Q})}catch(P){R(ML4WebLog.getErrCode("Crypto_JS_decrypt"),{errCode:888,errMsg:P.message})}}function H(N,S,L,U,R,T){ML4WebLog.log("sign by javascript");try{var ah="";if(L!=null){L=ML4WebApi.ml4web_crypto_api.SD_api(L);ah=magicjs.pkcs5.decrypt(S,L)}else{if(typeof(S)=="string"){ah=magicjs.priKey.create(S)}else{ah=S}}var Y="";var ac={};if(typeof(N)=="string"){Y=magicjs.x509Cert.create(N)}else{Y=N}var ac={};if(R!=null||R!=undefined){var ab="OPT_NONE";var ad="OPT_USE_CONTNET_INFO";var K="OPT_NO_CONTENT";var V="OPT_SIGNKOREA_FORMAT";var W="OPT_HASHED_CONTENT";var ag="rsa15";var X="rsa20";var aj="RSASSA-PKCS1-V1_5";var af="RSA-PSS";var Q="RSA-OAEP";if(R.ds_pki_sign!=undefined){var aa=0;var ae=0;for(var Z=0;Z1){N.kmcert=magicjs.base64.encode(Q.safeContents[1].cert.toDer());N.kmpri=magicjs.base64.encode(Q.safeContents[1].priKey)}R(0,{result:N})}else{N.signcert=magicjs.base64.encode(Q.safeContents[1].cert.toDer());N.signpri=magicjs.base64.encode(Q.safeContents[1].priKey);N.kmcert=magicjs.base64.encode(Q.safeContents[0].cert.toDer());N.kmpri=magicjs.base64.encode(Q.safeContents[0].priKey);R(0,{result:N})}}else{R(ML4WebLog.getErrCode("Crypto_JS_pfxImport"),{errCode:T,errMsg:S.errMsg})}})}}catch(P){R(ML4WebLog.getErrCode("Crypto_JS_pfxImport"),{errCode:888,errMsg:P.message})}}function D(P,K,S){ML4WebLog.log("pfxExport by javascript");K=ML4WebApi.ml4web_crypto_api.SD_api(K);try{var O=magicjs.pkcs12.create();var R=magicjs.x509Cert.create(P.signcert);var U="";if(typeof(P.pkcs5decrypt)=="undefined"||P.pkcs5decrypt==true){U=magicjs.pkcs5.decrypt(P.signpri,K)}else{U=P.signpri}O.safeContents.push({cert:R,priKey:U});if(P.kmcert!=null&&P.kmcert!=undefined&&P.kmcert.length!=0){var Q=magicjs.x509Cert.create(P.kmcert);var L="";if(typeof(P.pkcs5decrypt)=="undefined"||P.pkcs5decrypt==true){L=magicjs.pkcs5.decrypt(P.kmpri,K)}else{L=P.kmpri}O.safeContents.push({cert:Q,priKey:L})}if(typeof(P.pkcs5decrypt)=="undefined"||P.pkcs5decrypt==true){O.exportPfx(K,{algorithm:"des-EDE3"})}else{O.exportPfx(K,{algorithm:"des-EDE3",format:magicjs.pkcs12.format.encPriKey})}var T=magicjs.base64.encode(O.toDer());S(0,{result:T})}catch(N){S(ML4WebLog.getErrCode("Crypto_JS_pfxExport"),{errCode:888,errMsg:N.message})}}function o(P,K,T,S){ML4WebLog.log("pfxChangePwExport by javascript");K=ML4WebApi.ml4web_crypto_api.SD_api(K);try{var O=magicjs.pkcs12.create();var R=magicjs.x509Cert.create(P.signcert);var V=magicjs.pkcs5.decrypt(P.signpri,K);O.safeContents.push({cert:R,priKey:V});if(P.kmcert!=null&&P.kmcert!=undefined&&P.kmcert.length!=0){var Q=magicjs.x509Cert.create(P.kmcert);var L=magicjs.pkcs5.decrypt(P.kmpri,K);O.safeContents.push({cert:Q,priKey:L})}O.exportPfx(T,{algorithm:"des-EDE3"});var U=magicjs.base64.encode(O.toDer());S(0,{result:U})}catch(N){S(ML4WebLog.getErrCode("Crypto_JS_pfxChangePwExport"),{errCode:888,errMsg:N.message})}}function b(V,S,al){ML4WebLog.log("getcertInfo by javascript");try{var av="version";var U="serialnum";var aA="signaturealgorithm";var W="issuername";var ac="startdate";var af="enddate";var L="startdatetime";var K="enddatetime";var ar="subjectname";var ai="pubkey";var ah="pubkeyalgorithm";var P="keyusage";var at="certpolicy";var O="policyid";var ab="policynotice";var am="subjectaltname";var ad="authkeyid";var aa="subkeyid";var Q="crldp";var ak="aia";var aj="realname";var N=magicjs.x509Cert.create(V);var X={};var ay={};var an=N.extensions.length;if(an>0){for(var ax=0;ax-1)){K=new Date(K.setTime(K-(9*60*60*1000)))}L={signingTime:K};S=T.makeTBSData(magicjs.utf8.encode(N.plainText),R,L)}else{S=magicjs.utf8.encode(N.plainText)}Q="3031300d060960864801650304020105000420"+l(S);ML4WebLog.log("digestInfo : "+Q);Q=magicjs.base64.encode(Q);ML4WebLog.log("base64 encoding digestInfo : "+Q);return Q}function l(N){var K=magicjs.md.create("sha256");K.init();var L=K.digest(N);return L.toHex()}function C(Q,S,R,O,L){var U=magicjs.x509Cert.create(Q);var X="RSASSA-PKCS1-V1_5";var T="sha256";var W=magicjs.pkcs7.signedData.create();var N=A(R);var P;if(S==="originHash"){P={signingTime:undefined}}else{P={signingTime:L}}var V=W.makeTBSData(N,T,P);var K={scheme:X,md:T,cert:U};if(S==="originHash"){K.format=magicjs.pkcs7.signedData.format.noSignedAttributes}W.compose(1,K,N,V,magicjs.base64.decode(O));return magicjs.base64.encode(W.toDer())}function A(L){tbhdata=magicjs.utf8.encode(L);var K=p(tbhdata);return String.fromCharCode.apply(null,K)}function p(R){var L,Q,K=[],O=0;for(var P=0;P>8}while(L);Q=Q.reverse();for(var N=0;N0){for(var A=0;A>2);a+=h.charAt(((g&3)<<4)|(e>>4));if(isNaN(e)){a+="=="}else{a+=h.charAt(((e&15)<<2)|(b>>6));a+=isNaN(b)?"=":h.charAt(b&63)}if(maxline&&a.length>maxline){c+=a.substr(0,maxline)+"\r\n";a=a.substr(maxline)}}c+=a;return c}var Storage_API_web={selectCertString:"",selectCertIdx:"",getML4WebCert:function(){var b={};var c="[]";var d=ML4WebApi.getCryptoApi();if(typeof(localStorage)!="undefined"){var a=localStorage.getItem("ML4WebCert");if(a!=null&&typeof(a)!="undefined"&&typeof(a)=="string"){a=d.getDecryptedCert(a);a=JSON.parse(a)}if(a!=null&&typeof(a)!="undefined"&&typeof(a)=="object"){if(typeof(a.ver)!="undefined"&&a.ver=="v1"){c=a.certBaglist}}}return c},setML4WebCert:function(c){var b={};var a=[];var d=ML4WebApi.getCryptoApi();b.ver="v1";b.time=new Date().getTime();b.certBaglist=a;if(c!=null&&typeof(c)!="undefined"&&typeof(c)=="string"){b.certBaglist=c;a=d.getEncryptedCert(JSON.stringify(b))}if(typeof(localStorage)!="undefined"){localStorage.setItem("ML4WebCert",a)}},delML4WebCert:function(){if(typeof(localStorage)!="undefined"){localStorage.removeItem("ML4WebCert")}},getSelectCert:function(f){ML4WebLog.log("Storage_API_web.getSelectCert() called...");var c={code:0,signcert:"",signpri:"",message:""};try{if(Storage_API_web.selectCertString.length!=0&&Storage_API_web.selectCertString.storageCertIdx==f.storageCertIdx){c.signcert=Storage_API_web.selectCertString.signcert;c.signpri=Storage_API_web.selectCertString.signpri}else{var a=Storage_API_web.getML4WebCert();var j=false;if(a!=null){var b=JSON.parse(a);var k={};var h=b.length;for(var d=0;d0){var k=JSON.parse(l);if(typeof(k)==null||k==null){g(ML4WebLog.getErrCode("Storage_Web_GetCertList"),{errCode:202,errMsg:$.i18n.prop("ER202")})}else{var f=ML4WebApi.getCryptoApi();var e=k.length;for(var c=0;c0){for(var d=0;d=0;c--){if(b[c].storageCertIdx==g.storageCertIdx){b.splice(c,1)}else{var k=f.length;f[k]=b[c]}}Storage_API_web.delML4WebCert();if(f.length>0){Storage_API_web.setML4WebCert(JSON.stringify(f))}else{Storage_API_web.setML4WebCert("[]")}n(0,{result:true})}catch(h){n(ML4WebLog.getErrCode("Storage_Web_DeleteCert"),{errCode:888,errMsg:h.message})}},ChangePassword:function(g,j,c,o){ML4WebLog.log("Storage_API_web.ChangePassword() called...");try{var a=Storage_API_web.getML4WebCert();var b=JSON.parse(a);var m={};var n=ML4WebApi.getCryptoApi();var f=null;var l=b.length;if(b!=null&&l>0){for(var d=0;d0){if(r.tokenOpt==null){r=l}else{for(var p=0;p0){for(var n=0;n-1){Tranx2pc(function(m,n){var e=[];var o=ML4WebApi.getCryptoApi();o.getcertInfo(m,e,function(r,q){if(r=="0"){if(ML4WebApi.getProperty("libType")==0){q.result=q}var p={storageName:"mobile",storageOpt:{}};p.storageCertIdx=q.result.subkeyid;Storage_API_web.selectCertIdx=q.result.subkeyid;Storage_API_mobile.ubiCert=m;Storage_API_mobile.ubiPri=n;q.result.storageRawCertIdx=p;c[0]=q.result;if(c.length>0){j(0,{cert_list:c})}}else{j(ML4WebLog.getErrCode("Storage_Web_GetCertList"),{errCode:r,errMsg:q})}})})}else{if(typeof(k.phoneOpt.serviceOpt.UbikeyWParam)!="undefined"){k.phoneOpt.servicename="ubikey";b={CS_UBIKEY_wParam:k.phoneOpt.serviceOpt.UbikeyWParam};f=h.makeJsonMessage("SetProperty",encodeURIComponent(JSON.stringify(b)))}else{b={CS_UBIKEY_wParam:"DREAMSECURITY|NULL"};f=h.makeJsonMessage("SetProperty",encodeURIComponent(JSON.stringify(b)))}}var l=h.makeJsonMessage("GetCertList",encodeURIComponent(JSON.stringify(k)));var a=ML4WebApi.getCsManager();try{a.callLocalServerAPI(d,f,function(m,e){a.callLocalServerAPI(d,l,function(o,q){if(o==0){var n=JSON.parse(q);if(n.ResultCode==0){var p=JSON.parse(n.ResultMessage);j(0,p);return}else{j(ML4WebLog.getErrCode("Storage_mobile_GetCertList"),{errCode:n.ResultCode,errMsg:n.ResultMessage});return}}else{j(ML4WebLog.getErrCode("Storage_mobile_GetCertList"),{errCode:201,errMsg:$.i18n.prop("ER201")})}})})}catch(g){j(ML4WebLog.getErrCode("Storage_mobile_GetCertList"),{errCode:201,errMsg:$.i18n.prop("ER201")});return}},GetCertString:function(g,j){ML4WebLog.log("Storage_API_mobile.GetCertString() called...");var h=ML4WebApi.getResourceApi();var d=ML4WebApi.getProperty("CsUrl");var c=h.makeJsonMessage("GetCertString",encodeURIComponent(JSON.stringify(g)));var b=ML4WebApi.getCsManager();if(Storage_API_mobile.ubiCert!==""&&Storage_API_mobile.ubiPri!==""){var a={signcert:Storage_API_mobile.ubiCert,signpri:Storage_API_mobile.ubiPri};j(0,{cert:a})}try{b.callLocalServerAPI(d,c,function(k,m){if(k==0){var e=JSON.parse(m);if(e.ResultCode==0){var l=JSON.parse(e.ResultMessage);j(0,{cert:l.cert_string});return}else{j(ML4WebLog.getErrCode("Storage_mobile_GetCertString"),{errCode:e.ResultCode,errMsg:e.ResultMessage});return}}else{j(ML4WebLog.getErrCode("Storage_mobile_GetCertString"),{errCode:k,errMsg:$.i18n.prop("ER201")})}})}catch(f){j(ML4WebLog.getErrCode("Storage_mobile_GetCertString"),{errCode:201,errMsg:$.i18n.prop("ER201")});return}},GetDetailCert:function(g,a,j){ML4WebLog.log("Storage_API_mobile.GetDetailCert() called...");var h=ML4WebApi.getResourceApi();var d=ML4WebApi.getProperty("CsUrl");var c=h.makeJsonMessage("GetDetailCert",encodeURIComponent(JSON.stringify(g)),encodeURIComponent(JSON.stringify(a)));var b=ML4WebApi.getCsManager();try{b.callLocalServerAPI(d,c,function(k,l){if(k==0){var e=JSON.parse(l);if(e.ResultCode==0){j(0,{result:JSON.parse(e.ResultMessage)});return}else{j(ML4WebLog.getErrCode("Storage_mobile_GetDetailCert"),{errCode:e.ResultCode,errMsg:e.ResultMessage});return}}else{j(ML4WebLog.getErrCode("Storage_mobile_GetDetailCert"),{errCode:k,errMsg:l.ResultMessage})}})}catch(f){j(ML4WebLog.getErrCode("Storage_mobile_GetDetailCert"),{errCode:201,errMsg:$.i18n.prop("ER201")});return}},SaveCert:function(d,a,g,j){ML4WebLog.log("Storage_API_mobile.SaveCert() called");var h=ML4WebApi.getResourceApi();var c=ML4WebApi.getProperty("CsUrl");var b=h.makeJsonMessage("SaveCert",encodeURIComponent(JSON.stringify(d)),a,encodeURIComponent(JSON.stringify(g)));try{h.httpRequest(c,false,b,function(k,l){if(k==0){var e=JSON.parse(l);if(e.ResultCode==0){j(0,e.ResultMessage);return}else{j(ML4WebLog.getErrCode("Storage_mobile_SaveCert"),{errCode:e.ResultCode,errMsg:e.ResultMessage});return}}})}catch(f){j(ML4WebLog.getErrCode("Storage_mobile_SaveCert"),{errCode:201,errMsg:$.i18n.prop("ER201")});return}},DeleteCert:function(a,b){ML4WebLog.log("Storage_API_mobile.DeleteCert() called");b(ML4WebLog.getErrCode("Storage_mobile_DeleteCert"),{errCode:101,errMsg:$.i18n.prop("ER101")})},ChangePassword:function(c,b,a,d){ML4WebLog.log("Storage_API_mobile.ChangePassword() called...");if(true){d(0,{result:true})}else{d(ML4WebLog.getErrCode("Storage_mobile_ChangePassword"),{errCode:201,errMsg:$.i18n.prop("ER201")})}},verifyVID:function(f,a,c,j){ML4WebLog.log("Storage_API_mobile.verifyVID() called...");var h=ML4WebApi.getResourceApi();var d=ML4WebApi.getProperty("CsUrl");var k=h.makeJsonMessage("VerifyVID",encodeURIComponent(JSON.stringify(f)),a,c);var b=ML4WebApi.getCsManager();try{b.callLocalServerAPI(d,k,function(l,m){if(l==0){var e=JSON.parse(m);if(e.ResultCode==0){j(0,{result:true});return}else{j(ML4WebLog.getErrCode("Storage_mobile_verifyVID"),{errCode:e.ResultCode,errMsg:e.ResultMessage});return}}else{j(ML4WebLog.getErrCode("Storage_mobile_verifyVID"),{errCode:l,errMsg:$.i18n.prop("ER201")})}})}catch(g){j(ML4WebLog.getErrCode("Storage_mobile_verifyVID"),{errCode:201,errMsg:$.i18n.prop("ER201")});return}},getVIDRandom:function(g,b,j){ML4WebLog.log("Storage_API_mobile.getVIDRandom() called...");var h=ML4WebApi.getResourceApi();var d=ML4WebApi.getProperty("CsUrl");if(b=="mobisign"){var c=h.makeJsonMessage("GetVIDRandom",encodeURIComponent(JSON.stringify(g)),b,"","")}else{var c=h.makeJsonMessage("GetVIDRandom",encodeURIComponent(JSON.stringify(g)),b,ML4WebApi.HDSDOption.kOption,"")}var a=ML4WebApi.getCsManager();try{a.callLocalServerAPI(d,c,function(k,l){if(k==0){var e=JSON.parse(l);if(e.ResultCode==0){j(0,{VIDRandom:e.ResultMessage});return}else{j(ML4WebLog.getErrCode("Storage_API_mobile_getVIDRandom"),{errCode:e.ResultCode,errMsg:e.ResultMessage});return}}else{j(ML4WebLog.getErrCode("Storage_API_mobile_getVIDRandom"),{errCode:k,errMsg:$.i18n.prop("ER201")})}})}catch(f){j(ML4WebLog.getErrCode("Storage_mobile_getVIDRandom"),{errCode:201,errMsg:$.i18n.prop("ER201")});return}},getVIDRandomHash:function(c,a,b,d){ML4WebLog.log("Storage_API_mobile.getVIDRandomHash() called...");if(true){d(0,{VIDRandom:"[some value...]"})}else{d(ML4WebLog.getErrCode("Storage_mobile_getVIDRandomHash"),{errCode:201,errMsg:$.i18n.prop("ER201")})}},Sign:function(l,h,b,d,p){ML4WebLog.log("Storage_API_mobile.Sign() called...");var o=ML4WebApi.getResourceApi();var j=ML4WebApi.getProperty("CsUrl");var a="";if(typeof(d)=="object"&&typeof(d.length)!="undefined"){var g=new Array();for(var f=0;f>(-2*g&6)):0){d=j.indexOf(d)}var b=new Array(c.length);for(var e=0,a=c.length;e code : "+q.errCode+" message : "+q.errMsg);n(q.errCode,q.errMsg)}})}else{ML4WebLog.log("getEncryptedPKCS12 error =====> code : "+o.errCode+" message : "+o.errMsg);n(o.errCode,o.errMsg)}})}catch(g){n(g.code,g.message)}},getCertInfo:function(b,h){ML4WebLog.log("Storage_API_kftc.getCertInfo() called...");var a={};var e=["startdatetime","enddatetime","issuername","subjectname","policyid"];var d="";var c="";var f=ML4WebApi.getCryptoApi();var g="";if(typeof(b.accesstime)!="undefined"){g=b.accesstime}else{g=new Date().getTime()}if(b==null||$.isEmptyObject(b)){ML4WebLog.log("invalid param : certBag");h(100,{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof h!="function"||h==null||h==""){ML4WebLog.log("invalid param : callback");h(103,{errCode:103,errMsg:$.i18n.prop("ER103")});return}}d=magicjs.base64.decode(b.signcert);f.genHash("sha1",d,function(j,k){if(j==0){c=k.resulthex;f.getcertInfo(b.signcert,e,function(l,m){if(l==0){a.fingerprint=c;a.timestamp=g;a.status="SAVE";a.subject=m.result.subjectname;a.notAfter=m.result.enddatetime;a.notBefore=m.result.startdatetime;a.issuer=m.result.issuername;a.policyOID=m.result.policyid;a.source="LOCAL";h(0,a)}else{ML4WebLog.log("Storage_API_kftc_getCertInfo()",{errCode:m.errCode,errMsg:m.message});h(m.errCode,{errCode:m.errCode,errMsg:m.message})}})}else{ML4WebLog.log("Storage_API_kftc_getCertInfo()",{errCode:k.errCode,errMsg:k.message});h(k.errCode,{errCode:k.errCode,errMsg:k.message})}})},SelectStorageInfo:function(b,c){ML4WebLog.log("Storage_API_kftc.SelectStorageInfo() called...");if(b==null||$.isEmptyObject(b)){ML4WebLog.log("invalid param : storageName");c(100,$.i18n.prop("ER100")+"[storageName]");return}else{if(typeof c!="function"||c==null||c==""){ML4WebLog.log("invalid param : callback");c(103,$.i18n.prop("ER103"));return}}ML4WebLog.log("opencert.init :: flag = "+Storage_API_kftc.initflag);if(Storage_API_kftc.initflag==0){var a=ML4WebApi.getProperty("kftc_apikey");if(a==null||a==""){ML4WebLog.log("kftcApikey is null !!");c(100,$.i18n.prop("ER100")+"[kftcApikey]");return}window.OpenCertApiKey=ML4WebApi.ml4web_crypto_api.getDecryptedCert(a);Storage_API_kftc.opencert=OpenCert.getInstance();Storage_API_kftc.initflag=1;Storage_API_kftc.opencert.init(window.OpenCertApiKey,function(d){if(d.error){ML4WebLog.log("opencert.init() error =====> code : "+d.error.code+" message : "+d.error.message);c(0,{})}else{Storage_API_kftc.serverNonce=d.serverNonce;ML4WebLog.log("serverNonce : ["+Storage_API_kftc.serverNonce+"]");c(0,{})}});Storage_API_kftc.opencert.setEventListener("changeCertInfos",function(d){if(d=="connect"||d=="disconnect"||d=="removeCertFromTray"){$("#stg_web_kftc").trigger("click")}})}else{c(0,{})}},SaveCert:function(c,b,g,h){ML4WebLog.log("Storage_API_kftc.SaveCert() called...");var a={};var f="";var d="";var e=ML4WebApi.getCryptoApi();if(c==null||$.isEmptyObject(c)){ML4WebLog.log("invalid param : certBag");h(100,$.i18n.prop("ER100")+"[certBag]");return}else{if(b==null||b==""){ML4WebLog.log("invalid param : passwd");h(100,$.i18n.prop("ER100")+"[passwd]");return}else{if(g==null||$.isEmptyObject(g)){ML4WebLog.log("invalid param : storageRawCertIdx");h(100,$.i18n.prop("ER100")+"[storageRawCertIdx]");return}else{if(Storage_API_kftc.opencert==null){ML4WebLog.log("invalid param : opencert");h(100,$.i18n.prop("ER100")+"[opencert] => "+$.i18n.prop("ES080"));return}else{if(typeof h!="function"||h==null||h==""){ML4WebLog.log("invalid param : callback");h(100,$.i18n.prop("ER103"));return}}}}}e.prikeyDecrypt(c.signpri,b,function(j,k){if(j==0){ML4WebLog.log("step 1. Storage_API_kftc.getCertInfo");Storage_API_kftc.getCertInfo(c,function(l,m){if(l==0){a=m;ML4WebLog.log("step 2. crypto_api.pfxExport");e.pfxExport(c,b,function(n,o){if(n==0){f=o.result;ML4WebLog.log("step 3. Storage_API_kftc.createOpencertPassword");Storage_API_kftc.createOpencertPassword(a.fingerprint,b,function(p,q){if(p==0){d=q.resulthex;ML4WebLog.log("step 4. Storage_API_kftc.opencert.setPKCS12");Storage_API_kftc.opencert.setPKCS12(f,a,d,function(r){if(r.error){ML4WebLog.log("opencert.setPKCS12 error =====> code : "+r.error.code+" message : "+r.error.message);h(r.error.code,r.error.message)}else{h(0,"opencert.setPKCS12 success...")}},{mode:"window"})}else{ML4WebLog.log("pfxExport error =====> code : "+q.errCode+" message : "+q.errMsg);h(q.errCode,q.errMsg)}})}else{ML4WebLog.log("pfxExport error =====> code : "+o.errCode+" message : "+o.errMsg);h(o.errCode,o.errMsg)}})}else{ML4WebLog.log("getCertInfo error =====> code : "+m.errCode+" message : "+m.errMsg);h(m.errCode,m.errMsg)}})}else{h(ML4WebLog.getErrCode("Storage_kftc_SaveCert"),{errCode:j,errMsg:k.errMsg})}})},GetCertList:function(e,g){ML4WebLog.log("Storage_API_kftc.GetCertList() called...");var d=[];var f=new Array();if(e==null||$.isEmptyObject(e)){ML4WebLog.log("invalid param : storageOpt");g(100,$.i18n.prop("ER100")+"[storageOpt]");return}else{if(Storage_API_kftc.opencert==null){ML4WebLog.log("invalid param : opencert");g(100,$.i18n.prop("ER100")+"[opencert] => "+$.i18n.prop("ES080"));return}else{if(typeof g!="function"||g==null||g==""){ML4WebLog.log("invalid param : callback");g(100,$.i18n.prop("ER103"));return}}}Storage_API_kftc.localCertInfos=[];var b=Storage_API_web.getML4WebCert();var c=null;if(b!=null){c=JSON.parse(decodeURIComponent(b))}else{c=[]}for(var a=0;a code : "+p.error.code+" message : "+$.i18n.prop("ES081"));g(p.error.code,$.i18n.prop("ES081"))}else{ML4WebLog.log("opencert.mergeCertInfos error =====> code : "+p.error.code+" message : "+p.error.message);g(p.error.code,p.error.message)}return}var n=p.certInfos;var m=0;if(Storage_API_kftc.localCertInfos.length>0){var h=Storage_API_kftc.localCertInfos.length;for(m=0;m0){var h=Storage_API_kftc.newCertInfos.length;for(k=0;k code : "+resultObj.errCode+" message : "+resultObj.errMsg);e(resultObj.errCode,resultObj.errMsg)}})}else{ML4WebLog.log("pfxImport error =====> code : "+o+" message : "+p);e(ML4WebLog.getErrCode("Storage_kftc"),p)}})})}else{ML4WebLog.log("createOpencertPassword error =====> code : "+resultObj.errCode+" message : "+resultObj.errMsg);e(resultObj.errCode,resultObj.errMsg)}})}else{ML4WebLog.log("generateRandom error =====> code : "+resultObj.errCode+" message : "+resultObj.errMsg);e(resultObj.errCode,resultObj.errMsg)}})},DeleteCert:function(a,b){ML4WebLog.log("Storage_API_kftc.DeleteCert() called...");if(a==null||$.isEmptyObject(a)){ML4WebLog.log("invalid param : storageRawCertIdx");b(100,$.i18n.prop("ER100")+"[storageRawCertIdx]");return}else{if(Storage_API_kftc.opencert==null){ML4WebLog.log("invalid param : opencert");b(100,$.i18n.prop("ER100")+"[opencert] => "+$.i18n.prop("ES080"));return}else{if(typeof b!="function"||b==null||b==""){ML4WebLog.log("invalid param : callback");b(100,$.i18n.prop("ER103"));return}}}ML4WebLog.log("fingerprint : ["+a.storageOpt.fingerprint+"]");Storage_API_kftc.opencert.removePKCS12(a.storageOpt.fingerprint,function(c){if(c.error){if(c.error.code==5000){ML4WebLog.log("opencert.removePKCS12 error =====> code : "+c.error.code+" message : "+$.i18n.prop("ES081"));b(c.error.code,$.i18n.prop("ES081"))}else{ML4WebLog.log("opencert.removePKCS12 error =====> code : "+c.error.code+" message : "+c.error.message);b(c.error.code,$.i18n.prop("ES081"))}return}else{b(0,$.i18n.prop("ES009")+" ("+a.storageOpt.fingerprint+")")}})},ChangePassword:function(f,b,a,g){ML4WebLog.log("Storage_API_kftc.ChangePassword() called...");var e,c;var d=ML4WebApi.getCryptoApi();if(f==null||$.isEmptyObject(f)){ML4WebLog.log("invalid param : storageRawCertIdx");g(100,$.i18n.prop("ER100")+"[storageRawCertIdx]");return}else{if(Storage_API_kftc.opencert==null){ML4WebLog.log("invalid param : opencert");g(100,$.i18n.prop("ER100")+"[opencert] => "+$.i18n.prop("ES080"));return}else{if(b==null||b==""){ML4WebLog.log("invalid param : passwdPre");g(100,$.i18n.prop("ER100")+"[passwdPre]");return}else{if(a==null||a==""){ML4WebLog.log("invalid param : passwdNext");g(100,$.i18n.prop("ER100")+"[passwdNext]");return}else{if(typeof g!="function"||g==null||g==""){ML4WebLog.log("invalid param : callback");g(100,$.i18n.prop("ER103"));return}}}}}f.storageOpt.password=b;Storage_API_kftc.GetCertString(f,function(h,j){if(h==0){e=j.cert;d.certChangePassword(e,b,a,"",function(k,l){if(k==0){c=l.result;Storage_API_kftc.SaveCert(c,a,f,function(m,n){if(m==0){g(0,"ChangePassword success...")}else{ML4WebLog.log("Storage_API_kftc.SaveCert error =====> code : "+m+" message : "+n);g(m,n)}})}else{ML4WebLog.log("crypto_api.certChangePassword error =====> code : "+l.errCode+" message : "+l.errMsg);g(l.errCode,l.errMsg)}})}else{ML4WebLog.log("Storage_API_kftc.GetCertString error =====> code : "+h+" message : "+j);g(h,j)}})}};var Storage_API_web_kftc={SelectStorageInfo:function(a,b){ML4WebLog.log("Storage_API_web_kftc.SelectStorageInfo() called...");Storage_API_web.SelectStorageInfo(a,function(c,d){Storage_API_kftc.SelectStorageInfo(a,b)})},SaveCert:function(b,a,c,d){ML4WebLog.log("Storage_API_web_kftc.SaveCert() called...");b.accesstime=new Date().getTime();Storage_API_web.SaveCert(b,a,c,function(e,f){Storage_API_kftc.SaveCert(b,a,c,d)})},GetCertList:function(a,c){ML4WebLog.log("Storage_API_web_kftc.GetCertList() called...");var b=new Array();Storage_API_web.GetCertList(a,function(d,f){if(d==0){for(var e=0;e-1){if(a[3]=="0"){m=true}else{m=false}}else{if(a[0]=="0"){m=true}else{m=false}}}}}})}if(!m&&filter_use_type!=null&&filter_use_type!=""){var e=u[t].keyusage.split(",");var o="";if(e.length==2){o="1"}else{if(e.length>2){o="2"}}if(!m&&filter_use_type==o){m=false}else{m=true}}if(!m&&filter_expire){var g=ML4WebUtil.isDateExpired(u[t].enddatetime);if(g){m=true}else{m=false}}if(!m&&filter_oid!=null&&filter_oid!=""){var d=u[t].policyid;var a=filter_oid.split(",");var v=a.length;for(var s=0;s=0;p--){if(typeof(n[p].serialnum)!="undefined"){if(n[p].serialnum.indexOf(u[t].serialnum)>-1){var c=n[p].certpath;c=c.toUpperCase();for(var s=0;s-1){q=p;n.splice(q,1);break}}}}if(q>-1){break}}var b=0;for(p=n.length-1;p>=0;p--){if(n[p].serialnum.indexOf(u[t].serialnum)>-1){b++}}if(b>=2){n.splice(p,1)}}else{var p=0;var q=-1;for(p=n.length-1;p>=0;p--){if(typeof(n[p].serialnum)!="undefined"){if(n[p].serialnum.indexOf(u[t].serialnum)>-1){q=p;break}}if(q>-1){break}}var b=0;for(p=n.length-1;p>=0;p--){if(n[p].serialnum.indexOf(u[t].serialnum)>-1){b++}}if(b>=2&&q>-1){n.splice(q,1)}}}f(0,{filtered_list:n})}};var CS_Manager_API=(function(p,m){var w;var f;var b;var n;var p=p;var m=m;function s(x){ML4WebLog.log("CS_Manager.Init()...");if(p==null){p=ML4WebApi.getResourceApi()}g(x)}function j(y){ML4WebLog.log("CS_Manager.checkinstall() called...");var x=ML4WebApi.getProperty("os");ML4WebApi.setProperty("is_cs_install",false);if(x=="Android"||x=="IPHONE"||x=="IPAD"||x=="BlackBerry"){y(ML4WebLog.getErrCode("CS_Manager_API_checkInstall"),{errCode:1,errMsg:"Mobile Access"})}else{a(y)}}function a(z){var x=ML4WebApi.getProperty("browser");var y=p.makeJsonMessage("InstallCheck",m.SessionID,x,m.CsSessionTimeout);e(m.CS_UR+m.CS_PORT+"/",y,function(A,B){if(A==0){if(B!=null&&B!=""){var C=JSON.parse(B);if(C.ResultCode===0&&m.SessionID!=null&&m.SessionID!=""){ML4WebApi.setProperty("is_cs_install",true);z(0,{result:"install success"})}else{z(ML4WebLog.getErrCode("CS_Manager_API_checkInstall"),{errCode:1,errMsg:"not installed"})}}else{z(ML4WebLog.getErrCode("CS_Manager_API_checkInstall"),{errCode:1,errMsg:"not installed"})}}else{z(ML4WebLog.getErrCode("CS_Manager_API_checkInstall"),{errCode:1,errMsg:"not installed"})}})}function c(A){ML4WebLog.log("CS_Manager.checkupdate() called...");var x=ML4WebApi.getProperty("browser");var y=p.makeJsonMessage("InstallCheck",m.SessionID,x,m.CsSessionTimeout);var z=ML4WebApi.getProperty("os");ML4WebApi.setProperty("is_cs_update",true);if(z=="Android"||z=="IPHONE"||z=="IPAD"||z=="BlackBerry"){A(ML4WebLog.getErrCode("CS_Manager_API_checkUpdate"),{errCode:1,errMsg:"Mobile Access"})}else{e(m.CS_UR+m.CS_PORT+"/",y,function(B,C){if(B==0){if(C!=null&&C!=""){var D=JSON.parse(C);var E=h(D.ResultMessage);if(E===true){ML4WebApi.setProperty("is_cs_update",false);A("0",{msg:"ok"})}else{A(B,{msg:"upgrade"})}}else{A(ML4WebLog.getErrCode("CS_Manager_API_checkUpdate"),{errCode:1,errMsg:"InstallCheck Failed"})}}else{A(ML4WebLog.getErrCode("CS_Manager_API_checkUpdate"),{errCode:2,errMsg:C})}})}}function r(){var A="";try{var x="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(var y=0;y<20;y++){A+=x.charAt(Math.floor(Math.random()*x.length))}return{code:0,data:A}}catch(z){return{code:111,data:"makeSessionStringfailed"}}}function g(y){if(m.SessionID==null||m.SessionID==""){var x=r();if(x.code==0){ML4WebApi.setProperty("SessionID",$.trim(x.data));m.SessionID=$.trim(x.data);y(x.code,{sid:m.SessionID})}else{y(ML4WebLog.getErrCode("CS_Manager_API_createSessionID"),{errCode:111,errMsg:"error"})}}else{y(0,{sid:m.SessionID})}}function k(y){var x=p.makeJsonMessage("SetProperty",encodeURIComponent(JSON.stringify(m)));e(m.CS_UR+m.CS_PORT+"/",x,function(z,A){if(A!=null&&A!=""){var B=JSON.parse(A);if(B.ResultCode===0&&m.SessionID!=null&&m.SessionID!=""){y(0,{msg:"setProperty success"})}else{y(1,{msg:"setProperty failed"})}}else{y(2,{msg:"setProperty failed"})}})}function d(){var B="";try{var A=navigator.userAgent,x;var z=A.toLowerCase();if(z.indexOf("edge")>-1){B="Edge"+z.substr(z.indexOf("edge")+4,3);B=B.replace("/"," ");return B}else{M=A.match(/(OPR|edge|opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];if(/trident/i.test(M[1])){x=/\brv[ :]+(\d+)/g.exec(A)||[];B="IE "+(x[1]||"")}if(M[1]==="Chrome"){x=A.match(/\bOPR\/(\d+)/);if(x!==null){B="Opera "+x[1];return B}}M=M[2]?[M[1],M[2]]:[navigator.appName,navigator.appVersion,"-?"];if((x=A.match(/version\/(\d+)/i))!==null){M.splice(1,1,x[1])}B=M.join(" ");return B}}catch(y){ML4WebLog.log("[ getBrowser ][ error ][ "+y.message+" ]");return""}}function l(y){var x=false;navigator.msLaunchUri(y,function(){x=true},function(){x=false})}function q(D){try{var A=ML4WebApi.detectOs();var C=ML4WebApi.detectBrower();var z=ML4WebApi.getProperty("cs_url_scheme");var B=false;var x=location.protocol+"//"+location.host+ML4WebApi.getProperty("dirpath")+"UI/call.html";if(C.name.indexOf("Firefox")>-1||C.name.indexOf("Chrome")>-1||C.name.indexOf("Opera")>-1||C.name.indexOf("Safari")>-1){window.document.getElementById("startCs").src=z}else{if(!B){pop=window.open(x,"_blank","width=315,height=115,left=5000,top=5000,resizable=no,toolbar=no,location=no,status=no");pop.focus();B=true}else{if(!pop.closed&&pop){}else{pop=window.open(x,"_blank","width=315,height=115,left=5000,top=5000,resizable=no,toolbar=no,location=no,status=no");B=true}}setTimeout(function(){pop.close()},3000)}}catch(y){ML4WebLog.log("[ sendURLScheme ][ error ][ "+y.message+" ]");return""}}function u(A,z,y,C){var B=window.open(A,z,y);var x=window.setInterval(function(){try{if(B==null||B.closed){window.clearInterval(x);C(B)}}catch(D){}},1000);return B}function o(){}function v(){}function e(x,y,z){p.callLocalServerAPI(x,y,z)}function t(){var z=ML4WebApi.getProperty("os");z=z.toUpperCase();var x=false;var y="32";if(z.indexOf("UBUNTU64")>-1){x=true;y="64"}else{if(z.indexOf("UBUNTU32")>-1){x=true}else{if(z.indexOf("FEDORA64")>-1){x=true;y="64"}else{if(z.indexOf("FEDORA32")>-1){x=true}else{if(z.indexOf("LINUX64")>-1){x=true;y="64"}else{if(z.indexOf("LINUX32")>-1){x=true}}}}}}return{isLin:x,bit:y}}function h(x,z){var A=x.split(".");var B="";var C=ML4WebApi.getProperty("os");var y=t();if(C.indexOf("win")>-1){B=ML4WebApi.ClientVersion.Win.split(".")}else{if(C.indexOf("MAC")>-1){B=ML4WebApi.ClientVersion.Mac.split(".")}}if(y.isLin){if(y.bit==="32"){B=ML4WebApi.ClientVersion.Lin32.split(".")}else{if(y.bit==="64"){B=ML4WebApi.ClientVersion.Lin64.split(".")}}}if(Number(A[2])=1){for(k=0;k-1){try{var j=ML4WebApi.ml4web_resource_api.getSignedDataAndPdf(l[m]);f.ds_pki_signdata=j.signedData;n=ML4WebApi.ml4web_storage_api.IrosMultiAddSign(g,f,a,j.pdf);if(n.code!=0){return{code:n.code,data:n.data};break}else{c[k]=m+"&&"+n.data}}catch(h){return{code:ML4WebLog.getErrCode("ML4Web_API_MakeIrosMultiData"),data:{errCode:888,errMsg:h.message}};break}}else{if(m.substring(m.length-4).indexOf("pdf")>-1){try{f.ds_pki_signdata="";n=ML4WebApi.ml4web_storage_api.IrosMultiSign(g,f,a,magicjs.base64.decode(l[m]));if(n.code!=0){return{code:n.code,data:n.data};break}else{c[k]=m+"&&"+n.data}}catch(h){return{code:ML4WebLog.getErrCode("ML4Web_API_MakeIrosMultiData"),data:{errCode:888,errMsg:h.message}};break}}else{return{code:ML4WebLog.getErrCode("ML4Web_API_MakeIrosMultiData"),data:{errCode:888,errMsg:"not support data"}}}}}return{code:0,data:ML4WebApi.ml4web_resource_api.makeIrosJson(c)}}}catch(h){return{code:ML4WebLog.getErrCode("ML4Web_API_MakeIrosMultiData"),data:{errCode:888,errMsg:h.message}}}},getCertInfo:function(a,c,f){ML4WebLog.log("ML4WebApi.getCertInfo() called... ");if(a==null||a==""){f(ML4WebLog.getErrCode("ML4Web_API_getCertInfo"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("ML4Web_API_getCertInfo"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}var d="";if(ML4WebApi.webConfig.libType==0||ML4WebApi.getProperty("selectedStorage").key=="smartcert"){d=JSON.parse(a)}else{if(ML4WebApi.webConfig.selectedStorage.current_option.storageName=="web"||ML4WebApi.webConfig.selectedStorage.current_option.storageName=="pfx"){d=JSON.parse(ML4WebApi.dsDecrypt(a))}else{d=JSON.parse(a)}}if(typeof(ML4WebApi.webConfig.selectedStorage.key)=="undefined"){HandleApi.selectStorageInfo(d.storageName,function(){})}try{ML4WebApi.ml4web_storage_api.GetDetailCert(d,null,f)}catch(b){f(ML4WebLog.getErrCode("ML4Web_API_getCertInfo"),{errCode:888,errMsg:b.message})}},verifyVID:function(a,b,c,e){var d=JSON.parse(ML4WebApi.dsDecrypt(a));ML4WebApi.ml4web_storage_api.verifyVID(d,b,c,e)},getVIDRandom:function(a,b,d){var c="";if(ML4WebApi.webConfig.libType==0||ML4WebApi.getProperty("selectedStorage").key=="smartcert"||ML4WebApi.getProperty("selectedStorage").key=="mobile"){c=JSON.parse(a)}else{if(ML4WebApi.webConfig.selectedStorage.current_option.storageName=="web"||ML4WebApi.webConfig.selectedStorage.current_option.storageName=="pfx"){c=JSON.parse(ML4WebApi.dsDecrypt(a))}else{c=JSON.parse(a)}}ML4WebApi.ml4web_storage_api.getVIDRandom(c,b,function(e,f){ML4WebApi.webConfig.getRandomfromPrivateKey=f.VIDRandom;d(e,f);return})},getVIDRandomHash:function(a,b,c,e){var d="";if(ML4WebApi.webConfig.libType==0||ML4WebApi.getProperty("selectedStorage").key=="smartcert"){d=JSON.parse(a)}else{if(ML4WebApi.webConfig.selectedStorage.current_option.storageName=="web"||ML4WebApi.webConfig.selectedStorage.current_option.storageName=="pfx"){d=JSON.parse(ML4WebApi.dsDecrypt(a))}else{d=JSON.parse(a)}}ML4WebApi.ml4web_storage_api.getVIDRandomHash(d,b,c,e);return},createCryptoMsg:function(a,c,b,d){ML4WebLog.log("ML4WebApi.createCryptoMsg() called...");if(ML4WebApi.webConfig.libType==null){d(ML4WebLog.getErrCode("ML4Web_API_createCryptoMsg"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(c==null||c==""){d(ML4WebLog.getErrCode("ML4Web_API_createCryptoMsg"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||$.isEmptyObject(b)){d(ML4WebLog.getErrCode("ML4Web_API_createCryptoMsg"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("ML4Web_API_createCryptoMsg"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}switch(c){case"genHmac":ML4WebApi.ml4web_crypto_api.genHmac(b.sAlg,b.sBase64Password,b.sMsg,d);break;case"verifyHmac":ML4WebApi.ml4web_crypto_api.verifyHmac(b.sAlg,b.sBase64Password,b.sMsg,b.hamcValue,d);break;case"encrypt":ML4WebApi.ml4web_crypto_api.encrypt(b.sAlg,b.b64key,b.b64iv,b.sMsg,d);break;case"decrypt":ML4WebApi.ml4web_crypto_api.decrypt(b.sAlg,b.b64key,b.b64iv,b.b64EncryptMsg,d);break;case"getcertInfo":ML4WebApi.ml4web_crypto_api.getcertInfo(b.b64Cert,b.jsonOption,d);break;case"sign":ML4WebApi.ml4web_crypto_api.sign(b.b64cert,b.b64priKey,b.sCertPassword,b.signData,b.signOpt,d);break;case"envelopedData":ML4WebApi.ml4web_crypto_api.envelopedData(b.b64KMCert,b.sPlainText,b.sAlgo,b.envelopOption,d);break;case"signedEnvelopedData":ML4WebApi.ml4web_crypto_api.signedEnvelopedData(b.b64KMCert,b.b64SignCert,b.b64SignPri,b.sSignCertPassword,b.sPlainText,b.sAlgo,b.sSignOption,d);break;case"verifyVID":ML4WebApi.ml4web_crypto_api.verifyVID(b.b64SignCert,b.b64SignPri,b.sCertPassword,b.idn,d);break;case"getVIDRandomHash":ML4WebApi.ml4web_crypto_api.getVIDRandomHash(b.b64SignCert,b.b64SignPri,b.sCertPassword,b.idn,d);break;case"generateRandom":ML4WebApi.ml4web_crypto_api.generateRandom(b.size,d);break;case"genKeypair":ML4WebApi.ml4web_crypto_api.genKeypair(b.sAlgo,b.iKeyLenth,d);break;case"genHash":ML4WebApi.ml4web_crypto_api.genHash(b.sAlg,b.oMsg,d);break;case"prikeyDecrypt":ML4WebApi.ml4web_crypto_api.prikeyDecrypt(b.b64CertPri,b.sCertPassword,d);break;case"prikeyEncrypt":ML4WebApi.ml4web_crypto_api.prikeyEncrypt(b.b64certPriDec,b.sCertPassword,b.oOption,d);break;case"prikeyChangePassword":ML4WebApi.ml4web_crypto_api.prikeyChangePassword(b.b64certPriDec,b.sCertOldPassword,b.sCertNewPassword,b.oOption,d);break;case"certChangePassword":ML4WebApi.ml4web_crypto_api.certChangePassword(b.jsonCert,b.sCertOldPassword,b.sCertNewPassword,b.oOption,d);break;case"getVIDRandom":ML4WebApi.ml4web_crypto_api.getVIDRandom(b.b64SignPri,b.sCertPassword,d);break;case"asymEncrypt":ML4WebApi.ml4web_crypto_api.asymEncrypt(b.b64EncryptedKey,b.sPlaintext,b.oAlgo,d);break;case"asymDecrypt":ML4WebApi.ml4web_crypto_api.prikeyDecrypt(b.b64EncryptedKey,b.sCertPassword,function(f,e){if(f==0){b.b64EncryptedKey=e.Base64String;ML4WebApi.ml4web_crypto_api.asymDecrypt(b.b64EncryptedKey,b.sCertPassword,b.sEncryptext,b.oAlgo,d)}else{d(ML4WebLog.getErrCode("ML4Web_API_createCryptoMsg"),{errCode:e.errCode,errMsg:e.errMsg})}});break;case"pfxImport":ML4WebApi.ml4web_crypto_api.pfxImport(b.b64Pfx,b.sPassword,d);break;case"pfxExport":ML4WebApi.ml4web_crypto_api.pfxExport(b.oJsonCert,b.sPassword,d);break;case"getFilePicker":ML4WebApi.ml4web_crypto_api.getFilePicker(b.fileExt,d);break;default:d(ML4WebLog.getErrCode("ML4Web_API_createCryptoMsg"),{errCode:104,errMsg:$.i18n.prop("ER104")});break}},checkCSModule:function(b){var a={isInstall:ML4WebApi.webConfig.is_cs_install,isUpdate:ML4WebApi.webConfig.is_cs_update};b(0,a)},makeEncMssage:function(a){return ML4WebApi.dsencrypt(a)},makeDecMssage:function(a){return ML4WebApi.dsDecrypt(a)},tranx2PEM:function(a,f){try{if(a=="UI"){if(ML4WebApi.webConfig.tranx2PEM!=""){f("0",ML4WebApi.webConfig.tranx2PEM)}else{f("1","")}}else{var d=ML4WebApi.getResourceApi();var b=d.makeCsJsonMessage("tranx2PEM");d.csAsyncCall(ML4WebApi.getProperty("CsUrl"),b,function(e){f(e.ResultCode,e);return})}}catch(c){f(ML4WebLog.getErrCode("ML4Web_API_tranx2PEM"),{errCode:c.code,errMsg:c.message});return}},getRandomfromPrivateKey:function(a,f){try{if(a=="UI"){if(ML4WebApi.isEmpty(ML4WebApi.webConfig.getRandomfromPrivateKey)){ML4WebApi.ml4web_storage_api.getVIDRandom(JSON.parse(ML4WebApi.UserInfo.selectCertInfo),ML4WebApi.ml4web_crypto_api.HD_result,function(e,g){ML4WebApi.webConfig.getRandomfromPrivateKey=g.VIDRandom;f(e,g);return})}else{f("0",{VIDRandom:ML4WebApi.webConfig.getRandomfromPrivateKey});return}}else{var d=ML4WebApi.getResourceApi();var b=d.makeCsJsonMessage("getRandomfromPrivateKey");d.csAsyncCall(ML4WebApi.getProperty("CsUrl"),b,function(e){f(e.ResultCode,e);return})}}catch(c){f(ML4WebLog.getErrCode("ML4Web_API_getRandomfromPrivateKey"),{errCode:c.code,errMsg:c.message});return}},setSessionID:function(b,a,g){try{if(b=="UI"){if(ML4WebApi.webConfig.strSessionID!=""){g("1",a)}else{g("1","")}}else{var f=ML4WebApi.getResourceApi();var c=f.makeCsJsonMessage("setSessionID",a);f.csAsyncCall(ML4WebApi.getProperty("CsUrl"),c,function(e){g(e.ResultCode,e)})}}catch(d){g(ML4WebLog.getErrCode("ML4Web_API_setSessionID"),{errCode:d.code,errMsg:d.message})}},setMobileKeyURL:function(a,g,f){try{if(a=="UI"){f("1","")}else{var d=ML4WebApi.getResourceApi();var b=d.makeCsJsonMessage("SetMobileKeyURL",g);d.csAsyncCall(ML4WebApi.getProperty("CsUrl"),b,function(e){f(e.ResultCode,e)})}}catch(c){f(ML4WebLog.getErrCode("ML4Web_API_setMobileKeyURL"),{errCode:c.code,errMsg:c.message})}},UbiKeyInit:function(c,f,b,a,g,j){try{if(c=="UI"){j("1","")}else{var h=ML4WebApi.getResourceApi();var k=h.makeCsJsonMessage("UbiKeyInit",f,b,a,g);h.csAsyncCall(ML4WebApi.getProperty("CsUrl"),k,function(e){j(e.ResultCode,e)})}}catch(d){j(ML4WebLog.getErrCode("ML4Web_API_UbiKeyInit"),{errCode:d.code,errMsg:d.message})}},setHashOption:function(a,d,g){try{if(a=="UI"){g("0","")}else{var f=ML4WebApi.getResourceApi();var b=f.makeCsJsonMessage("setHashOption",d);f.csAsyncCall(ML4WebApi.getProperty("CsUrl"),b,function(e){g(e.ResultCode,e)})}}catch(c){g(ML4WebLog.getErrCode("ML4Web_API_setHashOption"),{errCode:c.code,errMsg:c.message})}},setExtraOption:function(b,h,a,g){try{if(b=="UI"){g("0","")}else{var f=ML4WebApi.getResourceApi();var c=f.makeCsJsonMessage("SetExtraOption",h,a);f.csAsyncCall(ML4WebApi.getProperty("CsUrl"),c,function(e){g(e.ResultCode,e)})}}catch(d){g(ML4WebLog.getErrCode("ML4Web_API_setExtraOption"),{errCode:d.code,errMsg:d.message})}},console:window.console||{log:function(){}},csConfigOpt:{},ml4web_crypto_api:{libType:"",cryptObj:"",PKI_CIPER_ALGO_SEEDCBC:"SEED-CBC",PKI_CIPER_ALGO_3DESCBC:"3DES-CBC",PKI_CIPER_ALGO_AIRACBC:"ARIA128-CBC",PKI_CIPER_ALGO_AIRACBC:"ARIA192-CBC",PKI_CIPER_ALGO_AIRACBC:"ARIA256-CBC",PKI_CIPER_ALGO_AES128CBC:"AES128-CBC",PKI_CIPER_ALGO_AES192CBC:"AES192-CBC",PKI_CIPER_ALGO_AES256CBC:"AES256-CBC",PKI_CERT_SIGN_OPT_NONE:"OPT_NONE",PKI_CERT_SIGN_OPT_USE_CONTNET_INFO:"OPT_USE_CONTNET_INFO",PKI_CERT_SIGN_OPT_NO_CONTENT:"OPT_NO_CONTENT",PKI_CERT_SIGN_OPT_SIGNKOREA_FORMAT:"OPT_SIGNKOREA_FORMAT",PKI_HASH_SHA1:"sha1",PKI_HASH_SHA256:"sha256",PKI_HASH_SHA384:"sha384",PKI_HASH_SHA512:"sha512",PKI_RSA_1_5:"rsa15",PKI_RSA_2_0:"rsa20",HD_result:"",SD_result:"",CERT_INFO_VERSION:"version",CERT_INFO_SERIALNUM:"serialnum",CERT_INFO_SIGNATUREALGORITHM:"signaturealgorithm",CERT_INFO_ISSUERNAME:"issuername",CERT_INFO_STARTDATE:"startdate",CERT_INFO_ENDDATE:"enddate",CERT_INFO_SUBJECTNAME:"subjectname",CERT_INFO_PUBKEY:"pubkey",CERT_INFO_PUBKEYALGORITHM:"pubkeyalgorithm",CERT_INFO_KEYUSAGE:"keyusage",CERT_INFO_CERTPOLICY:"certpolicy",CERT_INFO_POLICYID:"policyid",CERT_INFO_POLICYNOTICE:"policynotice",CERT_INFO_SUBJECTALTNAME:"subjectaltname",CERT_INFO_AUTHKEYID:"authkeyid",CERT_INFO_SUBKEYID:"subkeyid",CERT_INFO_CRLDP:"crldp",CERT_INFO_AIA:"aia",CERT_INFO_REALNAME:"realname",encodeUtf8andBase64:function(d){var h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var a="";var c="";var g,e,b;var f=0;d=unescape(encodeURIComponent(d));maxline=(d.length+2-((d.length+2)%3))/3*4;while(f>2);a+=h.charAt(((g&3)<<4)|(e>>4));if(isNaN(e)){a+="=="}else{a+=h.charAt(((e&15)<<2)|(b>>6));a+=isNaN(b)?"=":h.charAt(b&63)}if(maxline&&a.length>maxline){c+=a.substr(0,maxline)+"\r\n";a=a.substr(maxline)}}c+=a;return c},init:function(blibType,resource_api,callback){ML4WebLog.log("Crypto_API Init() called...");if(blibType==null||blibType=="undefined"){libType=resource_api.checkCS()}else{libType=blibType}if(libType==0){cryptObj=new C_Crypto_API(resource_api)}else{if(libType==1){cryptObj=new JS_Crypto_API(resource_api)}else{if(libType==2){cryptObj=new JS_Crypto_Raw_API(resource_api)}}}var magicjsUrl="js/crypto/magicjs_1.2.1.4.min.js";$.cachedScript(magicjsUrl).done(function(script,status){eval(script);cryptObj.init(callback)})},genHmac:function(b,d,a,f){ML4WebLog.log("call genHmac!!");if(b==null||b==""){f(ML4WebLog.getErrCode("Crypto_API_genHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(d==null||d==""){f(ML4WebLog.getErrCode("Crypto_API_genHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){f(ML4WebLog.getErrCode("Crypto_API_genHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_genHmac"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}try{cryptObj.genHmac(b,d,a,f)}catch(c){f(ML4WebLog.getErrCode("Crypto_API_genHmac"),{errCode:888,errMsg:c.message});return}},verifyHmac:function(c,f,b,a,g){ML4WebLog.log("call verifyHmac !!");if(c==null||c==""){g(ML4WebLog.getErrCode("Crypto_API_verifyHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(f==null||f==""){g(ML4WebLog.getErrCode("Crypto_API_verifyHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){g(ML4WebLog.getErrCode("Crypto_API_verifyHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_verifyHmac"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_verifyHmac"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}try{cryptObj.verifyHmac(c,f,b,a,g)}catch(d){g(ML4WebLog.getErrCode("Crypto_API_verifyHmac"),{errCode:888,errMsg:d.message});return}},encrypt:function(c,g,b,a,f){ML4WebLog.log("call encrypt !!");if(c==null||c==""){f(ML4WebLog.getErrCode("Crypto_API_encrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(g==null||g==""){f(ML4WebLog.getErrCode("Crypto_API_encrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){f(ML4WebLog.getErrCode("Crypto_API_encrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){f(ML4WebLog.getErrCode("Crypto_API_encrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_encrypt"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}try{cryptObj.encrypt(c,g,b,a,f)}catch(d){f(ML4WebLog.getErrCode("Crypto_API_encrypt"),{errCode:888,errMsg:d.message});return}},decrypt:function(c,g,a,b,f){ML4WebLog.log("call decrypt !!");if(c==null||c==""){f(ML4WebLog.getErrCode("Crypto_API_decrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(g==null||g==""){f(ML4WebLog.getErrCode("Crypto_API_decrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){f(ML4WebLog.getErrCode("Crypto_API_decrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){f(ML4WebLog.getErrCode("Crypto_API_decrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_decrypt"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}try{cryptObj.decrypt(c,g,a,b,f)}catch(d){f(ML4WebLog.getErrCode("Crypto_API_decrypt"),{errCode:888,errMsg:d.message});return}},sign:function(b,a,f,d,c,h){ML4WebLog.log("call sign !!");if(b==null||b==""){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(f==null||f==""){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}}}try{if(typeof h==="function"){cryptObj.sign(b,a,f,d,c,h)}else{return cryptObj.sign(b,a,f,d,c,h)}}catch(g){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:888,errMsg:g.message});return}},signature:function(b,a,f,d,c,h){ML4WebLog.log("call sign !!");if(b==null||b==""){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(f==null||f==""){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}}}try{if(typeof h==="function"){cryptObj.signature(b,a,f,d,c,h)}else{return cryptObj.signature(b,a,f,d,c,h)}}catch(g){h(ML4WebLog.getErrCode("Crypto_API_sign"),{errCode:888,errMsg:g.message});return}},irosSign:function(b,a,f,d,c){ML4WebLog.log("call irosSign !!");if(b==null||b==""){return{code:ML4WebLog.getErrCode("Crypto_API_irosSign"),data:{errCode:100,errMsg:$.i18n.prop("ER100")}}}else{if(a==null||a==""){return{code:ML4WebLog.getErrCode("Crypto_API_irosSign"),data:{errCode:100,errMsg:$.i18n.prop("ER100")}}}else{if(f==null||f==""){return{code:ML4WebLog.getErrCode("Crypto_API_irosSign"),data:{errCode:100,errMsg:$.i18n.prop("ER100")}}}else{if(d==null||d==""){return{code:ML4WebLog.getErrCode("Crypto_API_irosSign"),data:{errCode:100,errMsg:$.i18n.prop("ER100")}}}}}}try{return cryptObj.irosSign(b,a,f,d,c)}catch(g){return{code:ML4WebLog.getErrCode("Crypto_API_irosSign"),data:{errCode:888,errMsg:g.message}}}},envelopedData:function(f,a,b,d,g){ML4WebLog.log("call envelopedData !!");if(f==null||f==""){g(ML4WebLog.getErrCode("Crypto_API_envelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_envelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||$.isEmptyObject(b)){g(ML4WebLog.getErrCode("Crypto_API_envelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_envelopedData"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}try{cryptObj.envelopedData(f,a,b,d,g)}catch(c){g(ML4WebLog.getErrCode("Crypto_API_envelopedData"),{errCode:888,errMsg:c.message});return}},signedEnvelopedData:function(g,k,a,f,b,h,c,j){ML4WebLog.log("call signedEnvelopedData !!");if(g==null||g==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(k==null||k==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(f==null||f==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(h==null||h==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof j!="function"||j==null||j==""){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}}}try{cryptObj.signedEnvelopedData(g,k,a,f,b,h,c,j)}catch(d){j(ML4WebLog.getErrCode("Crypto_API_signedEnvelopedData"),{errCode:888,errMsg:d.message});return}},verifyVID:function(c,b,d,a,g){ML4WebLog.log("call verifyVID !!");if(c==null||c==""){g(ML4WebLog.getErrCode("Crypto_API_verifyVID"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){g(ML4WebLog.getErrCode("Crypto_API_verifyVID"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(d==null||d==""){g(ML4WebLog.getErrCode("Crypto_API_verifyVID"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_verifyVID"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_verifyVID"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}try{cryptObj.verifyVID(c,b,d,a,g)}catch(f){g(ML4WebLog.getErrCode("Crypto_API_verifyVID"),{errCode:888,errMsg:f.message});return}},generateRandom:function(a,c){ML4WebLog.log("call generateRandom !!");if(a==null||a==0){c(ML4WebLog.getErrCode("Crypto_API_generateRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof c!="function"||c==null||c==""){c(ML4WebLog.getErrCode("Crypto_API_generateRandom"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}try{cryptObj.generateRandom(a,c)}catch(b){c(ML4WebLog.getErrCode("Crypto_API_generateRandom"),{errCode:888,errMsg:b.message});return}},genKeypair:function(a,b,d){ML4WebLog.log("call genKeypair by javascript!!");if(a==null||a==""){d(ML4WebLog.getErrCode("Crypto_API_genKeypair"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==0){d(ML4WebLog.getErrCode("Crypto_API_genKeypair"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("Crypto_API_genKeypair"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{cryptObj.genKeypair(a,b,d)}catch(c){d(ML4WebLog.getErrCode("Crypto_API_genKeypair"),{errCode:888,errMsg:c.message});return}},genHash:function(b,a,d){ML4WebLog.log("call genHash by javascript!!");if(b==null||b==""){d(ML4WebLog.getErrCode("Crypto_API_genHash"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){d(ML4WebLog.getErrCode("Crypto_API_genHash"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}}try{if(typeof(d)=="undefined"){return cryptObj.genHash(b,a,d)}else{cryptObj.genHash(b,a,d)}}catch(c){d(ML4WebLog.getErrCode("Crypto_API_genHash"),{errCode:888,errMsg:c.message});return}},genHashCount:function(b,a,c,f){ML4WebLog.log("call genHashCount by javascript!!");if(b==null||b==""){f(ML4WebLog.getErrCode("Crypto_API_genHashCount"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){f(ML4WebLog.getErrCode("Crypto_API_genHashCount"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(c==null||c==""){f(ML4WebLog.getErrCode("Crypto_API_genHashCount"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_genHashCount"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}try{cryptObj.genHashCount(b,a,c,f)}catch(d){f(ML4WebLog.getErrCode("Crypto_API_genHashCount"),{errCode:888,errMsg:d.message});return}},prikeyDecrypt:function(c,a,d){if(c==null||c==""){d(ML4WebLog.getErrCode("Crypto_API_prikeyDecrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){d(ML4WebLog.getErrCode("Crypto_API_prikeyDecrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("Crypto_API_prikeyDecrypt"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{cryptObj.prikeyDecrypt(c,a,d)}catch(b){d(ML4WebLog.getErrCode("Crypto_API_prikeyDecrypt"),{errCode:888,errMsg:b.message});return}},prikeyEncrypt:function(d,a,c,f){if(d==null||d==""){f(ML4WebLog.getErrCode("Crypto_API_prikeyEncrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){f(ML4WebLog.getErrCode("Crypto_API_prikeyEncrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_prikeyEncrypt"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{cryptObj.prikeyEncrypt(d,a,c,f)}catch(b){f(ML4WebLog.getErrCode("Crypto_API_prikeyEncrypt"),{errCode:888,errMsg:b.message});return}},getVIDRandom:function(a,b,d){if(a==null||a==""){d(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){d(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{cryptObj.getVIDRandom(a,b,d)}catch(c){d(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:888,errMsg:c.message});return}},getVIDRandomHash:function(c,b,d,a,g){if(c==null||c==""){g(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){g(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(d==null||d==""){g(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_getVIDRandom"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}try{cryptObj.getVIDRandomHash(c,b,d,a,g)}catch(f){g(ML4WebLog.getErrCode("Crypto_API_getVIDRandomHash"),{errCode:888,errMsg:f.message});return}},asymEncrypt:function(c,b,a,f){if(c==null||c==""){f(ML4WebLog.getErrCode("Crypto_API_asymEncrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){f(ML4WebLog.getErrCode("Crypto_API_asymEncrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){f(ML4WebLog.getErrCode("Crypto_API_asymEncrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_asymEncrypt"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}try{cryptObj.asymEncrypt(c,b,a,f)}catch(d){f(ML4WebLog.getErrCode("Crypto_API_asymEncrypt"),{errCode:888,errMsg:d.message});return}},asymDecrypt:function(b,d,a,c,g){if(b==null||b==""){g(ML4WebLog.getErrCode("Crypto_API_asymDecrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_asymDecrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(d==null||d==""){g(ML4WebLog.getErrCode("Crypto_API_asymDecrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(c==null||c==""){g(ML4WebLog.getErrCode("Crypto_API_asymDecrypt"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_asymDecrypt"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}}try{cryptObj.asymDecrypt(b,d,a,c,g)}catch(f){g(ML4WebLog.getErrCode("Crypto_API_asymDecrypt"),{errCode:888,errMsg:f.message});return}},pfxImport:function(a,b,d){if(a==null||a==""){d(ML4WebLog.getErrCode("Crypto_API_pfxImport"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){d(ML4WebLog.getErrCode("Crypto_API_pfxImport"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("Crypto_API_pfxImport"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{cryptObj.pfxImport(a,b,d)}catch(c){d(ML4WebLog.getErrCode("Crypto_API_pfxImport"),{errCode:888,errMsg:c.message});return}},pfxExport:function(b,a,d){if(b==null||b==""){d(ML4WebLog.getErrCode("Crypto_API_pfxExport"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){d(ML4WebLog.getErrCode("Crypto_API_pfxExport"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("Crypto_API_pfxExport"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{cryptObj.pfxExport(b,a,d)}catch(c){d(ML4WebLog.getErrCode("Crypto_API_pfxExport"),{errCode:888,errMsg:c.message});return}},getcertInfo:function(d,a,f){if(d==null||d==""){f(ML4WebLog.getErrCode("Crypto_API_getcertInfo"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null){f(ML4WebLog.getErrCode("Crypto_API_getcertInfo"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof f!="function"||f==null||f==""){f(ML4WebLog.getErrCode("Crypto_API_getcertInfo"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}try{var c=[];if(a.length==0){c.push(DS_CERT_INFO.VERSION);c.push(DS_CERT_INFO.SERIALNUM);c.push(DS_CERT_INFO.SIGNATUREALGORITHM);c.push(DS_CERT_INFO.ISSUERNAME);c.push(DS_CERT_INFO.STARTDATE);c.push(DS_CERT_INFO.ENDDATE);c.push(DS_CERT_INFO.STARTDATETIME);c.push(DS_CERT_INFO.ENDDATETIME);c.push(DS_CERT_INFO.SUBJECTNAME);c.push(DS_CERT_INFO.PUBKEY);c.push(DS_CERT_INFO.PUBKEYALGORITHM);c.push(DS_CERT_INFO.KEYUSAGE);c.push(DS_CERT_INFO.CERTPOLICY);c.push(DS_CERT_INFO.POLICYID);c.push(DS_CERT_INFO.POLICYNOTICE);c.push(DS_CERT_INFO.SUBJECTALTNAME);c.push(DS_CERT_INFO.AUTHKEYID);c.push(DS_CERT_INFO.SUBKEYID);c.push(DS_CERT_INFO.CRLDP);c.push(DS_CERT_INFO.AIA);c.push(DS_CERT_INFO.REALNAME)}else{c=a}cryptObj.getcertInfo(d,c,f)}catch(b){f(ML4WebLog.getErrCode("Crypto_API_getcertInfo"),{errCode:888,errMsg:b.message});return}},prikeyChangePassword:function(c,b,a,f,g){if(c==null||c==""){g(ML4WebLog.getErrCode("Crypto_API_prikeyChangePassword"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){g(ML4WebLog.getErrCode("Crypto_API_prikeyChangePassword"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_prikeyChangePassword"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_prikeyChangePassword"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}try{cryptObj.prikeyChangePassword(c,b,a,f,g)}catch(d){g(ML4WebLog.getErrCode("Crypto_API_prikeyChangePassword"),{errCode:888,errMsg:d.message});return}},certChangePassword:function(c,b,a,f,g){if(c==null||c==""){g(ML4WebLog.getErrCode("Crypto_API_certChangePassword"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){g(ML4WebLog.getErrCode("Crypto_API_certChangePassword"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){g(ML4WebLog.getErrCode("Crypto_API_certChangePassword"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof g!="function"||g==null||g==""){g(ML4WebLog.getErrCode("Crypto_API_certChangePassword"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}}}try{cryptObj.certChangePassword(c,b,a,f,g)}catch(d){g(ML4WebLog.getErrCode("Crypto_API_certChangePassword"),{errCode:888,errMsg:d.message});return}},getFilePicker:function(b,d){if(b==null||b==""){d(ML4WebLog.getErrCode("Crypto_API_getFilePicker"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(typeof d!="function"||d==null||d==""){d(ML4WebLog.getErrCode("Crypto_API_getFilePicker"),{errCode:103,errMsg:$.i18n.prop("ER103")});return}}var a=new C_Crypto_API(resource_api);a.init(function(){});try{a.getFilePicker(b,d)}catch(c){d(ML4WebLog.getErrCode("Crypto_API_getFilePicker"),{errCode:888,errMsg:c.message})}},getEncryptedCert:function(b){try{if(b!==null&&typeof b!=="undefined"&&b!==""){var a=magicjs.cipher.create(true,"SEED-CBC",magicjs.hex.decode("0b9f0bb6f0a89844aedecb9f2508c7e2"));a.init(magicjs.hex.decode("69068374ba84d85b68eea844d2d2c187"));a.update(b);a.finish();return magicjs.base64.encode(a.output)}}catch(c){return""}},getDecryptedCert:function(b){try{if(b!==null&&typeof b!=="undefined"&&b!==""){var a=magicjs.cipher.create(false,"SEED-CBC",magicjs.hex.decode("0b9f0bb6f0a89844aedecb9f2508c7e2"));a.init(magicjs.hex.decode("69068374ba84d85b68eea844d2d2c187"));a.update(magicjs.base64.decode(b));a.finish();return a.output.data}}catch(c){return""}},HD_api:function(b){if(ML4WebApi.HDSDOption.eOption){try{if(b!==null&&typeof b!=="undefined"&&b!==""){var a=magicjs.cipher.create(true,"SEED-CBC",magicjs.hex.decode("0b9f0bb6f0a89844aedecb9f2508c7e2"));a.init(magicjs.hex.decode("69068374ba84d85b68eea844d2d2c187"));a.update(b);a.finish();ML4WebApi.ml4web_crypto_api.HD_result=magicjs.base64.encode(a.output);return ML4WebApi.ml4web_crypto_api.HD_result}}catch(c){return""}}else{return b}},SD_api:function(b){if(ML4WebApi.HDSDOption.eOption){try{if(b!==null&&typeof b!=="undefined"&&b!==""){var a=magicjs.cipher.create(false,"SEED-CBC",magicjs.hex.decode("0b9f0bb6f0a89844aedecb9f2508c7e2"));a.init(magicjs.hex.decode("69068374ba84d85b68eea844d2d2c187"));a.update(magicjs.base64.decode(b));a.finish();return a.output.data}}catch(c){return""}}else{return b}},get_SD_Result:function(){if(ML4WebApi.HDSDOption.eOption){try{var a=magicjs.cipher.create(false,"SEED-CBC",magicjs.hex.decode("0b9f0bb6f0a89844aedecb9f2508c7e2"));a.init(magicjs.hex.decode("69068374ba84d85b68eea844d2d2c187"));a.update(magicjs.base64.decode(ML4WebApi.ml4web_crypto_api.HD_result));a.finish();return a.output.data}catch(b){return""}}else{return string}},incaDecrypt:function(d,g){var b=d.substr(0,32);var c=d.substr(32);var f=magicjs.base64.encode(magicjs.hex.decode("d4219a6be6b839e34e73e52c9b2213c3d254fed02637abce605a887e1c393dde"));var a=magicjs.base64.encode(magicjs.hex.decode(b));var e=magicjs.base64.encode(magicjs.hex.decode(c));ML4WebApi.ml4web_crypto_api.decrypt("ARIA256-CBC",f,a,e,function(h,j){if(h==0){g(h,j)}})},pkcs7:function(g,b,f,a,d){if(g==null||g==""){callback(ML4WebLog.getErrCode("Crypto_API_pkcs7"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(b==null||b==""){callback(ML4WebLog.getErrCode("Crypto_API_pkcs7"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(f==null||f==""){callback(ML4WebLog.getErrCode("Crypto_API_pkcs7"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}else{if(a==null||a==""){callback(ML4WebLog.getErrCode("Crypto_API_pkcs7"),{errCode:100,errMsg:$.i18n.prop("ER100")});return}}}}try{var c=cryptObj.pkcs7(g,b,f,a,d);return c}catch(h){callback(ML4WebLog.getErrCode("Crypto_API_pkcs7"),{errCode:888,errMsg:h.message});return}}},ml4web_storage_api:null,ml4web_resource_api:null,ml4web_cs_manager:null,get_browser_info:function(){var b=navigator.userAgent,a,c=b.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];if(/trident/i.test(c[1])){a=/\brv[ :]+(\d+)/g.exec(b)||[];return{name:"IE",version:(a[1]||"")}}if(c[1]==="Chrome"){a=b.match(/\bOPR\/(\d+)/);if(a!=null){return{name:"Opera",version:a[1]}}a=b.match(/\bEdge\/(\d+)/);if(a!=null){return{name:"Edge",version:a[1]}}}c=c[2]?[c[1],c[2]]:[navigator.appName,navigator.appVersion,"-?"];if((a=b.match(/version\/(\d+)/i))!=null){c.splice(1,1,a[1])}return{name:c[0],version:c[1]}},dsencrypt:function(b){var a=magicjs.cipher.create(true,"SEED-CBC",magicjs.base64.decode("wqpRRHAjpW48fSp6Sd2g7Q=="));a.init(magicjs.generateRandomBytes(16));a.update("0000000000000000"+magicjs.utf8.encode(b));a.finish();return magicjs.base64.encode(a.output)},dsDecrypt:function(b){var a=magicjs.cipher.create(false,"SEED-CBC",magicjs.base64.decode("wqpRRHAjpW48fSp6Sd2g7Q=="));a.init(magicjs.generateRandomBytes(16));a.update(magicjs.base64.decode(b));a.finish();var c=magicjs.utf8.decode(a.output.data.substring(16,a.output.data.length));return c},setDSCertFieldInfo:function(){DS_CERT_INFO.VERSION="version";DS_CERT_INFO.SERIALNUM="serialnum";DS_CERT_INFO.SIGNATUREALGORITHM="signaturealgorithm";DS_CERT_INFO.ISSUERNAME="issuername";DS_CERT_INFO.STARTDATE="startdate";DS_CERT_INFO.ENDDATE="enddate";DS_CERT_INFO.SUBJECTNAME="subjectname";DS_CERT_INFO.PUBKEY="pubkey";DS_CERT_INFO.PUBKEYALGORITHM="pubkeyalgorithm";DS_CERT_INFO.KEYUSAGE="keyusage";DS_CERT_INFO.CERTPOLICY="certpolicy";DS_CERT_INFO.POLICYID="policyid";DS_CERT_INFO.POLICYNOTICE="policynotice";DS_CERT_INFO.SUBJECTALTNAME="subjectaltname";DS_CERT_INFO.AUTHKEYID="authkeyid";DS_CERT_INFO.SUBKEYID="subkeyid";DS_CERT_INFO.CRLDP="crldp";DS_CERT_INFO.AIA="aia";DS_CERT_INFO.REALNAME="realname";DS_CERT_INFO.STARTDATETIME="startdatetime";DS_CERT_INFO.ENDDATETIME="enddatetime"},loadResource:function(a){ML4WebLog.log("ML4WebApi.loadResource() called... ");if(ML4WebApi.ml4web_resource_api==null){ML4WebApi.ml4web_resource_api=new Resource_API(csConfigOpt,(ML4WebApi.webConfig.libType==0)?true:false);ML4WebApi.ml4web_resource_api.init(10000,function(b,c){if(b==0){if(ML4WebApi.ml4web_storage_api==null){ML4WebApi.ml4web_storage_api=new Storage_API();ML4WebApi.ml4web_storage_api.init(function(d,e){if(d==0){ML4WebApi.ml4web_crypto_api.init(ML4WebApi.webConfig.libType,ML4WebApi.ml4web_resource_api,function(f,g){if(ML4WebApi.ml4web_cs_manager==null){ML4WebApi.ml4web_cs_manager=new CS_Manager_API(ML4WebApi.ml4web_resource_api,csConfigOpt);ML4WebApi.ml4web_cs_manager.init(function(j,h){if(j==0){a(0,{isInstall:ML4WebApi.webConfig.is_cs_install,isUpdate:ML4WebApi.webConfig.is_cs_update});return}else{a(j,{isInstall:ML4WebApi.webConfig.is_cs_install,isUpdate:ML4WebApi.webConfig.is_cs_update});return}})}})}})}}})}},isEmpty:function(a){if(a==null|typeof a=="undefined"||a.trim().length<1){return true}else{return false}},detectBrower:function(){try{var a=ML4WebApi.get_browser_info();ML4WebApi.webConfig.browser=a.name+" "+a.version;return a}catch(b){ML4WebLog.log("[ERROR]ML4WebApi.detectBrower() : "+b.message)}},detectOs:function(){try{var b=navigator.userAgent;b=b.toUpperCase();if(b.indexOf("IPHONE")>-1){ML4WebApi.webConfig.os="IPHONE"}else{if(b.indexOf("IPAD")>-1){ML4WebApi.webConfig.os="IPAD"}else{if(b.indexOf("NT 4.0")>-1){ML4WebApi.webConfig.os="windows NT 4.0"}else{if(b.indexOf("NT 5.0")>-1){ML4WebApi.webConfig.os="windows 2000"}else{if(b.indexOf("NT 5.01")>-1){ML4WebApi.webConfig.os="windows 2000 sp1"}else{if(b.indexOf("NT 5.1")>-1){ML4WebApi.webConfig.os="windows XP"}else{if(b.indexOf("NT 5.2")>-1){ML4WebApi.webConfig.os="windows 2003"}else{if(b.indexOf("NT 6.0")>-1){ML4WebApi.webConfig.os="windows Vista/Server 2008"}else{if(b.indexOf("NT 6.1")>-1){ML4WebApi.webConfig.os="windows 7"}else{if(b.indexOf("NT 6.2")>-1){ML4WebApi.webConfig.os="windows 8"}else{if(b.indexOf("NT 6.3")>-1){ML4WebApi.webConfig.os="windows 8.1"}else{if(b.indexOf("NT 10.0")>-1){ML4WebApi.webConfig.os="windows 10"}else{if(b.indexOf("ANDROID")>-1){ML4WebApi.webConfig.os="Android"}else{if(b.indexOf("BLACKBERRY")>-1){ML4WebApi.webConfig.os="BlackBerry"}else{if(b.indexOf("MAC")>-1){ML4WebApi.webConfig.os="MAC"}else{if(b.indexOf("SYMBIAN")>-1){ML4WebApi.webConfig.os="Symbian"}else{if(b.indexOf("UBUNTU")!=-1){if(b.indexOf("86_64")!=-1){ML4WebApi.webConfig.os="LINUX64_UBUNTU64"}else{ML4WebApi.webConfig.os="LINUX32_UBUNTU32"}}else{if(b.indexOf("FEDORA")!=-1){if(b.indexOf("86_64")!=-1){ML4WebApi.webConfig.os="LINUX64_FEDORA64"}else{ML4WebApi.webConfig.os="LINUX32_FEDORA32"}}else{if(b.indexOf("LINUX")!=-1){if(b.indexOf("86_64")!=-1){ML4WebApi.webConfig.os="LINUX64"}else{ML4WebApi.webConfig.os="LINUX32"}}else{ML4WebApi.webConfig.os="Unknown"}}}}}}}}}}}}}}}}}}}return ML4WebApi.webConfig.os;ML4WebLog.log("ML4WebApi.detectOs() called...")}catch(a){ML4WebLog.log("[ERROR]ML4WebApi.detectOs() : "+a.message)}},base64Encode:function(a){try{return magicjs.base64.encode(a)}catch(b){return""}},base64Decode:function(a){try{return magicjs.base64.decode(a)}catch(b){return""}},makeReverseDN:function(c){try{var f="";var a=c.split(",");for(var b=a.length-1;b>=0;b--){cutStr=a[b].substr(0,a[b].indexOf("="));if(b==0){f+=a[b].replace(cutStr,cutStr.toUpperCase())}else{f+=a[b].replace(cutStr,cutStr.toUpperCase())+"/"}}return f}catch(d){return""}},getSignDN:function(b){try{if(ML4WebApi.UserInfo.userDn!=""){b("0",ML4WebApi.UserInfo.userDn)}else{b("1","")}}catch(a){b(ML4WebLog.getErrCode("ML4Web_API_getSignDN"),{errCode:a.code,errMsg:a.message})}},signatureData:function(b,c){try{ML4WebApi.makeSignData(ML4WebApi.UserInfo.selectCertInfo,ML4WebApi.ml4web_crypto_api.HD_result,ML4WebApi.UserInfo.opt,b,c)}catch(a){c(ML4WebLog.getErrCode("ML4Web_API_signatureData"),{errCode:a.code,errMsg:a.message})}},convertFilesToBase64String:function(n,m){try{if(n.length===3){m(206,g);return}var f=[];var l=[];for(var r=0;r-1||n[r].name.indexOf(".der")>-1||n[r].name.indexOf(".pfx")>-1||n[r].name.indexOf(".p12")>-1){f.push(n[r])}else{l.push(n[r])}}if(f.length<1){m(116,g);return}f.sort(function(x,e){return x.name>e.name?-1:x.namee.name?-1:x.name-1)||(k.indexOf(".DER")>-1);p=(k.indexOf(".PFX")>-1);s=(k.indexOf(".P12")>-1);b=(k.indexOf("ENV.CER")>-1||k.indexOf("ENV.DER")>-1||k.indexOf("KMCERT.CER")>-1||k.indexOf("KMCERT.DER")>-1)}g.fileName=f[0].name;var o="";var j="";var q="";for(var r=0;r-1);q=(o.indexOf("ENV.KEY")>-1||o.indexOf("KMPRI.KEY")>-1)}if(n.length===2&&((b&&j)||(v&&q))){m(205,g);return}if(v&&j){g.type="cert";var w=new FileReader();var c=new FileReader();if(b&&q){var h=new FileReader();var t=new FileReader()}w.readAsBinaryString=function(e){var y="";var x=this;w.onload=function(C){var z=new Uint8Array(w.result);var B=z.byteLength;for(var A=0;A-1)|| currentOS=="IPHONE" || currentOS=="BlackBerry"){ - $("#ML_common_css").attr("href", "UI/css/ML_common_mobile.css"); - $("#MLjquibase_css").attr("href", "UI/css/MLjquibase_mobile.css"); - }else if(currentOS=="IPAD" || currentOS=="Android" || currentOS == "IOS"){ - $("#ML_common_css").attr("href", "UI/css/ML_common_mobile.css"); - $("#MLjquibase_css").attr("href", "UI/css/MLjquibase_mobile.css"); - //$("#ML_common_css").attr("href", "UI/css/ML_common_tablet.css"); - //$("#MLjquibase_css").attr("href", "UI/css/MLjquibase_tablet.css"); - } - }, - /** - * ML4WebApi 초기화 - */ - initEventHandler : function(){ - // 필요없으면 지움 - $("#stg01").unbind().click(function(){ - - }); - - //system lang 설정 & message load - var lang = navigator.language || navigator.userLanguage; - MessageVO.loadMessage("ko"); - - ML4WebApi.init(function(code, obj){ - //ML4WebLog.log("ML4WebApi.init() callback... code ="+code+" / obj="+JSON.stringify(obj)); - // CS 설치체크... - var os_ver = ML4WebApi.getProperty("os"); - - if(code==0){ - //초기화 성공 - childInit.completeMLInit(); - }else if(code==1){ - //초기화 성공 - childInit.completeMLInit(); - }else{ - //error - childInit.closeMainDialogToChild(); - } - }); - - }, - /** - * 초기 작업, API 초기화 성공시 ML_Config 에 메시지 전송하는 함수 - */ - completeMLInit : function(){ - - is_ML_Sign_Init = true; - - chUrl = ML4WebApi.getProperty('baseUrl'); - mlcertUrl = ML4WebApi.getProperty('mlcertUrl'); - - if(ML4WebApi.getProperty('isUseMLCert')){ - var mlcertFullUrl = "https://"+mlcertUrl+"/ML4-Web/ML4Web/mlcert.html?lgUrl="+lgUrl+"&chUrl="+chUrl+"&random=" + Math.random() * 99999 ; - $('#dsmlcert').attr("src", mlcertFullUrl); - } - - var requestObj = { - funcName : "completeInit", - code: 0, - data : {} - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - }, - /** - * 인증서 선택창을 닫았을때 필요한 작업 수행 - */ - closeMainDialogToChild : function(){ - console.log("Child.html closeMainDialogToChild() called..."); - - $("#selectCertContainer").empty(); - $("#certDetailContainer").empty(); - $("#csContainer").empty(); - - var requestObj = { - key : "closeDialog", - data : "", - code : 1 - }; - var requestStr = JSON.stringify(requestObj); - - magiclineController.sendResultMessage(requestStr); - } -} - -/** - * ML_Config.js 의 요청, 결과 처리하는 객체 - * receiveMessage - * sendResultMessage - * MakeSignData - * NTSCertAuth - * MakeIrosMultiData - * XMLSignature - * keyBoardSecurityUse - * tranx2PEM - * getVIDRandom - * getVIDRandomHash - * getSignDN - * setSessionID - * signatureData - */ -var magiclineController = { - - /** - * 이벤트 리스너 함수 - */ - receiveMessage : function(event){ - try{ - var requestStr = event.data; - var request = JSON.parse(requestStr); - - var func = window["magiclineController"][request.funcName]; - func(request.funcParam); - - }catch(e){ - //setError(요청 응답 실패) - console.log(e.message); - } - - }, - /** - * ML_Config 에 메시지 전달하는 함수 - */ - sendResultMessage : function( result ){ - //기존 정보로 다시 설정 - if(Object.keys(defaultopt).length != 0){ - ML4WebApi.webConfig.storageList = defaultopt.storageList; - ML4WebApi.webConfig.defaultStorage = defaultopt.defaultStorage; - ML4WebApi.webConfig.useVirtualKeyboard = defaultopt.useVirtualKeyboard; - ML4WebApi.webConfig.virtualKeyboardType = defaultopt.virtualKeyboardType; - ML4WebApi.MobileOption = defaultopt.MobileOption; - ML4WebApi.ClientVersion = {}; - ML4WebApi.ClientVersion.Win = defaultopt.ClientVersion.Win; - ML4WebApi.ClientVersion.Mac = defaultopt.ClientVersion.Mac; - ML4WebApi.ClientVersion.Lin64 = defaultopt.ClientVersion.Lin64; - ML4WebApi.ClientVersion.Lin32 = defaultopt.ClientVersion.Lin32; - } - - try{ - var browser = ML4WebApi.getProperty('browser'); - var ilgURL = ""; - - if(typeof(lgURL)=='undefined'|| lgURL==null){ - ilgURL = ML4WebUI.funProcInit(); - }else{ - ilgURL = lgURL; - } - - if(browser == "MSIE 8"){ - //window.parent.postMessage(requestStr, "https://"+ilgURL); - window.parent.postMessage(result, ML4WebApi.getProperty('protocoltype')+"//"+ilgURL); - }else{ - //top.window.postMessage(requestStr, "https://"+ilgURL); - //top.window.postMessage(result, ML4WebApi.getProperty('protocoltype')+"//"+ilgURL); // 일반 - window.parent.postMessage(result, ML4WebApi.getProperty('protocoltype')+"//"+ilgURL); // 국세청 전용 - } - $("#selectCertContainer").empty(); - }catch(e){ - console.log("88888888888888888="+e.message); - } - }, - - PFXExport : function(param){ - ML4WebUI.init(function(status){ - if(status == 200){ - ML4WebCS.installCheck('main', function(code, obj){ - if(code == 0 || ML4WebLog.getErrCode("CS_Manager_API_checkInstall")){ - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList"), //["web(+a)","hdd","token","mobile","smartcert"] - installcheck : obj.is_cs_install, - updatecheck : obj.is_cs_update, - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - if(obj.is_cs_install == false || obj.is_cs_update == true){ - if(viewOptObj.defaultStorage != "web_kftc"){ - if(viewOptObj.storageList.indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - } else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - } - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - if(code === 0){ - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - } - }); - }else{ // end if(code == 0) - //setError("installcheck 에러") - } - }); // end of ml4webCs.installCheck - }else{ - //setError("UI 초기화 실패"); - } - }); // end of ML4WebUI.init - }, - - /** - * 인증서 선택창 호출 - */ - MakeSignData : function(param){ - magiclineController.setDefaultParam(param); - - ML4WebUI.init(function(status){ - - if(status == 200){ - - // 접근 호스트가 모바일일 경우 CS 설치 확인 없이 인증서 선택창 호출 - if(magiclineUtil.isMobile(magiclineUtil.getOS())){ - - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList_m"), //["web(+a)","hdd","token","mobile","smartcert"] - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - - if(ML4WebApi.getProperty("storageList_m").indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - }else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - if(code == 0){ - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - } - - }); - return; - } - - ML4WebCS.installCheck('main', function(code, obj){ - - if(code == 0 || ML4WebLog.getErrCode("CS_Manager_API_checkInstall")){ - - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList"), //["web(+a)","hdd","token","mobile","smartcert"] - installcheck : obj.is_cs_install, - updatecheck : obj.is_cs_update, - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - - if(obj.is_cs_install == false || obj.is_cs_update == true){ - if(viewOptObj.defaultStorage != "web_kftc"){ - if(viewOptObj.storageList.indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - } else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - } - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - if(code === 0){ - // 기존 proceedCert - // jsonObj keys : signcert, signpri, rowData, pw, selectedStg - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - - } - }); - - }else{ // end if(code==0) - - } - - }); // end of ml4webCs.installCheck - - }else{ - - //setError("UI 초기화 실패"); - } - }); // end of ML4WebUI.init - - }, - /** - * 국세청 로그인 함수. 인증서 선택창 호출 - */ - NTSCertAuth : function(param){ - magiclineController.setDefaultParam(param); - - ML4WebUI.init(function(status){ - - if(status == 200){ - - ML4WebCS.installCheck('main', function(code, obj){ - - if(code == 0 || ML4WebLog.getErrCode("CS_Manager_API_checkInstall")){ - - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList"), //["web(+a)","hdd","token","mobile","smartcert"] - installcheck : obj.is_cs_install, - updatecheck : obj.is_cs_update, - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - - if(obj.is_cs_install == false || obj.is_cs_update == true){ - if(viewOptObj.defaultStorage != "web_kftc"){ - if(viewOptObj.storageList.indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - } else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - } - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - - if(code == 0){ - - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - } - }); - - - }else{ // end if(code == 0) - //setError("checkinstall 실패"); - - } - - }); - - }else{ // end if(status == 200) - - //setError("UI 초기화 실패"); - } - }); - }, - MakeIrosMultiData : function(param){ - magiclineController.setDefaultParam(param); - - ML4WebUI.init(function(status){ - - if(status == 200){ - - ML4WebCS.installCheck('main', function(code, obj){ - - if(code == 0 || ML4WebLog.getErrCode("CS_Manager_API_checkInstall")){ - - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList"), //["web(+a)","hdd","token","mobile","smartcert"] - installcheck : obj.is_cs_install, - updatecheck : obj.is_cs_update, - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - - if(obj.is_cs_install == false || obj.is_cs_update == true){ - if(viewOptObj.defaultStorage != "web_kftc"){ - if(viewOptObj.storageList.indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - } else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - } - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - if(code == 0){ - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - } - }); - - - }else{ // end if(code == 0) - //setError("checkinstall 실패"); - - } - - }); - - }else{ // end if(status == 200) - - //setError("UI 초기화 실패"); - } - }); - }, - - /** - * XMLSignature 국세청 XML 서명 함수 - */ - XMLSignature : function(param){ - - ML4WebUI.init(function(status){ - if(status == 200){ - //mobile - if(magiclineUtil.isMobile(magiclineUtil.getOS())){ - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList_m"), //["web(+a)","hdd","token","mobile","smartcert"] - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - - if(ML4WebApi.getProperty("storageList_m").indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - }else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - if(code == 0){ - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - } - }); - return; - } - - ML4WebCS.installCheck('main', function(code, obj){ - if(code == 0 || ML4WebLog.getErrCode("CS_Manager_API_checkInstall")){ - var viewOptObj = { - defaultStorage : ML4WebApi.getProperty("defaultStorage"), //"web" - storageList : ML4WebApi.getProperty("storageList"), //["web(+a)","hdd","token","mobile","smartcert"] - installcheck : obj.is_cs_install, - updatecheck : obj.is_cs_update, - browserInfo : ML4WebApi.get_browser_info(), - certOidfilter : param.certOidfilter, - certExpirefilter : param.certExpirefilter - }; - - if(obj.is_cs_install == false || obj.is_cs_update == true){ - if(viewOptObj.defaultStorage != "web_kftc"){ - if(viewOptObj.storageList.indexOf("web_kftc") >= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - } else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - } - } - - ML4WebUI.showCertDiv(viewOptObj, function(code, certObj){ - if(code == 0){ - ML4WebCert.proceedCert(param, certObj); - }else{ - ML4WebCert.certErrorHandler(code, certObj); - //setError("인증서 선택창 호출 실패"); - - } - }); - }else{ // end if(code == 0) - //setError("checkinstall 실패"); - - } - }); - }else{ // end if(status == 200) - //setError("UI 초기화 실패"); - - } - }); - }, - - MakeXMLEncryption : function(param){ - var certAPI = new JS_Crypto_API(); - var randomKey = certAPI.generateRandom(16); - var randomIv = certAPI.generateRandom(16); - var tbh = magiclineUtil.encodeUtf8Hex(param.msg); - - var xmlenc = certAPI.encrypt("SEED-CBC", randomKey.result, randomIv.result, tbh); - var xmlkey = certAPI.asymEncrypt(param.kmCert, magicjs.hex.decode(randomKey.resulthex), "rsa15"); - var xmlCipher = randomIv.resulthex.concat(xmlenc.HexResult); - var xmlCipherB = magicjs.base64.encode(magicjs.hex.decode(xmlCipher)); - - var requestObj = { - code : 0, - X509Certificate : param.kmCert, - Symmetrickey : xmlkey, - CipherValue : xmlCipherB, - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - }, - - /** - * 키보드 보안 - */ - keyBoardSecurityUse : function(param){ - - var layer = param.layer; - var strKeyBoard = param.strKeyboard; - var requestObj = {}; - - try{ - - if(layer=="UI"){ - - requestObj.code = 1; - requestObj.resultMsg = ""; - requestObj.isUtil = true; - - }else{ - - var resource_api = ML4WebApi.getResourceApi(); - var message = resource_api.makeCsJsonMessage("keyBoardSecurityUse", strKeyboard); - - resource_api.csAsyncCall(ML4WebApi.getProperty('CsUrl'), message, function(obj){ - requestObj.code = obj.ResultCode; - requestObj.resultMsg = obj; - requestObj.isUtil = true; - }); - } - - }catch(e){ - - requestObj.code = ML4WebLog.getErrCode("ML4Web_API_keyBoardSecurityUse"); - requestObj.resultMsg = { - "errCode":e.code, - "errMsg":e.message - }; - - } - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - - }, - /** - * tranx2PEM 데이터 생성 - */ - tranx2PEM : function(param){ - ML4WebLog.log("tranx2PEM() called... "); - var certObj = ML4WebCert.criteria.certObj; - var usercert = ""; - - if (typeof(certObj) == "object" && typeof(certObj.signcert) != "undefined") { - usercert = "-----BEGIN CERTIFICATE-----\n"; - for(var i=0; i= 0){ - ML4WebApi.setProperty("defaultStorage", "web_kftc"); - viewOptObj.defaultStorage = "web_kftc"; - } else{ - ML4WebApi.setProperty("defaultStorage", "web"); - viewOptObj.defaultStorage = "web"; - } - } - } - } - - // #2. 인증서 저장 UI 호출 - ML4WebUI.showSaveCertDiv(viewOptObj, certbag, certInfo, function(code2, obj2){ - - if(code2 == 0){ - - var cryptoApi = ML4WebApi.getCryptoApi(); - var certPw = obj2.certPw; - var selectedStorage = obj2.selectedStorage; - var storageOpt = obj2.storageOpt; - - if(obj2.selectedStorage == "web"){ - saveSelectedStg = obj2.selectedStorage; - }else{ - saveSelectedStg = obj2.storageOpt; - } - - // #3. 비밀번호 검증 - cryptoApi.prikeyDecrypt(certbag.signpri, certPw, function(code3, obj3){ - - if(code3 == 0){ - - var targetStorageRawIdx = {}; - // 옵션 key 이름을 아래와 같이 해줘야 CS 에러가 나지 않음 - targetStorageRawIdx.storageName = selectedStorage; - targetStorageRawIdx.storageOpt = new Object(); - targetStorageRawIdx.storageOpt.hddOpt = new Object(); - targetStorageRawIdx.storageOpt.hddOpt.diskname = storageOpt; - targetStorageRawIdx.storageCertIdx = ""; - - // #4. 인증서 저장 API 호출 - var certAPI = new Storage_API(); - certAPI.SaveCert(certbag, certPw, targetStorageRawIdx, function(code4, obj4){ - - if(code4 == 0){ - - ML4WebLog.log("SaveCertToStorage::"+targetStorageRawIdx.storageName+" SUCCESS"); - - // 인증서 저장시 선택한 매체 callback resultMsg에 추가 - obj4.selectedStg = saveSelectedStg; - - var requestObj = { - code : code4, - resultMsg : obj4 - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - - }else{ // end if (code4 == 0) - ML4WebLog.log("SaveCertToStorage::"+targetStorageRawIdx.storageName+" FAIL"); - ML4WebDraw.errorHandler("main", "인증서 저장에 실패했습니다.", $("#btn_confirm_saveCert"), null); - - } - - }); - }else if(code3 == 41401){ - // 1. 비번검증을 위해 사용하는 prikeyDecrypt 함수는 비번이 틀리면 41401을 리턴함.. 그 외에 정상적인것은 0 을 리턴. - // 2. 일반 서명 검증과 같이 비번이 틀리면 40701 로 떨궈서 횟수 제한 로직을 태우도록 한다. - ML4WebCert.certErrorHandler(40701, obj3); - - }else{ // end if (code3 == 0) - ML4WebCert.certErrorHandler(code3, obj3); - } - - }); - - }else{ // end if(code2 == 0) - alert('잘못된 접근입니다.'); - } - - }); - - }); - - }else{ // end if(code == 0 && obj != null) signcert 에 대응하는 인증서 정보가 없음 - - alert("인증서 정보 조회에 실패했습니다."); - var requestObj = { - code : 404, - resultMsg : false - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - - } - - }); - - }else{ // end if (status == 200) - alert("UI 초기화에 실패했습니다. 다시 시도하세요."); - return; - } - - }); - - }, - /** - * 사용자가 옵션을 변경하고 싶을때 사용하는 함수 - */ - setUserOption : function (param){ - var requestObj = { - code : 0, - resultMsg : "gggggg" - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - - magiclineController.setDefaultParam(param); - }, - - setDefaultParam : function (param){ - //기본값 저장해 놓기 - defaultopt.storageList = ML4WebApi.webConfig.storageList; - defaultopt.defaultStorage = ML4WebApi.webConfig.defaultStorage; - defaultopt.useVirtualKeyboard = ML4WebApi.webConfig.useVirtualKeyboard; - defaultopt.virtualKeyboardType = ML4WebApi.webConfig.virtualKeyboardType; - defaultopt.MobileOption = ML4WebApi.MobileOption; - defaultopt.ClientVersion = {}; - defaultopt.ClientVersion.Win = ML4WebApi.ClientVersion.Win; - defaultopt.ClientVersion.Mac = ML4WebApi.ClientVersion.Mac; - defaultopt.ClientVersion.Lin64 = ML4WebApi.ClientVersion.Lin64; - defaultopt.ClientVersion.Lin32 = ML4WebApi.ClientVersion.Lin32; - defaultopt.BROWSER_NOTICE_SHOW = ML4WebApi.webConfig.browserNoticeShow; - - //변경된 option으로 셋팅 - if(typeof (param.STORAGELIST) != 'undefined'){ - ML4WebApi.webConfig.storageList = param.STORAGELIST; - } - if(typeof (param.STORAGESELECT) != 'undefined'){ - ML4WebApi.webConfig.defaultStorage = param.STORAGESELECT; - } - if(typeof (param.USEVIRTUALKEYBOARD) != 'undefined'){ - ML4WebApi.webConfig.useVirtualKeyboard = param.USEVIRTUALKEYBOARD; - } - if(typeof (param.VIRTUALKEYBOARDTYPE) != 'undefined'){ - ML4WebApi.webConfig.virtualKeyboardType = param.VIRTUALKEYBOARDTYPE; - } - if(typeof (param.MobileOption) != 'undefined'){ - ML4WebApi.MobileOption = param.MobileOption; - } - if(typeof (param.WinClientVersion) != 'undefined'){ - ML4WebApi.ClientVersion.Win = param.WinClientVersion; - } - if(typeof (param.MacClientVersion) != 'undefined'){ - ML4WebApi.ClientVersion.Mac = param.MacClientVersion - } - if(typeof (param.Lin64ClientVersion) != 'undefined'){ - ML4WebApi.ClientVersion.Lin64 = param.Lin64ClientVersion; - } - if(typeof (param.Lin32ClientVersion) != 'undefined'){ - ML4WebApi.ClientVersion.Lin32 = param.Lin32ClientVersion; - } - if(typeof (param.BROWSER_NOTICE_SHOW) != 'undefined'){ - ML4WebApi.webConfig.browserNoticeShow = param.BROWSER_NOTICE_SHOW; - } - }, - - checkInstall : function(callback){ - ML4WebUI.init(function(status){ - if(status == 200){ - ML4WebCS.installCheck('main', function(code, obj){ - if(code == 0 || ML4WebLog.getErrCode("CS_Manager_API_checkInstall")){ - installcheck = obj.is_cs_install; - updatecheck = obj.is_cs_update; - - var requestObj = { - code : code, - resultMsg : obj - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - } - }); // end of ml4webCs.installCheck - } - }); - }, - - genHash : function(param){ - var algorithm = param.algorithm; - var msg = param.msg; - - ML4WebApi.ml4web_crypto_api.genHash(algorithm, msg, function(code, obj){ - if(code == 0){ - var requestObj = { - code : code, - resultMsg : obj - }; - - var requestStr = JSON.stringify(requestObj); - magiclineController.sendResultMessage(requestStr); - } - }); - - } -} - -/** - * 인증서 서명 관련 객체 - * certCallback - * proceedCert - * MakeSignData - * MakeSignatureData - * NTSCertAuth - * certErrorHandler - */ -var ML4WebCert = { - criteria : { - signType : "", // 서명 형식 (MakeSignData, MakeSignatureData, NTSCertAuth ...) - message : null, // 서명 원문 - signOpt : null, // 서명 옵션 - certObj : null, // 인증서 객체 - selectedStorage : "", // 선택된 저장매체 - vidType : "", // 본인인증 형식 (client, server ...) - idn : "" // 주민번호 - }, - /** - * 서명 결과 callback 함수 - */ - certCallback : function(resultCode, resultObj){ - - if(resultCode == 0) { - if(resultObj == null || $.isEmptyObject(resultObj)){ - ML4WebLog.log("["+ ML4WebCert.criteria.signType + " FAIL!!!]"); - } else { - // 서명 성공 - - ML4WebLog.log("["+ ML4WebCert.criteria.signType + " SUCCESS!!!]"); - - resultObj.isPosted = true; - resultObj.code = resultCode; - var request = JSON.stringify(resultObj); - magiclineController.sendResultMessage(request); - - //ML4WebUI.getDSOption().callback(0, resultObj); //signed data callback - } - }else{ - ML4WebLog.log("[ERROR!!! - "+resultCode+" ] errCode === " + resultObj.errCode + ", errMsg === " + resultObj.errMsg); - resultObj.isPosted = true; - resultObj.code = resultCode; - var request = JSON.stringify(resultObj); - - if (resultCode == -121) { - DSAlert.callbackAlert("main", resultObj, function(data){ - closeCertDialog('main'); - magiclineController.sendResultMessage(request); - }); - } else { - closeCertDialog('main'); - magiclineController.sendResultMessage(request); - } - } - }, - - /** - * 서명 진행 함수. MakeSignData, MakeSignatureData 가 signType 으로서 분기 - */ - proceedCert : function(param, certObj){ - - ML4WebLog.log("ML4WebCert.proceedCert() called... "); - - // 서명에 필요한 값들 맵핑 - this.criteria.signType = param.signType; - this.criteria.message = param.msg; - this.criteria.signOpt = param.signOpt; - this.criteria.vidType = param.vidType; - this.criteria.idn = param.idn; - this.criteria.certObj = certObj; - this.criteria.selectedStorage = certObj.selectedStg; - - if(this.criteria.selectedStorage == "mobile" && this.criteria.certObj.pw == "mobisign"){ - this.criteria.selectedStorage = "mobisign"; - } - if(this.criteria.selectedStorage == "smartcert" && ML4WebApi.getProperty("smartcert_type")!='C'){ - DS_SmartcertRequest(this.criteria.message); - }else{ - - try{ - // signType 이 서명 형식이면서 함수명이 됨 - var func = window["ML4WebCert"][this.criteria.signType]; - func(); - - }catch(e){ - //setError(signType + "서명 실패") - console.log(e.message); - } - - } - - }, - /** - * MakeSignData, MakeSignature : signOpt 값에 분기해서 signed 데이터, signature 데이터 생성 - * signOpt.ds_pki_sign_type == "sign" : SignatureData - */ - MakeSignData : function(callback){ - ML4WebLog.log("ML4WebCert.MakeSignData() called... "); - - // Mapping #1 : 서명에 필요한 기본 정보 맵핑 - var signOpt = ML4WebCert.criteria.signOpt; - var selectedStorage = ML4WebCert.criteria.selectedStorage; - var message = ML4WebCert.criteria.message; - - // Mapping #2 : 함수 맵핑 - var isStorageAPI = (selectedStorage == 'token' || selectedStorage == 'smartcert' || selectedStorage == 'smartcertnx' || selectedStorage == 'mobisign' || selectedStorage == 'unisign'); - var certAPI = null; - var certSignFunc = null; - - if(isStorageAPI){ - certAPI = new Storage_API(); - - if(signOpt.ds_pki_sign_type == "sign"){ - certSignFunc = certAPI.Signature; - }else{ - certSignFunc = certAPI.Sign; //window["Storage_API_"+selectedStorage]["Sign"]; - } - }else{ - certAPI = new JS_Crypto_API(); - - if(signOpt.ds_pki_sign_type == "sign"){ - certSignFunc = certAPI.signature; - }else{ - certSignFunc = certAPI.sign; //window["Storage_API_"+selectedStorage]["Sign"]; - } - } - - - // Mapping #3 : 각 서명에 필요한 파라미터 값 맵핑, 맵핑된 함수 호출 - if(isStorageAPI){ - - var storageRawCertIdx = ML4WebCert.criteria.certObj.rowData.storageRawCertIdx; - var option = ML4WebCert.criteria.signOpt; - var passwd = ML4WebCert.criteria.certObj.pw; - - if(selectedStorage == 'unisign'){ - storageRawCertIdx.certObj = ML4WebCert.criteria.certObj.certObj; - } - - function certStorageSignCallback(code, obj){ - - if (code == 0){ - //선택된 storage 정보 보내기 - obj.selectStorage = selectedStorage; - var encCertIdxStr = ""; - if (ML4WebApi.webConfig.libType == 0 || selectedStorage =='smartcert' || selectedStorage =='mobile' && selectedStorage == 'mobisign'){ - var rawCertIdxStr = JSON.stringify(obj); - encCertIdxStr = rawCertIdxStr; - } else{ - var rawCertIdxStr = JSON.stringify(obj.storageCertIdx); - - if (selectedStorage == "pfx"){ - encCertIdxStr = ML4WebApi.dsencrypt(rawCertIdxStr); - }else { - encCertIdxStr = rawCertIdxStr; - } - } - - for (var attr in obj.certInfo) { - if (obj.certInfo.hasOwnProperty(attr)) { - if (!(attr == "storageRawCertIdx")) { - ML4WebCert.criteria.certObj.rowData[attr] = obj.certInfo[attr]; - } - } - } - - if (typeof(ML4WebCert.criteria.certObj.signcert) == "undefined"){ - ML4WebCert.criteria.certObj.signcert = obj.certbag.signcert; - } - - obj.signcert = ML4WebCert.criteria.certObj.signcert; - - - // NTSCertAuth, SignatureData 의 경우 - if (typeof callback ==="function"){ - - callback(code, obj); - - }else if(ML4WebCert.criteria.vidType == "client"){ - - /* - certAPI.getVIDRandom(storageRawCertIdx, passwd, function(code2, data2){ - obj.vidRandom = data2.VIDRandom; - ML4WebCert.certCallback(code2, obj); - }); - */ - magiclineController.getVIDRandom(ML4WebCert.certCallback, obj); - - }else if(ML4WebCert.criteria.vidType == "server" && ML4WebCert.criteria.idn != ""){ - /* - certAPI.getVIDRandomHash(storageRawCertIdx, passwd, ML4WebCert.criteria.idn, function(code2, data2){ - obj.VIDRandomHash = data2.VIDRandomHash; - ML4WebCert.certCallback(code2, obj); - }); - */ - magiclineController.getVIDRandomHash(ML4WebCert.certCallback, obj); - - }else{ - ML4WebCert.certCallback(code, obj); - } - - }else{ // end if (code == 0) - ML4WebCert.certErrorHandler(code, obj); - } - } // end function certSignCallback(code, obj) - - certSignFunc(storageRawCertIdx, option, passwd, message, certStorageSignCallback); - - }else{ // end if(isStorageAPI) - - // web, hdd - var b64cert = ML4WebCert.criteria.certObj.signcert; - var b64priKey = ML4WebCert.criteria.certObj.signpri; - var sCertPassword = ML4WebCert.criteria.certObj.pw; - var msg = new Object(); - var callbackResult = new Object(); - - msg.idx = 0; - - if (typeof(message) == 'object' && typeof(message.length) != 'undefined') { //JSON Array - msg.msg = new Array(); - - for (var i=0; i=0) { - kcdsaflag = 1; - SignatureMethodKCDSA = SignatureMethodKCDSASha256; - DigestMethodKCDSA = DigestMethodKCDSASha256; - } - - if (kcdsaflag == 1 && typeof(ML4WebCert.criteria.message) == 'object' && typeof(ML4WebCert.criteria.message.length) != 'undefined') { //JSON Array - for (var i=0; i= ML4WebApi.webConfig.passwordCountLimit - 1 ){ - ML4WebApi.webConfig.passwordFailCount = 0; - ML4WebCert.certCallback(-121, $.i18n.prop("ES124").replace( "count_limit" , ML4WebApi.webConfig.passwordCountLimit)); - return; - }else{ - if(code==30011 || code==40701 || code==2004 || code==30016){ - $("#input_cert_pw").empty(); - ML4WebApi.webConfig.passwordFailCount += 1; - ML4WebDraw.errorHandler("main", $.i18n.prop("ES121").replace( "count_limit" , ML4WebApi.webConfig.passwordCountLimit).replace( "count", ML4WebApi.webConfig.passwordCountLimit - ML4WebApi.webConfig.passwordFailCount), $("#input_cert_pw"), null); - return; - } - } - } - }else if(obj.errCode == 30058){ - ML4WebDraw.errorHandler("main", $.i18n.prop("ES027"), $("#input_cert_pw"), null); - return; - }else if(obj.errCode == 30012){ - ML4WebDraw.errorHandler("main", $.i18n.prop("ER402"), $("#input_cert_pw"), null); - return; - }else if(obj.errCode == 30055){ - - ML4WebDraw.confirm( ML4WebDraw.MSG_SMT_FAIL, function( code, obj ){ - $("#btn_common_confirm").unbind(); - $("#btn_common_cancle").unbind(); - if( code == 0 ){ - // 서명 재시도 - ML4WebCert.criteria.signOpt.errCode = 30055; - var func = window["ML4WebCert"][ML4WebCert.criteria.signType]; - func(); - - }else{ - ML4WebDraw.errorHandler("main", $.i18n.prop("ES027"), $("#input_cert_pw"), null); - return; - } - }); - }else if(obj.errCode == 30057){ - //라온스마트인증 설치 안되어 있을때 라온스마트인증 설치페이지 띄우기 - var errMsg = obj.errMsg; - - var raonsitecode = ML4WebApi.getProperty('cs_smartcert_raonsitecode'); - var smartCertURL = ''; - - if(errMsg != null && errMsg != "" && errMsg == "CLP_SetSmartCertInfo"){ - smartCertURL = ML4WebApi.getProperty('cs_smartcert_installurl'); - } else if (errMsg == "") { - smartCertURL = ML4WebApi.getProperty('cs_smartcert_installurl'); - } else{ - smartCertURL = errMsg+'?sitecode='+raonsitecode; - } - ML4WebDraw.confirm( ML4WebDraw.MSG_SMT_INSTALL, function( code, obj ){ - $("#btn_common_confirm").unbind(); - $("#btn_common_cancle").unbind(); - if( code == 0 ){ - var width = 500; - var height = 380; - var top = (screen.availHeight/2) - (height/2); - var left =(screen.availWidth/2) - (width/2); - - window.open(smartCertURL,'_blank','scrollbars=no,toolbar=no,resizable=no, width='+ width +', height='+ height +', top=' + top + ', left=' + left); - } - }); - }else if(obj.errCode == 30070){ // mobisign - ML4WebDraw.confirm(ML4WebDraw.MSG_MOB_SIGN_INSTALL, function( code, obj ){ - $("#btn_common_confirm").unbind(); - $("#btn_common_cancle").unbind(); - if( code == 0 ){ - var mobisignURL = ML4WebApi.getProperty('cs_mobisign_popupurl'); - var width = 564; - var height = 422; - var top = (screen.availHeight/2) - (height/2); - var left =(screen.availWidth/2) - (width/2); - - window.open(mobisignURL,'_blank','scrollbars=no,toolbar=no,resizable=no, width='+ width +', height='+ height +', top=' + top + ', left=' + left); - } - }); - }else if(obj.errCode == 30071){ // mobisign - ML4WebDraw.errorHandler('main',ML4WebDraw.MSG_MOB_SIGN_CANCEL); - }else if(obj.errCode == 30072){ // mobisign - ML4WebDraw.confirm(ML4WebDraw.MSG_MOB_SIGN_UPDATE,function(code,obj){ - $("#btn_common_confirm").unbind(); - $("#btn_common_cancle").unbind(); - if( code == 0 ){ - var mobisignURL = ML4WebApi.getProperty('cs_mobisign_popupurl'); - var width = 564; - var height = 422; - var top = (screen.availHeight/2) - (height/2); - var left =(screen.availWidth/2) - (width/2); - - window.open(mobisignURL,'_blank','scrollbars=no,toolbar=no,resizable=no, width='+ width +', height='+ height +', top=' + top + ', left=' + left); - } - }) - }else if(code == 12100){ - if(obj.errCode == 31){ - ML4WebDraw.errorHandler("main", $.i18n.prop("ES031")); - }else if(obj.errCode == 32){ - ML4WebDraw.errorHandler("main", $.i18n.prop("ER119")); - } - } else if(code == ML4WebLog.getErrCode("Storage_kftc")){ - if (typeof(obj) == "object") { - if (obj.code == 2211) { - if (typeof(obj.origin) == "undefined"){ - obj.maxFailCount = 5; - } else { - obj.maxFailCount = 10; - } - - if(obj.failCount>=obj.maxFailCount){ - ML4WebCert.certCallback( -121, $.i18n.prop("ES123").replace( "count" , obj.maxFailCount), $("#input_cert_pw")); - }else{ - ML4WebDraw.errorHandler("main", $.i18n.prop("ES122").replace( "count_limit" , obj.maxFailCount).replace( "count", obj.failCount), $("#input_cert_pw"), null); - } - } else if (obj.code == 2212) { - if (typeof(obj.origin) == "undefined"){ - obj.maxFailCount = 5; - } else { - obj.maxFailCount = 10; - } - - ML4WebCert.certCallback( -121, $.i18n.prop("ES123").replace( "count" , obj.maxFailCount), $("#input_cert_pw")); - } - } else if (typeof(obj) == "string") { - ML4WebDraw.errorHandler("main", obj); - } else { - ML4WebDraw.errorHandler("main", $.i18n.prop("ES030")); - } - }else if(code == 'E1000'){ //스마트인증nx 취소버튼 처리 - ML4WebDraw.errorHandler("main", $.i18n.prop("ES027"), $("#input_cert_pw"), null); - return; - } - else{ - ML4WebDraw.errorHandler("main", $.i18n.prop("ES030")); - } - } -} - - -/** - * 공통, 유틸성의 함수들을 모아둔 객체 - */ -var magiclineUtil = { - criteria : { - base64_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - //whiteList : ["localhost", "127.0.0.1", lgUrl] - }, - - encodeUtf8Hex : function(str){ - return unescape(encodeURIComponent(str)); - }, - decodeUtf8Hex : function(str){ - return decodeURIComponent(escape(str)); - }, - base64encode : function(input){ - - if(input.length < 1){ - // setError(input 데이터가 없음 (인코드) ); - return; - } - - var output = ""; - var chr1, chr2, chr3, enc1, enc2, enc3, enc4; - var i = 0; - - while (i < input.length) { - - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - output = output + - this.criteria.base64_keyStr.charAt(enc1) + this.criteria.base64_keyStr.charAt(enc2) + - this.criteria.base64_keyStr.charAt(enc3) + this.criteria.base64_keyStr.charAt(enc4); - } - - return output; - }, - base64decode : function(input){ - - if(input.length < 1){ - // setError(input 데이터가 없음(디코드) ); - return; - } - - var output = ""; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0; - - input = input.replace(/[^A-Za-z0-9+/=]/g, ""); - while (i < input.length) - { - enc1 = this.base64_keyStr.indexOf(input.charAt(i++)); - enc2 = this.base64_keyStr.indexOf(input.charAt(i++)); - enc3 = this.base64_keyStr.indexOf(input.charAt(i++)); - enc4 = this.base64_keyStr.indexOf(input.charAt(i++)); - - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - - output = output + String.fromCharCode(chr1); - - if (enc3 != 64) { - output = output + String.fromCharCode(chr2); - } - if (enc4 != 64) { - output = output + String.fromCharCode(chr3); - } - } - - return output; - }, - encodeUtf8andBase64 : function(input){ - // TODO: deprecate: "Deprecated. Use util.binary.base64.encode instead." - var _base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - var line = ''; - var output = ''; - var chr1, chr2, chr3; - var i = 0; - - input = unescape(encodeURIComponent(input)); - //R = (n + 2 - ((n + 2) % 3)) / 3 * 4 - maxline = (input.length + 2 - ((input.length + 2) % 3)) / 3 * 4; - - while(i < input.length) { - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - // encode 4 character group - line += _base64.charAt(chr1 >> 2); - line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4)); - - if(isNaN(chr2)) { - line += '=='; - }else { - line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6)); - line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63); - } - - if(maxline && line.length > maxline) { - output += line.substr(0, maxline) + '\r\n'; - line = line.substr(maxline); - } - } - - output += line; - - return output; - }, - /*setCookie : function(cname, cvalue, exdays){ - - var d = new Date(); - - d.setTime(d.getTime() + (exdays*300000)); - var expires = "expires=" + d.toUTCString(); - document.cookie = cname + "=" + cvalue + "; " + expires; - - },*/ - getTimeStamp : function(){ - var d = new Date(); - var s = - this.leadingZeros(d.getFullYear(), 4) + '-' + - this.leadingZeros(d.getMonth() + 1, 2) + '-' + - this.leadingZeros(d.getDate(), 2) + ' ' + - this.leadingZeros(d.getHours(), 2) + ':' + - this.leadingZeros(d.getMinutes(), 2) + ':' + - this.leadingZeros(d.getSeconds(), 2); - - return s; - }, - leadingZeros : function(n, digits){ - var zero = ''; - n = n.toString(); - - if (n.length < digits) { - for (i = 0; i < digits - n.length; i++){ - zero += '0'; - } - } - return zero + n; - }, - getOS : function(){ - try{ - var OsVersion = navigator.userAgent; - OsVersion = OsVersion.toUpperCase(); - if( OsVersion.indexOf("NT 5.1") != -1 ) return "windows XP"; - else if( OsVersion.indexOf("NT 6.0") != -1 ) return "windows vista"; - else if( OsVersion.indexOf("NT 6.1") != -1 ) return "windows 7"; - else if( OsVersion.indexOf("NT 6.2") != -1 ) return "windows 8"; - else if( OsVersion.indexOf("NT 6.3") != -1 ) return "windows 8.1"; - else if( OsVersion.indexOf("NT 10.0") != -1 ) return "windows 10"; - else if( OsVersion.indexOf("IPAD") != -1 ) return "IOS"; - else if( OsVersion.indexOf("IPHONE") != -1 ) return "IPHONE"; - else if( OsVersion.indexOf("ANDROID") != -1 ) return "Android"; - else if( OsVersion.indexOf("BLACKBERRY") != -1 ) return "BlackBerry"; - else if( OsVersion.indexOf("MAC") != -1 ) return "MAC"; - else if( OsVersion.indexOf("SYMBIAN") != -1 ) return "Symbian"; - else if( OsVersion.indexOf("UBUNTU") != -1 ){ - if( OsVersion.indexOf("86_64") != -1 ){ - return "LINUX64_UBUNTU64"; - }else{ - return "LINUX32_UBUNTU32"; - } - }else if( OsVersion.indexOf("FEDORA") != -1 ){ - if( OsVersion.indexOf("86_64") != -1 ){ - return "LINUX64_FEDORA64"; - }else{ - return "LINUX32_FEDORA32"; - } - } - else if( OsVersion.indexOf("LINUX") != -1 ){ - if( OsVersion.indexOf("86_64") != -1 ){ - return "LINUX64"; - }else{ - return "LINUX32"; - } - } - else return "Unknown"; - }catch( ex ) { - return "Unknown"; - } - }, - readLength : function(b){ - var b2 = b.getByte(); - if(b2 === 0x80) { - return undefined; - } - // see if the length is "short form" or "long form" (bit 8 set) - var length; - var longForm = b2 & 0x80; - if(!longForm) { - // length is just the first byte - length = b2; - } else { - // the number of bytes the length is specified in bits 7 through 1 - // and each length byte is in big-endian base-256 - length = b.getInt((b2 & 0x7F) << 3); - } - return length; - }, - readValue : function(tag, bytes){ - if(bytes.length() < 2) { - throw new Error('Too few bytes to parse DER.'); - } - if (bytes.getByte() != tag) { - throw new Error('Invalid format.'); } - var length = readLength (bytes); - return bytes.getBytes(length); - }, - isMobile : function(){ - - var currentOS = this.getOS(); - if(currentOS=="Android" || currentOS=="IPHONE" || currentOS=="IPAD" || currentOS=="BlackBerry" || currentOS == "IOS"){ - return true; - }else{ - return false; - } - } - -} - -if(window.addEventListener){ - window.addEventListener("message", magiclineController.receiveMessage, false); -}else if (window.attachEvent){ - window.attachEvent("onmessage", magiclineController.receiveMessage); -} - - -/////////////////////////////////////////////////////////////////////// -//CS 설치 관련.... -/////////////////////////////////////////////////////////////////////// - /* function StartCS(){ - var requestObj = { - key : "StartCS", - data : "" - }; - } */ - /*function startCSInstall(){ - var requestObj = { - key : "startCSInstall", - data : {} - } - - var requestStr = JSON.stringify(requestObj); - - //- cross domain, send data - //top.window.postMessage(requestStr, "https://"+lgUrl+":8443"); - sendPostMessage(requestStr); - }*/ - - /*function startCSUpdate(){ - var requestObj = { - key : "startCSUpdate", - data : {} - } - - var requestStr = JSON.stringify(requestObj); - - //- cross domain, send data - //top.window.postMessage(requestStr, "https://"+lgUrl+":8443"); - sendPostMessage(requestStr); - }*/ - - // TODO : 쓰는지 확인 필요 - function installPageUrl(url){ - console.log("installPageUrl called...."); - var requestObj = { - key : "installPageUrl", - data : {url:url} - } - - var requestStr = JSON.stringify(requestObj); - - //- cross domain, send data - //top.window.postMessage(requestStr, "https://"+lgUrl+":8443"); - sendPostMessage(requestStr); - //window.parent.postMessage(requestStr, url); - } -// -//--------------------------------------------------------------------- - - - - -//--------------------------------------------------------------------- - -/////////////////////////////////////////////////////////////////////// -//To Mlcert -/////////////////////////////////////////////////////////////////////// - function getBackupCertListFromMlcert(){ - // console.log("##############[Child] getBackupCertListFromMlcert() called..."); - sendPostMessageToMlcert("reqGetCertList", ""); - } - - function setBackupCertListToMlcert(str){ - // console.log("##############[Child] setBackupCertListToMlcert() called..."); - sendPostMessageToMlcert("reqSetCertList", str); - } - - function sendPostMessageToMlcert(arg1, arg2){ - // console.log("##############[Child] sendPostMessageToMlcert() called..."); - var mlcertDomain = "https://"+mlcertUrl; - - var iframeWindow = document.getElementById('dsmlcert').contentWindow; - - var requestObj = { - key : arg1, - data : arg2 - // ,browser : ML4WebApi.getProperty('browser') - }; - var requestStr = JSON.stringify(requestObj); - // console.log("##############[Child] sendPostMessageToMlcert() called... requestStr = " + requestStr); - - iframeWindow.postMessage(requestStr, mlcertDomain); - } -// -//--------------------------------------------------------------------- - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_Config.js b/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_Config.js deleted file mode 100644 index 7c985e2c..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_Config.js +++ /dev/null @@ -1,204 +0,0 @@ -var ML_Default_Set = { - - /*[변경] 으로 변경이 필요한 내용을 검색 한다. 3곳 */ - - - //1.필수설정변수--------------------------------------------------------- - //1.적용할 사이트에서 사용하는 변수 값 지정. - protocolType : location.protocol.indexOf(":")<=-1?location.protocol+=":":location.protocol, // "http:" 또는 "https:" - // 로컬 - cpUrl : location.port != ""?location.hostname+":"+location.port:location.hostname, - - /*[변경].1.*/ - mlMainUrl : location.port != ""?location.hostname+":"+location.port:location.hostname, //MagicLine4 Web 기본 URL - - mlDirPath : "/MagicLine4Web/ML4Web/", - - // SSL - //cpUrl : "mlweb.dreamsecurity.com:18443", - //mlMainUrl : "ml4web.dreamsecurity.com:8443", //MagicLine4 Web 기본 URL - //mlDirPath : "/ML4-Web/ML4Web/", - - - //2.기본설정변수------------------------------------------------------------ - //2.인증서 선택창에서 사용하는 변수 값 지정. - mlCertUrl : "mlcert.dreamsecurity.com", //MLCert 기본 URL(로컬스토리지 인증서 백업목적) - cryptoType : 1, //암호라이브러리 선택 (0=CS, 1=JS, 2=ETC...) - cs_install_type : "download", //설치페이지 사용여부 true/false/download (바로다운로드) - smartcert_type : "C" //C or JS -} - - -var ConfigObject = { - - //3.인증서 선택창 UI 관련 설정 변수를 정의------------------------------------------------------------ - //1. MagicLine4 Web - ProtocolType : ML_Default_Set.protocolType, // protocolType - DirPath : ML_Default_Set.mlDirPath, // MagicLine4Web 디렉토리 - BaseURL : ML_Default_Set.mlMainUrl, //MagicLine4Web 기본 URL - MLCertURL : ML_Default_Set.mlCertUrl, //MLCert 기본 URL(로컬스토리지 인증서 백업목적) - isUseMLCert : false, //로컬스토리지 인증서 백업 기능 사용 여부 - STORAGELIST : ["web","hdd","token","mobile","smartcertnx"], //지원 스토리지 리스트 ( 순서대로 UI 그림, JSON) - STORAGELIST_M : ["web"], //지원 스토리지 리스트 (모바일) - STORAGELISTMGMT : ["web","hdd"],//지원 스토리지 리스트 (인증서 관리창) - saveStorageList : ["web","hdd"],//인증서 저장기능 지원 가능 스토리지 리스트 - STORAGESELECT : "hdd", //인증서 선택창 초기화 할 때, 기본 선택 스토리지 - CRYPTO : ML_Default_Set.cryptoType, //암호라이브러리 선택 (0=CS, 1=JS, 2=ETC...) - banner : true, //인증서 선택창 배너 이미지 노출 여부 - adminBanner : true, //인증서 관리창 배너 이미지 노출 여부 - logType : "console", //"console", "alert" or no log - ServiceID : "MagicLineWeb", - CsServiceID : "NTSMagicLine", - SessionID : "", - MessageID : "", - CsUrl : "https://127.0.0.1:42235", - - /*[변경].2.*/ - //AuthKey : "", - //AuthKey : "jSpmzL8nBug+z17TmjRYKAYavmHzplcGPibnrJrmAjO/H2eyqfm+3bGYKlz+3aAU", - //localhost|119.193.215.98|222.231.43.189|127.0.0.1|129.168.0.34 - //AuthKey : "woySwgzcPcGliP25pt1eqMa5bLpUqMY1frnGnnA9akN+dYxCYetZ59mfHll8TKth6gMj+Gt5rtiv+xiyqwsqwXC7TneH2M1SHJcfRBqxchU=", - //192.168.0.34 - //AuthKey : "2xfdu0++fipvVCD8jTexEqm0p33c7quI4mom067JtgY=", - //192.168.0.34|119.193.215.98 - //AuthKey : "+lsJr4qtnpP0YnqbTMcghbWhewMLZzFjWa7IJl9gGERaNWZX46zRbT/rHDTuvs+B", - //localhost|192.168.0.34|119.193.215.98|adr.copyright.or.kr - AuthKey : "fkW02kPqdYlbct2wEBWRBXC+q8c7U0+IZVfIlJnVAVQDZ4xYDQ2MApu4vY9BUYzZ5Zm5IRxCLgDMhTbDyfxCl/1zKM/b2LaUcCuO5IuI8E8=", - - - //CsUrl : "https://10.10.30.156:42235", - PfxExportDownloadUrl : ML_Default_Set.protocolType + "://" + ML_Default_Set.cpUrl + ML_Default_Set.mlDirPath + "install_bin/pfxexport/MagicPFXExport.exe", - - //-- UI - passwordCountLimit : 10, //TODO-비밀번호 오류 카운트. 횟 수 초과시 정책에 따라 조치. - SIGN_OPTION : {ds_pki_sign:['OPT_USE_CONTNET_INFO'], ds_pki_rsa:'rsa15', ds_pki_hash:'sha256'}, // 서명 기본 옵션 - ENVELOP_OPTION : {ds_pki_rsa:'rsa15'}, // Envelop 기본 옵션 - SIGNENVELOP_OPTION : {ds_pki_sign:['OPT_USE_CONTNET_INFO'], ds_pki_rsa:'rsa15', ds_pki_algo:'SEED-CBC'}, // Sign&Envelop 기본 옵션 - ASYMENCRYPT_OPTION : {ds_pki_rsa:'rsa15'}, - ASYMDECRYPT_OPTION : {ds_pki_rsa:'rsa15'}, - LANGUAGE : "ko", //언어팩 옵션 - USEVIRTUALKEYBOARD : false, //가상키보드 사용 여부 true,false - VIRTUALKEYBOARDTYPE : "", //가상키보드 사용 여부 NSHC,RAON,INCA,DREAM - - BROWSER_NOTICE_SHOW : true, // 브라우저 저장소 클릭시 안내 이미지 출력 여부 true, false - BROWSER_NOTICE_IMG : true, // 브라우저 인증서 사용 안내문 출력 시 이미지는 true, 텍스트는 false - - eOption : false, //true or false - kOption : "", // "", "dream" - - //Client version - WinClientVersion : "1.0.0.20", - MacClientVersion : "1.0.0.13", - Lin64ClientVersion : "1.0.0.12", - Lin32ClientVersion : "1.0.0.12", - - MobileOption : ["ubikey"], // ["ubikey", "mobisign", "dreamCS"] - - //2. CS 연동 관련 - CS_PORT : "42235", // CS PORT("42235", "55533") - CS_PORT_SELECT : "42235", // CS PORT 선택 - CS_UR : "https://127.0.0.1:", - //CS_UR : "https://10.10.30.156:", - CS_DOWNLOAD_WIN : ML_Default_Set.protocolType + "//" + ML_Default_Set.mlMainUrl + ML_Default_Set.mlDirPath + "install_bin/magicline4nx_setup.exe", //윈도우용 CS 설치 파일 주소 - CS_DOWNLOAD_MAC : ML_Default_Set.protocolType + "//" + ML_Default_Set.mlMainUrl + ML_Default_Set.mlDirPath + "install_bin/MagicLine4NX.pkg", //MAC용 CS 설치 파일 주소 - CS_DOWNLOAD_LINUX_FEDORA64 : ML_Default_Set.protocolType + "//" + ML_Default_Set.mlMainUrl + ML_Default_Set.mlDirPath + "install_bin/magicline4nx_x86_64.rpm", //LINUX(Fedora/openSUSE) 64bit CS 설치 파일 주소 - CS_DOWNLOAD_LINUX_FEDORA32 : ML_Default_Set.protocolType + "//" + ML_Default_Set.mlMainUrl + ML_Default_Set.mlDirPath + "install_bin/magicline4nx_i386.rpm", //LINUX(Fedora/openSUSE) 32bit CS 설치 파일 주소 - CS_DOWNLOAD_LINUX_UBUNTU64 : ML_Default_Set.protocolType + "//" + ML_Default_Set.mlMainUrl + ML_Default_Set.mlDirPath + "install_bin/magicline4nx_x86_64.deb", //LINUX(Debian/Ubuntu) 64bit CS 설치 파일 주소 - CS_DOWNLOAD_LINUX_UBUNTU32 : ML_Default_Set.protocolType + "//" + ML_Default_Set.mlMainUrl + ML_Default_Set.mlDirPath + "install_bin/magicline4nx_i386.deb", //LINUX(Debian/Ubuntu) 32bit CS 설치 파일 주소 - //CS_AUTHSERVER_URL : "https://ml4web.dreamsecurity.com:8443/ML4-Web/ServerPage/jsp/", //인증서버 URL - CS_AUTHSERVER_URL : location.protocol + '//' + location.host + ML_Default_Set.mlDirPath + "ServerPage/jsp/", //인증서버 URL - CS_AUTHSERVER_CERT : "MIIEgjCCA+ugAwIBAgICB6AwDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCS1IxFjAUBgNVBAoTDURyZWFtU2VjdXJpdHkxDjAMBgNVBAsTBVdpcmVkMQ0wCwYDVQQDEwRST09UMB4XDTA0MDUxNzA2MDMwMloXDTA1MDUxNzA2MDMwMlowTjELMAkGA1UEBhMCS1IxFjAUBgNVBAoTDURyZWFtU2VjdXJpdHkxDjAMBgNVBAsTBVdpcmVkMRcwFQYDVQQDDA5BTllfMDAwMDAwMTM3NDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA8oiK9s24U15Zc27yPSXvruwlgsngL9+dGiALMSG0ug3U9yUdJ+NqgBfMTvu2LE2EgoVObbwEWfdMCE8xmjlWVJzQRQATtvlGHiKXvAIwSjZq/gBIKLdKYmHQxBJk9NNE1nhHE6u0dlvVulNpDqO8hPj0P0OplWxHFZtEBpkSsDECAwEAAaOCAncwggJzMGwGA1UdIwRlMGOAFIwdeyOqAicpnNHLlhqKYmCRRZpBoUikRjBEMQswCQYDVQQGEwJLUjEWMBQGA1UEChMNRHJlYW1TZWN1cml0eTEOMAwGA1UECxMFV2lyZWQxDTALBgNVBAMTBFJPT1SCAQMwHQYDVR0OBBYEFL+l1vv7eUOivC/pmfP4xbZtjJW3MA4GA1UdDwEB/wQEAwIAMDB7BgNVHSAEdDByMHAGCiqDGoyaRAUCPAEwYjBgBggrBgEFBQcCAjBUMBQaDURyZWFtU2VjdXJpdHkwAwIBARo8VGhpcyBDZXJ0aWZpY2F0ZSBpcyBnZW5lcmF0ZWQgYnkgRHJlYW1zZWN1cml0eSBmb3IgQ0Fvc19YNTA5MCEGA1UdEQQaMBigFgYJKoMajJpECgEBoAkwBwwDQU5ZMAAwgecGA1UdHwSB3zCB3DBRoE+gTYZLbGRhcDovL2Nhb3MuZHJlYW1zZWN1cml0eS5jb206Mzg5L2NuPWNybDExZHAyLG91PVdpcmVkLG89RHJlYW1TZWN1cml0eSxjPUtSMIGGoIGDoIGAhn5odHRwOi8vY2Fvcy5kcmVhbXNlY3VyaXR5LmNvbS9jcmw/aWg9b0N4RlRlMWFtZGdoV3NrbnlGdmt2ZG4yRG9nJTNkJmRwPWNuJTNkY3JsMTFkcDIlMmNvdSUzZFdpcmVkJTJjbyUzZERyZWFtU2VjdXJpdHklMmNjJTNkS1IwSgYIKwYBBQUHAQEEPjA8MDoGCCsGAQUFBzABhi5odHRwOi8vY2Fvcy5kcmVhbXNlY3VyaXR5LmNvbToxNDIwMy9PQ1NQU2VydmVyMA0GCSqGSIb3DQEBBQUAA4GBACYZfFj6/Ixe3VViMpURAyYX7zBnoUDbCputCTuETzWMEuAc7/ciMGrnGVXitbRmpFlRINWnvDbrwHGF88xCRM1MTzEbLaBcDIMMCvIerUSW2/ocwd/vY6RRN38RAvVuYyNogbphVPaHJv85ivmdT47F7WcvyTz2XCAOJY5QJnJ5", - CS_TIMEOUT : 60, //CS Timeout 시간 / 분단위 - CS_URL_SCHEME : "ntsmagiclinenp://", - CS_INSTALL_TYPE : ML_Default_Set.cs_install_type, //설치페이지 사용여부 true/false/download (바로다운로드) - CS_INSTALL_PAGE_URL : ML_Default_Set.protocolType + "://" + ML_Default_Set.cpUrl + ML_Default_Set.mlDirPath + "install_page/ML4Web_Install.html", - - //4. 인증서 필터 - CERT_BASE_URL : "", // JSON 인증서 저장 경로 (브라우저 인증서) - CERT_BASE_DIR : "", // 인증서 억세스 기본 DIR - (JSON형태, CS HDD 일때만 허용) - CERT_FILTER_TYPE : 15, // '1':GPKI, '2':NPKI, '4':MPKI, '8:'PPKI(사설인증서) - CERT_FILTER_USE_TYPE : "", // '1':서명용,암호화용, '2':서명용+암호화용 모두 있는경우만 - //CERT_FILTER_EXPIRE : false, // false:만료 인증서 보여주기, true:보여주지 않기 - //CERT_FILTER_OID : "", // OID 필터 (array)//1.2.410.100001.2.2.1,1.2.410.200005.1.1.4 - CERT_OID_NAME : "", // OID , OID 이름 (JSON) ex)1.2.410.200005.1.1.4 - CERT_ISSUER_NAME : "", // 인증서 발급사 매칭 (JSON) ex)signGATE CA2 - - //unused path - CERT_FILTER_PATH : [], // 기본 [], [ "Program Files" ] : Program Files 경로 제외, [ "GPKI" ] : GPKI 경로 제외, [ "Users" ] : Users 경로 제외 - - //5. 스마트인증CS 옵션 - SMARTCERT_TYPE : ML_Default_Set.smartcert_type, //C or JS - CS_SMARTCERT_ServerIP : "center.smartcert.kr", // 중계서버 IP - CS_SMARTCERT_ServerPort : "443", // 중계서버 Port - CS_SMARTCERT_SiteDomain : "www.dreamsecurity.com", // 도메인정보 - CS_SMARTCERT_InstallURL : "http://ids.smartcert.kr", - CS_SMARTCERT_SIZE : "width=500, height=380", - CS_SMARTCERT_Filter_Expired : "1", - CS_SMARTCERT_Filter_OID : "NONE", - CS_SMARTCERT_Filter_CA : "NONE", - CS_SMARTCERT_Filter_User : "NONE", - CS_SMARTCERT_HideTokenList : false, // 보안토큰 목록에서 스마트인증 숨기기 - CS_SMARTCERT_SignOrgView : false, // false:서명원문보여주지않기, true:서명원문보여주기 - CS_SMARTCERT_RaonSiteCode : 609100014, // 라온사이트코드 - - // 스마트인증NX 옵션 - WEB_SMARTCERT_MultisignYn : 'N', - WEB_SMARTCERT_Subject : '', - WEB_SMARTCERT_Issuer : '', - WEB_SMARTCERT_Serial : '', - WEB_SMARTCERT_Validate : true, - WEB_SMARTCERT_URL : "", // "https://cdn.smartcert.kr/SmartCertWeb/API/js/jSmartCertNP2.js" - - //20200324 token filter - TOKEN_FILTER : [ "SmartSign" ], - - //6. UBIKEY 옵션 - CS_PHONE_TYPE : "", // 휴대폰 종류 - CS_UBIKEY_Version : "1.2.5.8", // 휴대폰 인증서 저장서비스 버전 - CS_UBIKEY_PopupURL : "http://www.ubikey.co.kr/infovine/download.html", // UBIKEY 다운로드 주소 - CS_UBIKEY_wParam : "INFOVINE", // UBIKEY 설정 값 - CS_UBIKEY_lParam : "DREAMSECURITY|KINGS_INFOVINE", // UBIKEY 설정 값 - CS_UBIKEY_URL : "", // /UBikeyWeb/js/infovineHTML.js - - //7. MobileKey 옵션 - CS_MOBILEKEY_PopupURL : "http://www.mkey.kr/popup/mkey.htm", - - //8. 스마트카드 - CS_SMARTCARD_TYPE : "", //'1':금융카드, '2':공무원카드T0, '3':공무원카드T1, '4':마거 - - //9. MOBISIGN 옵션 - CS_MOBISIGN_Version : "5.0.5.0", - CS_MOBISIGN_PopupURL : "https://mobi.yessign.or.kr/mobisignInstall.htm", // MOBISIGN 다운로드 주소 - CS_MOBISIGN_SiteCode : "6070059", - - /*[변경].3.*/ - //10. 금결원 공동인증서비스 옵션 - //테스트 URL - //KFTC_SCRIPT_URL_RELAY : "https://fidoweb.yessign.or.kr:3100/cloud/v2/relay.js", - //KFTC_SCRIPT_URL_OPENCERT : "https://fidoweb.yessign.or.kr:3100/cloud/v2/opencert.js", - //운영 URL - KFTC_SCRIPT_URL_RELAY : "https://www.yessign.or.kr:3100/cloud/v2/relay.js", - KFTC_SCRIPT_URL_OPENCERT : "https://www.yessign.or.kr:3100/cloud/v2/opencert.js", - - - KFTC_CORP_CODE : "", - KFTC_APIKEY : "", - - DS_PKI_CERT_PATH : {"GPKI":[], "NPKI":['INIPASS'], "MPKI":[], "PPKI":[]}, - DS_PKI_POLICY_OID : { "1.2.410.200004.5.5.1.1":"범용(개인)" - ,"1.2.410.200004.5.5.1.2":"범용(기업)" - ,"1.2.410.200004.5.5.1.3.1":"제휴기관용(개인)" - ,"1.2.410.200004.5.5.1.4.1":"제휴기관용(기업)" - ,"1.2.410.200004.5.5.1.4.2":"전자세금용(기업)" }, - - //11. 금융인증 SDK 옵션 - FINCERT_ORGCODE : "", - FINCERT_URL : "", - FINCERT_APIKEY : "", - - //magicjs license - //MAGICJS_LIC : "wVzz2DwFLYJnxPbbFnHlTlrZm9nLP/hfMBboqJ/05g0Uld/Ps5rGPm+DMp+wDIW1d5CdZUQMoqQM2KJyI2+BuvLN3eWODOfyk1kWpuTIN6uEyGYXAf4wKnUJhZZHBtfmsC/Ms+ooT67KnhSYet0aLM1iogiUlFSdlav1OHlm8jNJjT5sph3UdaMOag1aM4O9QnEw3bLCO068NVnG7GvJFkKyNj2s0ow6sdj8ov+ZnjjFQebO25Q+wex4PRGU5nTrZqfoSkqT/NJXAEDx6ys0TUWoeUw8sxv5S5igoiK+Vg/r0WsRpLtBm+eLE3H+UhGnpzkv8ikjeFDQS+W64AlE4Q==", - MAGICJS_LIC : "iP4jzwiSfSNGvoEg8ziqwURHWtbOWnkwx2FjwS3mwWSH/B2M/hDhCMHzMLlZj43ujpABREMuftcEEqzyNWF7WdatjEUCpW2bwX/XT3CXm1avwPua/E7WO89aKy2Wc1m+bWVIByiH9ldm93GgNqnF3Iz37QiatSLvDiy0kqbugfeQ+qaovaUuPX0DCVK55sCovOtGXdv8T49//F/8htsLiLoy+qXdCrq7z+DWLEOoOTv6raGlZfKcGUNGzrFW3g68fO4+e4ZD5c2j9XFibY/Kqj6DeZlnI5R8UXEJnFw5aQ8F8qGrfpThCyrPKIEqNexbuep7HYHBwOVGNQVQpUr4SA==", - - result:"load" -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_UI.js b/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_UI.js deleted file mode 100644 index 4ba0eca6..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/ML4Web_UI.js +++ /dev/null @@ -1,1263 +0,0 @@ -(function(jQuery) { - if (typeof jQuery === "undefined") alert("jQuery is not available!!!"); - - if (typeof ML4WebUI === "undefined") { - var _ML4WebUI = { - api: {}, - initCallbackFunction: {}, - DSOption : { - callback : function(){}, - option : {}, - message : "", - certIdx : "", - idn : "", - vidType : "", - strVal : "" - }, - mgmtDialogName : "", - VestCertStorageOption : "HddMode", - orignal : "서명메세지", - funProcInit : function(){ - var params = location.search.substring(1).split("&"); - var lgUrl = ""; - $.each(params, function(){ - var arr01 = this.split("="); - if(arr01[0] == "lgUrl"){ - lgUrl = arr01[1]; - } - }); - return lgUrl; - }, - defOption : { - storage : "web", - storageList : ["web","hdd","token","mobile","smartcert"] //[] - }, - selectedStorage : {}, - Storage : { - option : {}, - current_option : {}, - certificates: { - certi_list : [] - }, - listeners : {}, - Add : function(obj) { - this.certificates.certi_list.push(obj); - this.dispatch("certi-add"); //Add event listener - }, - AddList: function(list) { - var listCnt = list.length; - if(listCnt>0){ - for(var i=0 ; i -1 && idx < this.certificates.certi_list.length ){ - return this.certificates.certi_list[ idx ]; - } - }, - GetEncCertList: function( idx ){ - var certiListCnt = this.certificates.certi_list.length; - if( this.certificates.certi_list!=null && certiListCnt>0){ - for(var i=0 ; i
              로딩중입니다.

              '+$.i18n.prop("ES044")+'

              ', - baseZ: 100005, - css:{left:(($(window).width()/2)-75)+'px'} - - }); - }, - unblockUI : function(){ - $.unblockUI(); - }, - callback : "", - showCertMana : function(viewoptObj, callback){ - ML4WebDraw.MakeStorageListDiv("mgmt"); - }, - showCertDiv : function(viewoptObj, callback){ - - ML4WebLog.log("ML4WebUI.showCertDiv() called..."); - /* - viewoptObj.defaultStorage; - viewoptObj.storageList; //[] - viewoptObj.installcheck; - viewoptObj.updatecheck; - viewoptObj.browserInfo; - */ - var defaultStg = viewoptObj.defaultStorage; - var browserInfo = viewoptObj.browserInfo; - browserVersion = browserInfo.version; - - if(viewoptObj.defaultStorage == "" || viewoptObj.defaultStorage == null){ - ML4WebLog.log("[value check] default storage value is null!! - set default option"); - viewoptObj.defaultStorage = this.defOption.storage; - - var checkarr = Array.isArray(viewoptObj.storageList); - if(!checkarr){ - ML4WebLog.log("[value check] storage list is not array!! - set default option"); - viewoptObj.storageList = this.defOption.storageList; - } - } - - if((browserInfo.name.indexOf("IE") > -1 && browserVersion < 11) || - (browserInfo.name.indexOf("Edge") > -1 && browserVersion < 12)) - { - if(viewoptObj.defaultStorage == "web_kftc" || viewoptObj.defaultStorage == "kftc"){ - ML4WebApi.setProperty("defaultStorage", this.defOption.storage); - viewoptObj.defaultStorage = this.defOption.storage; - } - if(viewoptObj.storageList.indexOf("web_kftc") > -1 || viewoptObj.storageList.indexOf("kftc") > -1) - { - var idx = viewoptObj.storageList.indexOf("web_kftc"); - if(idx > -1){ - viewoptObj.storageList.splice(idx, 1, "web"); - } - } - } - - ML4WebApi.setProperty("cert_filter_expire", viewoptObj.certExpirefilter); - ML4WebApi.setProperty("cert_filter_oid", viewoptObj.certOidfilter); - - Storage_API_filter.init(function(code, result){ - - var isMobile = magiclineUtil.isMobile(magiclineUtil.getOS()); - - if(isMobile){ - ML4WebDraw.MakeStorageListDiv_M(viewoptObj); - }else{ - ML4WebDraw.MakeStorageListDiv(viewoptObj); - } - - $("#ML_window").MLjquiWindow('open', function(e){ - - if(isMobile){ - ML4WebDraw.initWebMainEvent_M(); - }else{ - ML4WebDraw.initWebMainEvent(); - } - - if(viewoptObj.defaultStorage != null){ - $("#stg_" + viewoptObj.defaultStorage).click(); - } - ML4WebUI.callback = callback; - - }); - }) - }, - /** - * 인증서 저장 기능을 수행할 UI를 호출 - */ - showSaveCertDiv : function(viewoptObj, certbag, certInfo, callback){ - - ML4WebLog.log("ML4WebUI.showSaveCertDiv() called..."); - /* - viewoptObj.defaultStorage; - viewoptObj.storageList; //[] - viewoptObj.installcheck; - viewoptObj.updatecheck; - viewoptObj.browserInfo; - */ - var defaultStg = viewoptObj.defaultStorage; - var browserInfo = viewoptObj.browserInfo; - browserVersion = browserInfo.version; - - if(viewoptObj.defaultStorage == "" || viewoptObj.defaultStorage == null){ - ML4WebLog.log("[value check] default storage value is null!! - set default option"); - viewoptObj.defaultStorage = this.defOption.storage; - - var checkarr = Array.isArray(viewoptObj.storageList); - if(!checkarr){ - ML4WebLog.log("[value check] storage list is not array!! - set default option"); - viewoptObj.storageList = this.defOption.storageList; - } - } - - if((browserInfo.name.indexOf("IE") > -1 && browserVersion < 11) || - (browserInfo.name.indexOf("Edge") > -1 && browserVersion < 12)) - { - if(viewoptObj.defaultStorage == "web_kftc" || viewoptObj.defaultStorage == "kftc"){ - viewoptObj.defaultStorage = this.defOption.storage; - } - if(viewoptObj.storageList.indexOf("web_kftc") > -1 || viewoptObj.storageList.indexOf("kftc") > -1) - { - var idx = viewoptObj.storageList.indexOf("web_kftc"); - if(idx > -1){ - viewoptObj.storageList.splice(idx, 1, "web"); - } - } - } - - ML4WebApi.setProperty("cert_filter_expire", viewoptObj.certExpirefilter); - ML4WebApi.setProperty("cert_filter_oid", viewoptObj.certOidfilter); - - Storage_API_filter.init(function(code, result){ - - var isMobile = magiclineUtil.isMobile(magiclineUtil.getOS()); - - if(isMobile){ - ML4WebDraw.MakeStorageListDiv_M(viewoptObj); - }else{ - ML4WebDraw.MakeStorageListDiv(viewoptObj); - } - - $("#ML_window").MLjquiWindow('open', function(e){ - - /* - if(isMobile){ - ML4WebDraw.initWebMainEvent_M(); - }else{ - ML4WebDraw.initWebMainEvent(); - } - */ - ML4WebSaveCertDraw.MakeSaveCertDiv(certInfo); - - if(viewoptObj.defaultStorage != null){ - $("#stg_" + viewoptObj.defaultStorage).click(); - } - ML4WebUI.callback = callback; - - }); - }) - }, - selectStorageInfo : function(key, callback){ - if(key != 'smartcertnx'){ - ML4WebUI.blockUI(); - } - ML4WebLog.log("ML4WebUI.selectStorageInfo() called..."); - setTimeout(function(){ - if(key == null || key == ""){ - callback( ML4WebLog.getErrCode("ML4Web_UI_selectStorageInfo"), {"errCode": 100, "errMsg": $.i18n.prop('ER100')}); - return; - }else if( typeof callback != 'function' || callback == null || callback == ""){ - callback( ML4WebLog.getErrCode("ML4Web_UI_selectStorageInfo"), {"errCode": 103, "errMsg": $.i18n.prop('ER103')}); - return; - } - - ML4WebUI.selectedStorage = {}; - - switch(key){ - case 'web_kftc': - ML4WebUI.selectedStorage = { - key:"web_kftc", - name : $.i18n.prop('TS701'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'kftc': - ML4WebUI.selectedStorage = { - key:"kftc", - name : $.i18n.prop('TS701'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'web': - ML4WebUI.selectedStorage = { - key:"web", - name : $.i18n.prop('TS701'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - - break; - case 'pfx': - ML4WebUI.selectedStorage = { - key:"pfx", - name : $.i18n.prop('TS702'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'hdd': - ML4WebUI.selectedStorage = { - key:"hdd", - name : $.i18n.prop('TS703'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - // - break; - case 'shdd': - ML4WebUI.selectedStorage = { - key:"shdd", - name : $.i18n.prop('TS704'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'token': - ML4WebUI.selectedStorage = { - key:"token", - name : $.i18n.prop('TS705'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'mobile': - ML4WebUI.selectedStorage = { - key:"mobile", - name : $.i18n.prop('TS706'), - isPwdRequired : function() { - return true; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'smartcert': - ML4WebUI.selectedStorage = { - key:"smartcert", - name : $.i18n.prop('TS707'), - isPwdRequired : function() { - return false; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'smartcertnx': - ML4WebUI.selectedStorage = { - key:"smartcertnx", - name : $.i18n.prop('TS707'), - isPwdRequired : function() { - return false; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'unisign': - ML4WebUI.selectedStorage = { - key:"unisign", - name : $.i18n.prop('TS701'), - isPwdRequired : function() { - return false; - }, - AddCertificates : function( certi ){ - ML4WebUI.Storage.Add( certi ); - }, - RemoveCertificates : function( certi ){ - ML4WebUI.Storage.RemoveAt( this.IndexOf( certi, 0 ) ); - } - }; - break; - case 'cloud': - break; - default: - ML4WebLog.log("[Error] Not Support Storage."); - break; - } - - // 공인인증서 가져오기에서 '브라우저에 인증서 저장' 체크하고 비밀번호 틀린 후, 전자서명 시 비밀번호 틀림 알림 뜨지 않거나 전자서명 되지 않는 오류 수정 - if(key != 'hdd'){ - var certOpt = {"storageName":key}; - - ML4WebUI.selectedStorage.current_option = certOpt; - certOpt.DS_PKI_CERT_PATH = encodeURIComponent(JSON.stringify(ML4WebApi.DS_PKI_CERT_PATH)); - certOpt.DS_PKI_POLICY_OID = encodeURIComponent(JSON.stringify(ML4WebApi.DS_PKI_POLICY_OID)); - } - - //create default selectedStorage - ML4WebUI.Storage.makeStorage( ML4WebUI.selectedStorage ); - - //create event listener(like callback) name of "certi-add" - ML4WebUI.Storage.on("certi-add", function() { - //ML4WebLog.log("selectedStorage.Count() === "+selectedStorage.Count()); - }); - - ML4WebApi.ml4web_storage_api.SelectStorageInfo(key, function(resultCode, jsonObj){ - ML4WebLog.log("%%%%% select storageinfo : " + key + ", " + JSON.stringify(jsonObj)); - if(resultCode == 0){ - if(jsonObj != null){ - ML4WebUI.selectedStorage.option = jsonObj; - callback(0, jsonObj); - var temp = $('#temp').val(); - if(ML4WebUI.selectedStorage.key != "hdd" || (temp != '' && temp != 0 )){ - ML4WebUI.unblockUI(); - } - }else{ - //no list - callback(0, null); - ML4WebUI.unblockUI(); - } - }else{ - callback(ML4WebLog.getErrCode("ML4Web_UI_selectStorageInfo"), {"errCode": jsonObj.errCode, "errMsg": jsonObj.errMsg}); - ML4WebUI.unblockUI(); - return; - } - }); - },200); - }, - - getStorageCertList : function( certOpt, callback ){ - ML4WebLog.log("ML4WebUI.getStorageCertList() called..."); - - if( certOpt == null || $.isEmptyObject(certOpt)){ - certOpt = ML4WebUI.selectedStorage.current_option; - }else if( typeof callback != 'function' || callback == null || callback == "" ){ - callback( ML4WebLog.getErrCode("ML4Web_UI_getStorageCertList"), {"errCode": 103, "errMsg": $.i18n.prop('ER103')}); - return; - } - - try{ - ML4WebUI.selectedStorage.current_option = certOpt; - certOpt.DS_PKI_CERT_PATH = encodeURIComponent(JSON.stringify(ML4WebApi.DS_PKI_CERT_PATH)); - certOpt.DS_PKI_POLICY_OID = encodeURIComponent(JSON.stringify(ML4WebApi.DS_PKI_POLICY_OID)); - - ML4WebApi.ml4web_storage_api.GetCertList(certOpt, function(resultCode, jsonObj){ - ML4WebLog.log("ml4web_storage_api.GetCertList resultCode :: " + resultCode); - if(resultCode == 0){ - var cert_list = jsonObj.cert_list; - if(cert_list!=null && cert_list.length>0){ - var tempArr = []; - var certListCnt = cert_list.length; - for(var i=0 ; i 0 ) { - $('#ML_window_admin').MLjquiWindow('title', '인증서관리'); - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }else{ - $("#selectCertContainer").load("UI/ML4Web_Mgmt.html", function(){ - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }); - } - //$("#manageCertContainer").load("UI/ML4Web_Mgmt_iframe.html", function(){ - //$('#certaction').val('MakeSignData'); - //}); - - /*$("#selectCertContainer").empty(); - $("#selectCertContainer").load("UI/ML4Web_Mgmt_iframe.html", function(){ - //$('#certaction').val('MakeSignData'); - });*/ - }catch(ex){ - callback( ML4WebLog.getErrCode("ML4Web_UI_MgmtDialog"), {"errCode": 888, "errMsg": ex.message}); - } - }, - getCertManager : function(dialogName, callback){ - if( typeof callback != 'function' || callback == null || callback == ""){ - callback( ML4WebLog.getErrCode("ML4Web_UI_getCertManager"), {"errCode": 103, "errMsg": $.i18n.prop("ER103")}); - return; - } - - this.mgmtDialogName = dialogName; - - try{ - //dialogName = all, copy, delete, import, export... - switch(dialogName){ - case 'all': - this.MgmtDialog(callback); - break; - case 'copy': - - break; - case 'delete': - this.DeleteDialog(callback); - break; - case 'import': - this.ImportDialog(callback); - break; - case 'export': - - break; - case 'changePw': - this.PWChangeDialog(callback); - break; - default: - callback( ML4WebLog.getErrCode("ML4Web_UI_getCertManager"), {"errCode": 104, "errMsg": $.i18n.prop("ER104")}); - break; - } - }catch(ex){ - callback( ML4WebLog.getErrCode("ML4Web_UI_getCertManager"), {"errCode": 888, "errMsg": ex.message}); - } - }, - PWChangeDialog : function(callback){// 창 열기-인증서 비밀번호 변경 - if( typeof callback != 'function' || callback == null || callback == ""){ - callback( ML4WebLog.getErrCode("ML4Web_UI_MgmtDialog"), {"errCode": 103, "errMsg": "callback 값이 null이거나 함수가 아닙니다."}); - return; - } - - try{ - $("#selectCertContainer").empty(); - - if ( $("#ML_window_admin").length > 0 ) { - $('#ML_window_admin').MLjquiWindow('title', '인증서관리'); - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }else{ - $("#selectCertContainer").load("UI/ML4Web_Mgmt.html", function(){ - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }); - } - - /* - - $("#selectCertContainer").load("UI/ML4Web_Mgmt_iframe.html", function(){ - //$('#certaction').val('MakeSignData'); - });*/ - }catch(ex){ - callback( ML4WebLog.getErrCode("ML4Web_UI_MgmtDialog"), {"errCode": 888, "errMsg": ex.message}); - } - }, - CopyDialog : function(callback){// 창 열기-인증서복사 - - }, - DeleteDialog : function(callback){// 창 열기-인증서삭제 - if( typeof callback != 'function' || callback == null || callback == ""){ - callback( ML4WebLog.getErrCode("ML4Web_UI_DeleteDialog"), {"errCode": 103, "errMsg": "callback 값이 null이거나 함수가 아닙니다."}); - return; - } - - try{ - $("#selectCertContainer").empty(); - - if ( $("#ML_window_admin").length > 0 ) { - $('#ML_window_admin').MLjquiWindow('title', '인증서관리'); - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }else{ - $("#selectCertContainer").load("UI/ML4Web_Mgmt.html", function(){ - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }); - } - - /* - - $("#selectCertContainer").load("UI/ML4Web_Mgmt_iframe.html", function(){ - //$('#certaction').val('MakeSignData'); - });*/ - }catch(ex){ - callback( ML4WebLog.getErrCode("ML4Web_UI_DeleteDialog"), {"errCode": 888, "errMsg": ex.message}); - } - }, - ImportDialog : function(callback){// 창 열기-인증서가져오기 - if( typeof callback != 'function' || callback == null || callback == ""){ - callback( ML4WebLog.getErrCode("ML4Web_UI_ImportDialog"), {"errCode": 103, "errMsg": "callback 값이 null이거나 함수가 아닙니다."}); - return; - } - - try{ - $("#selectCertContainer").empty(); - - if ( $("#ML_window_admin").length > 0 ) { - $('#ML_window_admin').MLjquiWindow('title', '인증서관리'); - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }else{ - $("#selectCertContainer").load("UI/ML4Web_Mgmt.html", function(){ - $('#ML_window_admin').MLjquiWindow('open', function(e){ -// $('#certaction').val('Mgmt'); - }); - }); - } - - /* - $("#selectCertContainer").load("UI/ML4Web_Mgmt_iframe.html", function(){ - //$('#certaction').val('MakeSignData'); - });*/ - }catch(ex){ - callback( ML4WebLog.getErrCode("ML4Web_UI_ImportDialog"), {"errCode": 888, "errMsg": ex.message}); - } - }, - ExportDialog : function(callback){// 창 열기-인증서내보내기 - - }, - closeMainDialog : function (mode){ - //ML4WebLog.log("ML4WebUI.closeMainDialog() called... mode ===" + mode); - ML4WebLog.log("ML4WebUI.closeMainDialog() called... mode ==="); - if(mode == "main") { - - }else if(mode == "mgmt"){ - - }else if(mode == "cs"){ - - } - - childInit.closeMainDialogToChild(); - - - }, - getSelectCert : function(callback){//인증서 정보 조회 - //????????????????????? - }, - setDSOption: function(key, value){ - this.DSOption[key] = value; - }, - getDSOption: function(){ - return this.DSOption; - }, - getDialogName: function(){ - return this.mgmtDialogName; - } - }; - - if(!window.ML4WebUI) window.ML4WebUI = _ML4WebUI; - - function popMainDialog(){ - ML4WebLog.log("ML4WebUI.popMainDialog called..."); - } - - function popMgmtDialog(key, callback){ - //ML4WebLog.log("ML4WebUI.popMgmtDialog called... key====" + key); - ML4WebLog.log("ML4WebUI.popMgmtDialog called..."); - } - } - - if (typeof ML4WebUtil === "undefined") { - var _ML4WebUtil = { - getBackupCertList : function(){ - ML4WebLog.log("ML4WebUtil.getBackupCertList called..."); - if(ML4WebApi.getProperty('isUseMLCert')){ - getBackupCertListFromMlcert(); - } - }, - setBackupCertList : function(backupCertList){ - ML4WebLog.log("ML4WebUtil.setBackupCertList called..."); - if(ML4WebApi.getProperty('isUseMLCert')){ - if(backupCertList!=null){ - setBackupCertListToMlcert(backupCertList); - }else{ - setBackupCertListToMlcert(localStorage.getItem('DreamWebCert')); - } - } - }, - syncLocalStorage : function(backupCertList ){ - if(ML4WebApi.getProperty('isUseMLCert')){ - var CertBagList = localStorage.getItem('DreamWebCert'); - - var arr1 = (backupCertList!=null && backupCertList!="null") ? JSON.parse(backupCertList) : []; - var arr2 = (CertBagList!=null && CertBagList!="null") ? JSON.parse(CertBagList) : []; - var arr = $.merge(arr1, arr2); - - var result = []; - $.each(arr, function(index, element) { - var orgin_str = JSON.stringify(result); - var elm_str = JSON.stringify(element); - if (orgin_str.indexOf(elm_str) < 0){ - result.push(element); - } - }); - - //ML4WebLog.log("ML4WebUtil.syncLocalStorage result = " + JSON.stringify(result)); - - // localStorage - ml4web - localStorage.removeItem('DreamWebCert'); - localStorage.setItem('DreamWebCert', JSON.stringify(result)); - - // localStorage - mlcert - setBackupCertListToMlcert(JSON.stringify(result)); - } - }, - saveCertValue : function( key,value ){ - if(window.localStorage){ - localStorage.setItem( key, value ); - } else{ - if(window.sessionStorage){ - sessionStorage.setItem( key, value ); - }else{ - var Cert = encodeURI( value ); - this.setCookie( key, "", -1 ); - this.setCookie( key, Cert, 1); - } - } - }, - loadCertValue : function( key ){ - try{ - if(window.localStorage){ - return localStorage.getItem( key ); - } else{ - if(window.sessionStorage){ - return sessionStorage.getItem( key ); - }else{ - var cert = this.getCookie( key ); - return decodeURI( cert ); - } - } - }catch( e ){ - ML4WebLog.log("[ERROR]ML4WebUtil.loadValue ===" + e.message); - return ""; - } - }, - /*setCookie : function(cname, cvalue, exdays){ - var d = new Date(); - - //d.setTime(d.getTime() + (exdays*24*60*60*1000)); - d.setTime(d.getTime() + (exdays*300000)); - var expires = "expires=" + d.toUTCString(); - document.cookie = cname + "=" + cvalue + "; " + expires; - },*/ - getCookie : function(cname){ - var name = cname + "="; - var ca = document.cookie.split(';'); - for(var i=0; i 20 ) { - callback(1, {"msg":"비밀번호는 소문자, 대문자, 숫자, 특수문자의 조합으로 9~20자리로 입력해주세요."}); - return; - } - - var passwd = password; - var chk_num = passwd.search(/[0-9]{2,}/g); - var chk_eng = passwd.search(/[a-z]{2,}/g); - var chk_Beng = passwd.search(/[A-Z]{2,}/g); - var chk_spc = passwd.search(/[`!@$%^&*()<>|\\\'\";:\/?]{2,}/i); - //alert("chk_num :"+chk_num+"\n"+"chk_eng :"+chk_eng+"\n"+"chk_Beng :"+chk_Beng+"\n"+"chk_spc :"+chk_spc+"\n"); - - if((chk_num < 0)) { - callback(1, {"msg":"숫자가 2자 이상 포함되어 있어야 합니다."}); - return; - } - if((chk_eng < 0)) { - callback(1, {"msg":"소문자가 2자 이상 포함되어 있어야 합니다."}); - return; - } - if((chk_Beng < 0)) { - callback(1, {"msg":"대문자가 2자 이상 포함되어 있어야 합니다."}); - return; - } - if((chk_spc < 0)) { - callback(1, {"msg":"기호가 2자 이상 포함되어야 합니다."}); - return; - } - - var SamePass_0 = 0; //동일문자 카운트 - var SamePass_1 = 0; //연속성(+) 카운드 - var SamePass_2 = 0; //연속성(-) 카운드 - - var chr_pass_0; - var chr_pass_1; - var chr_pass_2; - - for(var i=0; i < password.length; i++) { - chr_pass_0 = password.charAt(i); - chr_pass_1 = password.charAt(i+1); - - //동일문자 카운트 - if(chr_pass_0 == chr_pass_1) { - SamePass_0 = SamePass_0 + 1; - } - - chr_pass_2 = password.charAt(i+2); - //연속성(+) 카운드 - - if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == 1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == 1) { - SamePass_1 = SamePass_1 + 1; - } - - //연속성(-) 카운드 - if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == -1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == -1) { - SamePass_2 = SamePass_2 + 1; - } - } - - if(SamePass_0 > 1) { - callback(1, {"msg":"동일문자를 3번 이상 사용할 수 없습니다."}); - return; - } - - if(SamePass_1 >= 1 || SamePass_2 >= 1 ) { - callback(1, {"msg":"연속된 문자열(123 또는 321, abc, cba 등)을\n 3자 이상 사용 할 수 없습니다."}); - return; - } - - callback(0, {"msg":"성공"}); - }, - isDateExpired : function(dateStr){ - var dateArr = dateStr.split("-"); - var today = new Date(); - //var endDate = new Date(dateArr[0],parseInt(dateArr[1])-1,dateArr[2]); - var a = dateStr.split(" "); - var d = a[0].split("-"); - var t = a[1].split(":"); - var endDate = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]); - - if (today < endDate) { - return false; - } else { - return true; - } - }, - getTimeStamp : function() { - var d = new Date(); - - var s = - leadingZeros(d.getFullYear(), 4) + '-' + - leadingZeros(d.getMonth() + 1, 2) + '-' + - leadingZeros(d.getDate(), 2) + ' ' + - - leadingZeros(d.getHours(), 2) + ':' + - leadingZeros(d.getMinutes(), 2) + ':' + - leadingZeros(d.getSeconds(), 2); - - return s; - }, - leadingZeros : function (n, digits) { - var zero = ''; - n = n.toString(); - - if (n.length < digits) { - for (i = 0; i < digits - n.length; i++) - zero += '0'; - } - return zero + n; - }, - isDateCompare : function(dtmfrom, dtmto){ - return new Date(dtmfrom).getTime() >= new Date(dtmto).getTime() ; - }, - yyyymmdd : function(dateIn) { - var yyyy = dateIn.getFullYear(); - var mm = dateIn.getMonth()+1; // getMonth() is zero-based - var dd = dateIn.getDate(); - return String(10000*yyyy + 100*mm + dd); // Leading zeros for mm and dd - } - }; - - window.ML4WebUtil = _ML4WebUtil; - } - jQuery(document).ready(function() { - }); - - $.cachedScript = function(url, options){ - options = $.extend(options || {}, { - DataType : "script", - cache : true, - url : url - }); - return jQuery.ajax(options); - } -})(jQuery); diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/crypto/magicjs_1.0.2.15.min.js b/src/main/webapp/MagicLine4Web/ML4Web/js/crypto/magicjs_1.0.2.15.min.js deleted file mode 100644 index f50438c6..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/crypto/magicjs_1.0.2.15.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! MagicJS-v1.0.2.15-2017.03.22-(c) 2014~2017, Dreamsecurity co.,ltd. All rights reserved. Some or all of MagicJS module, reproduced without the consent of DreamSecurity, modify, decompile, conversion into other languages is forbidden to use and distribute . MagicJS module is developed based on 'The forge software' of Digital Bazaar.*/!function(){var a="dreamsecurity";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return void("undefined"==typeof dreamsecurity&&(dreamsecurity={disableNativeCode:!0}));var b=!0;define=function(a,b){b(require,module)}}var c,d=function(b,d){d.exports=function(d){var e=c.map(function(a){return b(a)});if(d=d||{},d.defined=d.defined||{},d.defined[a])return d[a];d.defined[a]=!0;for(var f=0;f=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea,b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var b,c,d,e,f="",g=0;g>4),64!==d&&(f+=String.fromCharCode((15&c)<<4|d>>2),64!==e&&(f+=String.fromCharCode((3&d)<<6|e)));return f},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)h=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+h+i+g[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}var d=a.sha256=a.sha256||{};a.md=a.md||{},a.md.algorithms=a.md.algorithms||{},a.md.sha256=a.md.algorithms.sha256=d,d.create=function(){f||b();var d=null,g=a.util.createBuffer(),h=new Array(64),i={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return i.start=function(){return i.messageLength=0,i.messageLength64=[0,0],g=a.util.createBuffer(),d={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},i},i.start(),i.update=function(b,e){return"utf8"===e&&(b=a.util.encodeUtf8(b)),i.messageLength+=b.length,i.messageLength64[0]+=b.length/4294967296>>>0,i.messageLength64[1]+=b.length>>>0,g.putBytes(b),c(d,h,g),(g.read>2048||0===g.length())&&g.compact(),i},i.digest=function(){var b=a.util.createBuffer();b.putBytes(g.bytes()),b.putBytes(e.substr(0,64-(i.messageLength64[1]+8&63))),b.putInt32(i.messageLength64[0]<<3|i.messageLength64[0]>>>28),b.putInt32(i.messageLength64[1]<<3);var f={h0:d.h0,h1:d.h1,h2:d.h2,h3:d.h3,h4:d.h4,h5:d.h5,h6:d.h6,h7:d.h7};c(f,h,b);var j=a.util.createBuffer();return j.putInt32(f.h0),j.putInt32(f.h1),j.putInt32(f.h2),j.putInt32(f.h3),j.putInt32(f.h4),j.putInt32(f.h5),j.putInt32(f.h6),j.putInt32(f.h7),j},i};var e=null,f=!1,g=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})},i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?i(b,a.q):void g(a.qBits,i))})}function g(a,c){b.prime.generateProbablePrime(a,j,c)}function i(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var j=a.p;a.p=a.q,a.q=j}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,i);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,i);var k=a.e.modInverse(a.phi);a.keys={privateKey:h.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:h.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var j={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(j.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var g=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var h=b.pki,j=[6,4,2,4,2,4,6,2],k={name:"KCDSAPrivateKey.exponent",tagClass:g.Class.UNIVERSAL,type:g.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},l={name:"KCDSAPublicKey.public",tagClass:g.Class.UNIVERSAL,type:g.Type.INTEGER,constructed:!1,capture:"publicKey"},m={name:"KCDSASignature",tagClass:g.Class.UNIVERSAL,type:g.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:g.Class.UNIVERSAL,type:g.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:g.Class.UNIVERSAL,type:g.Type.INTEGER,constructed:!1,capture:"s"}]},n={name:"KCDSAParameters",tagClass:g.Class.UNIVERSAL,type:g.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:g.Class.UNIVERSAL,type:g.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:g.Class.UNIVERSAL,type:g.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:g.Class.UNIVERSAL,type:g.Type.INTEGER,constructed:!1,capture:"g"}]};h.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},h.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,i=function(a,b){return a|b},k=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),i,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(j[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:h.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:h.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-k,k=d}return null!==a.keys},h.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=h.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(h.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},h.setKcdsaPublicKey=h.kcdsa.setPublicKey=function(d,e,h,j){var k={p:d,q:e,g:h,y:j};return k.verify=function(d,e,h,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var n=b.md.algorithms[e].create();n.update(l),n.update(d);var o=g.fromDer(h),p={},q=[];if(!g.validate(o,m,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=n.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},h.setKcdsaPrivateKey=h.kcdsa.setPrivateKey=function(d,e,h,j,k){var l={p:d,q:e,g:h,x:j,y:k};return l.sign=function(d,e,h){a();var j=b.util.createBuffer(c(h)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[]),B=g.create(g.Class.UNIVERSAL,g.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),g.toDer(A).getBytes()},l},h.kcdsa.privateKeyFromAsn1=function(a,c){var d,e,i,j,l={},m=[];if(!g.validate(c,n,l,m)){var o=new Error("Cannot read kcdsaParam.");throw o.errors=m,o.type=b.err.process,o}if(d=b.util.createBuffer(l.p).toHex(),e=b.util.createBuffer(l.q).toHex(),i=b.util.createBuffer(l.g).toHex(),!g.validate(a,k,l,m)){var o=new Error("Cannot read kcdsaPrivateKey.");throw o.errors=m,o.type=b.err.process,o}return j=b.util.createBuffer(l.privateKeyExponent).toHex(),h.setKcdsaPrivateKey(new f(d,16),new f(e,16),new f(i,16),new f(j,16))},h.privateKeyToKCDSAPrivateKey=function(a){return g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,c(a.x))},h.toKCDSAParam=function(a){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,c(a.p)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,c(a.q)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,c(a.g))])},h.kcdsa.publicKeyFromAsn1=function(a,c){var d,e,i,j,k={},m=[];if(!g.validate(c,n,k,m)){var o=new Error("Cannot read kcdsaParam.");throw o.errors=m,o.type=b.err.process,o}if(d=b.util.createBuffer(k.p).toHex(),e=b.util.createBuffer(k.q).toHex(),i=b.util.createBuffer(k.g).toHex(),!g.validate(a,l,k,m)){var o=new Error("Cannot read kcdsaPublicKey.");throw o.errors=m,o.type=b.err.process,o}return j=b.util.createBuffer(k.publicKey).toHex(),h.setKcdsaPublicKey(new f(d,16),new f(e,16),new f(i,16),new f(j,16))},h.publicKeyToKCDSAPublicKey=function(a){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1");var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength, -m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m,c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]; -}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gk;k++)j.push(a.s.substr(h,e)),h+=e;var i=a.s.substr(0,h),l=a.s.substr(h,e);h+=e;var m=dreamsecurity.util.bytesToHex(b.intg.create(i));if(l!=m.substr(0,e))throw Error("4");a.s="",a.filter=j}for(var n=d.substr(0,e),k=0;kb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=d}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.vi={},b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1490235743190);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var d=b.asn1,e=b.pki=b.pki||{},f=e.oids;e.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var g=b.pki.algIdValidator=function(a,b,c,e,f){return{name:a,tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:d.Class.UNIVERSAL,type:d.Type.OID,constructed:!1,capture:c},{name:e,tagClass:d.Class.UNIVERSAL,optional:!0,captureAsn1:f}]}},h={name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:d.Class.UNIVERSAL,type:d.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},g("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:d.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes",optional:!0}]},i=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[g("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:d.Class.UNIVERSAL,type:d.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};e.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var f=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw f.headerType=c.type,f}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var g=d.fromDer(c.body);return e.privateKeyFromAsn1(g)},e.privateKeyFromAsn1=function(c){a();var g={},i=[];if(!d.validate(c,h,g,i)){var j=new Error("Cannot read private key.");throw j.errors=i,j}c=d.fromDer(b.util.createBuffer(g.privateKey));var k=d.derToOid(g.privateKeyOid),l=null;if(k===f.rsaEncryption)l=e.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===f.kcdsa1)l=e.kcdsa.privateKeyFromAsn1(c,g.parameters),l.algName="kcdsa";else{var j=new Error("Not supported key.key oid="+k);j.errors=i}l.randomNum=null;var m=g.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name), -g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name){var d=k.fromDer(c.value);c.certificatePolicies=[];for(var o=0;o0&&t[1].value[w].type===k.Type.SEQUENCE){var x=t[1].value[w].value;x[0].type===k.Type.UTF8?p.unotice.organization=b.util.decodeUtf8(x[0].value):p.unotice.organization=x[0].value;x.length>1,v--,w++}if(v>0){var y=t[1].value[w];y.type===k.Type.UTF8?p.unotice.explicitText=b.util.decodeUtf8(y.value):p.unotice.explicitText=y.value}}}}c.certificatePolicies.push(p)}}else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version, -h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.engine);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.create=function(c){var d={},e=0;try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,d.engine=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var f=b.base64.decode(c);e=F.encoding.der,d.engine=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(f))}else d.engine=dreamsecurity.pkcs7.createSignedData()}catch(g){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,g)}return d.content=null,d.signerInfos=[],d.certificates=[],d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(b,c,e){var f=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(a(),e){if(e.md){var j=w(e.md,i);f=dreamsecurity.md.algorithms[j].create()}e.format&&(h=e.format)}f||(f=z(b)),g=y(e,f.algorithm),d.engine.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea,b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var b,c,d,e,f="",g=0;g>4),64!==d&&(f+=String.fromCharCode((15&c)<<4|d>>2),64!==e&&(f+=String.fromCharCode((3&d)<<6|e)));return f},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)h=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+h+i+g[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}var d=a.sha256=a.sha256||{};a.md=a.md||{},a.md.algorithms=a.md.algorithms||{},a.md.sha256=a.md.algorithms.sha256=d,d.create=function(){f||b();var d=null,g=a.util.createBuffer(),h=new Array(64),i={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return i.start=function(){return i.messageLength=0,i.messageLength64=[0,0],g=a.util.createBuffer(),d={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},i},i.start(),i.update=function(b,e){return"utf8"===e&&(b=a.util.encodeUtf8(b)),i.messageLength+=b.length,i.messageLength64[0]+=b.length/4294967296>>>0,i.messageLength64[1]+=b.length>>>0,g.putBytes(b),c(d,h,g),(g.read>2048||0===g.length())&&g.compact(),i},i.digest=function(){var b=a.util.createBuffer();b.putBytes(g.bytes()),b.putBytes(e.substr(0,64-(i.messageLength64[1]+8&63))),b.putInt32(i.messageLength64[0]<<3|i.messageLength64[0]>>>28),b.putInt32(i.messageLength64[1]<<3);var f={h0:d.h0,h1:d.h1,h2:d.h2,h3:d.h3,h4:d.h4,h5:d.h5,h6:d.h6,h7:d.h7};c(f,h,b);var j=a.util.createBuffer();return j.putInt32(f.h0),j.putInt32(f.h1),j.putInt32(f.h2),j.putInt32(f.h3),j.putInt32(f.h4),j.putInt32(f.h5),j.putInt32(f.h6),j.putInt32(f.h7),j},i};var e=null,f=!1,g=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})},i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){ -var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1");var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1, -capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m,c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]; -}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gk;k++)j.push(a.s.substr(h,e)),h+=e;var i=a.s.substr(0,h),l=a.s.substr(h,e);h+=e;var m=dreamsecurity.util.bytesToHex(b.intg.create(i));if(l!=m.substr(0,e))throw Error("4");a.s="",a.filter=j}for(var n=d.substr(0,e),k=0;kb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=d}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.vi={},b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1503652046294);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var d=b.asn1,e=b.pki=b.pki||{},f=e.oids;e.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var g=b.pki.algIdValidator=function(a,b,c,e,f){return{name:a,tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:d.Class.UNIVERSAL,type:d.Type.OID,constructed:!1,capture:c},{name:e,tagClass:d.Class.UNIVERSAL,optional:!0,captureAsn1:f}]}},h={name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:d.Class.UNIVERSAL,type:d.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},g("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:d.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes",optional:!0}]},i=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[g("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:d.Class.UNIVERSAL,type:d.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};e.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var f=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw f.headerType=c.type,f}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var g=d.fromDer(c.body);return e.privateKeyFromAsn1(g)},e.privateKeyFromAsn1=function(c){a();var g={},i=[];if(!d.validate(c,h,g,i)){var j=new Error("Cannot read private key.");throw j.errors=i,j}c=d.fromDer(b.util.createBuffer(g.privateKey));var k=d.derToOid(g.privateKeyOid),l=null;if(k===f.rsaEncryption)l=e.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===f.kcdsa1)l=e.kcdsa.privateKeyFromAsn1(c,g.parameters),l.algName="kcdsa";else{var j=new Error("Not supported key.key oid="+k);j.errors=i}l.randomNum=null;var m=g.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name), -g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(z(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){v(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e)}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.engine);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.create=function(c){var d={},e=0;try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,d.engine=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var f=b.base64.decode(c);e=F.encoding.der,d.engine=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(f))}else d.engine=dreamsecurity.pkcs7.createSignedData()}catch(g){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,g)}return d.content=null,d.signerInfos=[],d.certificates=[],d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(b,c,e){var f=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(a(),e){if(e.md){var j=w(e.md,i);f=dreamsecurity.md.algorithms[j].create()}e.format&&(h=e.format)}f||(f=z(b)),g=y(e,f.algorithm),d.engine.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};a.vi={},a.vi.s="1d394ab466ee3b7ef361935d8425a9ffffd367adf86fc243d3ea5afdd3b5206f0683a572688b2a8497b2033eb87e4f5ae07e176eb076acbc7a95d724ca53e785b1b63016fcf06745b46c0341ac63535420a597879eff570a25a819d3fe7936607e0186881174edfbb90010592deca460d4a393e9ef32e2cb78f22ab97fe0ec69011a109e8373335a3229809e9c0a3ed2ea45866a82aa6c430af56763bdd42a597d9d88b2b780a58949e3bed5750f90ba924dd917cebad904c51a03973da5b4db6adfb00d602181da18534dc23362d03ebc31cbb29eab3346040c2f4cdf9bb2b7baaa5204389a67fd47b558e832117f2ab5a7c7e7813c3f1f1e480175e1d7048ec4bdc946152fa54e3189cab97241a1eaa163ffd7ca4842b9b1ef85e07f463f119db6587c65850a7a9bab9570b3",a.vi.gf=!1,a.vi.init=!1,c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea, -b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var b,c,d,e,f="",g=0;g>4),64!==d&&(f+=String.fromCharCode((15&c)<<4|d>>2),64!==e&&(f+=String.fromCharCode((3&d)<<6|e)));return f},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)g=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+g+i+h[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"sha256"));var e=b.sha256=b.sha256||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha256=b.md.algorithms.sha256=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(64),j={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g.putInt32(c.h5),g.putInt32(c.h6),g.putInt32(c.h7),g},j};var f=null,g=!1,h=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})},i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){ -for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1"); -var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m, -c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gk;k++)j.push(a.s.substr(h,e)),h+=e;var i=a.s.substr(0,h),l=a.s.substr(h,e);h+=e;var m=dreamsecurity.util.bytesToHex(b.intg.create(i));if(l!=m.substr(0,e))throw Error("4");a.s="",a.filter=j}for(var n=d.substr(0,e),k=0;kb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=d}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1511311696195);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var d=b.asn1,e=b.pki=b.pki||{},f=e.oids;e.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var g=b.pki.algIdValidator=function(a,b,c,e,f){return{name:a,tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:d.Class.UNIVERSAL,type:d.Type.OID,constructed:!1,capture:c},{name:e,tagClass:d.Class.UNIVERSAL,optional:!0,captureAsn1:f}]}},h={name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:d.Class.UNIVERSAL,type:d.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},g("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:d.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes",optional:!0}]},i=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[g("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:d.Class.UNIVERSAL,type:d.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};e.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var f=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw f.headerType=c.type,f}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var g=d.fromDer(c.body);return e.privateKeyFromAsn1(g)},e.privateKeyFromAsn1=function(c){a();var g={},i=[];if(!d.validate(c,h,g,i)){var j=new Error("Cannot read private key.");throw j.errors=i,j}c=d.fromDer(b.util.createBuffer(g.privateKey));var k=d.derToOid(g.privateKeyOid),l=null;if(k===f.rsaEncryption)l=e.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===f.kcdsa1)l=e.kcdsa.privateKeyFromAsn1(c,g.parameters),l.algName="kcdsa";else{var j=new Error("Not supported key.key oid="+k); -j.errors=i}l.randomNum=null;var m=g.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name),g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(z(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){v(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e)}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo", -tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.engine);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.create=function(c){var d={},e=0;try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,d.engine=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var f=b.base64.decode(c);e=F.encoding.der,d.engine=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(f))}else d.engine=dreamsecurity.pkcs7.createSignedData()}catch(g){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,g)}return d.content=null,d.signerInfos=[],d.certificates=[],d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(b,c,e){var f=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(a(),e){if(e.md){var j=w(e.md,i);f=dreamsecurity.md.algorithms[j].create()}e.format&&(h=e.format)}f||(f=z(b)),g=y(e,f.algorithm),d.engine.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};a.vi={},a.vi.s="1d9b6862b3f3e7175208775d8425a9ffffd367adf86fc243d3ea5afdd3b5206f0683a572688b2a8497b2033eb87e4f5ae07e176eb076acbc7a95d724ca53e785b1b63016fcf06745b46c0341ac63535420a597879eff570a25a819d3fe7936607e0186881174edfbb90010592deca460d4a393e9ef32e2cb78f22ab97fe0ec69011a109e8373335a3229809e9c0a3ed2ea45866a82aa6c430af56763bdd42a597d9d88b2b780a58949e3bed5750f90ba924dd917cebad904c51a03973da5b4db6adfb00d602181da18534dc23362d03ebc31cbeb809eb0c024eeeba3c69bb2b7baaa5204389a67fd47b558e832117f2ab5a7c7e7813c3f1f1e480175e1d7048ec4bdc946152fa54e3189cab97241a1eaa163ffd7ca4842b9b1ef85e07f463f119db658c2ba4ce31b1c140db567",a.vi.gf=!1,a.vi.init=!1,c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea, -b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var b,c,d,e,f="",g=0;g>4),64!==d&&(f+=String.fromCharCode((15&c)<<4|d>>2),64!==e&&(f+=String.fromCharCode((3&d)<<6|e)));return f},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)g=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+g+i+h[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"sha256"));var e=b.sha256=b.sha256||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha256=b.md.algorithms.sha256=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(64),j={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g.putInt32(c.h5),g.putInt32(c.h6),g.putInt32(c.h7),g},j};var f=null,g=!1,h=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})},i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){ -for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1"); -var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m, -c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gk;k++)j.push(a.s.substr(h,e)),h+=e;var i=a.s.substr(0,h),l=a.s.substr(h,e);h+=e;var m=dreamsecurity.util.bytesToHex(b.intg.create(i));if(l!=m.substr(0,e))throw Error("4");a.s="",a.filter=j}for(var n=d.substr(0,e),k=0;kb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=d}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1527745136163);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var d=b.asn1,e=b.pki=b.pki||{},f=e.oids;e.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var g=b.pki.algIdValidator=function(a,b,c,e,f){return{name:a,tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:d.Class.UNIVERSAL,type:d.Type.OID,constructed:!1,capture:c},{name:e,tagClass:d.Class.UNIVERSAL,optional:!0,captureAsn1:f}]}},h={name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:d.Class.UNIVERSAL,type:d.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},g("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"PrivateKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:d.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes",optional:!0}]},i=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:d.Class.UNIVERSAL,type:d.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[g("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:d.Class.UNIVERSAL,type:d.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};e.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var f=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw f.headerType=c.type,f}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var g=d.fromDer(c.body);return e.privateKeyFromAsn1(g)},e.privateKeyFromAsn1=function(c){a();var g={},i=[];if(!d.validate(c,h,g,i)){var j=new Error("Cannot read private key.");throw j.errors=i,j}c=d.fromDer(b.util.createBuffer(g.privateKey));var k=d.derToOid(g.privateKeyOid),l=null;if(k===f.rsaEncryption)l=e.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===f.kcdsa1)l=e.kcdsa.privateKeyFromAsn1(c,g.parameters),l.algName="kcdsa";else{var j=new Error("Not supported key.key oid="+k); -j.errors=i}l.randomNum=null;var m=g.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name),g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(z(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){v(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e)}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo", -tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.engine);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.create=function(c){var d={},e=0;try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,d.engine=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var f=b.base64.decode(c);e=F.encoding.der,d.engine=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(f))}else d.engine=dreamsecurity.pkcs7.createSignedData()}catch(g){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,g)}return d.content=null,d.signerInfos=[],d.certificates=[],d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(b,c,e){var f=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(a(),e){if(e.md){var j=w(e.md,i);f=dreamsecurity.md.algorithms[j].create()}e.format&&(h=e.format)}f||(f=z(b)),g=y(e,f.algorithm),d.engine.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};a.vi={},a.vi.s="1da3f42352005646e1562d5d8425a9ffffd367adf86fc243d3ea5afdd3b5206f0683a572688b2a8497b2033eb87e4f5ae07e176eb076acbc7a95d724ca53e785b1b63016fcf06745b46c0341ac63535420a597879eff570a25a819d3fe7936607e0186881174edfbb90010592deca460d4a393e9ef32e2cb78f22ab97fe0ec69011a109e8373335a3229809e9c0a3ed2ea45866a82aa6c430af56763bdd42a597d9d88b2b780a58949e3bed5750f90ba924dd917cebad904c51a03973da5b4db6adfb00d602181da18534dc23362d03ebc31cb54a39f522e1dab88661d9bb2b7baaa5204389a67fd47b558e832117f2ab5f894e33286a2c46242b1912ec98ccf61d7f85dab2fa54e3189cab97241a1eaa163ffd7ca4842b9b1e963d1cc738bfb4304a4e1f91591d4fc1981e237",a.vi.gf=!1,a.vi.init=!1,c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea, -b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var b,c,d,e,f="",g=0;g>4),64!==d&&(f+=String.fromCharCode((15&c)<<4|d>>2),64!==e&&(f+=String.fromCharCode((3&d)<<6|e)));return f},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)g=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+g+i+h[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"sha256"));var e=b.sha256=b.sha256||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha256=b.md.algorithms.sha256=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(64),j={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g.putInt32(c.h5),g.putInt32(c.h6),g.putInt32(c.h7),g},j};var f=null,g=!1,h=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})},i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){ -for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1"); -var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m, -c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gl;l++)k.push(a.s.substr(i,f)),i+=f;var j=a.s.substr(0,i),m=a.s.substr(i,f);i+=f;var n=dreamsecurity.util.bytesToHex(b.intg.create(j));if(m!=n.substr(0,f))throw Error("4");d(a.l),a.s="",a.filter=k}for(var o=e.substr(0,f),l=0;lb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=e}function d(a){if(void 0===a)throw Error("input value is null.");try{var c=b.util.decode64(a),d="00c4665976b561cd82d1971e6512a4bddf65d82c035b81486f3b4756258dbd6d95a433db2d7d0daec20f3ddef14af5f504b52e72efc261e88bc5c867890acf52c5f9b96a2d2adc07091c3355415cb4141de608db0633adbb6b8019a03b8fdda447bc484e98b71dd2c1f570d4a3537ea87961c28436bac8393f5ffa11270a1adbea400f3b209a6b8b288d7069fa3623f9cd9c7b1fd8c52cc363587677f6ba82bc3a5d2fa44e78b605a57040e0317fd2f20c70775dcf61d2361832583a13fb6f778bf3271ab5aa605e84cbe5675fc55a49f5891ed17f4e3db1c920f9f46a87aa5cdb06f9cb8c39118c7f03d0466c0f8b60ccab62e35a0b8d947992c0dd1acd5bbebb",f=b.pki.setRsaPublicKey(new b.jsbn.BigInteger(d,16),new b.jsbn.BigInteger("010001",16)),g=b.pki.rsa.decrypt(c,f,!0,!0),h=g.substr(0,2),i=g.substr(2,g.length-2)}catch(j){throw new Error("11")}if("R0"==h){for(var k=i.split(","),l=0;ls)throw new Error("The license expired!")}function e(a){var b;return b=a.indexOf("://")>-1?a.split("/")[2]:a.split("/")[0],b=b.split(":")[0]}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1533889608426);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var f=b.asn1,g=b.pki=b.pki||{},h=g.oids;g.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var i=b.pki.algIdValidator=function(a,b,c,d,e){return{name:a,tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:f.Class.UNIVERSAL,type:f.Type.OID,constructed:!1,capture:c},{name:d,tagClass:f.Class.UNIVERSAL,optional:!0,captureAsn1:e}]}},j={name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:f.Class.UNIVERSAL,type:f.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},i("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:f.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes", -optional:!0}]},k=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[i("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:f.Class.UNIVERSAL,type:f.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};g.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var d=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var e=f.fromDer(c.body);return g.privateKeyFromAsn1(e)},g.privateKeyFromAsn1=function(c){a();var d={},e=[];if(!f.validate(c,j,d,e)){var i=new Error("Cannot read private key.");throw i.errors=e,i}c=f.fromDer(b.util.createBuffer(d.privateKey));var k=f.derToOid(d.privateKeyOid),l=null;if(k===h.rsaEncryption)l=g.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===h.kcdsa1)l=g.kcdsa.privateKeyFromAsn1(c,d.parameters),l.algName="kcdsa";else{var i=new Error("Not supported key.key oid="+k);i.errors=e}l.randomNum=null;var m=d.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name),g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(B(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){x(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e); -}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.k);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.create=function(c){var d={},e=0,f=null;d.contentType=null,d.content=null,d.signerInfos=[],d.certificates=[];try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,f=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var g=b.base64.decode(c);e=F.encoding.der,f=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(g)),d.contentType=f.contentType,d.content=f.content}else f=dreamsecurity.pkcs7.createSignedData()}catch(h){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,h)}return d.makeTBSData=function(a,b){var c="ds.pkcs7.signedData.makeTBSData";try{var d=w(b,c),e=dreamsecurity.md.algorithms[d].create(),g={makeSignedAttributes:!0};return f.content=v(a),f.sign(null,null,e,null,null,g).getBytes()}catch(h){throw new o(c,F.data.signedData,h)}},d.compose=function(a,b,c,d,e){var g="ds.pkcs7.signedData.compose",h=null;try{if(1===a){var i=b;if(i){if(i.md){var j=w(i.md,g);h=dreamsecurity.md.algorithms[j].create()}i.format&&(format=i.format)}h||(h=z(cert));var k=y(i,h.algorithm);f.content=v(c);var l={composeSignedData:!0,tbsData:d,signature:e};f.sign(i.cert.k,null,h,k,null,l)}else if(2===a){var l={setContent:!0};if(null!==f.content)throw new p(g,F.data.signedData,"The signedData already contains the content.");f.content=v(b),f.sign(null,null,null,null,null,l)}}catch(m){throw new o(g,F.data.signedData,m)}},d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(a,b,c){var e=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(c){if(c.md){var j=w(c.md,i);e=dreamsecurity.md.algorithms[j].create()}c.format&&(h=c.format)}e||(e=z(a)),g=y(c,e.algorithm),f.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};a.vi={},a.vi.s="1db179a833a83179e7218a5d8425a9ffffd367adf86fc243d3ea5afdd3b5206f0683a572688b2a8497b2033eb87e4f5ae07e176eb076acbc7a95d724ca53e785b1b63016fcf06745b46c0341ac63535420a597879eff570a25a81982c8ad6a522ed9b9b98674edfbb90010592deca460d4a393e9ef32e2cb78f22ab97fe0ec69011a109e8373335a3229809e9c0a3ed2ea45866a82aa6c430af56763bdd42a597d9d88b2b780a58949e3bed5750f90ba924dd917cebad904c51a03973da5b4db6adfb00d602181da18534dc23362d03ebc31cb0745f14f6cfa5b7fd7669bb2b7baaa5204389a67b6dee83e8bd55f640bcf6ada9f4f0a83ee12f3083f9057ad97683e2f02132fa54e3189cab97241a1eaa163ffd7ca4842b9b1cc827be242b0fdaafbd2def0cfb8a7ee7584fb6b",a.vi.gf=!1,a.vi.init=!1,c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea, -b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var b,c,d,e,f="",g=0;g>4),64!==d&&(f+=String.fromCharCode((15&c)<<4|d>>2),64!==e&&(f+=String.fromCharCode((3&d)<<6|e)));return f},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)g=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+g+i+h[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"sha256"));var e=b.sha256=b.sha256||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha256=b.md.algorithms.sha256=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(64),j={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g.putInt32(c.h5),g.putInt32(c.h6),g.putInt32(c.h7),g},j};var f=null,g=!1,h=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})},i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)), -i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1"); -var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m, -c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gl;l++)k.push(a.s.substr(i,f)),i+=f;var j=a.s.substr(0,i),m=a.s.substr(i,f);i+=f;var n=dreamsecurity.util.bytesToHex(b.intg.create(j));if(m!=n.substr(0,f))throw Error("4");d(a.l),a.s="",a.filter=k}for(var o=e.substr(0,f),l=0;lb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=e}function d(a){if(void 0===a)throw Error("input value is null.");try{var c=b.util.decode64(a),d="00c4665976b561cd82d1971e6512a4bddf65d82c035b81486f3b4756258dbd6d95a433db2d7d0daec20f3ddef14af5f504b52e72efc261e88bc5c867890acf52c5f9b96a2d2adc07091c3355415cb4141de608db0633adbb6b8019a03b8fdda447bc484e98b71dd2c1f570d4a3537ea87961c28436bac8393f5ffa11270a1adbea400f3b209a6b8b288d7069fa3623f9cd9c7b1fd8c52cc363587677f6ba82bc3a5d2fa44e78b605a57040e0317fd2f20c70775dcf61d2361832583a13fb6f778bf3271ab5aa605e84cbe5675fc55a49f5891ed17f4e3db1c920f9f46a87aa5cdb06f9cb8c39118c7f03d0466c0f8b60ccab62e35a0b8d947992c0dd1acd5bbebb",f=b.pki.setRsaPublicKey(new b.jsbn.BigInteger(d,16),new b.jsbn.BigInteger("010001",16)),g=b.pki.rsa.decrypt(c,f,!0,!0),h=g.substr(0,2),i=g.substr(2,g.length-2)}catch(j){throw new Error("11")}if("R0"==h){for(var k=i.split(","),l=0;ls)throw new Error("The license expired!")}function e(a){var b;return b=a.indexOf("://")>-1?a.split("/")[2]:a.split("/")[0],b=b.split(":")[0]}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1542248419865);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var f=b.asn1,g=b.pki=b.pki||{},h=g.oids;g.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var i=b.pki.algIdValidator=function(a,b,c,d,e){return{name:a,tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:f.Class.UNIVERSAL,type:f.Type.OID,constructed:!1,capture:c},{name:d,tagClass:f.Class.UNIVERSAL,optional:!0,captureAsn1:e}]}},j={name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:f.Class.UNIVERSAL,type:f.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},i("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:f.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes", -optional:!0}]},k=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[i("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:f.Class.UNIVERSAL,type:f.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};g.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var d=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var e=f.fromDer(c.body);return g.privateKeyFromAsn1(e)},g.privateKeyFromAsn1=function(c){a();var d={},e=[];if(!f.validate(c,j,d,e)){var i=new Error("Cannot read private key.");throw i.errors=e,i}c=f.fromDer(b.util.createBuffer(d.privateKey));var k=f.derToOid(d.privateKeyOid),l=null;if(k===h.rsaEncryption)l=g.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===h.kcdsa1)l=g.kcdsa.privateKeyFromAsn1(c,d.parameters),l.algName="kcdsa";else{var i=new Error("Not supported key.key oid="+k);i.errors=e}l.randomNum=null;var m=d.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name),g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:case f.oids.pbeWithSHA1AndARIA_CBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.pbeWithSHA1AndARIA_CBC:m=16,n=16,o=b.aria.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids.pbeWithSHA1AndARIA_CBC:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(B(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){x(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e)}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.k);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.create=function(c){var d={},e=0,f=null;d.contentType=null,d.content=null,d.signerInfos=[],d.certificates=[];try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,f=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var g=b.base64.decode(c);e=F.encoding.der,f=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(g)),d.contentType=f.contentType,d.content=f.content}else f=dreamsecurity.pkcs7.createSignedData()}catch(h){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,h)}return d.makeTBSData=function(a,b){var c="ds.pkcs7.signedData.makeTBSData";try{var d=w(b,c),e=dreamsecurity.md.algorithms[d].create(),g={makeSignedAttributes:!0};return f.content=v(a),f.sign(null,null,e,null,null,g).getBytes()}catch(h){throw new o(c,F.data.signedData,h)}},d.compose=function(a,b,c,d,e){var g="ds.pkcs7.signedData.compose",h=null;try{if(1===a){var i=b;if(i){if(i.md){var j=w(i.md,g);h=dreamsecurity.md.algorithms[j].create()}i.format&&(format=i.format)}h||(h=z(cert));var k=y(i,h.algorithm);f.content=v(c);var l={composeSignedData:!0,tbsData:d,signature:e};f.sign(i.cert.k,null,h,k,null,l)}else if(2===a){var l={setContent:!0};if(null!==f.content)throw new p(g,F.data.signedData,"The signedData already contains the content.");f.content=v(b),f.sign(null,null,null,null,null,l)}}catch(m){throw new o(g,F.data.signedData,m)}},d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(a,b,c){var e=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(c){if(c.md){var j=w(c.md,i);e=dreamsecurity.md.algorithms[j].create()}c.format&&(h=c.format)}e||(e=z(a)),g=y(c,e.algorithm),f.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};a.vi={},a.vi.s="1defe8815386629606c5c65d8425a9ffffd367adf86fc243d3ea5afdd3b5206f0683a572688b2a8497b2033eb87e4f5ae07e176eb076acbc7a95d724ca53e785b1b63016fcf06745b46c0341ac63535420a597879eff570a25a819b8859f6bd817d56cc56474edfbb90010592deca460d4a393e9ef32e2cb78f22ab97fe0ec69011a109e8373335a3229809e9c0a3ed2ea45866a82aa6c3c3f379a7d2b96fd7c769d88b2b780a58949e3bed5750f90ba924dd917ce83e1fde244a2b783744edb6adfb00d602181da18534dc23362d03ebc31cb0073f6132f768d876d819bb2b7baaa5204389a67b6dee83e8bd55f640bcf7c1a67295e2bd93278cf83715b36c7056fb4fb842fa54e3189cab97241a1eaa163ffd7ca4842b9b141726182b6613d19cb3f34c91454ce2b298a2543",a.vi.gf=!1,a.vi.init=!1,c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var o=e.read,p=e.getByte();if(0===p){h=e.getByte();var q=192&h;if(q===c.Class.UNIVERSAL||q===c.Class.CONTEXT_SPECIFIC)try{var r=d(e);n=r===k-(e.read-o),n&&(++o,--k)}catch(s){throw new Error("Error in asn1.fromDer()")}}e.read=o}if(n)if(l=[],void 0===k)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}l.push(c.fromDer(e,f,!0))}else for(var t=e.length();k>0;)l.push(c.fromDer(e,f,!0)),k-=t-e.length(),t=e.length();else{if(void 0===k){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");k=e.length()}if(j===c.Type.BMPSTRING){l="";for(var u=0;k>u;u+=2)l+=String.fromCharCode(e.getInt16())}else l=e.getBytes(k)}return c.create(i,j,m,l)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da,b.prototype.divideAndRemainder=Ea, -b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){var b=[];a=a.replace(/\s/gi,""),a=a.replace(/\r\n/gm,"");var c=a.search(/[^A-Za-z0-9\+\/\=]/g);if(c>0){var d=new Error("Base64 decode fail. (unknown charactor)");throw d.errors=b,d}for(var e,f,g,i,j="",k=0;k>4),64!==g&&(j+=String.fromCharCode((15&f)<<4|g>>2),64!==i&&(j+=String.fromCharCode((3&g)<<6|i)));return j},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)g=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+g+i+h[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"sha256"));var e=b.sha256=b.sha256||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha256=b.md.algorithms.sha256=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(64),j={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g.putInt32(c.h5),g.putInt32(c.h6),g.putInt32(c.h7),g},j};var f=null,g=!1,h=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})}, -i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1");var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32()); -}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m,c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gl;l++)k.push(a.s.substr(i,f)),i+=f;var j=a.s.substr(0,i),m=a.s.substr(i,f);i+=f;var n=dreamsecurity.util.bytesToHex(b.intg.create(j));if(m!=n.substr(0,f))throw Error("4");d(a.l),a.s="",a.filter=k}for(var o=e.substr(0,f),l=0;lb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=e}function d(a){if(void 0===a)throw Error("input value is null.");try{var c=b.util.decode64(a),d="00c4665976b561cd82d1971e6512a4bddf65d82c035b81486f3b4756258dbd6d95a433db2d7d0daec20f3ddef14af5f504b52e72efc261e88bc5c867890acf52c5f9b96a2d2adc07091c3355415cb4141de608db0633adbb6b8019a03b8fdda447bc484e98b71dd2c1f570d4a3537ea87961c28436bac8393f5ffa11270a1adbea400f3b209a6b8b288d7069fa3623f9cd9c7b1fd8c52cc363587677f6ba82bc3a5d2fa44e78b605a57040e0317fd2f20c70775dcf61d2361832583a13fb6f778bf3271ab5aa605e84cbe5675fc55a49f5891ed17f4e3db1c920f9f46a87aa5cdb06f9cb8c39118c7f03d0466c0f8b60ccab62e35a0b8d947992c0dd1acd5bbebb",f=b.pki.setRsaPublicKey(new b.jsbn.BigInteger(d,16),new b.jsbn.BigInteger("010001",16)),g=b.pki.rsa.decrypt(c,f,!0,!0),h=g.substr(0,2),i=g.substr(2,g.length-2)}catch(j){throw new Error("11")}if("R0"==h){for(var k=i.split(","),l=0;ls)throw new Error("The license expired!")}function e(a){var b;return b=a.indexOf("://")>-1?a.split("/")[2]:a.split("/")[0],b=b.split(":")[0]}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1546994051083);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var f=b.asn1,g=b.pki=b.pki||{},h=g.oids;g.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var i=b.pki.algIdValidator=function(a,b,c,d,e){return{name:a,tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:f.Class.UNIVERSAL,type:f.Type.OID,constructed:!1,capture:c},{name:d,tagClass:f.Class.UNIVERSAL,optional:!0,captureAsn1:e}]}},j={name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:f.Class.UNIVERSAL,type:f.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},i("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{ -name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:f.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes",optional:!0}]},k=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[i("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:f.Class.UNIVERSAL,type:f.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};g.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var d=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var e=f.fromDer(c.body);return g.privateKeyFromAsn1(e)},g.privateKeyFromAsn1=function(c){a();var d={},e=[];if(!f.validate(c,j,d,e)){var i=new Error("Cannot read private key.");throw i.errors=e,i}c=f.fromDer(b.util.createBuffer(d.privateKey));var k=f.derToOid(d.privateKeyOid),l=null;if(k===h.rsaEncryption)l=g.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===h.kcdsa1)l=g.kcdsa.privateKeyFromAsn1(c,d.parameters),l.algName="kcdsa";else{var i=new Error("Not supported key.key oid="+k);i.errors=e}l.randomNum=null;var m=d.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name),g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:case f.oids.pbeWithSHA1AndARIA_CBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.pbeWithSHA1AndARIA_CBC:m=16,n=16,o=b.aria.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids.pbeWithSHA1AndARIA_CBC:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(B(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){x(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e)}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.k);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.format.noSignedAttributes=32,b.pkcs7.signedData.create=function(c){var d={},e=0,f=null;d.contentType=null,d.content=null,d.signerInfos=[],d.certificates=[];try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,f=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var g=b.base64.decode(c);e=F.encoding.der,f=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(g)),d.contentType=f.contentType,d.content=f.content}else f=dreamsecurity.pkcs7.createSignedData()}catch(h){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,h)}return d.makeTBSData=function(a,b,c){var d="ds.pkcs7.signedData.makeTBSData";try{if(c&&32&c.format||4&c.format)return a;var e=w(b,d),g=dreamsecurity.md.algorithms[e].create(),h={makeSignedAttributes:!0,signingTime:c?c.signingTime:void 0};return f.content=v(a),f.sign(null,null,g,null,null,h).getBytes()}catch(i){throw new o(d,F.data.signedData,i)}},d.compose=function(a,b,c,d,e){var g="ds.pkcs7.signedData.compose",h=null,i=null;try{if(1===a){var j=b;if(j){if(j.md){var k=w(j.md,g);h=dreamsecurity.md.algorithms[k].create()}j.format&&(i=j.format)}h||(h=z(cert));var l=y(j,h.algorithm);f.content=v(c);var m={composeSignedData:!0,tbsData:d,signature:e};f.sign(j.cert.k,null,h,l,i,m)}else if(2===a){var m={setContent:!0};if(null!==f.content)throw new p(g,F.data.signedData,"The signedData already contains the content.");f.content=v(b),f.sign(null,null,null,null,null,m)}}catch(n){throw new o(g,F.data.signedData,n)}},d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(a,b,c){var e=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(c){if(c.md){var j=w(c.md,i);e=dreamsecurity.md.algorithms[j].create()}c.format&&(h=c.format)}e||(e=z(a)),g=y(c,e.algorithm),f.content=v(d.content);var k=0;for(k=0;k=64;){for(h=b[0],i=b[1],j=b[2],k=b[3],l=b[4],m=b[5],n=b[6],o=b[7],q=0;16>q;q++)r=e+4*q,g?a[q]=(255&c.charCodeAt(r))<<24|(255&c.charCodeAt(r+1))<<16|(255&c.charCodeAt(r+2))<<8|255&c.charCodeAt(r+3):a[q]=(255&c[r])<<24|(255&c[r+1])<<16|(255&c[r+2])<<8|255&c[r+3];for(q=16;64>q;q++)p=a[q-2],s=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,p=a[q-15],t=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,a[q]=(s+a[q-7]|0)+(t+a[q-16]|0);for(q=0;64>q;q++)s=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&m^~l&n)|0)+(o+(d[q]+a[q]|0)|0)|0,t=((h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10))+(h&i^h&j^i&j)|0,o=n,n=m,m=l,l=k+s|0,k=j,j=i,i=h,h=s+t|0;b[0]+=h,b[1]+=i,b[2]+=j,b[3]+=k,b[4]+=l,b[5]+=m,b[6]+=n,b[7]+=o,e+=64,f-=64}return e}var c=a.intg=a.intg||{};a.vi={},a.vi.s="1d92200f7e8ba271f17b530cad5ee0e536e3e78bc86fc243d3ea5afdd3b5206f0683a572688b2a8497b2033eb87e4f5ae07e176eb076acbc7a95d724ca53e785b1b63016fcf06745b46c0341ac63535420a597879eff570a25a819b8859f6bd817d56cc56474edfbb90010592deca460d4a393e9ef32e2cb78f22ab97fe0ec69011a109e8373335a3229809e9c0a3ed2ea45866a82aa6c3c3f379a7d2b96fd7c769d88b2b780a58949e3bed5750f90ba924dd917ce83e1fde244a2b783744edb6adfb00d602181da18534dc23362d03ebc31cb592131089a09ca02d5419bb2b7baaa5204389a67e6b75b65445d73027b687c1a67295e2bd93278cf83715b36c7056fb4fb842fa54e3189cab97241a1eaa163ffd7ca4842b9b141726182b6613d19cb3fcc1055a3879ce1afe3c9",a.vi.gf=!1,a.vi.init=!1,c.digestLength=32,c.blockSize=64;var d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],e=function(){function a(){this.digestLength=c.digestLength,this.blockSize=c.blockSize,this.state=new Array(8),this.temp=new Array(64),this.buffer=new Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return a.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},a.prototype.clean=function(){for(var a=0;a0){for(;this.bufferLength<64&&c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;64===this.bufferLength&&(b(this.temp,this.state,this.buffer,0,64,!1),this.bufferLength=0)}for(c>=64&&(d=b(this.temp,this.state,a,d,c,!0),c%=64);c>0;)this.buffer[this.bufferLength++]=a.charCodeAt(d++),c--;return this},a.prototype.finish=function(a){if(!this.finished){var c=this.bytesHashed,d=this.bufferLength,e=c/536870912|0,f=c<<3,g=56>c%64?64:128;this.buffer[d]=128;for(var h=d+1;g-8>h;h++)this.buffer[h]=0;this.buffer[g-8]=e>>>24&255,this.buffer[g-7]=e>>>16&255,this.buffer[g-6]=e>>>8&255,this.buffer[g-5]=e>>>0&255,this.buffer[g-4]=f>>>24&255,this.buffer[g-3]=f>>>16&255,this.buffer[g-2]=f>>>8&255,this.buffer[g-1]=f>>>0&255,b(this.temp,this.state,this.buffer,0,g,!1),this.finished=!0}for(var h=0;8>h;h++)a[4*h+0]=this.state[h]>>>24&255,a[4*h+1]=this.state[h]>>>16&255,a[4*h+2]=this.state[h]>>>8&255,a[4*h+3]=this.state[h]>>>0&255;return this},a.prototype.digest=function(){var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return this.finish(a),String.fromCharCode.apply(null,a)},a.prototype._saveState=function(a){for(var b=0;b1){var p=e.read,q=e.getByte();if(0===q){i=e.getByte();var r=192&i;if(r===c.Class.UNIVERSAL||r===c.Class.CONTEXT_SPECIFIC)try{var s=d(e);o=s===l-(e.read-p),o&&(++p,--l)}catch(t){throw new Error("Error in asn1.fromDer()")}}e.read=p}if(o)if(m=[],void 0===l)for(;;){if(e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2);break}m.push(c.fromDer(e,f,g,!0))}else for(var u=e.length();l>0;)m.push(c.fromDer(e,f,g,!0)),l-=u-e.length(),u=e.length();else{if(void 0===l){if(f)throw new Error("Non-constructed ASN.1 object of indefinite length.");l=e.length()}if(k===c.Type.BMPSTRING){m="";for(var v=0;l>v;v+=2)m+=String.fromCharCode(e.getInt16())}else m=e.getBytes(l)}return c.create(j,k,n,m)},c.toDer=function(d){1==arguments.length&&a();var e=b.util.createBuffer(),f=d.tagClass|d.type,g=b.util.createBuffer();if(d.composed){d.constructed?f|=32:g.putByte(0);for(var h=0;h>>=8;while(i>0);e.putByte(128|j.length);for(var h=j.length-1;h>=0;--h)e.putByte(j.charCodeAt(h))}return e.putBuffer(g),e},c.oidToDer=function(a){var c=a.split("."),d=b.util.createBuffer();d.putByte(40*parseInt(c[0],10)+parseInt(c[1],10));for(var e,f,g,h,i=2;i>>=7,e||(h|=128),f.push(h),e=!1;while(g>0);for(var j=f.length-1;j>=0;--j)d.putByte(f[j])}return d},c.derToOid=function(a){var c;"string"==typeof a&&(a=b.util.createBuffer(a));var d=a.getByte();c=Math.floor(d/40)+"."+d%40;for(var e=0;a.length()>0;)d=a.getByte(),e<<=7,128&d?e+=127&d:(c+="."+(e+d),e=0);return c},c.utcTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,2),10);c=c>=50?1900+c:2e3+c;var d=parseInt(a.substr(2,2),10)-1,e=parseInt(a.substr(4,2),10),f=parseInt(a.substr(6,2),10),g=parseInt(a.substr(8,2),10),h=0;if(a.length>11){var i=a.charAt(10),j=10;"+"!==i&&"-"!==i&&(h=parseInt(a.substr(10,2),10),j+=2)}if(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,0),j&&(i=a.charAt(j),"+"===i||"-"===i)){var k=parseInt(a.substr(j+1,2),10),l=parseInt(a.substr(j+4,2),10),m=60*k+l;m*=6e4,"+"===i?b.setTime(+b-m):b.setTime(+b+m)}return b},c.generalizedTimeToDate=function(a){var b=new Date,c=parseInt(a.substr(0,4),10),d=parseInt(a.substr(4,2),10)-1,e=parseInt(a.substr(6,2),10),f=parseInt(a.substr(8,2),10),g=parseInt(a.substr(10,2),10),h=parseInt(a.substr(12,2),10),i=0,j=0,k=!1;"Z"===a.charAt(a.length-1)&&(k=!0);var l=a.length-5,m=a.charAt(l);if("+"===m||"-"===m){var n=parseInt(a.substr(l+1,2),10),o=parseInt(a.substr(l+4,2),10);j=60*n+o,j*=6e4,"+"===m&&(j*=-1),k=!0}return"."===a.charAt(14)&&(i=1e3*parseFloat(a.substr(14),10)),k?(b.setUTCFullYear(c,d,e),b.setUTCHours(f,g,h,i),b.setTime(+b+j)):(b.setFullYear(c,d,e),b.setHours(f,g,h,i)),b},c.dateToUtcTime=function(a){var b="",c=[];c.push((""+a.getUTCFullYear()).substr(2)),c.push(""+(a.getUTCMonth()+1)),c.push(""+a.getUTCDate()),c.push(""+a.getUTCHours()),c.push(""+a.getUTCMinutes()),c.push(""+a.getUTCSeconds());for(var d=0;d=-128&&128>a)return c.putSignedInt(a,8);if(a>=-32768&&32768>a)return c.putSignedInt(a,16);if(a>=-8388608&&8388608>a)return c.putSignedInt(a,24);if(a>=-2147483648&&2147483648>a)return c.putSignedInt(a,32);var d=new Error("Integer too large; max is 32-bits.");throw d.integer=a,d},c.derToInteger=function(a){"string"==typeof a&&(a=b.util.createBuffer(a));var c=8*a.length();if(c>32)throw new Error("Integer too large; max is 32-bits.");return a.getSignedInt(c)},c.validate=function(a,d,e,f){var g=!1;if(a.tagClass!==d.tagClass&&"undefined"!=typeof d.tagClass||a.type!==d.type&&"undefined"!=typeof d.type)f&&(a.tagClass!==d.tagClass&&f.push("["+d.name+'] Expected tag class "'+d.tagClass+'", got "'+a.tagClass+'"'),a.type!==d.type&&f.push("["+d.name+'] Expected type "'+d.type+'", got "'+a.type+'"'));else if(a.constructed===d.constructed||"undefined"==typeof d.constructed){if(g=!0,d.value&&b.util.isArray(d.value))for(var h=0,i=0;g&&i=0;){var g=b*this.data[a++]+c.data[d]+e;e=Math.floor(g/67108864),c.data[d++]=67108863&g}return e}function e(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this.data[a],j=this.data[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c.data[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c.data[d++]=1073741823&i}return e}function f(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this.data[a],j=this.data[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c.data[d]+e,e=(i>>28)+(k>>14)+h*j,c.data[d++]=268435455&i}return e}function g(a){return fb.charAt(a)}function h(a,b){var c=gb[a.charCodeAt(b)];return null==c?-1:c}function i(a){for(var b=this.t-1;b>=0;--b)a.data[b]=this.data[b];a.t=this.t,a.s=this.s}function j(a){this.t=1,this.s=0>a?-1:0,a>0?this.data[0]=a:-1>a?this.data[0]=a+this.DV:this.t=0}function k(a){var b=c();return b.fromInt(a),b}function l(a,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(a,c);d=2}this.t=0,this.s=0;for(var e=a.length,f=!1,g=0;--e>=0;){var i=8==d?255&a[e]:h(a,e);0>i?"-"==a.charAt(e)&&(f=!0):(f=!1,0==g?this.data[this.t++]=i:g+d>this.DB?(this.data[this.t-1]|=(i&(1<>this.DB-g):this.data[this.t-1]|=i<=this.DB&&(g-=this.DB))}8==d&&0!=(128&a[0])&&(this.s=-1,g>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==a;)--this.t}function n(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<0)for(i>i)>0&&(e=!0,f=g(c));h>=0;)b>i?(c=(this.data[h]&(1<>(i+=this.DB-b)):(c=this.data[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(f+=g(c));return e?f:"0"}function o(){var a=c();return b.ZERO.subTo(this,a),a}function p(){return this.s<0?this.negate():this}function q(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this.data[c]-a.data[c]))return b;return 0}function r(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function s(){return this.t<=0?0:this.DB*(this.t-1)+r(this.data[this.t-1]^this.s&this.DM)}function t(a,b){var c;for(c=this.t-1;c>=0;--c)b.data[c+a]=this.data[c];for(c=a-1;c>=0;--c)b.data[c]=0;b.t=this.t+a,b.s=this.s}function u(a,b){for(var c=a;c=0;--c)b.data[c+g+1]=this.data[c]>>e|h,h=(this.data[c]&f)<=0;--c)b.data[c]=0;b.data[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function w(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<>d;for(var g=c+1;g>d;d>0&&(b.data[this.t-c-1]|=(this.s&f)<c;)d+=this.data[c]-a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b.data[c++]=this.DV+d:d>0&&(b.data[c++]=d),b.t=c,b.clamp()}function y(a,c){var d=this.abs(),e=a.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c.data[f]=0;for(f=0;f=0;)a.data[c]=0;for(c=0;c=b.DV&&(a.data[c+b.t]-=b.DV,a.data[c+b.t+1]=1)}a.t>0&&(a.data[a.t-1]+=b.am(c,b.data[c],a,2*c,0,1)),a.s=0,a.clamp()}function A(a,d,e){var f=a.abs();if(!(f.t<=0)){var g=this.abs();if(g.t0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h.data[l-1];if(0!=m){var n=m*(1<1?h.data[l-2]>>this.F2:0),o=this.FV/n,p=(1<=0&&(e.data[e.t++]=1,e.subTo(u,e)),b.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t=0;){var v=e.data[--s]==m?this.DM:Math.floor(e.data[s]*o+(e.data[s-1]+q)*p);if((e.data[s]+=h.am(0,v,e,t,0,l))0&&e.rShiftTo(k,e),0>i&&b.ZERO.subTo(e,e)}}}function B(a){var d=c();return this.abs().divRemTo(a,null,d),this.s<0&&d.compareTo(b.ZERO)>0&&a.subTo(d,d),d}function C(a){this.m=a}function D(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function E(a){return a}function F(a){a.divRemTo(this.m,null,a)}function G(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function H(a,b){a.squareTo(b),this.reduce(b)}function I(){if(this.t<1)return 0;var a=this.data[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function J(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(d,d),d}function L(a){var b=c();return a.copyTo(b),this.reduce(b),b}function M(a){for(;a.t<=this.mt2;)a.data[a.t++]=0;for(var b=0;b>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a.data[c]+=this.m.am(0,d,a,b,0,this.m.t);a.data[c]>=a.DV;)a.data[c]-=a.DV,a.data[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function N(a,b){a.squareTo(b),this.reduce(b)}function O(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function P(){return 0==(this.t>0?1&this.data[0]:this.s)}function Q(a,d){if(a>4294967295||1>a)return b.ONE;var e=c(),f=c(),g=d.convert(this),h=r(a)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(a&1<0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function R(a,b){var c;return c=256>a||b.isEven()?new C(b):new J(b),this.exp(a,c)}function S(){var a=c();return this.copyTo(a),a}function T(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function V(){return 0==this.t?this.s:this.data[0]<<16>>16}function W(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function X(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function Y(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var b=this.chunkSize(a),d=Math.pow(a,b),e=k(d),f=c(),g=c(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Z(a,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,g=0,i=0,j=0;jk?"-"==a.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++g>=d&&(this.dMultiply(e),this.dAddOffset(i,0),g=0,i=0))}g>0&&(this.dMultiply(Math.pow(c,g)),this.dAddOffset(i,0)),f&&b.ZERO.subTo(this,this)}function $(a,c,d){if("number"==typeof c)if(2>a)this.fromInt(1);else for(this.fromNumber(a,d),this.testBit(a-1)||this.bitwiseTo(b.ONE.shiftLeft(a-1),ga,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(b.ONE.shiftLeft(a-1),this);else{var e=new Array,f=7&a;e.length=(a>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<0)for(d>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<=0;)8>d?(c=(this.data[a]&(1<>(d+=this.DB-8)):(c=this.data[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function aa(a){return 0==this.compareTo(a)}function ba(a){return this.compareTo(a)<0?this:a}function ca(a){return this.compareTo(a)>0?this:a}function da(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c.data[d]=b(this.data[d],a.data[d]);if(a.ta?this.rShiftTo(-a,b):this.lShiftTo(a,b),b}function oa(a){var b=c();return 0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b),b}function pa(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function qa(){for(var a=0;a=this.t?0!=this.s:0!=(this.data[b]&1<c;)d+=this.data[c]+a.data[c],b.data[c++]=d&this.DM,d>>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b.data[c++]=d:-1>d&&(b.data[c++]=this.DV+d),b.t=c,b.clamp()}function za(a){var b=c();return this.addTo(a,b),b}function Aa(a){var b=c();return this.subTo(a,b),b}function Ba(a){var b=c();return this.multiplyTo(a,b),b}function Ca(a){var b=c();return this.divRemTo(a,b,null),b}function Da(a){var b=c();return this.divRemTo(a,null,b),b}function Ea(a){var b=c(),d=c();return this.divRemTo(a,b,d),new Array(b,d)}function Fa(a){this.data[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Ga(a,b){if(0!=a){for(;this.t<=b;)this.data[this.t++]=0;for(this.data[b]+=a;this.data[b]>=this.DV;)this.data[b]-=this.DV,++b>=this.t&&(this.data[this.t++]=0),++this.data[b]}}function Ha(){}function Ia(a){return a}function Ja(a,b,c){a.multiplyTo(b,c)}function Ka(a,b){a.squareTo(b)}function La(a){return this.exp(a,new Ha)}function Ma(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c.data[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c.data[d+this.t]=this.am(0,a.data[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a.data[d],c,d,0,b-d);c.clamp()}function Na(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c.data[d]=0;for(d=Math.max(b-this.t,0);d2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var b=c();return a.copyTo(b),this.reduce(b),b}function Qa(a){return a}function Ra(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sa(a,b){a.squareTo(b),this.reduce(b)}function Ta(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ua(a,b){var d,e,f=a.bitLength(),g=k(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new C(b):b.isEven()?new Oa(b):new J(b);var h=new Array,i=3,j=d-1,l=(1<1){var m=c();for(e.sqrTo(h[1],m);l>=i;)h[i]=c(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,q=!0,s=c();for(f=r(a.data[p])-1;p>=0;){for(f>=j?n=a.data[p]>>f-j&l:(n=(a.data[p]&(1<0&&(n|=a.data[p-1]>>this.DB+f-j)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),q)h[n].copyTo(g),q=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a.data[p]&1<f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wa(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this.data[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this.data[d])%a;return c}function Xa(a){var c=a.isEven();if(this.isEven()&&c||0==a.signum())return b.ZERO;for(var d=a.clone(),e=this.clone(),f=k(1),g=k(0),h=k(0),i=k(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(a,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(a,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(b.ONE)?b.ZERO:i.compareTo(a)>=0?i.subtract(a):i.signum()<0?(i.addTo(a,i),i.signum()<0?i.add(a):i):i}function Ya(a){var b,c=this.abs();if(1==c.t&&c.data[0]<=hb[hb.length-1]){for(b=0;bd;)d*=hb[e++];for(d=c.modInt(d);e>b;)if(d%hb[b++]==0)return!1}return c.millerRabin(a)}function Za(a){var c=this.subtract(b.ONE),d=c.getLowestSetBit();if(0>=d)return!1;for(var e,f=c.shiftRight(d),g=$a(),h=0;a>h;++h){do e=new b(this.bitLength(),g);while(e.compareTo(b.ONE)<=0||e.compareTo(c)>=0);var i=e.modPow(f,this);if(0!=i.compareTo(b.ONE)&&0!=i.compareTo(c)){for(var j=1;j++>24&255),d>16&255),d>8&255),d>24&255,a[d++]=c[e]>>16&255,a[d++]=c[e]>>8&255,a[d++]=255&c[e])}else for(var e=0;e=eb;++eb)gb[db++]=eb;for(db="a".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;for(db="A".charCodeAt(0),eb=10;36>eb;++eb)gb[db++]=eb;C.prototype.convert=D,C.prototype.revert=E,C.prototype.reduce=F,C.prototype.mulTo=G,C.prototype.sqrTo=H,J.prototype.convert=K,J.prototype.revert=L,J.prototype.reduce=M,J.prototype.mulTo=O,J.prototype.sqrTo=N,b.prototype.copyTo=i,b.prototype.fromInt=j,b.prototype.fromString=l,b.prototype.clamp=m,b.prototype.dlShiftTo=t,b.prototype.drShiftTo=u,b.prototype.lShiftTo=v,b.prototype.rShiftTo=w,b.prototype.subTo=x,b.prototype.multiplyTo=y,b.prototype.squareTo=z,b.prototype.divRemTo=A,b.prototype.invDigit=I,b.prototype.isEven=P,b.prototype.exp=Q,b.prototype.toString=n,b.prototype.negate=o,b.prototype.abs=p,b.prototype.compareTo=q,b.prototype.bitLength=s,b.prototype.mod=B,b.prototype.modPowInt=R,b.ZERO=k(0),b.ONE=k(1),Ha.prototype.convert=Ia,Ha.prototype.revert=Ia,Ha.prototype.mulTo=Ja,Ha.prototype.sqrTo=Ka,Oa.prototype.convert=Pa,Oa.prototype.revert=Qa,Oa.prototype.reduce=Ra,Oa.prototype.mulTo=Ta,Oa.prototype.sqrTo=Sa;var hb=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],ib=(1<<26)/hb[hb.length-1];b.prototype.chunkSize=W,b.prototype.toRadix=Y,b.prototype.fromRadix=Z,b.prototype.fromNumber=$,b.prototype.bitwiseTo=da,b.prototype.changeBit=ua,b.prototype.addTo=ya,b.prototype.dMultiply=Fa,b.prototype.dAddOffset=Ga,b.prototype.multiplyLowerTo=Ma,b.prototype.multiplyUpperTo=Na,b.prototype.modInt=Wa,b.prototype.millerRabin=Za,b.prototype.clone=S,b.prototype.intValue=T,b.prototype.byteValue=U,b.prototype.shortValue=V,b.prototype.signum=X,b.prototype.toByteArray=_,b.prototype.equals=aa,b.prototype.min=ba,b.prototype.max=ca,b.prototype.and=fa,b.prototype.or=ha,b.prototype.xor=ja,b.prototype.andNot=la,b.prototype.not=ma,b.prototype.shiftLeft=na,b.prototype.shiftRight=oa,b.prototype.getLowestSetBit=qa,b.prototype.bitCount=sa,b.prototype.testBit=ta,b.prototype.setBit=va,b.prototype.clearBit=wa,b.prototype.flipBit=xa,b.prototype.add=za,b.prototype.subtract=Aa,b.prototype.multiply=Ba,b.prototype.divide=Ca,b.prototype.remainder=Da, -b.prototype.divideAndRemainder=Ea,b.prototype.modPow=Ua,b.prototype.modInverse=Xa,b.prototype.pow=La,b.prototype.gcd=Va,b.prototype.isProbablePrime=Ya,a.jsbn=a.jsbn||{},a.jsbn.BigInteger=b}var b="jsbn";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return this.data=c,this},e.ByteStringBuffer.prototype.putBytes=function(a){return this.data+=a,this},e.ByteStringBuffer.prototype.putString=function(a){return this.data+=e.encodeUtf8(a),this},e.ByteStringBuffer.prototype.putInt16=function(a){return this.data+=String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt24=function(a){return this.data+=String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt32=function(a){return this.data+=String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a),this},e.ByteStringBuffer.prototype.putInt16Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255),this},e.ByteStringBuffer.prototype.putInt24Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255),this},e.ByteStringBuffer.prototype.putInt32Le=function(a){return this.data+=String.fromCharCode(255&a)+String.fromCharCode(a>>8&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>24&255),this},e.ByteStringBuffer.prototype.putInt=function(a,b){do b-=8,this.data+=String.fromCharCode(a>>b&255);while(b>0);return this},e.ByteStringBuffer.prototype.putSignedInt=function(a,b){return 0>a&&(a+=2<0);return b},e.ByteStringBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.ByteStringBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.ByteStringBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.ByteStringBuffer.prototype.at=function(a){return this.data.charCodeAt(this.read+a)},e.ByteStringBuffer.prototype.setAt=function(a,b){return this.data=this.data.substr(0,this.read+a)+String.fromCharCode(b)+this.data.substr(this.read+a+1),this},e.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},e.ByteStringBuffer.prototype.copy=function(){var a=e.createBuffer(this.data);return a.read=this.read,a},e.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},e.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},e.ByteStringBuffer.prototype.truncate=function(a){var b=Math.max(0,this.length()-a);return this.data=this.data.substr(this.read,b),this.read=0,this},e.ByteStringBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.ByteStringBuffer.prototype.toString=function(){return e.decodeUtf8(this.bytes())},e.DataBuffer=c,e.DataBuffer.prototype.length=function(){return this.write-this.read},e.DataBuffer.prototype.isEmpty=function(){return this.length()<=0},e.DataBuffer.prototype.accommodate=function(a,b){if(this.length()>=a)return this;b=Math.max(b||this.growSize,a);var c=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),d=new Uint8Array(this.length()+b);return d.set(c),this.data=new DataView(d.buffer),this},e.DataBuffer.prototype.putByte=function(a){return this.accommodate(1),this.data.setUint8(this.write++,a),this},e.DataBuffer.prototype.fillWithByte=function(a,b){this.accommodate(b);for(var c=0;b>c;++c)this.data.setUint8(a);return this},e.DataBuffer.prototype.putBytes=function(a,b){if(e.isArrayBufferView(a)){var c=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),d=c.byteLength-c.byteOffset;this.accommodate(d);var f=new Uint8Array(this.data.buffer,this.write);return f.set(c),this.write+=d,this}if(e.isArrayBuffer(a)){var c=new Uint8Array(a);this.accommodate(c.byteLength);var f=new Uint8Array(this.data.buffer);return f.set(c,this.write),this.write+=c.byteLength,this}if(a instanceof e.DataBuffer||"object"==typeof a&&"number"==typeof a.read&&"number"==typeof a.write&&e.isArrayBufferView(a.data)){var c=new Uint8Array(a.data.byteLength,a.read,a.length());this.accommodate(c.byteLength);var f=new Uint8Array(a.data.byteLength,this.write);return f.set(c),this.write+=c.byteLength,this}if(a instanceof e.ByteStringBuffer&&(a=a.data,b="binary"),b=b||"binary","string"==typeof a){var g;if("hex"===b)return this.accommodate(Math.ceil(a.length/2)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.hex.decode(a,g,this.write),this;if("base64"===b)return this.accommodate(3*Math.ceil(a.length/4)),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.base64.decode(a,g,this.write),this;if("utf8"===b&&(a=e.encodeUtf8(a),b="binary"),"binary"===b||"raw"===b)return this.accommodate(a.length),g=new Uint8Array(this.data.buffer,this.write),this.write+=e.binary.raw.decode(g),this;if("utf16"===b)return this.accommodate(2*a.length),g=new Uint16Array(this.data.buffer,this.write),this.write+=e.text.utf16.encode(g),this;throw new Error("Invalid encoding: "+b)}throw Error("Invalid parameter: "+a)},e.DataBuffer.prototype.putBuffer=function(a){return this.putBytes(a),a.clear(),this},e.DataBuffer.prototype.putString=function(a){return this.putBytes(a,"utf16")},e.DataBuffer.prototype.putInt16=function(a){return this.accommodate(2),this.data.setInt16(this.write,a),this.write+=2,this},e.DataBuffer.prototype.putInt24=function(a){return this.accommodate(3),this.data.setInt16(this.write,a>>8&65535),this.data.setInt8(this.write,a>>16&255),this.write+=3,this},e.DataBuffer.prototype.putInt32=function(a){return this.accommodate(4),this.data.setInt32(this.write,a),this.write+=4,this},e.DataBuffer.prototype.putInt16Le=function(a){return this.accommodate(2),this.data.setInt16(this.write,a,!0),this.write+=2,this},e.DataBuffer.prototype.putInt24Le=function(a){return this.accommodate(3),this.data.setInt8(this.write,a>>16&255),this.data.setInt16(this.write,a>>8&65535,!0),this.write+=3,this},e.DataBuffer.prototype.putInt32Le=function(a){return this.accommodate(4),this.data.setInt32(this.write,a,!0),this.write+=4,this},e.DataBuffer.prototype.putInt=function(a,b){this.accommodate(b/8);do b-=8,this.data.setInt8(this.write++,a>>b&255);while(b>0);return this},e.DataBuffer.prototype.putSignedInt=function(a,b){return this.accommodate(b/8),0>a&&(a+=2<0);return b},e.DataBuffer.prototype.getSignedInt=function(a){var b=this.getInt(a),c=2<=c&&(b-=c<<1),b},e.DataBuffer.prototype.getBytes=function(a){var b;return a?(a=Math.min(this.length(),a),b=this.data.slice(this.read,this.read+a),this.read+=a):0===a?b="":(b=0===this.read?this.data:this.data.slice(this.read),this.clear()),b},e.DataBuffer.prototype.bytes=function(a){return"undefined"==typeof a?this.data.slice(this.read):this.data.slice(this.read,this.read+a)},e.DataBuffer.prototype.at=function(a){return this.data.getUint8(this.read+a)},e.DataBuffer.prototype.setAt=function(a,b){return this.data.setUint8(a,b),this},e.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},e.DataBuffer.prototype.copy=function(){return new e.DataBuffer(this)},e.DataBuffer.prototype.compact=function(){if(this.read>0){var a=new Uint8Array(this.data.buffer,this.read),b=new Uint8Array(a.byteLength);b.set(a),this.data=new DataView(b),this.write-=this.read,this.read=0}return this},e.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},e.DataBuffer.prototype.truncate=function(a){return this.write=Math.max(0,this.length()-a),this.read=Math.min(this.read,this.write),this},e.DataBuffer.prototype.toHex=function(){for(var a="",b=this.read;bc&&(a+="0"),a+=c.toString(16)}return a},e.DataBuffer.prototype.toString=function(a){var b=new Uint8Array(this.data,this.read,this.length());if(a=a||"utf8","binary"===a||"raw"===a)return e.binary.raw.encode(b);if("hex"===a)return e.binary.hex.encode(b);if("base64"===a)return e.binary.base64.encode(b);if("utf8"===a)return e.text.utf8.decode(b);if("utf16"===a)return e.text.utf16.decode(b);throw new Error("Invalid encoding: "+a)},e.createBuffer=function(a,b){return b=b||"raw",void 0!==a&&"utf8"===b&&(a=e.encodeUtf8(a)),new e.ByteBuffer(a)},e.fillString=function(a,b){for(var c="";b>0;)1&b&&(c+=a),b>>>=1,b>0&&(a+=a);return c},e.xorBytes=function(a,b,c){for(var d="",e="",f="",g=0,h=0;c>0;--c,++g)e=a.charCodeAt(g)^b.charCodeAt(g),h>=10&&(d+=f,f="",h=0),f+=String.fromCharCode(e),++h;return d+=f},e.hexToBytes=function(a){var b="",c=0;for(a.length&!0&&(c=1,b+=String.fromCharCode(parseInt(a.substr(0,1),16)));c>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(255&a)};var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];e.encode64=function(a,b){for(var c,d,e,f="",h="",i=0;i>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.decode64=function(a){var b=[];a=a.replace(/\s/gi,""),a=a.replace(/\r\n/gm,"");var c=a.search(/[^A-Za-z0-9\+\/\=]/g);if(c>0){var d=new Error("Base64 decode fail. (unknown charactor)");throw d.errors=b,d}for(var e,f,g,i,j="",k=0;k>4),64!==g&&(j+=String.fromCharCode((15&f)<<4|g>>2),64!==i&&(j+=String.fromCharCode((3&g)<<6|i)));return j},e.encodeUtf8=function(a){return unescape(encodeURIComponent(a))},e.decodeUtf8=function(a){return decodeURIComponent(escape(a))},e.binary={raw:{},hex:{},base64:{}},e.binary.raw.encode=function(a){return String.fromCharCode.apply(null,a)},e.binary.raw.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var e=c,f=0;f>2),f+=g.charAt((3&c)<<4|d>>4),isNaN(d)?f+="==":(f+=g.charAt((15&d)<<2|e>>6),f+=isNaN(e)?"=":g.charAt(63&e)),b&&f.length>b&&(h+=f.substr(0,b)+"\r\n",f=f.substr(b));return h+=f},e.binary.base64.decode=function(a,b,c){var d=b;d||(d=new Uint8Array(3*Math.ceil(a.length/4))),a=a.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=c||0;for(var e,f,g,i,j=0,k=c;j>4,64!==g&&(d[k++]=(15&f)<<4|g>>2,64!==i&&(d[k++]=(3&g)<<6|i));return b?k-c:d},e.text={utf8:{},utf16:{}},e.text.utf8.encode=function(a,b,c){a=e.encodeUtf8(a);var d=b;d||(d=new Uint8Array(a.length)),c=c||0;for(var f=c,g=0;g0?(e=c[d].substring(0,g),f=c[d].substring(g+1)):(e=c[d],f=null),e in b||(b[e]=[]),e in Object.prototype||null===f||b[e].push(unescape(f))}return b};return"undefined"==typeof a?(null===p&&(p="undefined"==typeof window?{}:c(window.location.search.substring(1))),b=p):b=c(a),b},e.parseFragment=function(a){var b=a,c="",d=a.indexOf("?");d>0&&(b=a.substring(0,d),c=a.substring(d+1));var f=b.split("/");f.length>0&&""===f[0]&&f.shift();var g=""===c?{}:e.getQueryVariables(c);return{pathString:b,queryString:c,path:f,query:g}},e.makeRequest=function(a){var b=e.parseFragment(a),c={path:b.pathString,query:b.queryString,getPath:function(a){return"undefined"==typeof a?b.path:b.path[a]},getQuery:function(a,c){var d;return"undefined"==typeof a?d=b.query:(d=b.query[a],d&&"undefined"!=typeof c&&(d=d[c])),d},getQueryLast:function(a,b){var d,e=c.getQuery(a);return d=e?e[e.length-1]:b}};return c},e.makeLink=function(a,b,c){a=jQuery.isArray(a)?a.join("/"):a;var d=jQuery.param(b||{});return c=c||"",a+(d.length>0?"?"+d:"")+(c.length>0?"#"+c:"")},e.setPath=function(a,b,c){if("object"==typeof a&&null!==a)for(var d=0,e=b.length;e>d;){var f=b[d++];if(d==e)a[f]=c;else{var g=f in a;(!g||g&&"object"!=typeof a[f]||g&&null===a[f])&&(a[f]={}),a=a[f]}}},e.getPath=function(a,b,c){for(var d=0,e=b.length,f=!0;f&&e>d&&"object"==typeof a&&null!==a;){var g=b[d++];f=g in a,f&&(a=a[g])}return f?a:c},e.deletePath=function(a,b){if("object"==typeof a&&null!==a)for(var c=0,d=b.length;d>c;){var e=b[c++];if(c==d)delete a[e];else{if(!(e in a)||"object"!=typeof a[e]||null===a[e])break;a=a[e]}}},e.isEmpty=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},e.format=function(a){for(var b,c,d=/%./g,e=0,f=[],g=0;b=d.exec(a);){c=a.substring(g,d.lastIndex-2),c.length>0&&f.push(c),g=d.lastIndex;var h=b[0][1];switch(h){case"s":case"o":e");break;case"%":f.push("%");break;default:f.push("<%"+h+"?>")}}return f.push(a.substring(g)),f.join("")},e.formatNumber=function(a,b,c,d){var e=a,f=isNaN(b=Math.abs(b))?2:b,g=void 0===c?",":c,h=void 0===d?".":d,i=0>e?"-":"",j=parseInt(e=Math.abs(+e||0).toFixed(f),10)+"",k=j.length>3?j.length%3:0;return i+(k?j.substr(0,k)+h:"")+j.substr(k).replace(/(\d{3})(?=\d)/g,"$1"+h)+(f?g+Math.abs(e-j).toFixed(f).slice(2):"")},e.formatSize=function(a){return a=a>=1073741824?e.formatNumber(a/1073741824,2,".","")+" GiB":a>=1048576?e.formatNumber(a/1048576,2,".","")+" MiB":a>=1024?e.formatNumber(a/1024,0)+" KiB":e.formatNumber(a,0)+" bytes"},e.bytesFromIP=function(a){return-1!==a.indexOf(".")?e.bytesFromIPv4(a):-1!==a.indexOf(":")?e.bytesFromIPv6(a):null},e.bytesFromIPv4=function(a){if(a=a.split("."),4!==a.length)return null;for(var b=e.createBuffer(),c=0;cf;++f)if(a[f]&&0!==a[f].length){var g=e.hexToBytes(a[f]);g.length<2&&d.putByte(0),d.putBytes(g)}else d.fillWithByte(0,c),c=0;return d.getBytes()},e.bytesToIP=function(a){return 4===a.length?e.bytesToIPv4(a):16===a.length?e.bytesToIPv6(a):null},e.bytesToIPv4=function(a){if(4!==a.length)return null;for(var b=[],c=0;cc[d].end-c[d].start&&(d=c.length-1)):c.push({start:i,end:i})}b.push(g)}if(c.length>0){var j=c[d];j.end-j.start>0&&(b.splice(j.start,j.end-j.start+1,""),0===j.start&&b.unshift(""),7===j.end&&b.push(""))}return b.join(":")},e.estimateCores=function(a,b){function c(a,h,i){if(0===h){var j=Math.floor(a.reduce(function(a,b){return a+b},0)/a.length);return e.cores=Math.max(1,j),URL.revokeObjectURL(g),b(null,e.cores)}d(i,function(b,d){a.push(f(i,d)),c(a,h-1,i)})}function d(a,b){for(var c=[],d=[],e=0;a>e;++e){var f=new Worker(g);f.addEventListener("message",function(e){if(d.push(e.data),d.length===a){for(var f=0;a>f;++f)c[f].terminate();b(null,d)}}),c.push(f)}for(var e=0;a>e;++e)c[e].postMessage(e)}function f(a,b){for(var c=[],d=0;a>d;++d)for(var e=b[d],f=c[d]=[],g=0;a>g;++g)if(d!==g){var h=b[g];(e.st>h.st&&e.ste.st&&h.st0)return e.cores=navigator.hardwareConcurrency,b(null,e.cores);if("undefined"==typeof Worker)return e.cores=1,b(null,e.cores);if("undefined"==typeof Blob)return e.cores=2,b(null,e.cores);var g=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(a){for(var b=Date.now(),c=b+4;Date.now()65&&-1!==g){var h=b[g];","===h?(++g,b=b.substr(0,g)+"\r\n "+b.substr(g)):b=b.substr(0,g)+"\r\n"+h+b.substr(g+1),f=e-g-1,g=-1,++e}else" "!==b[e]&&" "!==b[e]&&","!==b[e]||(g=e);return b}function d(a){return a.replace(/^\s+/,"")}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"pem"));var e=b.pem=b.pem||{};e.encode=function(d,e){a(),e=e||{};var f,g="-----BEGIN "+d.type+"-----\r\n";if(d.procType&&(f={name:"Proc-Type",values:[String(d.procType.version),d.procType.type]},g+=c(f)),d.contentDomain&&(f={name:"Content-Domain",values:[d.contentDomain]},g+=c(f)),d.dekInfo&&(f={name:"DEK-Info",values:[d.dekInfo.algorithm]},d.dekInfo.parameters&&f.values.push(d.dekInfo.parameters),g+=c(f)),d.headers)for(var h=0;h=this.blockSize||this._input.length()>0&&this._finish;)this._op.call(this.mode,this._input,this.output,c),c=!1;this._input.compact()},c.prototype.finish=function(b){a(),b&&"CBC"===this.mode.name&&(this.mode.pad=function(a){return b(this.blockSize,a,!1)},this.mode.unpad=function(a){return b(this.blockSize,a,!0)});var c={};return c.decrypt=this._decrypt,c.overflow=this._input.length()%this.blockSize,this._decrypt||!this.mode.pad||this.mode.pad(this._input,c)?(this._finish=!0,this.update(),this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,c)?!1:!this.mode.afterFinish||this.mode.afterFinish(this.output,c)):!1}}var b="cipher";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g4){var c=a;a=b.util.createBuffer();for(var d=0;d0)return!1;var c=a.length(),d=a.at(c-1);return d>this.blockSize<<2?!1:(a.truncate(d),!0)}}var b="cipherModes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gd.blockLength&&(d.start(),d.update(g.bytes()),g=d.digest()),e=b.util.createBuffer(),f=b.util.createBuffer(),k=g.length();for(var j=0;k>j;++j){var i=g.at(j);e.putByte(54^i),f.putByte(92^i)}if(kj;++j)e.putByte(54),f.putByte(92);c=g,e=e.bytes(),f=f.bytes()}d.start(),d.update(e)},g.update=function(a){d.update(a)},g.getMac=function(){var a=d.digest().bytes();return d.start(),d.update(f),d.update(a),d.digest()},g.digest=g.getMac,g}}var b="hmac";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(e=a.h0,f=a.h1,g=a.h2,h=a.h3,i=a.h4,k=0;16>k;++k)d=c.getInt32()>>>0,b[k]=d>>>0,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;20>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d,j=(h^f&(g^h))>>>0,d=(e<<5|e>>>27)+j+i+1518500249+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;32>k;++k)d=(b[k-3]^b[k-8]^b[k-14]^b[k-16])>>>0,d=(d<<1|d>>>31)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;40>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+1859775393+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;60>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f&g|h&(f^g))>>>0,d=(e<<5|e>>>27)+j+i+2400959708+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;for(;80>k;++k)d=(b[k-6]^b[k-16]^b[k-28]^b[k-32])>>>0,d=(d<<2|d>>>30)>>>0,b[k]=d>>>0,j=(f^g^h)>>>0,d=(e<<5|e>>>27)+j+i+3395469782+d>>>0,i=h>>>0,h=g>>>0,g=(f<<30|f>>>2)>>>0,f=e>>>0,e=d>>>0;a.h0=a.h0+e|0,a.h1=a.h1+f|0,a.h2=a.h2+g|0,a.h3=a.h3+h|0,a.h4=a.h4+i|0,l-=64}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha1");var e=b.sha1=b.sha1||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha1=b.md.algorithms.sha1=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(80),j={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g},j};var f=null,g=!1}var b="sha1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=64;){for(k=0;16>k;++k)b[k]=c.getInt32();for(;64>k;++k)d=b[k-2],d=(d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,e=b[k-15],e=(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3,b[k]=d+b[k-7]+e+b[k-16]|0;for(l=a.h0,m=a.h1,n=a.h2,o=a.h3,p=a.h4,q=a.h5,r=a.h6,s=a.h7,k=0;64>k;++k)g=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),i=r^p&(q^r),f=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),j=l&m|n&(l^m),d=s+g+i+h[k]+b[k],e=f+j,s=r,r=q,q=p,p=o+d|0,o=n,n=m,m=l,l=d+e|0;a.h0=a.h0+l|0,a.h1=a.h1+m|0,a.h2=a.h2+n|0,a.h3=a.h3+o|0,a.h4=a.h4+p|0,a.h5=a.h5+q|0,a.h6=a.h6+r|0,a.h7=a.h7+s|0,t-=64}}if(void 0==b)return void("function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"sha256"));var e=b.sha256=b.sha256||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha256=b.md.algorithms.sha256=e,e.create=function(){a(),g||c();var e=null,h=b.util.createBuffer(),i=new Array(64),j={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,messageLength64:[0,0]};return j.start=function(){return j.messageLength=0,j.messageLength64=[0,0],h=b.util.createBuffer(),e={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225},j},j.start(),j.update=function(a,c){return"utf8"===c&&(a=b.util.encodeUtf8(a)),j.messageLength+=a.length,j.messageLength64[0]+=a.length/4294967296>>>0,j.messageLength64[1]+=a.length>>>0,h.putBytes(a),d(e,i,h),(h.read>2048||0===h.length())&&h.compact(),j},j.digest=function(){var a=b.util.createBuffer();a.putBytes(h.bytes()),a.putBytes(f.substr(0,64-(j.messageLength64[1]+8&63))),a.putInt32(j.messageLength64[0]<<3|j.messageLength64[0]>>>28),a.putInt32(j.messageLength64[1]<<3);var c={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};d(c,i,a);var g=b.util.createBuffer();return g.putInt32(c.h0),g.putInt32(c.h1),g.putInt32(c.h2),g.putInt32(c.h3),g.putInt32(c.h4),g.putInt32(c.h5),g.putInt32(c.h6),g.putInt32(c.h7),g},j};var f=null,g=!1,h=null}var b="sha256";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=128;){for(G=0;16>G;++G)b[G][0]=c.getInt32()>>>0,b[G][1]=c.getInt32()>>>0;for(;80>G;++G)J=b[G-2],H=J[0],I=J[1],d=((H>>>19|I<<13)^(I>>>29|H<<3)^H>>>6)>>>0,e=((H<<13|I>>>19)^(I<<3|H>>>29)^(H<<26|I>>>6))>>>0,L=b[G-15],H=L[0],I=L[1],f=((H>>>1|I<<31)^(H>>>8|I<<24)^H>>>7)>>>0,g=((H<<31|I>>>1)^(H<<24|I>>>8)^(H<<25|I>>>7))>>>0,K=b[G-7],M=b[G-16],I=e+K[1]+g+M[1],b[G][0]=d+K[0]+f+M[0]+(I/4294967296>>>0)>>>0,b[G][1]=I>>>0;for(q=a[0][0],r=a[0][1],s=a[1][0],t=a[1][1],u=a[2][0],v=a[2][1],w=a[3][0],x=a[3][1],y=a[4][0],z=a[4][1],A=a[5][0],B=a[5][1],C=a[6][0],D=a[6][1],E=a[7][0],F=a[7][1],G=0;80>G;++G)k=((y>>>14|z<<18)^(y>>>18|z<<14)^(z>>>9|y<<23))>>>0,l=((y<<18|z>>>14)^(y<<14|z>>>18)^(z<<23|y>>>9))>>>0,m=(C^y&(A^C))>>>0,n=(D^z&(B^D))>>>0,h=((q>>>28|r<<4)^(r>>>2|q<<30)^(r>>>7|q<<25))>>>0,j=((q<<4|r>>>28)^(r<<30|q>>>2)^(r<<25|q>>>7))>>>0,o=(q&s|u&(q^s))>>>0,p=(r&t|v&(r^t))>>>0,I=F+l+n+i[G][1]+b[G][1],d=E+k+m+i[G][0]+b[G][0]+(I/4294967296>>>0)>>>0,e=I>>>0,I=j+p,f=h+o+(I/4294967296>>>0)>>>0,g=I>>>0,E=C,F=D,C=A,D=B,A=y,B=z,I=x+e,y=w+d+(I/4294967296>>>0)>>>0,z=I>>>0,w=u,x=v,u=s,v=t,s=q,t=r,I=e+g,q=d+f+(I/4294967296>>>0)>>>0,r=I>>>0;I=a[0][1]+r,a[0][0]=a[0][0]+q+(I/4294967296>>>0)>>>0,a[0][1]=I>>>0,I=a[1][1]+t,a[1][0]=a[1][0]+s+(I/4294967296>>>0)>>>0,a[1][1]=I>>>0,I=a[2][1]+v,a[2][0]=a[2][0]+u+(I/4294967296>>>0)>>>0,a[2][1]=I>>>0,I=a[3][1]+x,a[3][0]=a[3][0]+w+(I/4294967296>>>0)>>>0,a[3][1]=I>>>0,I=a[4][1]+z,a[4][0]=a[4][0]+y+(I/4294967296>>>0)>>>0,a[4][1]=I>>>0,I=a[5][1]+B,a[5][0]=a[5][0]+A+(I/4294967296>>>0)>>>0,a[5][1]=I>>>0,I=a[6][1]+D,a[6][0]=a[6][0]+C+(I/4294967296>>>0)>>>0,a[6][1]=I>>>0,I=a[7][1]+F,a[7][0]=a[7][0]+E+(I/4294967296>>>0)>>>0,a[7][1]=I>>>0,N-=128}}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"sha512");var e=b.sha512=b.sha512||{};b.md=b.md||{},b.md.algorithms=b.md.algorithms||{},b.md.sha512=b.md.algorithms.sha512=e;var f=b.sha384=b.sha512.sha384=b.sha512.sha384||{};f.create=function(){return e.create("SHA-384")},b.md.sha384=b.md.algorithms.sha384=f,b.sha512.sha256=b.sha512.sha256||{create:function(){return e.create("SHA-512/256")}},b.md["sha512/256"]=b.md.algorithms["sha512/256"]=b.sha512.sha256,b.sha512.sha224=b.sha512.sha224||{create:function(){return e.create("SHA-512/224")}},b.md["sha512/224"]=b.md.algorithms["sha512/224"]=b.sha512.sha224,e.create=function(e){if(a(),h||c(),"undefined"==typeof e&&(e="SHA-512"),!(e in j))throw new Error("Invalid SHA-512 algorithm: "+e);for(var f=j[e],i=null,k=b.util.createBuffer(),l=new Array(80),m=0;80>m;++m)l[m]=new Array(2);var n={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:64,messageLength:0,messageLength128:[0,0,0,0]};return n.start=function(){n.messageLength=0,n.messageLength128=[0,0,0,0],k=b.util.createBuffer(),i=new Array(f.length);for(var a=0;a>>0,e>>>0];for(var f=3;f>=0;--f)n.messageLength128[f]+=e[1],e[1]=e[0]+(n.messageLength128[f]/4294967296>>>0),n.messageLength128[f]=n.messageLength128[f]>>>0,e[0]=e[1]/4294967296>>>0;return k.putBytes(a),d(i,l,k),(k.read>2048||0===k.length())&&k.compact(),n},n.digest=function(){var a=b.util.createBuffer();a.putBytes(k.bytes()),a.putBytes(g.substr(0,128-(n.messageLength128[3]+16&127)));for(var c=[],f=0;3>f;++f)c[f]=n.messageLength128[f]<<3|n.messageLength128[f-1]>>>28;c[3]=n.messageLength128[3]<<3,a.putInt32(c[0]),a.putInt32(c[1]),a.putInt32(c[2]),a.putInt32(c[3]);for(var h=new Array(i.length),f=0;ff;++f)m.putInt32(h[f][0]),f===j-1&&"SHA-512/224"===e||m.putInt32(h[f][1]);return m},n};var g=null,h=!1,i=null,j=null}var b="sha512";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g=32)return g(),a();var b=32-i.pools[0].messageLength<<5;i.seedFile(b,function(b,c){return b?a(b):(i.collect(c),g(),void a())})}function f(){if(i.pools[0].messageLength>=32)return g();var a=32-i.pools[0].messageLength<<5;i.collect(i.seedFileSync(a)),g()}function g(){var a=i.plugin.md.create();a.update(i.pools[0].digest().getBytes()),i.pools[0].start();for(var b=1,c=1;32>c;++c)b=31===b?2147483648:b<<2,b%i.reseeds===0&&(a.update(i.pools[c].digest().getBytes()),i.pools[c].start());var d=a.digest().getBytes();a.start(),a.update(d);var e=a.digest().getBytes();i.key=i.plugin.formatKey(d),i.seed=i.plugin.formatSeed(e),i.reseeds=4294967295===i.reseeds?0:i.reseeds+1,i.generated=0}function h(a){var c=null;if("undefined"!=typeof window){var d=window.crypto||window.msCrypto;d&&d.getRandomValues&&(c=function(a){return d.getRandomValues(a)})}var e=b.util.createBuffer();if(c)for(;e.length()>16),k+=(32767&j)<<16,k+=j>>15,k=(2147483647&k)+(k>>31),m=4294967295&k;for(var h=0;3>h;++h)l=m>>>(h<<3),l^=Math.floor(256*Math.random()),e.putByte(String.fromCharCode(255&l))}return e.getBytes(a)}for(var i={plugin:c,key:null,seed:null,time:null,reseeds:0,generated:0},j=c.md,k=new Array(32),l=0;32>l;++l)k[l]=j.create();return i.pools=k,i.pool=0,i.generate=function(c,d){function f(a){if(a)return d(a);if(l.length()>=c)return d(null,l.getBytes(c));if(i.generated>1048575&&(i.key=null),null===i.key)return b.util.nextTick(function(){e(f)});var m=g(i.key,i.seed);i.generated+=m.length,l.putBytes(m),i.key=j(g(i.key,h(i.seed))),i.seed=k(g(i.key,i.seed)),b.util.setImmediate(f)}if(a(),!d)return i.generateSync(c);var g=i.plugin.cipher,h=i.plugin.increment,j=i.plugin.formatKey,k=i.plugin.formatSeed,l=b.util.createBuffer();i.key=null,f()},i.generateSync=function(a){var c=i.plugin.cipher,d=i.plugin.increment,e=i.plugin.formatKey,g=i.plugin.formatSeed;i.key=null;for(var h=b.util.createBuffer();h.length()1048575&&(i.key=null),null===i.key&&f();var j=c(i.key,i.seed);i.generated+=j.length,h.putBytes(j),i.key=e(c(i.key,d(i.seed))),i.seed=g(c(i.key,i.seed))}return h.getBytes(a)},d?(i.seedFile=function(a,b){d.randomBytes(a,function(a,c){return a?b(a):void b(null,c.toString())})}, -i.seedFileSync=function(a){return d.randomBytes(a).toString()}):(i.seedFile=function(a,b){try{b(null,h(a))}catch(c){b(c)}},i.seedFileSync=h),i.collect=function(a){for(var b=a.length,c=0;b>c;++c)i.pools[i.pool].update(a.substr(c,1)),i.pool=31===i.pool?0:i.pool+1},i.collectInt=function(a,b){for(var c="",d=0;b>d;d+=8)c+=String.fromCharCode(a>>d&255);i.collect(c)},i.registerWorker=function(a){if(a===self)i.seedFile=function(a,b){function c(a){var d=a.data;d._ds&&d._ds.prng&&(self.removeEventListener("message",c),b(d._ds.prng.err,d._ds.prng.bytes))}self.addEventListener("message",c),self.postMessage({_ds:{prng:{needed:a}}})};else{var b=function(b){var c=b.data;c._ds&&c._ds.prng&&i.seedFile(c._ds.prng.needed,function(b,c){a.postMessage({_ds:{prng:{err:b,bytes:c}}})})};a.addEventListener("message",b)}},i}}var b="prng";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gf-11){var g=new Error("Message is too long for PKCS#1 v1.5 padding.");throw g.length=a.length,g.max=f-11,g}e.putByte(0),e.putByte(d);var h,i=f-3-a.length;if(0===d||1===d){h=0===d?0:255;for(var j=0;i>j;++j)e.putByte(h)}else for(;i>0;){for(var k=0,l=b.random.getBytes(i),j=0;i>j;++j)h=l.charCodeAt(j),0===h?++k:e.putByte(h);i=k}return e.putByte(0),e.putBytes(a),e}function d(a,c,d,e){var f=Math.ceil(c.n.bitLength()/8),g=b.util.createBuffer(a),h=g.getByte(),i=g.getByte();if(0!==h||d&&0!==i&&1!==i||!d&&2!=i||d&&0===i&&"undefined"==typeof e)throw new Error("Encryption block is invalid.");var j=0;if(0===i){j=f-3-e;for(var k=0;j>k;++k)if(0!==g.getByte())throw new Error("Encryption block is invalid.")}else if(1===i)for(j=0;g.length()>1;){if(255!==g.getByte()){--g.read;break}++j}else if(2===i)for(j=0;g.length()>1;){if(0===g.getByte()){--g.read;break}++j}var l=g.getByte();if(0!==l||j!==f-3-g.length())throw new Error("Encryption block is invalid.");return g.getBytes()}function e(a,c,d){function e(){f(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?g(b,a.q):void f(a.qBits,g))})}function f(a,c){b.prime.generateProbablePrime(a,i,c)}function g(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.p=null,void e();if(0!==a.q.subtract(h.ONE).gcd(a.e).compareTo(h.ONE))return a.q=null,void f(a.qBits,g);if(a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(h.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void f(a.qBits,g);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function f(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function g(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"rsa");if("undefined"==typeof h)var h=b.jsbn.BigInteger;var i=b.asn1;b.pki=b.pki||{},b.pki.rsa=b.rsa=b.rsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"RSAPrivateKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},m={name:"RSAPublicKey",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},n=function(a){var b;if(!(a.algorithm in j.oids)){var c=new Error("Unknown message digest algorithm.");throw c.algorithm=a.algorithm,c}b=j.oids[a.algorithm];var d=i.oidToDer(b).getBytes(),e=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),f=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);f.value.push(i.create(i.Class.UNIVERSAL,i.Type.OID,!1,d)),f.value.push(i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,""));var g=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,a.digest().getBytes());return e.value.push(f),e.value.push(g),i.toDer(e).getBytes()},o=function(a,c,d){if(d)return a.modPow(c.e,c.n);if(!c.p||!c.q)return a.modPow(c.d,c.n);c.dP||(c.dP=c.d.mod(c.p.subtract(h.ONE))),c.dQ||(c.dQ=c.d.mod(c.q.subtract(h.ONE))),c.qInv||(c.qInv=c.q.modInverse(c.p));var e;do e=new h(b.util.bytesToHex(b.random.getBytes(c.n.bitLength()/8)),16).mod(c.n);while(e.equals(h.ZERO));a=a.multiply(e.modPow(c.e,c.n)).mod(c.n);for(var f=a.mod(c.p).modPow(c.dP,c.p),g=a.mod(c.q).modPow(c.dQ,c.q);f.compareTo(g)<0;)f=f.add(c.p);var i=f.subtract(g).multiply(c.qInv).mod(c.p).multiply(c.q).add(g);return i=i.multiply(e.modInverse(c.n)).mod(c.n)};j.rsa.encrypt=function(d,e,f){a();var g,i=f,j=Math.ceil(e.n.bitLength()/8);f!==!1&&f!==!0?(i=2===f,g=c(d,e,f)):(g=b.util.createBuffer(),g.putBytes(d));for(var k=new h(g.toHex(),16),l=o(k,e,i),m=l.toString(16),n=b.util.createBuffer(),p=j-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),n.getBytes()},j.rsa.decrypt=function(c,e,f,g){!b.gf&&b.vi.filter&&a();var i=Math.ceil(e.n.bitLength()/8);if(c.length!==i){var j=new Error("Encrypted message length is invalid.");throw j.length=c.length,j.expected=i,j}var k=new h(b.util.createBuffer(c).toHex(),16);if(k.compareTo(e.n)>=0)throw new Error("Encrypted message is invalid.");for(var l=o(k,e,f),m=l.toString(16),n=b.util.createBuffer(),p=i-Math.ceil(m.length/2);p>0;)n.putByte(0),--p;return n.putBytes(b.util.hexToBytes(m)),g!==!1?d(n.getBytes(),e,f):n.getBytes()},j.rsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,f=d.prng||b.random,g={nextBytes:function(a){for(var b=f.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.rsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new h(null);c.fromInt(30);for(var d,e=0,f=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new h(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(h.ONE.shiftLeft(n),f,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),e=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(g(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[e++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(h.ONE).gcd(a.e).compareTo(h.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(h.ONE),a.q1=a.q.subtract(h.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(h.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.rsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.rsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.rsa.generateKeyPair=function(a,b,c,d){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(d=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(d=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,d=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(d=c,c=void 0):(d=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.rsa.createKeyPairGenerationState(a,b,c);return d?void e(f,c,d):(j.rsa.stepKeyPairGenerationState(f,0),f.keys)},j.setRsaPublicKey=j.rsa.setPublicKey=function(a,e){var f={n:a,e:e};return f.encrypt=function(a,d,e){if("string"==typeof d?d=d.toUpperCase():void 0===d&&(d="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===d)d={encode:function(a,b,d){return c(a,b,2).getBytes()}};else if("RSA-OAEP"===d||"RSAES-OAEP"===d)d={encode:function(a,c){return b.pkcs1.encode_rsa_oaep(c,a,e)}};else if(-1!==b.util.arrayIndexOf(["RAW","NONE","NULL",null],d))d={encode:function(a){return a}};else if("string"==typeof d)throw new Error('Unsupported encryption scheme: "'+d+'".');var g=d.encode(a,f,!0);return j.rsa.encrypt(g,f,!0)},f.verify=function(a,b,c){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===c?c={verify:function(a,b){b=d(b,f,!0);var c=i.fromDer(b);return a===c.value[1].value}}:"NONE"!==c&&"NULL"!==c&&null!==c||(c={verify:function(a,b){return b=d(b,f,!0),a===b}});var e=j.rsa.decrypt(b,f,!0,!1);return c.verify(a,e,f.n.bitLength())},f},j.setRsaPrivateKey=j.rsa.setPrivateKey=function(a,c,e,f,g,h,i,k){var l={n:a,e:c,d:e,p:f,q:g,dP:h,dQ:i,qInv:k};return l.decrypt=function(a,c,e){"string"==typeof c?c=c.toUpperCase():void 0===c&&(c="RSAES-PKCS1-V1_5");var f=j.rsa.decrypt(a,l,!1,!1);if("RSAES-PKCS1-V1_5"===c)c={decode:d};else if("RSA-OAEP"===c||"RSAES-OAEP"===c)c={decode:function(a,c){return b.pkcs1.decode_rsa_oaep(c,a,e)}};else{if(-1===b.util.arrayIndexOf(["RAW","NONE","NULL",null],c))throw new Error('Unsupported encryption scheme: "'+c+'".');c={decode:function(a){return a}}}return c.decode(f,l,!1)},l.sign=function(a,b){var c=!1;"string"==typeof b&&(b=b.toUpperCase()),void 0===b||"RSASSA-PKCS1-V1_5"===b?(b={encode:n},c=1):"NONE"!==b&&"NULL"!==b&&null!==b||(b={encode:function(){return a}},c=1);var d=b.encode(a,l.n.bitLength());return j.rsa.encrypt(d,l,c)},l},j.wrapRsaPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.rsaEncryption).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(a).getBytes())])},j.rsa.privateKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,l,c,d)){var e=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw e.errors=d,e.type=b.err.unsupported,e}var f,g,k,m,n,o,p,q;return f=b.util.createBuffer(c.privateKeyModulus).toHex(),g=b.util.createBuffer(c.privateKeyPublicExponent).toHex(),k=b.util.createBuffer(c.privateKeyPrivateExponent).toHex(),m=b.util.createBuffer(c.privateKeyPrime1).toHex(),n=b.util.createBuffer(c.privateKeyPrime2).toHex(),o=b.util.createBuffer(c.privateKeyExponent1).toHex(),p=b.util.createBuffer(c.privateKeyExponent2).toHex(),q=b.util.createBuffer(c.privateKeyCoefficient).toHex(),j.setRsaPrivateKey(new h(f,16),new h(g,16),new h(k,16),new h(m,16),new h(n,16),new h(o,16),new h(p,16),new h(q,16))},j.privateKeyToAsn1=j.privateKeyToRSAPrivateKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(0).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.d)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.p)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.q)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dP)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.dQ)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.qInv))])},j.rsa.publicKeyFromAsn1=function(a){var c={},d=[];if(!i.validate(a,m,c,d)){var e=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw e.errors=d,e}var f=b.util.createBuffer(c.publicKeyModulus).toHex(),g=b.util.createBuffer(c.publicKeyExponent).toHex();return j.setRsaPublicKey(new h(f,16),new h(g,16))},j.publicKeyToRSAPublicKey=function(a){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.n)),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,f(a.e))])}}var b="rsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g="8"&&(c="00"+c),b.util.hexToBytes(c)}function d(a,c,d){function e(){g(a.pBits,function(b,c){return b?d(b):(a.p=c,null!==a.q?h(b,a.q):void g(a.qBits,h))})}function g(a,c){b.prime.generateProbablePrime(a,i,c)}function h(b,c){if(b)return d(b);if(a.q=c,a.p.compareTo(a.q)<0){var i=a.p;a.p=a.q,a.q=i}if(0!==a.p.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.p=null,void e();if(0!==a.q.subtract(f.ONE).gcd(a.e).compareTo(f.ONE))return a.q=null,void g(a.qBits,h);if(a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),0!==a.phi.gcd(a.e).compareTo(f.ONE))return a.p=a.q=null,void e();if(a.n=a.p.multiply(a.q),a.n.bitLength()!==a.bits)return a.q=null,void g(a.qBits,h);var k=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,k,a.p,a.q,k.mod(a.p1),k.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)},d(null,a.keys)}"function"==typeof c&&(d=c,c={}),c=c||{};var i={algorithm:{name:c.algorithm||"PRIMEINC",options:{workers:c.workers||2,workLoad:c.workLoad||100,workerScript:c.workerScript}}};"prng"in c&&(i.prng=c.prng),e()}function c(a){var c=a.toString(16);return c[0]>="8"&&(c="00"+c),b.util.hexToBytes(c)}function e(a){return 100>=a?27:150>=a?18:200>=a?15:250>=a?12:300>=a?9:350>=a?8:400>=a?7:500>=a?6:600>=a?5:800>=a?4:1250>=a?3:2}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"kcdsa");if("undefined"==typeof f)var f=b.jsbn.BigInteger;var h=b.asn1;b.pki=b.pki||{},b.pki.kcdsa=b.kcdsa=b.kcdsa||{};var j=b.pki,k=[6,4,2,4,2,4,6,2],l={name:"KCDSAPrivateKey.exponent",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"privateKeyExponent"},m={name:"KCDSAPublicKey.public",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"publicKey"},n={name:"KCDSASignature",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"KCDSASignature.R",tagClass:h.Class.UNIVERSAL,type:h.Type.BITSTRING,constructed:!1,capture:"r"},{name:"KCDSASignature.S",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"s"}]},o={name:"KCDSAParameters",tagClass:h.Class.UNIVERSAL,type:h.Type.SEQUENCE,constructed:!0,value:[{name:"P",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"p"},{name:"Q",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"q"},{name:"G",tagClass:h.Class.UNIVERSAL,type:h.Type.INTEGER,constructed:!1,capture:"g"}]};j.kcdsa.createKeyPairGenerationState=function(a,c,d){"string"==typeof a&&(a=parseInt(a,10)),a=a||2048,d=d||{};var e,g=d.prng||b.random,h={nextBytes:function(a){for(var b=g.getBytesSync(a.length),c=0;c>1,pBits:a-(a>>1),pqState:0,num:null,keys:null},e.e.fromInt(e.eInt),e},j.kcdsa.stepKeyPairGenerationState=function(a,b){"algorithm"in a||(a.algorithm="PRIMEINC");var c=new f(null);c.fromInt(30);for(var d,g=0,h=function(a,b){return a|b},i=+new Date,l=0;null===a.keys&&(0>=b||b>l);){if(0===a.state){var m=null===a.p?a.pBits:a.qBits,n=m-1;0===a.pqState?(a.num=new f(m,a.rng),a.num.testBit(n)||a.num.bitwiseTo(f.ONE.shiftLeft(n),h,a.num),a.num.dAddOffset(31-a.num.mod(c).byteValue(),0),g=0,++a.pqState):1===a.pqState?a.num.bitLength()>m?a.pqState=0:a.num.isProbablePrime(e(a.num.bitLength()))?++a.pqState:a.num.dAddOffset(k[g++%8],0):2===a.pqState?a.pqState=0===a.num.subtract(f.ONE).gcd(a.e).compareTo(f.ONE)?3:0:3===a.pqState&&(a.pqState=0,null===a.p?a.p=a.num:a.q=a.num,null!==a.p&&null!==a.q&&++a.state,a.num=null)}else if(1===a.state)a.p.compareTo(a.q)<0&&(a.num=a.p,a.p=a.q,a.q=a.num),++a.state;else if(2===a.state)a.p1=a.p.subtract(f.ONE),a.q1=a.q.subtract(f.ONE),a.phi=a.p1.multiply(a.q1),++a.state;else if(3===a.state)0===a.phi.gcd(a.e).compareTo(f.ONE)?++a.state:(a.p=null,a.q=null,a.state=0);else if(4===a.state)a.n=a.p.multiply(a.q),a.n.bitLength()===a.bits?++a.state:(a.q=null,a.state=0);else if(5===a.state){var o=a.e.modInverse(a.phi);a.keys={privateKey:j.kcdsa.setPrivateKey(a.n,a.e,o,a.p,a.q,o.mod(a.p1),o.mod(a.q1),a.q.modInverse(a.p)),publicKey:j.kcdsa.setPublicKey(a.n,a.e)}}d=+new Date,l+=d-i,i=d}return null!==a.keys},j.kcdsa.generateKeyPair=function(a,b,c,e){1===arguments.length?"object"==typeof a?(c=a,a=void 0):"function"==typeof a&&(e=a,a=void 0):2===arguments.length?"number"==typeof a?"function"==typeof b?(e=b,b=void 0):"number"!=typeof b&&(c=b,b=void 0):(c=a,e=b,a=void 0,b=void 0):3===arguments.length&&("number"==typeof b?"function"==typeof c&&(e=c,c=void 0):(e=c,c=b,b=void 0)),c=c||{},void 0===a&&(a=c.bits||2048),void 0===b&&(b=c.e||65537);var f=j.kcdsa.createKeyPairGenerationState(a,b,c);return e?void d(f,c,e):(j.kcdsa.stepKeyPairGenerationState(f,0),f.keys)},j.setKcdsaPublicKey=j.kcdsa.setPublicKey=function(d,e,g,j){var k={p:d,q:e,g:g,y:j};return k.verify=function(d,e,g,j){a();var l=b.util.createBuffer(c(k.y)).toHex();l=l.substr(l.length-128,128),l=b.util.hexToBytes(l);var m=b.md.algorithms[e].create();m.update(l),m.update(d);var o=h.fromDer(g),p={},q=[];if(!h.validate(o,n,p,q)){var r=new Error("Cannot read KCDSA Signature. ");throw r.errors=q,r}var s=b.util.createBuffer(p.r).toHex(),t=b.util.createBuffer(p.s).toHex(),u=new f(s,16),v=new f(t,16),w=m.digest(),x=new f(w.toHex(),16),y=u.xor(x);y=y.mod(k.q);var z=k.y.modPow(v,k.p),A=k.g.modPow(y,k.p),B=z.multiply(A).mod(k.p),C=k.p.toByteArray().length;C%128==1&&(C-=1);var z=b.util.createBuffer(c(B)).toHex();if(z.length>2*C)z=z.substr(z.length-2*C,2*C);else if(z.length<2*C){var D="";for(i=0;i<2*C-z.length;i++)D+="0";z=D+z}z=b.util.hexToBytes(z);var E=b.md.algorithms[e].create();E.update(z);var F=E.digest();return u.equals(new f(F.toHex(),16))},k},j.setKcdsaPrivateKey=j.kcdsa.setPrivateKey=function(d,e,g,j,k){var l={p:d,q:e,g:g,x:j,y:k};return l.sign=function(d,e,g){a();var j=b.util.createBuffer(c(g)).toHex();j=j.substr(j.length-128,128),j=b.util.hexToBytes(j);var k=b.md.algorithms[e].create();k.update(j),k.update(d);var m=b.random.getBytesSync(k.digestLength),n=new f(b.util.createBuffer(m).toHex(),16);n=n.mod(l.q);var o=l.g.modPow(n,l.p),p=l.p.toByteArray().length;p%128==1&&(p-=1);var q=b.util.createBuffer(c(o)).toHex();if(q.length>2*p)q=q.substr(q.length-2*p,2*p);else if(q.length<2*p){var r="";for(i=0;i<2*p-q.length;i++)r+="0";q=r+q}q=b.util.hexToBytes(q);var s=b.md.algorithms[e].create();s.update(q);var t=s.digest(),u=new f(t.toHex(),16),v=k.digest(),w=new f(v.toHex(),16),x=u.xor(w);x=x.mod(l.q);var y=n.subtract(x);0!=y.s&&y.add(l.q);var z=l.x.multiply(y);z=z.mod(l.q);var A=h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[]),B=h.create(h.Class.UNIVERSAL,h.Type.BITSTRING,!1,String.fromCharCode(0)+t.getBytes()),C=h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(z));return A.value.push(B),A.value.push(C),h.toDer(A).getBytes()},l},j.kcdsa.domainParamFromAsn1=function(a){var c={},d=[];if(!h.validate(a,o,c,d)){var e=new Error("Cannot read kcdsaParam.");throw e.errors=d,e.type=b.err.process,e}return p=b.util.createBuffer(c.p).toHex(),q=b.util.createBuffer(c.q).toHex(),g=b.util.createBuffer(c.g).toHex(),{p:new f(p,16),q:new f(q,16),g:new f(g,16)}},j.kcdsa.privateKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,l,e,g)){var i=new Error("Cannot read kcdsaPrivateKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.privateKeyExponent).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPrivateKey(c.p,c.q,c.g,new f(d,16))},j.privateKeyToKCDSAPrivateKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.x))},j.toKCDSAParam=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.p)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.q)),h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.g))])},j.kcdsa.publicKeyFromAsn1=function(a,c){var d,e={},g=[];if(!h.validate(a,m,e,g)){var i=new Error("Cannot read kcdsaPublicKey.");throw i.errors=g,i.type=b.err.process,i}d=b.util.createBuffer(e.publicKey).toHex();var c=j.kcdsa.domainParamFromAsn1(c);return j.setKcdsaPublicKey(c.p,c.q,c.g,new f(d,16))},j.publicKeyToKCDSAPublicKey=function(a){return h.create(h.Class.UNIVERSAL,h.Type.SEQUENCE,!0,[h.create(h.Class.UNIVERSAL,h.Type.INTEGER,!1,c(a.y))])}}var b="kcdsa";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gh;h++){var i=new b.util.ByteBuffer;i.putInt32(h),c.start(),c.update(d+i.getBytes()),f.putBuffer(c.digest())}return f.truncate(f.length()-e),f.getBytes()},name:"mgf1",md:c.algorithm};return d}}var b="mgf1";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gm)throw new Error("Message is too long to encrypt.");var o;o=null===g?i.getBytesSync(h):g.bytes();var p=new b.util.ByteBuffer;p.fillWithByte(0,8),p.putBytes(n),p.putBytes(o),d.start(),d.update(p.getBytes());var q=d.digest().getBytes(),r=new b.util.ByteBuffer;r.fillWithByte(0,m-h-f-2),r.putByte(1),r.putBytes(o);var s=r.getBytes(),t=m-f-1,u=e.generate(q,t),v="";for(k=0;t>k;k++)v+=String.fromCharCode(s.charCodeAt(k)^u.charCodeAt(k));var w=65280>>8*m-l&255;return v=String.fromCharCode(v.charCodeAt(0)&~w)+v.substr(1),v+q+String.fromCharCode(188)},j.verify=function(c,g,i){a();var j,k=i-1,l=Math.ceil(k/8);if(g=g.substr(g.length-l,l),f+h+2>l)throw new Error("Inconsistent parameters to PSS signature verification.");if(188!==g.charCodeAt(l-1))throw new Error("Encoded message does not end in 0xBC.");var m=l-f-1,n=g.substr(0,m),o=g.substr(m,f),p=65280>>8*l-k&255;if(0!==(n.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var q=e.generate(o,m),r="";for(j=0;m>j;j++)r+=String.fromCharCode(n.charCodeAt(j)^q.charCodeAt(j));r=String.fromCharCode(r.charCodeAt(0)&~p)+r.substr(1);var s=l-f-h-2;for(j=0;s>j;j++)if(0!==r.charCodeAt(j))throw new Error("Leftmost octets not zero as expected");if(1!==r.charCodeAt(s))throw new Error("Inconsistent PSS signature, 0x01 marker not found");var t=r.substr(r.length-h,h),u=new b.util.ByteBuffer;u.fillWithByte(0,8),u.putBytes(c),u.putBytes(t),d.start(),d.update(u.getBytes());var v=d.digest().getBytes();return o===v},j}}var b="pss";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gg;++g){var h=String.fromCharCode(g>>24&255,g>>16&255,g>>8&255,255&g);d.start(),d.update(a+h),e+=d.digest().getBytes()}return e.substring(0,c)}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pkcs1");var d=b.pkcs1=b.pkcs1||{},e=b.asn1,f=b.pkcs1.asn1=b.pkcs1.asn1||{};f.rsaoaepParamValidator={name:"RSAES_OAEP_params",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.ctx0",tagClass:e.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.hashAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"hashAlgorithm"}]},{name:"RSAES_OAEP_params.ctx1",tagClass:e.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,value:[{name:"RSAES_OAEP_params.maskGenAlgorithm.mgf",tagClass:e.Class.UNIVERSAL,type:e.Type.OID,constructed:!1,capture:"mgf"},{name:"RSAES_OAEP_params.maskGenAlgorithm.param",tagClass:e.Class.UNIVERSAL,type:e.Type.SEQUENCE,constructed:!0,capture:"mgfHashAlg"}]}]}]},d.encode_rsa_oaep=function(d,e,f){a();var g,h,i,j;"string"==typeof f?(g=f,h=arguments[3]||void 0,i=arguments[4]||void 0):f&&(g=f.label||void 0,h=f.seed||void 0,i=f.md||void 0,f.mgf1&&f.mgf1.md&&(j=f.mgf1.md)),i?i.start():i=b.md.sha1.create(),j||(j=i);var k=Math.ceil(d.n.bitLength()/8),l=k-2*i.digestLength-2;if(e.length>l){var m=new Error("RSAES-OAEP input message length is too long.");throw m.length=e.length,m.maxLength=l,m}g||(g=""),i.update(g,"raw");for(var n=i.digest(),o="",p=l-e.length,q=0;p>q;q++)o+="\x00";var r=n.getBytes()+o+b.util.hexToBytes("01")+e;if(h){if(h.length!==i.digestLength){var m=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");throw m.seedLength=h.length,m.digestLength=i.digestLength,m}}else h=b.random.getBytes(i.digestLength);var s=c(h,k-i.digestLength-1,j),t=b.util.xorBytes(r,s,r.length),u=c(t,i.digestLength,j),v=b.util.xorBytes(h,u,h.length);return"\x00"+v+t},d.decode_rsa_oaep=function(d,e,f){a();var g,h,i;"string"==typeof f?(g=f,h=arguments[3]||void 0):f&&(g=f.label||void 0,h=f.md||void 0,f.mgf1&&f.mgf1.md&&(i=f.mgf1.md));var j=Math.ceil(d.n.bitLength()/8);if(e.length!==j){var k=new Error("RSAES-OAEP encoded message length is invalid.");throw k.length=e.length,k.expectedLength=j,k}if(void 0===h?h=b.md.sha1.create():h.start(),i||(i=h),j<2*h.digestLength+2)throw new Error("RSAES-OAEP key is too short for the hash function.");g||(g=""),h.update(g,"raw");for(var l=h.digest().getBytes(),m=e.charAt(0),n=e.substring(1,h.digestLength+1),o=e.substring(1+h.digestLength),p=c(o,h.digestLength,i),q=b.util.xorBytes(n,p,n.length),r=c(q,j-h.digestLength-1,i),s=b.util.xorBytes(o,r,o.length),t=s.substring(0,h.digestLength),k="\x00"!==m,u=0;ub;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;h=new Array(256),i=new Array(256),k=new Array(4),l=new Array(4);for(var b=0;4>b;++b)k[b]=new Array(256),l[b]=new Array(256);for(var c,d,e,f,g,n,o,p=0,q=0,b=0;256>b;++b){f=q^q<<1^q<<2^q<<3^q<<4,f=f>>8^255&f^99,h[p]=f,i[f]=p,g=a[f],c=a[p],d=a[c],e=a[d],n=g<<24^f<<16^f<<8^(f^g),o=(c^d^e)<<24^(p^e)<<16^(p^d^e)<<8^(p^c^e);for(var r=0;4>r;++r)k[r][p]=n,l[r][f]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^e]]],q^=a[a[q]])}}function e(a,b){for(var c,d=a.slice(0),e=1,f=d.length,g=f+6+1,i=n*g,k=f;i>k;++k)c=d[k-1],k%f===0?(c=h[c>>>16&255]<<24^h[c>>>8&255]<<16^h[255&c]<<8^h[c>>>24]^j[e]<<24,e++):f>6&&k%f===4&&(c=h[c>>>24]<<24^h[c>>>16&255]<<16^h[c>>>8&255]<<8^h[255&c]),d[k]=d[k-f]^c;if(b){var m,o=l[0],p=l[1],q=l[2],r=l[3],s=d.slice(0);i=d.length;for(var k=0,t=i-n;i>k;k+=n,t-=n)if(0===k||k===i-n)s[k]=d[t],s[k+1]=d[t+3],s[k+2]=d[t+2],s[k+3]=d[t+1];else for(var u=0;n>u;++u)m=d[t+u],s[k+(3&-u)]=o[h[m>>>24]]^p[h[m>>>16&255]]^q[h[m>>>8&255]]^r[h[255&m]];d=s}return d}function f(a,b,c,d){var e,f,g,j,m,n=a.length/4-1;d?(e=l[0],f=l[1],g=l[2],j=l[3],m=i):(e=k[0],f=k[1],g=k[2],j=k[3],m=h);var o,p,q,r,s,t,u;o=b[0]^a[0],p=b[d?3:1]^a[1],q=b[2]^a[2],r=b[d?1:3]^a[3];for(var v=3,w=1;n>w;++w)s=e[o>>>24]^f[p>>>16&255]^g[q>>>8&255]^j[255&r]^a[++v],t=e[p>>>24]^f[q>>>16&255]^g[r>>>8&255]^j[255&o]^a[++v],u=e[q>>>24]^f[r>>>16&255]^g[o>>>8&255]^j[255&p]^a[++v],r=e[r>>>24]^f[o>>>16&255]^g[p>>>8&255]^j[255&q]^a[++v],o=s,p=t,q=u;c[0]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&r]^a[++v],c[d?3:1]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[r>>>8&255]<<8^m[255&o]^a[++v],c[2]=m[q>>>24]<<24^m[r>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v],c[d?1:3]=m[r>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v]}function g(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="AES-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b)return void(dreamsecurity.chkIntegrity&&"function"==typeof dreamsecurity.chkIntegrity&&dreamsecurity.chkIntegrity(arguments.callee,"aes"));b.aes=b.aes||{},b.aes.startEncrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aes.createEncryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!1,mode:b})},b.aes.startDecrypting=function(a,b,c,d){var e=g({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aes.createDecryptionCipher=function(a,b){return g({key:a,output:null,decrypt:!0,mode:b})},b.aes.Algorithm=function(b,c){a(),m||d();var e=this;e.name=b,e.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return f(e._w,a,b,!1)},decrypt:function(a,b){return f(e._w,a,b,!0)}}}),e._init=!1},b.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aes algorithm.");c=d,d=b.util.createBuffer();for(var f=0;f>>=2;for(var f=0;g>f;++f)d.push(c.getInt32())}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var h=this.mode.name,i=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],h);this._w=e(d,a.decrypt&&!i),this._init=!0}},b.aes._expandKey=function(a,b){return m||d(),e(a,b)},b.aes._updateBlock=f,c("AES-CBC",b.cipher.modes.cbc),c("AES-CFB",b.cipher.modes.cfb),c("AES-OFB",b.cipher.modes.ofb),c("AES-CTR",b.cipher.modes.ctr),c("AES-GCM",b.cipher.modes.gcm);var h,i,j,k,l,m=!1,n=4}var b="aes";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>8}function f(a){return 255&a>>>16}function g(a){return 255&a>>>24}function h(a){a[0]=a[0]>>>24|a[0]<<24|a[0]<<8&16711680|a[0]>>>8&65280}function h(a){return a>>>24|a<<24|a<<8&16711680|a>>>8&65280}function i(a,b,c,h,i,j){var k,l,m;k=b[0],b[0]=b[0]>>>8^c[0]<<24,c[0]=c[0]>>>8^k<<24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function j(a,b,c,h,i,j){var k,l,m;k=h[0],h[0]=h[0]<<8^i[0]>>>24,i[0]=i[0]<<8^k>>>24,l=b[0]+h[0]-u[j],m=c[0]+u[j]-i[0],a[0]=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],a[1]=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)]}function k(a,b,c,h,i){var j,k,l=0,m=0;j=c[0]^i[0],k=h[0]^i[1],k^=j,l=0>j?2147483647&j|2147483648:j,k=q[d(k)]^r[e(k)]^s[f(k)]^t[g(k)],m=0>k?2147483647&k|2147483648:k,l+=m,j=q[d(l)]^r[e(l)]^s[f(l)]^t[g(l)],l=0>j?2147483647&j|2147483648:j,m+=l,k=q[d(m)]^r[e(m)]^s[f(m)]^t[g(m)],m=0>k?2147483647&k|2147483648:k,l+=m,a[0]^=l,b[0]^=m}function l(a,b,c,d,e){var f=new Array(2),g=0;v||(h(b),h(c),h(d),h(e)),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),f[0]=a[g++],f[1]=a[g++],k(b,c,d,e,f),f[0]=a[g++],f[1]=a[g++],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function m(a,b,c,d,e){var f=new Array(2),g=31;v||(h(b),h(c),h(d),h(e)),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g--],k(d,e,b,c,f),f[1]=a[g--],f[0]=a[g--],k(b,c,d,e,f),f[1]=a[g--],f[0]=a[g],k(d,e,b,c,f),v||(h(b),h(c),h(d),h(e))}function n(a){var b,c,k=new Array(1),l=new Array(1),m=new Array(1),n=new Array(1),o=new Array(2),p=2,w=[];return k[0]=a.getInt32(),l[0]=a.getInt32(),m[0]=a.getInt32(),n[0]=a.getInt32(),v||(k[0]=h(k[0]),l[0]=h(l[0]),m[0]=h(m[0]),n[0]=h(n[0])),b=k[0]+m[0]-u[0],c=l[0]-n[0]+u[0],w[0]=q[d(b)]^r[e(b)]^s[f(b)]^t[g(b)],w[1]=q[d(c)]^r[e(c)]^s[f(c)]^t[g(c)],i(o,k,l,m,n,1),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,2),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,3),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,4),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,5),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,6),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,7),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,8),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,9),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,10),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,11),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,12),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,13),w[p++]=o[0],w[p++]=o[1],j(o,k,l,m,n,14),w[p++]=o[0],w[p++]=o[1],i(o,k,l,m,n,15),w[p++]=o[0],w[p++]=o[1],w}function o(a,b,c,d){var e=new Array(1),f=new Array(1),g=new Array(1),h=new Array(1);e[0]=b[0],f[0]=b[1],g[0]=b[2],h[0]=b[3],d?m(a,e,f,g,h):l(a,e,f,g,h),c[0]=g[0],c[1]=h[0],c[2]=e[0],c[3]=f[0]}function p(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="SEED-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"seed");b.seed=b.seed||{},b.seed.startEncrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createEncryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!1,mode:b})},b.seed.startDecrypting=function(a,b,c,d){var e=p({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.seed.createDecryptionCipher=function(a,b){return p({key:a,output:null,decrypt:!0,mode:b})},b.seed.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return o(d._keys,a,b,!1)},decrypt:function(a,b){return o(d._keys,a,b,!0)}}}),d._init=!1},b.seed.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("SEED")&&16!==c.length())throw new Error("Invalid SEED key size: "+8*c.length());this._keys=n(c),this._init=!0}},c("SEED-CBC",b.cipher.modes.cbc),c("SEED-ECB",b.cipher.modes.ecb);var q=[696885672,92635524,382128852,331600848,340021332,487395612,747413676,621093156,491606364,54739776,403181592,504238620,289493328,1020063996,181060296,591618912,671621160,71581764,536879136,495817116,549511392,583197408,147374280,386339604,629514660,261063564,50529024,994800504,999011256,318968592,314757840,785310444,809529456,210534540,1057960764,680042664,839004720,500027868,919007988,876900468,751624428,361075092,185271048,390550356,474763356,457921368,1032696252,16843008,604250148,470552604,860058480,411603096,268439568,214745292,851636976,432656856,738992172,667411428,843215472,58950528,462132120,297914832,109478532,164217288,541089888,272650320,595829664,734782440,218956044,914797236,512660124,256852812,931640244,441078360,113689284,944271480,646357668,302125584,797942700,365285844,557932896,63161280,881111220,21053760,306336336,1028485500,227377548,134742024,521081628,428446104,0,420024600,67371012,323179344,935850996,566354400,1036907004,910586484,789521196,654779172,813740208,193692552,235799052,730571688,578986656,776888940,327390096,223166796,692674920,1011642492,151585032,168428040,1066382268,802153452,868479984,96846276,126321540,335810580,1053750012,608460900,516870876,772678188,189481800,436867608,101057028,553722144,726360936,642146916,33686016,902164980,310547088,176849544,202113036,864269232,1045328508,281071824,977957496,122110788,377918100,633725412,637936164,8421504,764256684,533713884,562143648,805318704,923218740,781099692,906375732,352653588,570565152,940060728,885321972,663200676,88424772,206323788,25264512,701096424,75792516,394761108,889532724,197903304,248431308,1007431740,826372464,285282576,130532292,160006536,893743476,1003222008,449499864,952692984,344232084,424235352,42107520,80003268,1070593020,155795784,956903736,658989924,12632256,265274316,398971860,948482232,252642060,244220556,37896768,587408160,293704080,743202924,466342872,612671652,872689716,834793968,138952776,46318272,793731948,1024274748,755835180,4210752,1049539260,1041117756,1015853244,29475264,713728680,982168248,240009804,356864340,990589752,483184860,675831912,1062171516,478974108,415813848,172638792,373707348,927429492,545300640,768467436,105267780,897954228,722150184,625303908,986379e3,600040416,965325240,830583216,529503132,508449372,969535992,650568420,847426224,822161712,717939432,760045932,525292380,616882404,817950960,231588300,143163528,369496596,973746744,407392344,348442836,574775904,688464168,117900036,855847728,684253416,453710616,84214020,961114488,276861072,709517928,705307176,445289112],r=[943196208,3894986976,741149985,2753988258,3423588291,3693006546,2956166067,3090712752,2888798115,1612726368,1410680145,3288844227,1141130304,1815039843,1747667811,1478183763,3221472195,1612857954,808649523,3023406513,673777953,2686484640,3760374498,2754054051,3490956243,2417066385,269549841,67503618,471600144,3158084784,875955762,1208699715,3962556387,2282260608,1814842464,2821228704,337053459,3288646848,336987666,4097098992,3221406402,1141196097,3760308705,3558262482,1010765619,1010634033,2349764226,2551744656,673712160,1276005954,4097230578,1010699826,2753922465,4164536817,202181889,3693072339,3625502928,673909539,1680229986,2017086066,606537507,741281571,4029792753,1882342002,1073889858,3558130896,1073824065,3221274816,1882407795,1680295779,2888600736,2282457987,4097296371,2888666529,2147516544,471797523,3356150466,741084192,2821360290,875824176,3490890450,134941443,3962490594,3895052769,1545424209,2484372624,404228112,4164471024,1410811731,2888732322,134744064,3288712641,269681427,3423456705,2215020162,3090778545,4232040435,2084392305,3221340609,808517937,4097164785,2282392194,1747602018,2956034481,3490824657,538968096,3558328275,131586,539099682,67372032,1747470432,1882276209,67569411,3625700307,2619182481,2551810449,1612792161,3158216370,3827746530,1478052177,3692940753,1343308113,2417000592,3692874960,2551876242,2686682019,2821426083,3490758864,2147582337,202313475,1141327683,404359698,3760440291,3962359008,2349698433,3158282163,2484504210,2017151859,1545358416,2686616226,2686550433,1612923747,539165475,1275940161,3356018880,2619248274,2619116688,943327794,202116096,741215778,3090844338,1814974050,2619314067,1478117970,4029858546,2417132178,4029924339,1208568129,2016954480,3423390912,336921873,4164668403,1882210416,1949648241,2084523891,875889969,269484048,197379,1680098400,1814908257,3288778434,1949582448,3558196689,3023340720,3895118562,134809857,1949714034,404293905,4231974642,1073758272,269615634,3760242912,3158150577,67437825,4164602610,65793,4029726960,673843746,1545490002,2821294497,1410745938,1073955651,2214954369,336856080,2282326401,2551942035,2955968688,3827680737,1208502336,2017020273,2484570003,4231843056,471731730,2147648130,539033889,2349632640,404425491,1545555795,1949779827,1410614352,2956100274,471665937,606405921,1276071747,0,1141261890,3962424801,1477986384,1343373906,3895184355,2084458098,3625634514,3356084673,4231908849,808452144,2484438417,1680164193,1010568240,3023472306,3827614944,3090910131,2084326512,202247682,1343242320,943262001,606471714,808583730,2214888576,1747536225,2417197971,876021555,3827812323,606340128,2753856672,3356216259,1343439699,134875650,2215085955,3625568721,1275874368,2147713923,2349830019,3423522498,943393587,1208633922,3023538099],s=[2712152457,2172913029,3537114822,3553629123,1347687492,287055117,2695638156,556016901,1364991309,1128268611,270014472,303832590,1364201793,4043062476,3267889866,1667244867,539502600,1078199364,538976256,2442927501,3772784832,3806339778,3234334920,320083719,2711889285,2206994319,50332419,1937259339,3015195531,319820547,3536851650,3807129294,1886400576,2156661900,859586319,2695374984,842019330,3520863693,4076091078,1886663748,3773574348,2442401157,50858763,1398019911,1348213836,1398283083,2981903757,16777473,539239428,270277644,1936732995,2425886856,269488128,3234598092,4075827906,3520600521,539765772,3823380423,1919955522,2206204803,2476219275,3520074177,2189690502,3251112393,1616912448,1347424320,2745181059,3823643595,17566989,2998154886,2459704974,1129058127,3014932359,1381505610,3267626694,1886926920,2728666758,303043074,2745970575,3520337349,1633689921,3284140995,2964599940,1094713665,1380979266,1903967565,2173439373,526344,320610063,2442664329,0,286791945,263172,1397756739,4092868551,3789562305,4059839949,1920218694,590098191,589571847,2964336768,2206731147,34344462,2745707403,2728403586,1651256910,2475692931,1095503181,1634216265,1887190092,17303817,34081290,3015458703,3823906767,4092605379,3250849221,2206467975,269751300,4076617422,1617175620,3537641166,573320718,1128794955,303569418,33818118,555753729,1667771211,1650730566,33554946,4059313605,2458915458,2189953674,789516,3014669187,1920745038,3503296704,1920481866,1128531783,2459178630,3789825477,572794374,2155872384,2712415629,3554418639,2711626113,808464384,859059975,2729193102,842282502,286528773,572531202,808990728,4042536132,2745444231,1094976837,1078725708,2172649857,3790088649,2156135556,2475956103,825505029,3284667339,3268153038,809253900,1903178049,286265601,3284404167,2173176201,1903441221,4093131723,3537377994,4042799304,2425623684,1364728137,2189427330,3234071748,4093394895,1095240009,825768201,1667508039,3233808576,3284930511,3553892295,2964863112,51121935,2190216846,1111491138,589308675,2442137985,1617701964,3554155467,2695111812,808727556,4059050433,1078462536,3267363522,1668034383,826031373,556543245,1077936192,2998681230,842808846,2965126284,3250586049,2728929930,2998418058,1112280654,1364464965,859323147,3504086220,1617438792,1937522511,2426150028,3503823048,1112017482,1381242438,1936996167,2694848640,3790351821,1111754310,2981377413,589835019,1633953093,4076354250,3823117251,2981640585,2981114241,2476482447,1381768782,4059576777,3806602950,2997891714,825241857,3806866122,1634479437,1398546255,3773048004,4042272960,3251375565,2156398728,303306246,842545674,1347950664,3503559876,1650467394,556280073,50595591,858796803,3773311176,320346891,17040645,1903704393,2425360512,1650993738,573057546,2459441802],t=[137377848,3370182696,220277805,2258805798,3485715471,3469925406,2209591347,2293282872,2409868335,1080057888,1162957845,3351495687,1145062404,1331915823,1264805931,1263753243,3284385795,1113743394,53686323,2243015733,153167913,2158010400,3269648418,2275648551,3285438483,2173800465,17895441,100795398,202382364,2360392764,103953462,1262700555,3487820847,2290124808,1281387564,2292230184,118690839,3300967428,101848086,3304125492,3267543042,1161905157,3252805665,3335705622,255015999,221330493,2390920206,2291177496,136325160,1312967694,3337810998,238173246,2241963045,3388078137,218172429,3486768159,3369130008,186853419,1180853286,1249015866,119743527,253963311,3253858353,1114796082,1111638018,3302020116,1094795265,3233857536,1131638835,1197696039,2359340076,2340653067,3354653751,2376182829,2155905024,252910623,3401762826,203435052,2325915690,70267956,3268595730,184748043,3470978094,3387025449,1297177629,2224067604,135272472,3371235384,1196643351,2393025582,134219784,3317810181,51580947,3452029965,2256700422,2310125625,3488873535,1299283005,3250700289,20000817,3320968245,2323810314,1247963178,2175905841,3251752977,2105376,3352548375,33685506,35790882,67109892,1214277672,1097953329,117638151,3419658267,2375130141,2308020249,1096900641,2394078270,3336758310,1230067737,3453082653,1095847953,2156957712,3436239900,2324863002,2208538659,2342758443,3234910224,2172747777,251857935,1195590663,168957978,3286491171,3437292588,2374077453,2410921023,2257753110,1265858619,1280334876,2191695906,2174853153,1130586147,52633635,1296124941,3368077320,2391972894,2358287388,171063354,201329676,237120558,2326968378,1315073070,2408815647,1246910490,3270701106,2190643218,3287543859,1229015049,1215330360,3435187212,85005333,3421763643,1081110576,1165063221,1332968511,87110709,1052688,50528259,1147167780,1298230317,3334652934,1148220468,3318862869,2226172980,3403868202,151062537,1181905974,152115225,3472030782,1077952512,34738194,3235962912,2377235517,83952645,3404920890,16842753,3237015600,170010666,1314020382,2309072937,1179800598,1128480771,2239857669,68162580,2306967561,2341705755,2159063088,3319915557,1212172296,1232173113,2274595863,3438345276,236067870,2189590530,18948129,2357234700,185800731,1330863135,1198748727,1146115092,2192748594,219225117,86058021,1329810447,0,1178747910,3454135341,1213224984,1112690706,3420710955,1316125758,3402815514,3384920073,3455188029,3158064,2240910357,1164010533,204487740,2259858486,3303072804,2343811131,1282440252,235015182,1079005200,154220601,102900774,36843570,2223014916,1231120425,2207485971,120796215,3353601063,69215268,2225120292,3418605579,1129533459,167905290,2273543175,3385972761,1279282188,2206433283,2407762959,3468872718,187906107,1245857802,2276701239],u=[2654435769,1013904243,2027808486,4055616972,3816266649,3337566003,2380164711,465362127,930724254,1861448508,3722897016,3150826737,2006686179,4013372358,3731777421,3168587547],v=1}var b="seed";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>>24&255)^16777473*(a>>>16&255)^16842753*(a>>>8&255)^16843008*(255&a)}function e(a){return a<<8&4278255360^a>>>8&16711935}function f(a){return a<<16&4294901760^a>>>16&65535}function g(a){return(255&a)<<24^(65280&a)<<8^(16711680&a)>>>8^(4278190080&a)>>>24}function h(a,b,c,d,e){var f=4-Math.floor(c/32),g=c%32,h=32-g;d[e]=a[0]^b[f%4]>>>g^b[(f+3)%4]<>>g^b[f%4]<>>g^b[(f+1)%4]<>>g^b[(f+2)%4]<e;e++)d=a[b+e],a[b+e]=a[c+e],a[c+e]=d}function k(a,b,c,d){i(a,b,d,0),i(a,c,a,b),a[c]=d[0],a[c+1]=d[1],a[c+2]=d[2],a[c+3]=d[3]}function l(a,b){var c=a.slice(0),d=32*a.length;o=8+a.length;var l,m,n,q,r,s=new Array(4*o),t=0,y=new Array(4),z=new Array(4),A=new Array(4),B=new Array(4);if(y[0]=c[0],y[1]=c[1],y[2]=c[2],y[3]=c[3],r=(d-128)/64,l=y[0]^p[r][0],m=y[1]^p[r][1],n=y[2]^p[r][2],q=y[3]^p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,d>128?(z[0]=c[4],z[1]=c[5],d>192?(z[2]=c[6],z[3]=c[7]):z[2]=z[3]=0):z[0]=z[1]=z[2]=z[3]=0,z[0]^=l,z[1]^=m,z[2]^=n,z[3]^=q,l=z[0],m=z[1],n=z[2],q=z[3],r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],m=w[m>>>24&255]^x[m>>>16&255]^u[m>>>8&255]^v[255&m],n=w[n>>>24&255]^x[n>>>16&255]^u[n>>>8&255]^v[255&n],q=w[q>>>24&255]^x[q>>>16&255]^u[q>>>8&255]^v[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,q=e(q),l=f(l),m=g(m),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,l^=y[0],m^=y[1],n^=y[2],q^=y[3],A[0]=l,A[1]=m,A[2]=n,A[3]=q,r=2==r?0:r+1,l^=p[r][0],m^=p[r][1],n^=p[r][2],q^=p[r][3],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],m=u[m>>>24&255]^v[m>>>16&255]^w[m>>>8&255]^x[255&m],n=u[n>>>24&255]^v[n>>>16&255]^w[n>>>8&255]^x[255&n],q=u[q>>>24&255]^v[q>>>16&255]^w[q>>>8&255]^x[255&q],m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,m=e(m),n=f(n),q=g(q),m^=n,n^=q,l^=m,q^=m,n^=l,m^=n,B[0]=l^z[0],B[1]=m^z[1],B[2]=n^z[2],B[3]=q^z[3],h(y,z,19,s,t),t+=4,h(z,A,19,s,t),t+=4,h(A,B,19,s,t),t+=4,h(B,y,19,s,t),t+=4,h(y,z,31,s,t),t+=4,h(z,A,31,s,t),t+=4,h(A,B,31,s,t),t+=4,h(B,y,31,s,t),t+=4,h(y,z,67,s,t),t+=4,h(z,A,67,s,t),t+=4,h(A,B,67,s,t),t+=4,h(B,y,67,s,t),t+=4,h(y,z,97,s,t),t+=4,d>128&&(h(z,A,97,s,t),t+=4,h(A,B,97,s,t),t+=4),d>192&&(h(B,y,97,s,t),t+=4,h(y,z,109,s,t)),b){var C,D=0,E=new Array(4);for(C=32+d/8,j(s,0,C),D+=4,C-=4;C>D;D+=4,C-=4)k(s,D,C,E);i(s,D,E,0),s[D]=E[0],s[D+1]=E[1],s[D+2]=E[2],s[D+3]=E[3]}return c=s}function m(a,c,d,h){var i,j,k,l,m,n=0,p=new Array(16),y=a.slice(0);for(i=c[0],j=c[1],k=c[2],l=c[3],m=1;o/2>m;m++)i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=w[i>>>24&255]^x[i>>>16&255]^u[i>>>8&255]^v[255&i],j=w[j>>>24&255]^x[j>>>16&255]^u[j>>>8&255]^v[255&j],k=w[k>>>24&255]^x[k>>>16&255]^u[k>>>8&255]^v[255&k],l=w[l>>>24&255]^x[l>>>16&255]^u[l>>>8&255]^v[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,l=e(l),i=f(i),j=g(j),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k;i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],i=u[i>>>24&255]^v[i>>>16&255]^w[i>>>8&255]^x[255&i],j=u[j>>>24&255]^v[j>>>16&255]^w[j>>>8&255]^x[255&j],k=u[k>>>24&255]^v[k>>>16&255]^w[k>>>8&255]^x[255&k],l=u[l>>>24&255]^v[l>>>16&255]^w[l>>>8&255]^x[255&l],j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,j=e(j),k=f(k),l=g(l),j^=k,k^=l,i^=j,l^=j,k^=i,j^=k,i^=y[n++],j^=y[n++],k^=y[n++],l^=y[n++],p=b.util.createBuffer(),p.putByte(255&(s[255&i>>>24]^y[n]>>>24)),p.putByte(255&(t[255&i>>>16]^y[n]>>>16)),p.putByte(255&(q[255&i>>>8]^y[n]>>>8)),p.putByte(255&(r[255&i]^y[n])),p.putByte(255&(s[255&j>>>24]^y[n+1]>>>24)),p.putByte(255&(t[255&j>>>16]^y[n+1]>>>16)),p.putByte(255&(q[255&j>>>8]^y[n+1]>>>8)),p.putByte(255&(r[255&j]^y[n+1])),p.putByte(255&(s[255&k>>>24]^y[n+2]>>>24)),p.putByte(255&(t[255&k>>>16]^y[n+2]>>>16)),p.putByte(255&(q[255&k>>>8]^y[n+2]>>>8)),p.putByte(255&(r[255&k]^y[n+2])),p.putByte(255&(s[255&l>>>24]^y[n+3]>>>24)),p.putByte(255&(t[255&l>>>16]^y[n+3]>>>16)),p.putByte(255&(q[255&l>>>8]^y[n+3]>>>8)),p.putByte(255&(r[255&l]^y[n+3])),d[0]=p.getInt32(),d[1]=p.getInt32(),d[2]=p.getInt32(),d[3]=p.getInt32()}function n(a){a=a||{};var c,d=(a.mode||"CBC").toUpperCase(),e="ARIA-"+d;c=a.decrypt?b.cipher.createDecipher(e,a.key):b.cipher.createCipher(e,a.key);var f=c.start;return c.start=function(a,d){var e=null;d instanceof b.util.ByteBuffer&&(e=d,d={}),d=d||{},d.output=e,d.iv=a,f.call(c,d)},c}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"aria");b.aria=b.aria||{},b.aria.startEncrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},b.aria.createEncryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!1,mode:b})},b.aria.startDecrypting=function(a,b,c,d){var e=n({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},b.aria.createDecryptionCipher=function(a,b){return n({key:a,output:null,decrypt:!0,mode:b})},b.aria.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:16,cipher:{encrypt:function(a,b){return m(d._w,a,b,!1)},decrypt:function(a,b){return m(d._w,a,b,!0)}}}),d._init=!1},b.aria.Algorithm.prototype.initialize=function(a){if(!this._init){var c,d=a.key;if("string"==typeof d){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");d=b.util.createBuffer(d)}else if(b.util.isArray(d)){if(16!==d.length&&24!==d.length&&32!==d.length)throw new Error("The "+d.length+" bytes key length is not valid for aria algorithm.");c=d,d=b.util.createBuffer();for(var e=0;e>>=2;for(var e=0;f>e;++e)d.push(c.getInt32()); -}}if(!b.util.isArray(d)||4!==d.length&&6!==d.length&&8!==d.length)throw new Error("Invalid key parameter.");var g=this.mode.name,h=-1!==b.util.arrayIndexOf(["CFB","OFB","CTR","GCM"],g);this._w=l(d,a.decrypt&&!h),this._init=!0}},b.aria._expandKey=function(a,b){return l(a,b)},b.aria._updateBlock=m,c("ARIA-ECB",b.cipher.modes.ecb),c("ARIA-CBC",b.cipher.modes.cbc);var o,p=[[1367130551,656542356,4262702056,4204424928],[1840335564,2653014048,4280857045,4015907504],[3683792669,556198256,52729717,82364686]],q=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],r=[226,78,84,252,148,194,74,204,98,13,106,70,60,77,139,209,94,250,100,203,180,151,190,43,188,119,46,3,211,25,89,193,29,6,65,107,85,240,153,105,234,156,24,174,99,223,231,187,0,115,102,251,150,76,133,228,58,9,69,170,15,238,16,235,45,127,244,41,172,207,173,145,141,120,200,149,249,47,206,205,8,122,136,56,92,131,42,40,71,219,184,199,147,164,18,83,255,135,14,49,54,33,88,72,1,142,55,116,50,202,233,177,183,171,12,215,196,86,66,38,7,152,96,217,182,185,17,64,236,32,140,189,160,201,132,4,73,35,241,79,80,31,19,220,216,192,158,87,227,195,123,101,59,2,143,62,232,37,146,229,21,221,253,23,169,191,212,154,126,197,57,103,254,118,157,67,167,225,208,245,104,242,27,52,112,5,163,138,213,121,134,168,48,198,81,75,30,166,39,246,53,210,110,36,22,130,95,218,230,117,162,239,44,178,28,159,93,111,128,10,114,68,155,108,144,11,91,51,125,90,82,243,97,161,247,176,214,63,124,109,237,20,224,165,61,34,179,248,137,222,113,26,175,186,181,129],s=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],t=[48,104,153,27,135,185,33,120,80,57,219,225,114,9,98,60,62,126,94,142,241,160,204,163,42,29,251,182,214,32,196,141,129,101,245,137,203,157,119,198,87,67,86,23,212,64,26,77,192,99,108,227,183,200,100,106,83,170,56,152,12,244,155,237,127,34,118,175,221,58,11,88,103,136,6,195,53,13,1,139,140,194,230,95,2,36,117,147,102,30,229,226,84,216,16,206,122,232,8,44,18,151,50,171,180,39,10,35,223,239,202,217,184,250,220,49,107,209,173,25,73,189,81,150,238,228,168,65,218,255,205,85,134,54,190,97,82,248,187,14,130,72,105,154,224,71,158,92,4,75,52,21,121,38,167,222,41,174,146,215,132,233,210,186,93,243,197,176,191,164,59,113,68,70,43,252,235,111,213,246,20,254,124,112,90,125,253,47,24,131,22,165,145,31,5,149,116,169,193,91,74,133,109,19,7,79,78,69,178,15,201,28,166,188,236,115,144,123,207,89,143,161,249,45,242,177,0,148,55,159,208,46,156,110,40,63,128,240,61,211,37,138,181,231,66,179,199,234,247,76,17,51,3,162,172,96],u=[6513507,8158332,7829367,8092539,15921906,7039851,7303023,12961221,3158064,65793,6776679,2829099,16711422,14145495,11250603,7763574,13290186,8553090,13224393,8224125,16448250,5855577,4671303,15790320,11382189,13948116,10658466,11513775,10263708,10790052,7500402,12632256,12040119,16645629,9671571,2500134,3552822,4144959,16250871,13421772,3421236,10855845,15066597,15856113,7434609,14211288,3223857,1381653,263172,13092807,2302755,12829635,1579032,9868950,328965,10132122,460551,1184274,8421504,14869218,15461355,2565927,11711154,7697781,592137,8618883,2894892,1710618,1776411,7237230,5921370,10526880,5395026,3881787,14079702,11776947,2697513,14935011,3092271,8684676,5460819,13750737,0,15592941,2105376,16579836,11645361,5987163,6974058,13355979,12500670,3750201,4868682,5000268,5789784,13619151,13684944,15724527,11184810,16514043,4408131,5066061,3355443,8750469,4539717,16382457,131586,8355711,5263440,3947580,10461087,11053224,5329233,10724259,4210752,9408399,9605778,10329501,3684408,16119285,12369084,11974326,14342874,2171169,1052688,16777215,15987699,13816530,13487565,789516,1250067,15527148,6250335,9934743,4473924,1513239,12895428,10987431,8289918,4013373,6579300,6118749,1644825,7566195,6316128,8487297,5197647,14474460,2236962,2763306,9474192,8947848,4605510,15658734,12105912,1315860,14606046,6184542,723723,14408667,14737632,3289650,3815994,657930,4802889,394758,2368548,6052956,12763842,13882323,11316396,6447714,9539985,9803157,15000804,7960953,15198183,13158600,3618615,7171437,9276813,14013909,5131854,11119017,7105644,5658198,16053492,15395562,6645093,8026746,11447982,526344,12237498,7895160,2434341,3026478,1842204,10921638,11842740,13027014,15263976,14540253,7631988,2039583,4934475,12434877,9145227,9079434,7368816,4079166,11908533,6710886,4737096,197379,16185078,921102,6381921,3487029,5723991,12171705,8816262,12698049,1907997,10395294,14803425,16316664,10000536,1118481,6908265,14277081,9342606,9737364,10197915,1973790,8882055,15329769,13553358,5592405,2631720,14671839,9211020,10592673,9013641,855309,12566463,15132390,4342338,6842472,4276545,10066329,2960685,986895,11579568,5526612,12303291,1447446],v=[3791708898,1308642894,1409307732,4227923196,2483066004,3254829762,1241533002,3422604492,1644192354,218107149,1778412138,1174423110,1006648380,1291865421,2332068747,3506491857,1577082462,4194368250,1677747300,3405827019,3019945140,2533398423,3187719870,721431339,3154164924,1996519287,771763758,50332419,3540046803,419436825,1493195097,3238052289,486546717,100664838,1090535745,1795189611,1426085205,4026593520,2566953369,1761634665,3925928682,2617285788,402659352,2919280302,1660969827,3741376479,3875596263,3137387451,0,1929409395,1711302246,4211145723,2516620950,1275087948,2231403909,3825263844,973093434,150997257,1157645637,2852170410,251662095,3993038574,268439568,3942706155,754986285,2130739071,4093703412,687876393,2885725356,3472936911,2902502829,2432733585,2365623693,2013296760,3355494600,2499843477,4177590777,788541231,3456159438,3439381965,134219784,2046851706,2281736328,939538488,1543527516,2197848963,704653866,671098920,1191200583,3674266587,3087055032,3338717127,2466288531,2751505572,301994514,1392530259,4278255615,2264958855,234884622,822096177,905983542,553656609,1476417624,1207978056,16777473,2382401166,922761015,1946186868,838873650,3389049546,3909151209,2969612721,3070277559,2868947883,201329676,3607156695,3288384708,1442862678,1107313218,637543974,117442311,2550175896,1610637408,3640711641,3053500086,3103832505,285217041,1073758272,3959483628,536879136,2348846220,3170942397,2684395680,3372272073,2214626436,67109892,1224755529,587211555,4043370993,1325420367,1342197840,520101663,318771987,3691044060,3623934168,3221274816,2650840734,1459640151,3808486371,3271607235,2063629179,1694524773,989870907,33554946,2399178639,1040203326,3892373736,620766501,2449511058,3842041317,352326933,3707821533,4244700669,385881879,2835392937,3204497343,3556824276,2583730842,2113961598,3305162181,956315961,1728079719,4261478142,1979741814,2634063261,1124090691,2801837991,3774931425,3489714384,4110480885,1744857192,4060148466,452991771,872428596,1879076976,83887365,2734728099,2315291274,3573601749,2030074233,2248181382,2818615464,805318704,3321939654,1358975313,1258310475,503324190,2785060518,654321447,4127258358,889206069,3523269330,1845522030,603989028,369104406,2181071490,1593859935,3657489114,3858818790,1962964341,2717950626,4009816047,738208812,2986390194,469769244,2667618207,1560304989,1862299503,2147516544,167774730,1912631922,1140868164,2600508315,1811967084,2415956112,184552203,1526750043,855651123,2097184125,1509972570,1375752786,4076925939,1627414881,2701173153,4144035831,2952835248,3590379222,1056980799,2080406652,1828744557,3976261101,335549460,3758153952,2768283045,1023425853,570434082,3003167667,4160813304,2298513801,3724599006,1895854449,436214298,2936057775,3120609978,3036722613,2164294017],w=[1381105746,151584777,1785331818,3587506389,808452144,909508662,2779054245,943194168,3216965823,1077936192,2745368739,2661154974,2172715137,4092788979,3621191895,4227531003,2088501372,3823304931,960036921,2189557890,2610626715,791609391,4294902015,2273771655,875823156,2391670926,1128464451,1145307204,3301179588,3739091166,3924361449,3419078859,1414791252,2071658619,2492727444,842137650,2795896998,3267494082,589496355,1027407933,4008575214,1280049228,2509570197,185270283,1111621698,4210688250,3284336835,1313734734,134742024,774766638,2711683233,1717960806,673710120,3654877401,606339108,2998010034,1987444854,1532690523,2728525986,1229520969,1835860077,2341142667,3520135377,623181861,1920073842,4177002744,4143317238,1684275300,2256928902,1751646312,2560098456,370540566,3570663636,2762211492,1549533276,3435921612,1566376029,1701118053,3065381046,2459041938,1819017324,1886388336,1212678216,1347420240,4261216509,3991732461,3115909305,3671720154,1583218782,353697813,1178992710,1465319511,2812739751,2374828173,2644312221,2223243396,2425356432,3638034648,2880110763,0,2357985420,3166437564,3553820883,168427530,4160159991,3840147684,1482162264,84213765,3099066552,3014852787,1162149957,101056518,3503292624,741081132,505282590,2408513679,3402236106,1061093439,252641295,33685506,3250651329,2947481775,3183280317,50528259,16842753,320012307,2324299914,1802174571,976879674,2442199185,286326801,1094778945,1330577487,1734803559,3705405660,3941204202,2543255703,4075946226,3486449871,3469607118,4042260720,3031695540,3873833190,1936916595,2526412950,2896953516,1953759348,572653602,3890675943,2913796269,892665909,2240086149,3806462178,4193845497,926351415,3907518696,471597084,1970602101,3755933919,1852702830,1195835463,4059103473,437911578,1903231089,488439837,690552873,3318022341,2307457161,1869545583,3082223799,1650589794,235798542,2863268010,404226072,3200123070,454754331,4244373756,1448476758,1044250686,1263206475,3334865094,3536978130,2037973113,538968096,2593783962,3688562907,3233808576,4278059262,2021130360,3452764365,1515847770,4109631732,522125343,3722248413,2829582504,858980403,2290614408,117899271,3351707847,825294897,2981167281,303169554,269484048,1499005017,656867367,2155872384,3974889708,1600061535,1616904288,1364262993,2139029631,2846425257,421068825,3048538293,1246363722,218955789,757923885,3856990437,2054815866,2677997727,2475884691,3385393353,2627469468,4025417967,2694840480,3772776672,993722427,1296891981,2930639022,707395626,4126474485,2964324528,3368550600,3958046955,3149594811,1010565180,2206400643,1397948499,2576941209,1633747041,387383319,724238379,67371012,2122186878,3132752058,2004287607,3604349142,640024614,3789619425,1768489065,336855060,1667432547,1431634005,555810849,202113036,2105344125],x=[808464384,1751672832,2576980224,454761216,2273806080,3115956480,555819264,2021160960,1347440640,960051456,3688618752,3789676800,1920102912,151587072,1650614784,1010580480,1044266496,2122219008,1583242752,2391707136,4059164928,2694881280,3435973632,2745410304,707406336,488447232,4227595008,3065427456,3604403712,538976256,3301229568,2374864128,2172748032,1701143808,4126536960,2307492096,3419130624,2644352256,2004317952,3334915584,1465341696,1128481536,1448498688,387389184,3570717696,1077952512,437918208,1296911616,3233857536,1667457792,1819044864,3823362816,3082270464,3368601600,1684300800,1785358848,1397969664,2863311360,943208448,2560137216,202116096,4109693952,2610666240,3991792896,2139062016,572662272,1987474944,2947526400,3722304768,976894464,185273088,1482184704,1734829824,2290649088,101058048,3284386560,892679424,218959104,16843008,2341178112,2358021120,3267543552,3873891840,1600085760,33686016,606348288,1970631936,2475922176,1717986816,505290240,3857048832,3806519808,1414812672,3638089728,269488128,3469659648,2054846976,3907577856,134744064,741092352,303174144,2543294208,842150400,2880154368,3031741440,656877312,168430080,589505280,3755990784,4025478912,3402287616,3654932736,3099113472,4210752e3,3705461760,825307392,1802201856,3520188672,2913840384,421075200,1229539584,3183328512,1364283648,2526451200,4008635904,3840205824,2829625344,1094795520,3671775744,4294967040,3452816640,1431655680,2256963072,909522432,3200171520,1633771776,1381126656,4177065984,3149642496,235802112,2189591040,1212696576,1768515840,2593823232,3772833792,1195853568,2661195264,1549556736,67372032,1263225600,875836416,353703168,2038003968,640034304,2812782336,3739147776,690563328,2930683392,2459079168,3621246720,2223277056,3924420864,3537031680,3132799488,1566399744,4092850944,3318072576,2964369408,3217014528,2762253312,993737472,1903259904,1145324544,1179010560,724249344,4244438016,3958106880,1869573888,3587560704,4143379968,336860160,4278124032,2088532992,1886416896,1515870720,2105376e3,4261281024,791621376,404232192,2206434048,370546176,2779096320,2442236160,522133248,84215040,2509608192,1953788928,2846468352,3250700544,1532713728,1246382592,2240120064,1835887872,320017152,117901056,1330597632,1313754624,1162167552,2998055424,252645120,3385444608,471604224,2795939328,3166485504,3974949888,1936945920,2425393152,2071689984,3486502656,1499027712,2408550144,2711724288,4193908992,757935360,4076007936,2981212416,0,2492765184,926365440,2678038272,3503345664,774778368,2627509248,1852730880,673720320,1061109504,2155905024,4042321920,1027423488,3553874688,623191296,2324335104,3048584448,3890734848,1111638528,3014898432,3351758592,3941263872,4160222976,1280068608,286331136,858993408,50529024,2728567296,2896997376,1616928768]}var b="aria";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g8?3:1,r=[],s=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,u=0;q>u;u++){var v=a.getInt32(),w=a.getInt32();b=252645135&(v>>>4^w),w^=b,v^=b<<4,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>-16^v),v^=b,w^=b<<-16,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=16711935&(w>>>8^v),v^=b,w^=b<<8,b=1431655765&(v>>>1^w),w^=b,v^=b<<1,b=v<<8|w>>>20&240,v=w<<24|w<<8&16711680|w>>>8&65280|w>>>24&240,w=b;for(var x=0;x>>26,w=w<<2|w>>>26):(v=v<<1|v>>>27,w=w<<1|w>>>27),v&=-15,w&=-15;var y=c[v>>>28]|d[v>>>24&15]|e[v>>>20&15]|f[v>>>16&15]|g[v>>>12&15]|h[v>>>8&15]|i[v>>>4&15],z=j[w>>>28]|k[w>>>24&15]|l[w>>>20&15]|m[w>>>16&15]|n[w>>>12&15]|o[w>>>8&15]|p[w>>>4&15];b=65535&(z>>>16^y),r[t++]=y^b,r[t++]=z^b<<16}}return r}function e(a,b,c,d){var e,f=32===a.length?3:9;e=3===f?d?[30,-2,-2]:[0,32,2]:d?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,p=b[0],q=b[1];o=252645135&(p>>>4^q),q^=o,p^=o<<4,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,p=p<<1|p>>>31,q=q<<1|q>>>31;for(var r=0;f>r;r+=3){for(var s=e[r+1],t=e[r+2],u=e[r];u!=s;u+=t){var v=q^a[u],w=(q>>>4|q<<28)^a[u+1];o=p,p=q,q=o^(h[v>>>24&63]|j[v>>>16&63]|l[v>>>8&63]|n[63&v]|g[w>>>24&63]|i[w>>>16&63]|k[w>>>8&63]|m[63&w])}o=p,p=q,q=o}p=p>>>1|p<<31,q=q>>>1|q<<31,o=1431655765&(p>>>1^q),q^=o,p^=o<<1,o=16711935&(q>>>8^p),p^=o,q^=o<<8,o=858993459&(q>>>2^p),p^=o,q^=o<<2,o=65535&(p>>>16^q),q^=o,p^=o<<16,o=252645135&(p>>>4^q),q^=o,p^=o<<4,c[0]=p,c[1]=q}function f(a){a=a||{};var c=(a.mode||"CBC").toUpperCase(),d=24==a.key.length?"3DES-":"DES-";d+=c;var e;e=a.decrypt?b.cipher.createDecipher(d,a.key):b.cipher.createCipher(d,a.key);var f=e.start;return e.start=function(a,c){var d=null;c instanceof b.util.ByteBuffer&&(d=c,c={}),c=c||{},c.output=d,c.iv=a,f.call(e,c)},e}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"des");b.des=b.des||{},b.des.startEncrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!1,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createEncryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!1,mode:b})},b.des.startDecrypting=function(a,b,c,d){var e=f({key:a,output:c,decrypt:!0,mode:d||(null===b?"ECB":"CBC")});return e.start(b),e},b.des.createDecryptionCipher=function(a,b){return f({key:a,output:null,decrypt:!0,mode:b})},b.des.Algorithm=function(b,c){a();var d=this;d.name=b,d.mode=new c({blockSize:8,cipher:{encrypt:function(a,b){return e(d._keys,a,b,!1)},decrypt:function(a,b){return e(d._keys,a,b,!0)}}}),d._init=!1},b.des.Algorithm.prototype.initialize=function(a){if(!this._init){var c=b.util.createBuffer(a.key);if(0===this.name.indexOf("3DES")&&24!==c.length())throw new Error("Invalid Triple-DES key size: "+8*c.length());this._keys=d(c),this._init=!0}},c("DES-ECB",b.cipher.modes.ecb),c("DES-CBC",b.cipher.modes.cbc),c("DES-CFB",b.cipher.modes.cfb),c("DES-OFB",b.cipher.modes.ofb),c("DES-CTR",b.cipher.modes.ctr),c("3DES-ECB",b.cipher.modes.ecb),c("3DES-CBC",b.cipher.modes.cbc),c("3DES-CFB",b.cipher.modes.cfb),c("3DES-OFB",b.cipher.modes.ofb),c("3DES-CTR",b.cipher.modes.ctr);var g=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],h=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],i=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],j=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],k=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],m=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],n=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]}var b="des";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g>16-b},f=function(a,b){return(65535&a)>>b|a<<16-b&65535};b.rc2=b.rc2||{},b.rc2.expandKey=function(a,d){"string"==typeof a&&(a=b.util.createBuffer(a)),d=d||128;var e,f=a,g=a.length(),h=d,i=Math.ceil(h/8),j=255>>(7&h);for(e=g;128>e;e++)f.putByte(c[f.at(e-1)+f.at(e-g)&255]);for(f.setAt(128-i,c[f.at(128-i)&j]),e=127-i;e>=0;e--)f.setAt(e,c[f.at(e+1)^f.at(e+i)]);return f};var g=function(c,g,h){a();var i,j,k,l,m=!1,n=null,o=null,p=null,q=[];for(c=b.rc2.expandKey(c,g),k=0;64>k;k++)q.push(c.getInt16Le());h?(i=function(a){for(k=0;4>k;k++)a[k]+=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),a[k]=e(a[k],d[k]),l++},j=function(a){for(k=0;4>k;k++)a[k]+=q[63&a[(k+3)%4]]}):(i=function(a){for(k=3;k>=0;k--)a[k]=f(a[k],d[k]),a[k]-=q[l]+(a[(k+3)%4]&a[(k+2)%4])+(~a[(k+3)%4]&a[(k+1)%4]),l--},j=function(a){for(k=3;k>=0;k--)a[k]-=q[63&a[(k+3)%4]]});var r=function(a){var b=[];for(k=0;4>k;k++){var c=n.getInt16Le();null!==p&&(h?c^=p.getInt16Le():p.putInt16Le(c)),b.push(65535&c)}l=h?0:63;for(var d=0;dk;k++)null!==p&&(h?p.putInt16Le(b[k]):b[k]^=p.getInt16Le()),o.putInt16Le(b[k])},s=null;return s={start:function(a,c){a&&"string"==typeof a&&(a=b.util.createBuffer(a)),m=!1,n=b.util.createBuffer(),o=c||new b.util.createBuffer,p=a,s.output=o},update:function(a){for(m||n.putBuffer(a);n.length()>=8;)r([[5,i],[1,j],[6,i],[1,j],[5,i]])},finish:function(a){var b=!0;if(h)if(a)b=a(8,n,!h);else{var c=8===n.length()?8:8-n.length();n.fillWithByte(c,c)}if(b&&(m=!0,s.update()),!h&&(b=0===n.length()))if(a)b=a(8,o,!h);else{var d=o.length(),e=o.at(d-1);e>d?b=!1:o.truncate(e)}return b}}};b.rc2.startEncrypting=function(a,c,d){var e=b.rc2.createEncryptionCipher(a,128);return e.start(c,d),e},b.rc2.createEncryptionCipher=function(a,b){return g(a,b,!0)},b.rc2.startDecrypting=function(a,c,d){var e=b.rc2.createDecryptionCipher(a,128);return e.start(c,d),e},b.rc2.createDecryptionCipher=function(a,b){return g(a,b,!1)}}var b="rc2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;gl;l++)k.push(a.s.substr(i,f)),i+=f;var j=a.s.substr(0,i),m=a.s.substr(i,f);i+=f;var n=dreamsecurity.util.bytesToHex(b.intg.create(j));if(m!=n.substr(0,f))throw Error("4");d(a.l),a.s="",a.filter=k}for(var o=e.substr(0,f),l=0;lb.vi.na)throw Error("1");a.list||(a.list={},a.tbi={}),a.list[c]=e}function d(a){if(void 0===a)throw Error("input value is null.");try{var c=b.util.decode64(a),d="00c4665976b561cd82d1971e6512a4bddf65d82c035b81486f3b4756258dbd6d95a433db2d7d0daec20f3ddef14af5f504b52e72efc261e88bc5c867890acf52c5f9b96a2d2adc07091c3355415cb4141de608db0633adbb6b8019a03b8fdda447bc484e98b71dd2c1f570d4a3537ea87961c28436bac8393f5ffa11270a1adbea400f3b209a6b8b288d7069fa3623f9cd9c7b1fd8c52cc363587677f6ba82bc3a5d2fa44e78b605a57040e0317fd2f20c70775dcf61d2361832583a13fb6f778bf3271ab5aa605e84cbe5675fc55a49f5891ed17f4e3db1c920f9f46a87aa5cdb06f9cb8c39118c7f03d0466c0f8b60ccab62e35a0b8d947992c0dd1acd5bbebb",f=b.pki.setRsaPublicKey(new b.jsbn.BigInteger(d,16),new b.jsbn.BigInteger("010001",16)),g=b.pki.rsa.decrypt(c,f,!0,!0),h=g.substr(0,2),i=g.substr(2,g.length-2)}catch(j){throw new Error("11")}if("R0"==h){for(var k=i.split(","),l=0;ls)throw new Error("The license expired!")}function e(a){var b;return b=a.indexOf("://")>-1?a.split("/")[2]:a.split("/")[0],b=b.split(":")[0]}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"pki");b.chkIntegrity=function(a,d){var e=b.vi;e.na=new Date(1548296256334);var f=null;f=a.toString(),f=f.replace(/ |\t|\r\n|;/gm,"");var g=dreamsecurity.util.bytesToHex(b.intg.create(f));try{c(e,d,g)}catch(h){var i=new Error("It does not allow the use MagicJS. ("+h.message+")");throw i.type=b.err.license,i}};var f=b.asn1,g=b.pki=b.pki||{},h=g.oids;g.pemToDer=function(a){var c=b.pem.decode(a)[0];if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return b.util.createBuffer(c.body)};var i=b.pki.algIdValidator=function(a,b,c,d,e){return{name:a,tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:b,tagClass:f.Class.UNIVERSAL,type:f.Type.OID,constructed:!1,capture:c},{name:d,tagClass:f.Class.UNIVERSAL,optional:!0,captureAsn1:e}]}},j={name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:f.Class.UNIVERSAL,type:f.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},i("PrivateKeyInfo.privateKeyAlgorithm","AlgorithmIdentifier.algorithm","privateKeyOid","AlgorithmIdentifier.parameter","parameters"),{ -name:"PrivateKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.OCTETSTRING,constructed:!1,capture:"privateKey"},{name:"PrivateKeyInfo.attributes",tagClass:f.Class.CONTEXT_SPECIFIC,type:0,capture:"priKeyAttributes",optional:!0}]},k=b.pki.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:f.Class.UNIVERSAL,type:f.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[i("SubjectPublicKeyInfo.AlgorithmIdentifier","AlgorithmIdentifier.algorithm","publicKeyOid","AlgorithmIdentifier.parameter","parameters"),{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:f.Class.UNIVERSAL,type:f.Type.BITSTRING,constructed:!1,capture:"publicKey"}]};g.privateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PRIVATE KEY"!==c.type&&"RSA PRIVATE KEY"!==c.type&&"KCDSA PRIVATE KEY"!==c.type){var d=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY" or "KCDSA PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var e=f.fromDer(c.body,!0,!1);return g.privateKeyFromAsn1(e)},g.privateKeyFromAsn1=function(c){a();var d={},e=[];if(!f.validate(c,j,d,e)){var i=new Error("Cannot read private key.");throw i.errors=e,i}c=f.fromDer(b.util.createBuffer(d.privateKey));var k=f.derToOid(d.privateKeyOid),l=null;if(k===h.rsaEncryption)l=g.rsa.privateKeyFromAsn1(c),l.algName="rsa";else if(k===h.kcdsa1)l=g.kcdsa.privateKeyFromAsn1(c,d.parameters),l.algName="kcdsa";else{var i=new Error("Not supported key.key oid="+k);i.errors=e}l.randomNum=null;var m=d.priKeyAttributes;if(void 0!=m&&null!=m)for(var n=0;ng.digestLength)throw new Error("Derived key is too long.");g.start(),g.update(c),g.update(d);var i=g.digest();for(h=1;e>h;h++)g.start(),g.update(i.getBytes()),i=g.digest();return i.getBytes(f)},b.pbkdf2=c.pbkdf2=function(c,d,e,f,g,h){function i(){return t>m?h(null,s):(o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes(),u=2,void j())}function j(){return e>=u?(o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q,++u,b.util.setImmediate(j)):(s+=m>t?p:p.substr(0,n),++t,void i())}a(),"function"==typeof g&&(h=g,g=null),"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var k=g.digestLength;if(f>4294967295*k){var l=new Error("Derived key is too long.");if(h)return h(l);throw l}var m=Math.ceil(f/k),n=f-(m-1)*k,o=b.hmac.create();o.start(g,c);var p,q,r,s="";if(!h){for(var t=1;m>=t;++t){o.start(null,null),o.update(d),o.update(b.util.int32ToBytes(t)),p=r=o.digest().getBytes();for(var u=2;e>=u;++u)o.start(null,null),o.update(r),q=o.digest().getBytes(),p=b.util.xorBytes(p,q,k),r=q;s+=m>t?p:p.substr(0,n)}return s}var u,t=1;i()}}var b="pbkdf2";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0?p.substr(g,h):"0123456789012345";else{p=b.pkcs5.pbkdf1(c,l,m,md.digestLength,md),q=p.substr(0,g),md.start(),md.update(p.substr(g,md.digestLength-h));var s=md.digest();r=s.getBytes(h)}var t=k(q);return t.start(r),t.update(a),t.finish(),i=t.output.getBytes(),encryptionAlgorithm=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(j).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,l),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,n.getBytes())])]),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[encryptionAlgorithm,e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,i)])},_encryptForPKCS12PBE=function(a,c,d,e){if("3des"!==e.algorithm&&"des-EDE3"!==e.algorithm){var g=new Error("Cannot encrypt private key. Unsupported PKCS12 pbe algorithm. : "+e.algorithm);throw g.type=b.err.unsupported,g}var h=e.count,i=24,j=8,k=new b.util.ByteBuffer(d),l=f.pbe.generatePkcs12Key(c,k,1,h,i),m=f.pbe.generatePkcs12Key(c,k,2,h,j),n=b.des.createEncryptionCipher(l);return n.start(m),n.update(a),n.finish(),n.output.getBytes()},_pkcs12PbeAlgToASN1=function(a,b){return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(g["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,a),e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(b).getBytes())])])},f.pbe.getEncDataForPKCS12PBE=function(a,c,d){var g=b.random.getBytesSync(d.saltSize),h=_encryptForPKCS12PBE(a,c,g,d),i=e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.data).getBytes()),_pkcs12PbeAlgToASN1(g,d.count),e.create(e.Class.CONTEXT_SPECIFIC,0,!1,h)]);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.OID,!1,e.oidToDer(f.oids.encryptedData).getBytes()),e.create(e.Class.CONTEXT_SPECIFIC,0,!0,[e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[e.create(e.Class.UNIVERSAL,e.Type.INTEGER,!1,e.integerToDer(0).getBytes()),i])])])},f.pbe.getEncPriKeyInfoForPKCS12PBE=function(a,c,d){var f=b.random.getBytesSync(d.saltSize),g=_encryptForPKCS12PBE(a,c,f,d);return e.create(e.Class.UNIVERSAL,e.Type.SEQUENCE,!0,[_pkcs12PbeAlgToASN1(f,d.count),e.create(e.Class.UNIVERSAL,e.Type.OCTETSTRING,!1,g)])},f.encryptPrivateKeyInfo=function(a,b,c){c=c||{},c.version=c.version||20,c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128";return void 0!==c.usePkcs12&&c.usePkcs12?f.pbe.getEncPriKeyInfoForPKCS12PBE(e.toDer(a),b,c):20==c.version?f.pbe.getEncPriKeyInfoForPBES2(e.toDer(a),b,c):f.pbe.getEncPriKeyInfoForPBES1(e.toDer(a),b,c)},f.encryptDataWithPBE=function(a,b,c){return c.saltSize=c.saltSize||8,c.count=c.count||20==c.version?2048:1024,c.algorithm=c.algorithm||"aes128",f.pbe.getEncDataForPKCS12PBE(e.toDer(a),b,c)},f.decryptPrivateKeyInfo=function(a,c,d){var g=null,i={},j=[];if(!e.validate(a,h,i,j)){var k=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw k.errors=j,k.type=b.err.decode,k}var l=null,m=!1,n=e.derToOid(i.encryptionOid);n==f.oids.pkcs5PBES2?l=20:(l=15,n==f.oids.seedCBC&&(m=!0));var o=f.pbe.getCipher(n,i.encryptionParams,c),p=b.util.createBuffer(i.encryptedData);if(o.update(p),o.finish())try{g=e.fromDer(o.output,!0,!1)}catch(q){throw q.type=b.err.wrongPasswd,q.message="Confirm password.",q}return null!=d&&1==d&&(g={privateKey:g,pbeAlg:"",pkcs5Version:l,fixedIv:m},"AES-CBC"==o.algorithm.name?g.pbeAlg="AES"+8*o.keySize+"-CBC":"ARIA-CBC"==o.algorithm.name?g.pbeAlg="ARIA"+8*o.keySize+"-CBC":g.pbeAlg=o.algorithm.name),g},f.encryptedPrivateKeyToPem=function(a,c){var d={type:"ENCRYPTED PRIVATE KEY",body:e.toDer(a).getBytes()};return b.pem.encode(d,{maxline:c})},f.encryptedPrivateKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("ENCRYPTED PRIVATE KEY"!==c.type){var d=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return e.fromDer(c.body)},f.encryptPrivateKey=function(c,d,g){if(a(),g=g||{},!g.legacy)return rval=f.encryptPrivateKeyInfo(c,d,g),e.toDer(rval);var h,i,j,k;switch(g.algorithm){case"aes128":h="AES-128-CBC",j=16,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes192":h="AES-192-CBC",j=24,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"aes256":h="AES-256-CBC",j=32,i=b.random.getBytesSync(16),k=b.aes.createEncryptionCipher;break;case"3des":h="DES-EDE3-CBC",j=24,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;case"des":h="DES-CBC",j=8,i=b.random.getBytesSync(8),k=b.des.createEncryptionCipher;break;default:var l=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+g.algorithm+'".');throw l.algorithm=g.algorithm,l}var m=b.pbe.opensslDeriveBytes(d,i.substr(0,8),j),n=k(m);n.start(i),n.update(e.toDer(f.privateKeyToAsn1(c))),n.finish();var o={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:h,parameters:b.util.bytesToHex(i).toUpperCase()},body:n.output.getBytes()};return b.pem.encode(o)},f.decryptRsaPrivateKey=function(c,d){a();var g=null,h=b.pem.decode(c)[0];if("ENCRYPTED PRIVATE KEY"!==h.type&&"PRIVATE KEY"!==h.type&&"RSA PRIVATE KEY"!==h.type){var i=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw i.headerType=i,i}if(h.procType&&"ENCRYPTED"===h.procType.type){var j,k;switch(h.dekInfo.algorithm){case"DES-CBC":j=8,k=b.des.createDecryptionCipher;break;case"DES-EDE3-CBC":j=24,k=b.des.createDecryptionCipher;break;case"AES-128-CBC":j=16,k=b.aes.createDecryptionCipher;break;case"AES-192-CBC":j=24,k=b.aes.createDecryptionCipher;break;case"AES-256-CBC":j=32,k=b.aes.createDecryptionCipher;break;case"RC2-40-CBC":j=5,k=function(a){return b.rc2.createDecryptionCipher(a,40)};break;case"RC2-64-CBC":j=8,k=function(a){return b.rc2.createDecryptionCipher(a,64)};break;case"RC2-128-CBC":j=16,k=function(a){return b.rc2.createDecryptionCipher(a,128)};break;default:var i=new Error('Could not decrypt private key; unsupported encryption algorithm "'+h.dekInfo.algorithm+'".');throw i.algorithm=h.dekInfo.algorithm,i}var l=b.util.hexToBytes(h.dekInfo.parameters),m=b.pbe.opensslDeriveBytes(d,l.substr(0,8),j),n=k(m);if(n.start(l),n.update(b.util.createBuffer(h.body)),!n.finish())return g;g=n.output.getBytes()}else g=h.body;return g="ENCRYPTED PRIVATE KEY"===h.type?f.decryptPrivateKeyInfo(e.fromDer(g),d):e.fromDer(g),null!==g&&(g=f.privateKeyFromAsn1(g)),g},f.pbe.generatePkcs12Key=function(a,c,d,e,f,g){var h,i;"undefined"!=typeof g&&null!==g||(g=b.md.sha1.create());var j=g.digestLength,k=g.blockLength,l=new b.util.ByteBuffer,m=new b.util.ByteBuffer;if(null!==a&&void 0!==a){if("string"!=typeof a)throw new Error("The password is not a string type.");for(i=0;ii;i++)r.putByte(c.at(i%o));var s=k*Math.ceil(n/k),t=new b.util.ByteBuffer;for(i=0;s>i;i++)t.putByte(m.at(i%n));var u=r;u.putBuffer(t);for(var v=Math.ceil(f/j),w=1;v>=w;w++){var x=new b.util.ByteBuffer;x.putBytes(p.bytes()),x.putBytes(u.bytes());for(var y=0;e>y;y++)g.start(),g.update(x.getBytes()),x=g.digest();var z=new b.util.ByteBuffer;for(i=0;k>i;i++)z.putByte(x.at(i%j));var A=Math.ceil(o/k)+Math.ceil(n/k),B=new b.util.ByteBuffer;for(h=0;A>h;h++){var C=new b.util.ByteBuffer(u.getBytes(k)),D=511;for(i=z.length()-1;i>=0;i--)D>>=8,D+=z.at(i)+C.at(i),C.setAt(i,255&D);B.putBuffer(C)}u=B,l.putBuffer(x)}return l.truncate(l.length()-f),l},f.pbe.getCipher=function(a,b,c){switch(a){case f.oids.pkcs5PBES2:return f.pbe.getDecCipherForPBES2(a,b,c);case f.oids.seedCBCWithSHA1:case f.oids.seedCBC:case f.oids.pbeWithSHA1AndARIA_CBC:return f.pbe.getDecCipherForPBES1(a,b,c);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getDecCipherForPKCS12PBE(a,b,c);default:var d=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw d.oid=a,d.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","seedCBCWithSHA1","pbewithSHAAnd40BitRC2-CBC"],d}},f.pbe.getDecCipherForPBES2=function(a,c,d){var g={},h=[];if(!e.validate(c,i,g,h)){var j=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw j.errors=h,j}if(a=e.derToOid(g.kdfOid),a!==f.oids.pkcs5PBKDF2){var j=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw j.oid=a,j.supportedOids=["pkcs5PBKDF2"],j}a=e.derToOid(g.encOid);var k=g.kdfSalt,l=b.util.createBuffer(g.kdfIterationCount);l=l.getInt(l.length()<<3);var m,n;switch(f.oids[a]){case"aes128-CBC":m=16,n=b.aes.createDecryptionCipher;break;case"aes192-CBC":m=24,n=b.aes.createDecryptionCipher;break;case"aes256-CBC":m=32,n=b.aes.createDecryptionCipher;break;case"des-EDE3-CBC":m=24,n=b.des.createDecryptionCipher;break;case"desCBC":m=8,n=b.des.createDecryptionCipher;break;case"seedCBC":m=16,n=b.seed.createDecryptionCipher;break;case"ariaCBC":case"aria128-CBC":m=16,n=b.aria.createDecryptionCipher;break;case"aria192-CBC":m=24,n=b.aria.createDecryptionCipher;break;case"aria256-CBC":m=32,n=b.aria.createDecryptionCipher;break;default:throw new Error("Cannot read encrypted private key. Unsupported encryption scheme OID. : "+a)}var o=b.pkcs5.pbkdf2(d,k,l,m),p=g.encIv,q=n(o);return q.start(p),q.keySize=m,q},f.pbe.getDecCipherForPBES1=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=g.salt,l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o,p=null;switch(a){case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.seedCBC:m=16,n=0,o=b.seed.startDecrypting,p=b.md.sha1.create();break;case f.oids.pbeWithSHA1AndARIA_CBC:m=16,n=16,o=b.aria.startDecrypting,p=b.md.sha1.create();break;default:var i=new Error("Cannot read PBES1 data block. Unsupported OID.");throw i.oid=a,i}var q="",r=null,s=null;if(m+n<=p.digestLength)q=b.pkcs5.pbkdf1(d,k,l,m+n,p),r=q.substr(0,m),s=n>0?q.substr(m,n):"0123456789012345";else{q=b.pkcs5.pbkdf1(d,k,l,p.digestLength,p),r=q.substr(0,m),p.start(),p.update(q.substr(m,p.digestLength-m));var t=p.digest();s=t.getBytes(n)}return o(r,s)},f.pbe.getDecCipherForPKCS12PBE=function(a,c,d){var g={},h=[];if(!e.validate(c,j,g,h)){var i=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw i.errors=h,i}var k=b.util.createBuffer(g.salt),l=b.util.createBuffer(g.iterations);l=l.getInt(l.length()<<3);var m,n,o;switch(a){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:m=24,n=8,o=b.des.startDecrypting;break;case f.oids.seedCBCWithSHA1:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids.pbeWithSHA1AndARIA_CBC:m=16,n=16,o=b.seed.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:m=5,n=8,o=function(a,c){var d=b.rc2.createDecryptionCipher(a,40);return d.start(c,null),d};break;default:var i=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw i.oid=a,i}var p=f.pbe.generatePkcs12Key(d,k,1,l,m),q=f.pbe.generatePkcs12Key(d,k,2,l,n);return o(p,q)},f.pbe.opensslDeriveBytes=function(a,d,e,f){"undefined"!=typeof f&&null!==f||(f=b.md.md5.create()),null===d&&(d="");for(var g=[c(f,a+d)],h=16,i=1;e>h;++i,h+=16)g.push(c(f,g[i-1]+a+d));return g.join("").substr(0,e)}}var b="pbe";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0&&i[1].value[m].type===k.Type.SEQUENCE){var n=i[1].value[m].value;n[0].type===k.Type.UTF8?e.unotice.organization=b.util.decodeUtf8(n[0].value):e.unotice.organization=n[0].value;n.length>1,l--,m++}if(l>0){var o=i[1].value[m];o.type===k.Type.UTF8?e.unotice.explicitText=b.util.decodeUtf8(o.value):e.unotice.explicitText=o.value}}}}return c.push(e),c}},l.readSignatureParameters=function(a,b,c){var d={},e={},f=[];if(a===m.RSASSA_PSS){if(c&&(d={hash:{algorithmOid:m.sha1},mgf:{algorithmOid:m.mgf1,hash:{algorithmOid:m.sha1}},saltLength:20}),!k.validate(b,s,e,f)){var g=new Error("Cannot read RSASSA-PSS parameter block.");throw g.errors=f,g}void 0!==e.hashOid&&(d.hash=d.hash||{},d.hash.algorithmOid=k.derToOid(e.hashOid)),void 0!==e.maskGenOid&&(d.mgf=d.mgf||{},d.mgf.algorithmOid=k.derToOid(e.maskGenOid),d.mgf.hash=d.mgf.hash||{},d.mgf.hash.algorithmOid=k.derToOid(e.maskGenHashOid)),void 0!==e.saltLength&&(d.saltLength=e.saltLength.charCodeAt(0))}else a==m.kcdsa1&&(d.domainParam=l.kcdsa.domainParamFromAsn1(b));return d},l.verifySignature=function(a,c,d,e,f,g){var h;switch(a){case m.RSASSA_PSS:var i,j,k;if(i=m[c.mgf.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported MGF hash function.");throw l.oid=c.mgf.hash.algorithmOid,l.name=i,l}if(j=m[c.mgf.algorithmOid],void 0===j||void 0===b.mgf[j]){var l=new Error("Unsupported MGF function.");throw l.oid=c.mgf.algorithmOid,l.name=j,l}if(j=b.mgf[j].create(b.md[i].create()),i=m[c.hash.algorithmOid],void 0===i||void 0===b.md[i]){var l=new Error("Unsupported RSASSA-PSS hash function.");throw l.oid=c.hash.algorithmOid,l.name=i,l}i=b.md[i].create(),k=c.saltLength,20===k&&(k=i.digestLength),h=b.pss.create(i,j,k);break;case m.sha1WithRSAEncryption:case m.sha256WithRSAEncryption:case m.sha384WithRSAEncryption:case m.sha512WithRSAEncryption:case m.rsaEncryption:case m.kcdsa1:case m.kcdsa1WithSHA1:case m.kcdsa1WithSHA256:break;default:var l=new Error("Unsupported signature algorithm.");throw l.oid=a,l}return"rsa"==e.algName?(d.start(),d.update(f),e.verify(d.digest().getBytes(),g,h)):"kcdsa"==e.algName?e.verify(f,d.algorithm,g):void 0};var v=function(a){switch(a){case m.sha1WithRSAEncryption:return b.md.sha1.create();case m.md5WithRSAEncryption:return b.md.md5.create();case m.sha256WithRSAEncryption:return b.md.sha256.create();case m.RSASSA_PSS:return b.md.sha256.create()}var c=new Error("Unknown signature oid("+a+")");throw c.signatureOid=a,c};l.certificateFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE"!==e.type&&"X509 CERTIFICATE"!==e.type&&"TRUSTED CERTIFICATE"!==e.type){var f=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificateFromAsn1(g,c)},l.certificateToPem=function(a,c){var d={type:"CERTIFICATE",body:k.toDer(l.certificateToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyFromPem=function(a){var c=b.pem.decode(a)[0];if("PUBLIC KEY"!==c.type&&"RSA PUBLIC KEY"!==c.type){var d=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw d.headerType=c.type,d}if(c.procType&&"ENCRYPTED"===c.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var e=k.fromDer(c.body);return l.publicKeyFromAsn1(e)},l.publicKeyToPem=function(a,c){var d={type:"PUBLIC KEY",body:k.toDer(l.publicKeyToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.publicKeyToRSAPublicKeyPem=function(a,c){var d={type:"RSA PUBLIC KEY",body:k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.getPublicKeyFingerprint=function(a,c){c=c||{};var d,e=c.md||b.md.sha1.create(),f=c.type||"RSAPublicKey";switch(f){case"RSAPublicKey":d=k.toDer(l.publicKeyToRSAPublicKey(a)).getBytes();break;case"SubjectPublicKeyInfo":d=k.toDer(l.publicKeyToAsn1(a)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+c.type+'".')}e.start(),e.update(d);var g=e.digest();if("hex"===c.encoding){var h=g.toHex();return c.delimiter?h.match(/.{2}/g).join(c.delimiter):h}if("binary"===c.encoding)return g.getBytes();if(c.encoding)throw new Error('Unknown encoding "'+c.encoding+'".');return g},l.certificationRequestFromPem=function(a,c,d){var e=b.pem.decode(a)[0];if("CERTIFICATE REQUEST"!==e.type){var f=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw f.headerType=e.type,f}if(e.procType&&"ENCRYPTED"===e.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var g=k.fromDer(e.body,d);return l.certificationRequestFromAsn1(g,c)},l.certificationRequestToPem=function(a,c){var d={type:"CERTIFICATE REQUEST",body:k.toDer(l.certificationRequestToAsn1(a)).getBytes()};return b.pem.encode(d,{maxline:c})},l.createCertificate=function(){var a={};return a.version=2,a.serialNumber="00",a.signatureOid=null,a.signature=null,a.siginfo={},a.siginfo.algorithmOid=null,a.validity={},a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.issuer={},a.issuer.getField=function(b){return c(a.issuer,b)},a.issuer.addField=function(b){h([b]),a.issuer.attributes.push(b)},a.issuer.attributes=[],a.issuer.hash=null,a.subject={},a.subject.getField=function(b){return c(a.subject,b)},a.subject.addField=function(b){h([b]),a.subject.attributes.push(b)},a.subject.attributes=[],a.subject.hash=null,a.extensions=[],a.publicKey=null,a.md=null,a.setSubject=function(b,c){h(b),a.subject.attributes=b,delete a.subject.uniqueId,c&&(a.subject.uniqueId=c),a.subject.hash=null},a.setIssuer=function(b,c){h(b),a.issuer.attributes=b,delete a.issuer.uniqueId,c&&(a.issuer.uniqueId=c),a.issuer.hash=null},a.setExtensions=function(b){for(var c=0;c2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(t.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(p.validity.notBefore=t[0],p.validity.notAfter=t[1],p.tbsCertificate=f.tbsCertificate,e){if(p.md=null,p.signatureOid in m){var o=m[p.signatureOid];switch(o){case"sha1WithRSAEncryption":p.md=b.md.sha1.create();break;case"md5WithRSAEncryption":p.md=b.md.md5.create();break;case"sha256WithRSAEncryption":p.md=b.md.sha256.create();break;case"RSASSA_PSS":p.md=b.md.sha256.create()}}if(null===p.md){var i=new Error("Could not compute certificate digest. Unknown signature OID.");throw i.signatureOid=p.signatureOid,i}var u=k.toDer(p.tbsCertificate);p.md.update(u.getBytes())}var v=b.md.sha1.create();p.issuer.getField=function(a){return c(p.issuer,a)},p.issuer.addField=function(a){h([a]),p.issuer.attributes.push(a)},p.issuer.attributes=l.RDNAttributesAsArray(f.certIssuer,v),f.certIssuerUniqueId&&(p.issuer.uniqueId=f.certIssuerUniqueId),p.issuer.hash=v.digest().toHex();var w=b.md.sha1.create();return p.subject.getField=function(a){return c(p.subject,a)},p.subject.addField=function(a){h([a]),p.subject.attributes.push(a)},p.subject.attributes=l.RDNAttributesAsArray(f.certSubject,w),f.certSubjectUniqueId&&(p.subject.uniqueId=f.certSubjectUniqueId),p.subject.hash=w.digest().toHex(),f.certExtensions?p.extensions=l.certificateExtensionsFromAsn1(f.certExtensions):p.extensions=[],p.publicKey=l.publicKeyFromAsn1(f.subjectPublicKeyInfo),p},l.certificateExtensionsFromAsn1=function(a){for(var b=[],c=0;c1&&(g=d.value.charCodeAt(1),h=d.value.length>2?d.value.charCodeAt(2):0),c.digitalSignature=128===(128&g),c.nonRepudiation=64===(64&g),c.keyEncipherment=32===(32&g),c.dataEncipherment=16===(16&g),c.keyAgreement=8===(8&g),c.keyCertSign=4===(4&g),c.cRLSign=2===(2&g),c.encipherOnly=1===(1&g),c.decipherOnly=128===(128&h)}else if("basicConstraints"===c.name){var d=k.fromDer(c.value);d.value.length>0&&d.value[0].type===k.Type.BOOLEAN?c.cA=0!==d.value[0].value.charCodeAt(0):c.cA=!1;var i=null;d.value.length>0&&d.value[0].type===k.Type.INTEGER?i=d.value[0].value:d.value.length>1&&(i=d.value[1].value),null!==i&&(c.pathLenConstraint=k.derToInteger(i))}else if("extKeyUsage"===c.name)for(var d=k.fromDer(c.value),j=0;j1&&(g=d.value.charCodeAt(1)),c.client=128===(128&g),c.server=64===(64&g),c.email=32===(32&g),c.objsign=16===(16&g),c.reserved=8===(8&g),c.sslCA=4===(4&g),c.emailCA=2===(2&g),c.objCA=1===(1&g)}else if("subjectAltName"===c.name||"issuerAltName"===c.name)e(c);else if("subjectKeyIdentifier"===c.name){var d=k.fromDer(c.value);c.subjectKeyIdentifier=b.util.bytesToHex(d.value)}else if("authorityKeyIdentifier"===c.name)f(c);else if("certificatePolicies"===c.name)c.certificatePolicies=l.processCertPolicies(k.fromDer(c.value));else if("policyConstraints"===c.name){var d=k.fromDer(c.value);c.policyConstraints={};for(var o=0;oa.nextUpdate){var g=new Error("The crl has expired. current : "+h+", expiredDate : "+a.nextUpdate);throw g.type=b.err.expired,g}if(h0&&c.value.push(l.certificateExtensionsToAsn1(a.extensions)),c},l.getCertificationRequestInfo=function(a){var b=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.INTEGER,!1,k.integerToDer(a.version).getBytes()),g(a.subject),l.publicKeyToAsn1(a.publicKey),j(a)]);return b},l.distinguishedNameToAsn1=function(a){return g(a)},l.certificateToAsn1=function(a){var b=a.tbsCertificate||l.getTBSCertificate(a);return k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[b,k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[k.create(k.Class.UNIVERSAL,k.Type.OID,!1,k.oidToDer(a.signatureOid).getBytes()),l.signatureParametersToAsn1(a.signatureOid,a.signatureParameters)]),k.create(k.Class.UNIVERSAL,k.Type.BITSTRING,!1,String.fromCharCode(0)+a.signature)])},l.certificateExtensionsToAsn1=function(a){var b=k.create(k.Class.CONTEXT_SPECIFIC,3,!0,[]),c=k.create(k.Class.UNIVERSAL,k.Type.SEQUENCE,!0,[]);b.value.push(c);for(var d=0;dm.validity.notAfter)i={error:l.certificateError.certificate_expired,notBefore:m.validity.notBefore,notAfter:m.validity.notAfter,now:g},g>m.validity.notAfter?(i.type=b.err.expired,i.message="Certificate has expired. current : "+g+", expiredDate : "+m.validity.notAfter):i.message="Certificate is not valid yet. cuurent : "+g+", validDate : "+m.validity.notBefore;else{var n=!1;if(d.length>0){k=d[0];try{n=k.verify(m)}catch(o){}}else{var p=c.getIssuer(m);if(null===p)i={message:"Certificate is not trusted.",error:l.certificateError.unknown_ca};else for(b.util.isArray(p)||(p=[p]);!n&&p.length>0;){k=p.shift();try{n=k.verify(m)}catch(o){}}}null!==i||n||(i={message:"Certificate signature is invalid.",error:l.certificateError.bad_certificate})}if(null!==i||m.isIssuer(k)||(i={message:"Certificate issuer is invalid.",error:l.certificateError.bad_certificate}),null===i)for(var q={keyUsage:!0,basicConstraints:!0,certificatePolicies:!0,policyConstraints:!0},r=0;null===i&&rw&&(i={message:"Certificate basicConstraints pathLenConstraint violated.",error:l.certificateError.bad_certificate})}}var x=null===i?!0:i.error,y=e?e(x,j,f):x;if(y!==!0)throw x===!0&&(i={message:"The application rejected the certificate.",error:l.certificateError.bad_certificate}),(y||0===y)&&("object"!=typeof y||b.util.isArray(y)?"string"==typeof y&&(i.error=y):(y.message&&(i.message=y.message),y.error&&(i.error=y.error))),i;i=null,h=!1,++j}while(d.length>0);return!0}}var b="x509";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g0;e--)for(f=0;e>f;f++)if(B(b[f].bytes,b[f+1].bytes)>0){var g={idx:b[f].idx,bytes:b[f].bytes};b[f].idx=b[f+1].idx,b[f].bytes=b[f+1].bytes,b[f+1].idx=g.idx,b[f+1].bytes=g.bytes}for(e=0;eb.length?b.length:a.length;for(var d=0;c>d;d++)if(a[d]!=b[d])return a[d]>b[d]?1:-1;return a.length==b.length?0:a.length>b.length?1:-1};d.createSignedData=function(){a();var e=null;return e={type:b.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(a){x(e,a,d.asn1.signedDataValidator),e.certificates=[],e.crls=[],e.digestAlgorithmIdentifiers=[],e.contentInfo=null,e.signerInfos=[];for(var c=e.rawCapture,f=c.certificates.value,g=0;g=0&&e.push(h):e.push(h))}return e}function d(a){if(a.composed||a.constructed){for(var c=b.util.createBuffer(),d=0;d0){var y=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,r),z=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(y).getBytes())])]);g.push(z)}if(h.length>0){var A=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,h),B=null;B=2&f.format?i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(A).getBytes())])]):j.encryptDataWithPBE(A,e,f),g.push(B)}var C,D=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,g);if(f.useMac){var E=b.md.sha1.create(),F=new b.util.ByteBuffer(b.random.getBytes(f.saltSize)),G=f.count,H=k.generateKey(e,F,3,G,20),I=b.hmac.create();I.start(E,H),I.update(i.toDer(D).getBytes());var J=I.getMac();C=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.sha1).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,J.getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,F.getBytes()),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(G).getBytes())])}return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(3).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(j.oids.data).getBytes()),i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,i.toDer(D).getBytes())])]),C])},k.generateKey=b.pbe.generatePkcs12Key}var b="pkcs12";if("function"!=typeof define){if("object"!=typeof module||!module.exports)return"undefined"==typeof dreamsecurity&&(dreamsecurity={}),a(dreamsecurity);var c=!0;define=function(a,b){b(require,module)}}var d,e=function(c,e){e.exports=function(e){var f=d.map(function(a){return c(a)}).concat(a);if(e=e||{},e.defined=e.defined||{},e.defined[b])return e[b];e.defined[b]=!0;for(var g=0;g1&&(g=f.value.charCodeAt(1)),e.online=128===(128&g),e.mobile=64===(64&g),e.paperEnable=32===(32&g)}b.push(e)}return b}function h(a){var b={};if(a.tagClass!=j.Class.CONTEXT_SPECIFIC)throw new Error("ASN.1 object is not an Target");if(0==a.type)throw b.choice="opRecord",new Error("opRecord in TargetToCertify is not supported.");if(1==a.type)throw b.choice="orgAndIssued",new Error("orgAndIssued in TargetToCertify is not supported.");if(2!=a.type)throw new Error("ASN.1 object is not an Target");return b.choice="dataHash",e(a.value[0],b),b}if(void 0==b&&"function"==typeof dreamsecurity.chkIntegrity)return void dreamsecurity.chkIntegrity(arguments.callee,"arccert");var i=b.arcCert=dreamsecurity.arcCert||{},j=b.asn1,k=b.pki,l=k.oids,m=b.pki.algIdValidator,n={name:"ARCCertInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertInfo.version",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"ARCCertInfo.version.integer",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"version"}]},{name:"ARCCertInfo.serialNumber",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"serialNumber"},{name:"ARCCertInfo.issuer",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,capture:"issuer"},{name:"ARCCertInfo.dateOfIssue",tagClass:j.Class.UNIVERSAL,type:j.Type.GENERALIZEDTIME,constructed:!1,capture:"dateOfIssue"},{name:"ARCCertInfo.dateOfExpiration",captureAsn1:"dateOfExpiration"},{name:"ARCCertInfo.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertInfo.requestInfo",captureAsn1:"requestInfo"},{name:"ARCCertInfo.target",captureAsn1:"target"},{name:"ARCCertInfo.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"extensions"}]},o={name:"ARCCertReq",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[{name:"ARCCertReq.version",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,options:!0,capture:"version"},{name:"ARCCertReq.requester",captureAsn1:"requester"},{name:"ARCCertReq.requestTime",captureAsn1:"requestTime"},{name:"ARCCertReq.policy",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,captureAsn1:"policy"},{name:"ARCCertReq.target",captureAsn1:"target"},{name:"ARCCertReq.nonce",tagClass:j.Class.UNIVERSAL,type:j.Type.INTEGER,constructed:!1,capture:"nonce"},{name:"ARCCertReq.extensions",tagClass:j.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"extensions"}]},p={name:"HashedDataInfo",tagClass:j.Class.UNIVERSAL,type:j.Type.SEQUENCE,constructed:!0,value:[m("HashedDataInfo.hashAlg","AlgorithmIdentifier.algorithm","hashAlgOid","AlgorithmIdentifier.parameter","parameters"),{name:"HashedDataInfo.hashedData",tagClass:j.Class.UNIVERSAL,type:j.Type.BITSTRING,constructed:!1,capture:"hashedData"}]};i.arcCertResFromAsn1=function(e){a();var f={},i=[],l=new Error("Cannot read ARCCertResponse. ASN.1 object is not an ARCCertResponse.");if(e.tagClass!==j.Class.CONTEXT_SPECIFIC)throw l;var m={};if(0!=e.type)throw 1==e.type?new Error("The ARCCertResponse is an arcErrorNotice."):l;if(!j.validate(e.value[0],n,f,i))throw l.errors=i,l;m.version=f.version.charCodeAt(0);var o=b.util.createBuffer(f.serialNumber);m.serialNumber=o.toHex(),m.issuer=[];for(var p=0;p=0;i--)i!=a.attributes.length-1&&(b+=","),b+=a.attributes[i].shortName+"="+dreamsecurity.util.decodeUtf8(a.attributes[i].value);return b}function B(a){var b={};if(b.id={oid:a.id,name:a.name},b.critical=a.critical,a.id===dreamsecurity.pki.oids.authorityKeyIdentifier)b.aki={},void 0!==a.keyIdentifier&&(b.aki.keyIdentifier=dreamsecurity.util.createBuffer(a.keyIdentifier)),void 0!==a.authorityCertIssuer&&(b.aki.authorityCertIssuer=A(a.authorityCertIssuer)),void 0!==a.authorityCertSerialNumber&&(b.aki.authorityCertSerialNumber=dreamsecurity.util.createBuffer(a.authorityCertSerialNumber).toHex());else if(a.id===dreamsecurity.pki.oids.subjectKeyIdentifier)b.ski=dreamsecurity.util.createBuffer(dreamsecurity.util.hexToBytes(a.subjectKeyIdentifier));else if(a.id===dreamsecurity.pki.oids.keyUsage)b.keyUsage={},b.keyUsage.cRLSign=a.cRLSign,b.keyUsage.dataEncipherment=a.dataEncipherment,b.keyUsage.decipherOnly=a.decipherOnly,b.keyUsage.digitalSignature=a.digitalSignature,b.keyUsage.encipherOnly=a.encipherOnly,b.keyUsage.keyAgreement=a.keyAgreement,b.keyUsage.keyCertSign=a.keyCertSign,b.keyUsage.keyEncipherment=a.keyEncipherment,b.keyUsage.nonRepudiation=a.nonRepudiation;else if(a.id===dreamsecurity.pki.oids.certificatePolicies){b.certPolicies=[];for(var c=0;c0&&(f=f.substr(0,g));var h={};h.algorithm=f,h.version=e.version,h.fixedIv=e.fixedIv;var i=dreamsecurity.pki.priKeyToPriKeyInfo(e.priKey.k);return dreamsecurity.pki.encryptPrivateKey(i,v(d),h)}catch(j){throw new p("ds.pkcs5.changePassword",j.code,j)}},b.pkcs7.signedData.format={},b.pkcs7.signedData.format.none=0,b.pkcs7.signedData.format.useContentInfo=1,b.pkcs7.signedData.format.noContent=2,b.pkcs7.signedData.format.signGateFormat=4,b.pkcs7.signedData.format.hashedContent=18,b.pkcs7.signedData.format.noSignedAttributes=32,b.pkcs7.signedData.create=function(c){var d={},e=0,f=null;d.contentType=null,d.content=null,d.signerInfos=[],d.certificates=[];try{if(a(),null!=c)if(0===c.lastIndexOf("-----",0))e=F.encoding.pem,f=dreamsecurity.pkcs7.messageFromPem(c);else{e=F.encoding.base64;var g=b.base64.decode(c);e=F.encoding.der,f=dreamsecurity.pkcs7.messageFromAsn1(dreamsecurity.asn1.fromDer(g)),d.contentType=f.contentType,d.content=f.content}else f=dreamsecurity.pkcs7.createSignedData()}catch(h){throw new r("ds.pkcs7.signedData.create",F.data.signedData|e,h)}return d.makeTBSData=function(a,b,c){var d="ds.pkcs7.signedData.makeTBSData";try{if(c&&32&c.format||4&c.format)return a;var e=w(b,d),g=dreamsecurity.md.algorithms[e].create(),h={makeSignedAttributes:!0,signingTime:c?c.signingTime:void 0};return f.content=v(a),f.sign(null,null,g,null,null,h).getBytes()}catch(i){throw new o(d,F.data.signedData,i)}},d.compose=function(a,b,c,d,e){var g="ds.pkcs7.signedData.compose",h=null,i=null;try{if(1===a){var j=b;if(j){if(j.md){var k=w(j.md,g);h=dreamsecurity.md.algorithms[k].create()}j.format&&(i=j.format)}h||(h=z(cert));var l=y(j,h.algorithm);f.content=v(c);var m={composeSignedData:!0,tbsData:d,signature:e};f.sign(j.cert.k,null,h,l,i,m)}else if(2===a){var m={setContent:!0};if(null!==f.content)throw new p(g,F.data.signedData,"The signedData already contains the content.");f.content=v(b),f.sign(null,null,null,null,null,m)}}catch(n){throw new o(g,F.data.signedData,n)}},d.addSign=function(a,b,c){try{if(!d.verify())throw new p("ds.pkcs7.signedData.addSign",F.data.signedData,"There is a signature can't verify.");d.sign(a,b,c)}catch(e){throw e.func="ds.pkcs7.signedData.addSign",e}},d.sign=function(a,b,c){var e=null,g=null,h=null,i="ds.pkcs7.signedData.sign";try{if(c){if(c.md){var j=w(c.md,i);e=dreamsecurity.md.algorithms[j].create()}c.format&&(h=c.format)}e||(e=z(a)),g=y(c,e.algorithm),f.content=v(d.content);var k=0;for(k=0;k
              로딩중입니다.

              잠시만 기다려 주세요.

              ', - css:{left:(($(window).width()/2)-75)+'px'} - }); - - magicline.uiapi.ML_funProcInitCheck(function(code,data){ - if( code == 0 ){ - magicline.uiapi.completeInit(); - if(typeof(checkCallback) == "function"){ - magicline.uiapi.checkInstall(checkCallback); - } - } - }); - - magicline.uiapi.ML_checkInit(); - - -}); - -var magicline = { - uiapi : "", - initCallback : "", - is_ML_Sign_Init:false -} -var magiclineApi = function(){ - var callback=""; - var defaultOptions = { - sign:{signType:"MakeSignData",msg:"",messageType:"",signOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO'], ds_pki_rsa:'rsa15', ds_pki_hash:'sha256',ds_msg_decode:"false",ds_pki_sign_type:"signeddata"}}, - signPdfOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO','OPT_USE_PKCS7','OPT_NO_CONTENT','OPT_HASHED_CONTENT'], ds_pki_rsa:'rsa15', ds_pki_hash:'sha256',ds_msg_decode:"true"}, - encOpt:{ds_pki_rsa:'rsa15'}, - signedenvOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO'], ds_pki_rsa:'rsa15', ds_pki_algo:'SEED-CBC'}, - // 추가 - idn : "", - vidType : "", - certOidfilter:"", //1.2.410.100001.2.2.1,1.2.410.200005.1.1.4 - certExpirefilter:true, //false:만료 인증서 보여주기, true:보여주지 않기 - //mrs2 옵션 설정 - saveStorageList : ["web","hdd"], - exportStorageList : ["web", "hdd"], - exportStorageSelect : "web", - browser_notice_show : false, - //특허청 전자서명 옵션 - kipoSignOpt:{signType:"MakeSignData",msg:"",messageType:"",signOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO', 'OPT_HASHED_CONTENT'], ds_pki_rsa:'rsa15', ds_pki_hash:'sha256',ds_msg_decode:"hash",ds_pki_sign_type:"signeddata"}}, - } - - function CommonResopnseProcess( json ){ - - var response = JSON.parse( json ); - var close = response.close; - - if( response.close == 'closeDialog'){ - $('#dscertContainer').hide(); - } - } - - /** - * send 할 메시지를 생성 - */ - function MakeRequestJsonMessage( functionName, functionParameter, option ){ - var temp = - { - "funcName" : functionName, - "funcParam" : functionParameter - } - return JSON.stringify( temp ); - } - - /** - * SignedData - */ - function MakeSignData( msg , signOpt, callback ){ - - magiclineApi.callback = callback; - var param = defaultOptions.sign; - param.signType = "MakeSignData"; - - // Param Mapping - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - - // 본인확인 (IDN) 입력시 서명 원문 맵핑 -// if(msg instanceof HTMLFormElement){ - if(typeof(msg) == 'object' && typeof(msg.signData) != "undefined"){ - //param.msg = msg.signData.value; - - if(typeof(msg.signData.length) != "undefined"){ - param.msg = new Array(); - for(var i = 0; i < msg.signData.length; i++){ - param.msg[i] = msg.signData[i].value; - } - }else{ - param.msg = msg.signData.value; - } - } - - if(msg.idn != null && msg.idn != ""){ - param.idn = msg.idn.value; - } - - if(msg.vidType != null && msg.vidType != ""){ - param.vidType = msg.vidType.value; - } - - param.signOpt.ds_pki_sign_type = "signeddata"; - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - param.signOpt.cert_filter_oid = defaultOptions.certOidfilter; - - param.certOidfilter = defaultOptions.certOidfilter; - param.certExpirefilter = defaultOptions.certExpirefilter; - - var funcName = param.signType; - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - /** - * SinatureData - */ - function MakeSignatureData( msg , signOpt, callback ){ - magiclineApi.callback = callback; - - var param = defaultOptions.sign; - param.signType = "MakeSignData"; - - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - -// if(msg instanceof HTMLFormElement){ - if(typeof(msg) == 'object'){ - param.msg = magicline.extraceFormToString(msg); - } - - if(msg.signData != null && msg.signData != ""){ - param.signData = msg.signData.value; - } - - if(msg.idn != null && msg.idn != ""){ - param.idn = msg.idn.value; - } - - if(msg.vidType != null && msg.vidType != ""){ - param.vidType = msg.vidType.value; - } - - param.signOpt.ds_pki_sign_type = "sign"; - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - param.signOpt.cert_filter_oid = defaultOptions.certOidfilter; - - param.certOidfilter = defaultOptions.certOidfilter; - param.certExpirefilter = defaultOptions.certExpirefilter; - - var funcName = param.signType; - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - /** - * MakeAddSignData - */ - function MakeAddSignData( msg , signOpt, callback ){ - - magiclineApi.callback = callback; - var param = defaultOptions.sign; - param.signType = "MakeSignData"; - - // Param Mapping - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - // 본인확인 (IDN) 입력시 서명 원문 맵핑 -// if(msg instanceof HTMLFormElement){ - if(typeof(msg) == 'object'){ - //param.msg = magicline.extraceFormToString(msg); - param.msg = msg.signData.value; - } - - if(msg.idn != null && msg.idn != ""){ - param.idn = msg.idn.value; - } - - if(msg.vidType != null && msg.vidType != ""){ - param.vidType = msg.vidType.value; - } - - param.signOpt.ds_pki_sign_type = "signeddata"; - var funcName = param.signType; - param.signOpt.ds_pki_signData = param.msg; - param.signOpt.ds_pki_signdata = param.msg; - - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - param.signOpt.cert_filter_oid = defaultOptions.certOidfilter; - - param.certOidfilter = defaultOptions.certOidfilter; - param.certExpirefilter = defaultOptions.certExpirefilter; - - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - - /** - * ntsCertAuth - */ - function ntsCertAuth(msg, signOpt, callback){ - - magiclineApi.callback = callback; - - var param = defaultOptions.sign; - param.signType = "NTSCertAuth"; - - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - -// if(msg instanceof HTMLFormElement){ - if(typeof(msg) == 'object'){ - param.msg = magicline.extraceFormToString(msg); - } - - if(msg.signData != null && msg.signData != ""){ - param.signData = msg.signData.value; - } - - if(msg.idn != null && msg.idn != ""){ - param.idn = msg.idn.value; - } - - if(msg.vidType != null && msg.vidType != ""){ - param.vidType = msg.vidType.value; - } - - param.signOpt.ds_pki_sign_type = "sign"; - - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - param.signOpt.cert_filter_oid = defaultOptions.certOidfilter; - - param.certOidfilter = defaultOptions.certOidfilter; - param.certExpirefilter = defaultOptions.certExpirefilter; - - var funcName = param.signType; - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - - function keyBoardSecurityUse(strKeyboard, callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - param.strKeyboard = strKeyboard; - - var option = null; - var request = MakeRequestJsonMessage("keyBoardSecurityUse", param, option); - - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - function tranx2PEM(callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - var option = null; - - var request = MakeRequestJsonMessage("tranx2PEM", param, option); - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - - } - - function getRandomfromPrivateKey(callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - var option = null; - - var request = MakeRequestJsonMessage("getVIDRandom", param, option); - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - function setSessionID(strSessionID, callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - param.strSessionID = strSessionID; - var option = null; - - var request = MakeRequestJsonMessage("setSessionID", param, option); - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - function getSignDN(callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - var option = null; - var request = MakeRequestJsonMessage("getSignDN", param, option); - - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - function signatureData(dn, callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - param.msg = dn; - var option = null; - - var request = MakeRequestJsonMessage("signatureData", param, option); - - ML_sendUtilMessage(request); - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - - } - - /** - * 인증서 저장을 위한 함수 - */ - function saveCertToStorage(certbag, stgArr, callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - var param = {}; - param.certbag = certbag; - param.stgArr = defaultOptions.saveStorageList; - - var option = null; - var request = MakeRequestJsonMessage("saveCertToStorage", param, option); - addEventLisner( callback ); - ML_sendPostMessage( request ); - }else{ - alert('초기화 중입니다. 잠시 후 다시 시도해 주세요.'); - } - } - - /** - * 인증서 이동을 위한 함수 - */ - function getSelectCert( msg , signOpt, callback ){ - - magiclineApi.callback = callback; - var param = defaultOptions.sign; - param.signType = "MakeSignData"; - - // Param Mapping - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - - // 본인확인 (IDN) 입력시 서명 원문 맵핑 - if(typeof(msg) == 'object'){ - param.msg = msg.signData.value; - } - - if(msg.idn != null && msg.idn != ""){ - param.idn = msg.idn.value; - } - - if(msg.vidType != null && msg.vidType != ""){ - param.vidType = msg.vidType.value; - } - - param.signOpt.ds_pki_sign_type = "signeddata"; - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - param.signOpt.cert_filter_oid = defaultOptions.certOidfilter; - - param.certOidfilter = defaultOptions.certOidfilter; - param.certExpirefilter = defaultOptions.certExpirefilter; - - // 인증서 이동시 인증서를 불러오기 위한 저장매체 설정 - 인증서내보내기 - param.STORAGELIST = defaultOptions.exportStorageList; - param.STORAGESELECT = defaultOptions.exportStorageSelect; - param.BROWSER_NOTICE_SHOW = defaultOptions.browser_notice_show; - - var funcName = param.signType; - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - - /** - * 특허청 파일 해쉬 전자서명 - */ - function MakeHashSignData( msg , signOpt, callback ){ - magiclineApi.callback = callback; - var param = defaultOptions.kipoSignOpt; - param.signType = "MakeSignData"; - - // Param Mapping - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - - // 본인확인 (IDN) 입력시 서명 원문 맵핑 - if(typeof(msg) == 'object' && typeof(msg.signData) != "undefined"){ - //param.msg = msg.signData.value; - - if(typeof(msg.signData.length) != "undefined"){ - param.msg = new Array(); - for(var i = 0; i < msg.signData.length; i++){ - param.msg[i] = msg.signData[i].value; - } - }else{ - param.msg = msg.signData.value; - } - } - - if(msg.idn != null && msg.idn != ""){ - param.idn = msg.idn.value; - } - - if(msg.vidType != null && msg.vidType != ""){ - param.vidType = msg.vidType.value; - } - - param.signOpt.ds_pki_sign_type = "signeddata"; - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - param.signOpt.cert_filter_oid = defaultOptions.certOidfilter; - - param.certOidfilter = defaultOptions.certOidfilter; - param.certExpirefilter = defaultOptions.certExpirefilter; - - var funcName = param.signType; - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - - function closeDialog(event){ - $('#dscertContainer').hide(); - - var obj = JSON.parse( event.data ); - if( obj.key == 'closeDialog'){ - $('#dscertContainer').hide(); - /*취소버튼 누르고 event 받고 싶을 때 code 값 준다 - obj.code = 999; - magiclineApi.callback( obj.code , obj );*/ - }else if( obj.resultMsg != null && obj.resultMsg !== "" ){ - magiclineApi.callback( obj.code , obj.resultMsg ); - }else if(obj.opcode != null && obj.opcode !== ""){ - magicmrsApi.callback(obj); - }else{ - magiclineApi.callback( obj.code , obj ); - } - } - - function addEventLisner( callback ){ - if(window.addEventListener){ - window.addEventListener("message",closeDialog, false); - }else if(window.attachEvent){ - window.attachEvent("onmessage", closeDialog ); - } - } - - function ML_sendPostMessage ( requestStr ){ - - var dialogTitle = "전자서명"; - $('#dscertContainer').show(); - var iframeWindow = document.getElementById('dscert').contentWindow; - - iframeWindow.postMessage(requestStr, mlMainUrl); - } - - function ML_sendUtilMessage( requestStr ){ - - var iframeWindow = document.getElementById('dscert').contentWindow; - iframeWindow.postMessage(requestStr, mlMainUrl); - } - - function ML_funProcInitCheck (callback){ - magiclineApi.callback = callback; - var childUrl = mlMainUrl + mlDirPath + childHtml +"?lgUrl="+cpUrl+"&random=" + Math.random() * 99999; - $('#dscert').attr("src", childUrl); - addEventLisner( callback ); - } - - function completeInit(){ - magicline.is_ML_Sign_Init = true; - if( typeof magicline.initCallback == "function" ){ - magicline.initCallback(0, 'completeInit'); - } - $.unblockUI(); - } - - function ML_checkInit(){ - setTimeout(function(){ - if( magicline.is_ML_Sign_Init ){ - $.unblockUI(); - }else{ - ML_checkInit(); - } - },1500); - } - - /* - * jquery 충돌로 인해 blockUI를 업무페이지에서 사용하기 위한 함수 - */ - function blockUI(){ - $.blockUI({ - message:'
              로딩중입니다.

              잠시만 기다려 주세요.

              ', - css:{left:(($(window).width()/2)-75)+'px'} - }); - } - - function checkInstall(callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - var param = null; - var option = null; - var request = MakeRequestJsonMessage("checkInstall", param, option); - ML_sendUtilMessage(request); - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - function genHash(algorithm, msg, callback){ - magiclineApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - var param = {}; - param.algorithm = algorithm; - param.msg = msg; - - var option = null; - var request = MakeRequestJsonMessage("genHash", param, option); - ML_sendUtilMessage(request); - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - return { - MakeSignData:MakeSignData, - MakeSignatureData:MakeSignatureData, - MakeAddSignData:MakeAddSignData, - MakeRequestJsonMessage:MakeRequestJsonMessage, - ML_sendUtilMessage : ML_sendUtilMessage, - ML_funProcInitCheck : ML_funProcInitCheck, - completeInit:completeInit, - ML_checkInit:ML_checkInit, - saveCertToStorage:saveCertToStorage, - getSelectCert:getSelectCert, - MakeHashSignData:MakeHashSignData, - /* NTS */ - ntsCertAuth:ntsCertAuth, - keyBoardSecurityUse:keyBoardSecurityUse, - tranx2PEM:tranx2PEM, - getRandomfromPrivateKey:getRandomfromPrivateKey, - getSignDN:getSignDN, - signatureData:signatureData, - setSessionID:setSessionID, - blockUI:blockUI, - checkInstall:checkInstall, - genHash:genHash - } -} - -magicline.uiapi = new magiclineApi(); -var readLength = function(b) { - - var b2 = b.getByte(); - if(b2 === 0x80) { - return undefined; - } - - // see if the length is "short form" or "long form" (bit 8 set) - var length; - var longForm = b2 & 0x80; - if(!longForm) { - // length is just the first byte - length = b2; - } else { - // the number of bytes the length is specified in bits 7 through 1 - // and each length byte is in big-endian base-256 - length = b.getInt((b2 & 0x7F) << 3); - } - return length; - } - - -var readValue = function(tag, bytes) { - - if(bytes.length() < 2) { - throw new Error('Too few bytes to parse DER.'); - } - - if (bytes.getByte() != tag) { - throw new Error('Invalid format.'); } - var length = readLength (bytes); return bytes.getBytes(length); -} -function getSignedData(sigDataBase64){ - magicjs.init(); - var sigData = sigDataBase64; - var decoded = magicline.base64Util.decode64(sigData); // Base64 인코딩되어있는 피노텍 데이터. - var buff = magicjs.ByteStringBuffer.create(decoded); - readValue(0x30, buff); // - var signedData = decoded.slice(0, buff.read); // SignedData 획득 부분입니다. - signedData = magicline.base64Util.encode64(signedData); - var fileName = magicjs.utf8.decode(readValue(0x0C, buff)); - var fileGenTime = dreamsecurity.asn1.utcTimeToDate(readValue(0x17, buff)); - var pdfFile = readValue(0x04, buff); - document.reqForm.signData.value= magicline.base64Util.encode64(pdfFile); - if(document.getElementById("addSigner").value == null || document.getElementById("addSigner").value == ""){ - document.reqForm.addSigner.value = signedData; - } -} \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/ext/jquery-1.10.2.js b/src/main/webapp/MagicLine4Web/ML4Web/js/ext/jquery-1.10.2.js deleted file mode 100644 index d94c83be..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/ext/jquery-1.10.2.js +++ /dev/null @@ -1,9799 +0,0 @@ -/*! - * jQuery JavaScript Library v1.10.2 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-07-03T13:48Z - */ -(function( window, undefined ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -//"use strict"; -var - // The deferred used on DOM ready - readyList, - - // A central reference to the root jQuery(document) - rootjQuery, - - // Support: IE<10 - // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` - core_strundefined = typeof undefined, - - // Use the correct document accordingly with window argument (sandbox) - location = window.location, - document = window.document, - docElem = document.documentElement, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // [[Class]] -> type pairs - class2type = {}, - - // List of deleted data cache ids, so we can reuse them - core_deletedIds = [], - - core_version = "1.10.2", - - // Save a reference to some core methods - core_concat = core_deletedIds.concat, - core_push = core_deletedIds.push, - core_slice = core_deletedIds.slice, - core_indexOf = core_deletedIds.indexOf, - core_toString = class2type.toString, - core_hasOwn = class2type.hasOwnProperty, - core_trim = core_version.trim, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Used for matching numbers - core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, - - // Used for splitting on whitespace - core_rnotwhite = /\S+/g, - - // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, - rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // The ready event handler - completed = function( event ) { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } - }, - // Clean-up method for dom ready events - detach = function() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: core_version, - - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return core_slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; - }, - - slice: function() { - return this.pushStack( core_slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: core_push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), - - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger("ready").off("ready"); - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - if ( obj == null ) { - return String( obj ); - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ core_toString.call(obj) ] || "object" : - typeof obj; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !core_hasOwn.call(obj, "constructor") && - !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( jQuery.support.ownLast ) { - for ( key in obj ) { - return core_hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || core_hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - // data: string of html - // context (optional): If specified, the fragment will be created in this context, defaults to document - // keepScripts (optional): If true, will include scripts passed in the html string - parseHTML: function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - if ( scripts ) { - jQuery( scripts ).remove(); - } - return jQuery.merge( [], parsed.childNodes ); - }, - - parseJSON: function( data ) { - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - if ( data === null ) { - return data; - } - - if ( typeof data === "string" ) { - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - if ( data ) { - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return ( new Function( "return " + data ) )(); - } - } - } - - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Use native String.trim function wherever possible - trim: core_trim && !core_trim.call("\uFEFF\xA0") ? - function( text ) { - return text == null ? - "" : - core_trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - core_push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( core_indexOf ) { - return core_indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var l = second.length, - i = first.length, - j = 0; - - if ( typeof l === "number" ) { - for ( ; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var retVal, - ret = [], - i = 0, - length = elems.length; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return core_concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = core_slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - access: function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; - }, - - now: function() { - return ( new Date() ).getTime(); - }, - - // A method for quickly swapping in/out CSS properties to get correct calculations. - // Note: this method belongs to the css module but it's needed here for the support module. - // If support gets modularized, this method should be moved back to the css module. - swap: function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; - } -}); - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || type !== "function" && - ( length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj ); -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); -/*! - * Sizzle CSS Selector Engine v1.10.2 - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-07-03 - */ -(function( window, undefined ) { - -var i, - support, - cachedruns, - Expr, - getText, - isXML, - compile, - outermostContext, - sortInput, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - hasDuplicate = false, - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + - "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", - - // Prefer arguments quoted, - // then not containing pseudos/brackets, - // then attribute selectors/non-parenthetical expressions, - // then anything else - // These preferences are here to reduce the number of selectors - // needing tokenize in the PSEUDO preFilter - pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rsibling = new RegExp( whitespace + "*[+~]" ), - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - // BMP codepoint - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && context.parentNode || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key += " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Detect xml - * @param {Element|Object} elem An element or a document - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent.attachEvent && parent !== parent.top ) { - parent.attachEvent( "onbeforeunload", function() { - setDocument(); - }); - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = assert(function( div ) { - div.innerHTML = "
              "; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - - // Support: Opera 10-12/IE8 - // ^= $= *= and empty values - // Should not select anything - // Support: Windows 8 Native Apps - // The type attribute is restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "t", "" ); - - if ( div.querySelectorAll("[t^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = docElem.compareDocumentPosition ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); - - if ( compare ) { - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } - - // Not directly comparable, sort on existence of method - return a.compareDocumentPosition ? -1 : 1; - } : - function( a, b ) { - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Parentless nodes are either documents or disconnected - } else if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [elem] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val === undefined ? - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null : - val; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - for ( ; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (see #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[5] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] && match[4] !== undefined ) { - match[2] = match[4]; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), - // not comment, processing instructions, or others - // Thanks to Diego Perini for the nodeName shortcut - // Greater than "@" means alpha characters (specifically not starting with "#" or "?") - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( tokens = [] ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var data, cache, outerCache, - dirkey = dirruns + " " + doneName; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { - if ( (data = cache[1]) === true || data === cachedruns ) { - return data === true; - } - } else { - cache = outerCache[ dir ] = [ dirkey ]; - cache[1] = matcher( elem, context, xml ) || cachedruns; - if ( cache[1] === true ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - // A counter to specify which element is currently being matched - var matcherCachedRuns = 0, - bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, expandContext ) { - var elem, j, matcher, - setMatched = [], - matchedCount = 0, - i = "0", - unmatched = seed && [], - outermost = expandContext != null, - contextBackup = outermostContext, - // We must always have either seed elements or context - elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); - - if ( outermost ) { - outermostContext = context !== document && context; - cachedruns = matcherCachedRuns; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - for ( ; (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - cachedruns = ++matcherCachedRuns; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !group ) { - group = tokenize( selector ); - } - i = group.length; - while ( i-- ) { - cached = matcherFromTokens( group[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - } - return cached; -}; - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - match = tokenize( selector ); - - if ( !seed ) { - // Try to minimize operations if there is only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - } - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && context.parentNode || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - } - - // Compile and execute a filtering function - // Provide `match` to avoid retokenization if we modified the selector above - compile( selector, match )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) - ); - return results; -} - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - elem[ name ] === true ? name.toLowerCase() : null; - } - }); -} - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})( window ); -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var action = tuple[ 0 ], - fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = core_slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; - if( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); -jQuery.support = (function( support ) { - - var all, a, input, select, fragment, opt, eventName, isSupported, i, - div = document.createElement("div"); - - // Setup - div.setAttribute( "className", "t" ); - div.innerHTML = "
              a"; - - // Finish early in limited (non-browser) environments - all = div.getElementsByTagName("*") || []; - a = div.getElementsByTagName("a")[ 0 ]; - if ( !a || !a.style || !all.length ) { - return support; - } - - // First batch of tests - select = document.createElement("select"); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName("input")[ 0 ]; - - a.style.cssText = "top:1px;float:left;opacity:.5"; - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - support.getSetAttribute = div.className !== "t"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName("tbody").length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName("link").length; - - // Get the style information from getAttribute - // (IE uses .cssText instead) - support.style = /top/.test( a.getAttribute("style") ); - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - support.hrefNormalized = a.getAttribute("href") === "/a"; - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - support.opacity = /^0.5/.test( a.style.opacity ); - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - support.cssFloat = !!a.style.cssFloat; - - // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) - support.checkOn = !!input.value; - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - support.optSelected = opt.selected; - - // Tests for enctype support on a form (#6743) - support.enctype = !!document.createElement("form").enctype; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; - - // Will be defined later - support.inlineBlockNeedsLayout = false; - support.shrinkWrapBlocks = false; - support.pixelPosition = false; - support.deleteExpando = true; - support.noCloneEvent = true; - support.reliableMarginRight = true; - support.boxSizingReliable = true; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<9 - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - // Check if we can trust getAttribute("value") - input = document.createElement("input"); - input.setAttribute( "value", "" ); - support.input = input.getAttribute( "value" ) === ""; - - // Check if an input maintains its value after becoming a radio - input.value = "t"; - input.setAttribute( "type", "radio" ); - support.radioValue = input.value === "t"; - - // #11217 - WebKit loses check when the name is after the checked attribute - input.setAttribute( "checked", "t" ); - input.setAttribute( "name", "t" ); - - fragment = document.createDocumentFragment(); - fragment.appendChild( input ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - for ( i in { submit: true, change: true, focusin: true }) { - div.setAttribute( eventName = "on" + i, "t" ); - - support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; - } - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - // Support: IE<9 - // Iteration over object's inherited properties before its own. - for ( i in jQuery( support ) ) { - break; - } - support.ownLast = i !== "0"; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, marginDiv, tds, - divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", - body = document.getElementsByTagName("body")[0]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - container = document.createElement("div"); - container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; - - body.appendChild( container ).appendChild( div ); - - // Support: IE8 - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - div.innerHTML = "
              t
              "; - tds = div.getElementsByTagName("td"); - tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Support: IE8 - // Check if empty table cells still have offsetWidth/Height - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - - // Check box-sizing and margin behavior. - div.innerHTML = ""; - div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; - - // Workaround failing boxSizing test due to offsetWidth returning wrong value - // with some non-1 values of body zoom, ticket #13543 - jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { - support.boxSizing = div.offsetWidth === 4; - }); - - // Use window.getComputedStyle because jsdom on node.js will break without it. - if ( window.getComputedStyle ) { - support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; - support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - marginDiv = div.appendChild( document.createElement("div") ); - marginDiv.style.cssText = div.style.cssText = divReset; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - - support.reliableMarginRight = - !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); - } - - if ( typeof div.style.zoom !== core_strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.innerHTML = ""; - div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - div.style.display = "block"; - div.innerHTML = "
              "; - div.firstChild.style.width = "5px"; - support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); - - if ( support.inlineBlockNeedsLayout ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); - - // Null elements to avoid leaks in IE - container = div = tds = marginDiv = null; - }); - - // Null elements to avoid leaks in IE - all = select = fragment = opt = a = input = null; - - return support; -})({}); - -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rmultiDash = /([A-Z])/g; - -function internalData( elem, name, data, pvt /* Internal Use Only */ ){ - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( jQuery.support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "applet": true, - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - // Do not set data on non-element because it will not be cleared (#8335). - if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { - return false; - } - - var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; - - // nodes accept data unless otherwise specified; rejection can be conditional - return !noData || noData !== true && elem.getAttribute("classid") === noData; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var attrs, name, - data = null, - i = 0, - elem = this[0]; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - attrs = elem.attributes; - for ( ; i < attrs.length; i++ ) { - name = attrs[i].name; - - if ( name.indexOf("data-") === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - - dataAttr( elem, name, data[ name ] ); - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data( this, key, value ); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var nodeHook, boolHook, - rclass = /[\t\r\n\f]/g, - rreturn = /\r/g, - rfocusable = /^(?:input|select|textarea|button|object)$/i, - rclickable = /^(?:a|area)$/i, - ruseDefault = /^(?:checked|selected)$/i, - getSetAttribute = jQuery.support.getSetAttribute, - getSetInput = jQuery.support.input; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - elem.className = jQuery.trim( cur ); - - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - elem.className = value ? jQuery.trim( cur ) : ""; - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - classNames = value.match( core_rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( type === core_strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var ret, hooks, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // Use proper attribute retrieval(#6932, #12072) - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - elem.text; - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // oldIE doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { - optionSet = true; - } - } - - // force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attr: function( elem, name, value ) { - var hooks, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === core_strundefined ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( core_rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - // Set corresponding property to false - if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - elem[ propName ] = false; - // Support: IE<9 - // Also clear defaultChecked/defaultSelected (if appropriate) - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = - elem[ propName ] = false; - } - - // See #9699 for explanation of this approach (setting first, then removal) - } else { - jQuery.attr( elem, name, "" ); - } - - elem.removeAttribute( getSetAttribute ? name : propName ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? - ret : - ( elem[ name ] = value ); - - } else { - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? - ret : - elem[ name ]; - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - return tabindex ? - parseInt( tabindex, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - -1; - } - } - } -}); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - // IE<8 needs the *property* name - elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); - - // Use defaultChecked and defaultSelected for oldIE - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; - } - - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; - - jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? - function( elem, name, isXML ) { - var fn = jQuery.expr.attrHandle[ name ], - ret = isXML ? - undefined : - /* jshint eqeqeq: false */ - (jQuery.expr.attrHandle[ name ] = undefined) != - getter( elem, name, isXML ) ? - - name.toLowerCase() : - null; - jQuery.expr.attrHandle[ name ] = fn; - return ret; - } : - function( elem, name, isXML ) { - return isXML ? - undefined : - elem[ jQuery.camelCase( "default-" + name ) ] ? - name.toLowerCase() : - null; - }; -}); - -// fix oldIE attroperties -if ( !getSetInput || !getSetAttribute ) { - jQuery.attrHooks.value = { - set: function( elem, value, name ) { - if ( jQuery.nodeName( elem, "input" ) ) { - // Does not return so that setAttribute is also used - elem.defaultValue = value; - } else { - // Use nodeHook if defined (#1954); otherwise setAttribute is fine - return nodeHook && nodeHook.set( elem, value, name ); - } - } - }; -} - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = { - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - elem.setAttributeNode( - (ret = elem.ownerDocument.createAttribute( name )) - ); - } - - ret.value = value += ""; - - // Break association with cloned elements by also using setAttribute (#9646) - return name === "value" || value === elem.getAttribute( name ) ? - value : - undefined; - } - }; - jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = - // Some attributes are constructed with empty-string values when not defined - function( elem, name, isXML ) { - var ret; - return isXML ? - undefined : - (ret = elem.getAttributeNode( name )) && ret.value !== "" ? - ret.value : - null; - }; - jQuery.valHooks.button = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - return ret && ret.specified ? - ret.value : - undefined; - }, - set: nodeHook.set - }; - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - set: function( elem, value, name ) { - nodeHook.set( elem, value === "" ? false : value, name ); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }; - }); -} - - -// Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !jQuery.support.hrefNormalized ) { - // href/src property should get the full normalized URL (#10299/#12915) - jQuery.each([ "href", "src" ], function( i, name ) { - jQuery.propHooks[ name ] = { - get: function( elem ) { - return elem.getAttribute( name, 4 ); - } - }; - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Note: IE uppercases css property names, but if we were to .toLowerCase() - // .cssText, that would destroy case senstitivity in URL's, like in "background" - return elem.style.cssText || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = value + "" ); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }; -} - -jQuery.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -}); - -// IE6/7 call enctype encoding -if ( !jQuery.support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - -// Radios and checkboxes getter/setter -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }; - if ( !jQuery.support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - // Support: Webkit - // "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } -}); -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = core_hasOwn.call( event, "type" ) ? event.type : event, - namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = core_slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Even when returnValue equals to undefined Firefox will still show alert - if ( event.result !== undefined ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === core_strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !jQuery.support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); -var isSimple = /^.[^:#\[\.,]*$/, - rparentsprev = /^(?:parents|prev(?:Until|All))/, - rneedsContext = jQuery.expr.match.needsContext, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - ret = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - cur = ret.push( cur ); - break; - } - } - } - - return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( jQuery.unique(all) ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.unique( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( isSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; - }); -} -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
              ", "
              " ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
              " ], - tr: [ 2, "", "
              " ], - col: [ 2, "", "
              " ], - td: [ 3, "", "
              " ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
              ", "
              " ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -jQuery.fn.extend({ - text: function( value ) { - return jQuery.access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - // keepData is for internal use only--do not document - remove: function( selector, keepData ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function () { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return jQuery.access( this, function( value ) { - var elem = this[0] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var - // Snapshot the DOM in case .domManip sweeps something relevant into its fragment - args = jQuery.map( this, function( elem ) { - return [ elem.nextSibling, elem.parentNode ]; - }), - i = 0; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - var next = args[ i++ ], - parent = args[ i++ ]; - - if ( parent ) { - // Don't use the snapshot next if it has moved (#13810) - if ( next && next.parentNode !== parent ) { - next = this.nextSibling; - } - jQuery( this ).remove(); - parent.insertBefore( elem, next ); - } - // Allow new content to include elements from the context set - }, true ); - - // Force removal if there was no new content (e.g., from empty arguments) - return i ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback, allowIntersection ) { - - // Flatten any nested arrays - args = core_concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, self.html() ); - } - self.domManip( args, callback, allowIntersection ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[i], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Hope ajax is available... - jQuery._evalUrl( node.src ); - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - core_push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( manipulation_rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !jQuery.support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
              " && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !jQuery.support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = jQuery.support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== core_strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - core_deletedIds.push( id ); - } - } - } - } - }, - - _evalUrl: function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); - } -}); -jQuery.fn.extend({ - wrapAll: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapAll( html.call(this, i) ); - }); - } - - if ( this[0] ) { - // The elements to wrap the target around - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); - - if ( this[0].parentNode ) { - wrap.insertBefore( this[0] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { - elem = elem.firstChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function(i) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - } -}); -var iframe, getStyles, curCSS, - ralpha = /alpha\([^)]*\)/i, - ropacity = /opacity\s*=\s*([^)]*)/, - rposition = /^(top|right|bottom|left)$/, - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rmargin = /^margin/, - rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), - rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), - elemdisplay = { BODY: "block" }, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: 0, - fontWeight: 400 - }, - - cssExpand = [ "Top", "Right", "Bottom", "Left" ], - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt(0).toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function isHidden( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = jQuery._data( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); - } - } else { - - if ( !values[ index ] ) { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.fn.extend({ - css: function( name, value ) { - return jQuery.access( this, function( elem, name, value ) { - var len, styles, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each(function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that NaN and null values aren't set. See: #7116 - if ( value == null || type === "number" && isNaN( value ) ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - - // Wrapped to prevent IE from throwing errors when 'invalid' values are provided - // Fixes bug #5509 - try { - style[ name ] = value; - } catch(e) {} - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var num, val, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - } -}); - -// NOTE: we've included the "window" in window.getComputedStyle -// because jsdom on node.js will break without it. -if ( window.getComputedStyle ) { - getStyles = function( elem ) { - return window.getComputedStyle( elem, null ); - }; - - curCSS = function( elem, name, _computed ) { - var width, minWidth, maxWidth, - computed = _computed || getStyles( elem ), - - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, - style = elem.style; - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right - // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret; - }; -} else if ( document.documentElement.currentStyle ) { - getStyles = function( elem ) { - return elem.currentStyle; - }; - - curCSS = function( elem, name, _computed ) { - var left, rs, rsLeft, - computed = _computed || getStyles( elem ), - ret = computed ? computed[ name ] : undefined, - style = elem.style; - - // Avoid setting ret to empty string here - // so we don't default to auto - if ( ret == null && style && style[ name ] ) { - ret = style[ name ]; - } - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - // but not position css attributes, as those are proportional to the parent element instead - // and we can't measure the parent instead because it might trigger a "stacking dolls" problem - if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { - - // Remember the original values - left = style.left; - rs = elem.runtimeStyle; - rsLeft = rs && rs.left; - - // Put in the new values to get a computed value out - if ( rsLeft ) { - rs.left = elem.currentStyle.left; - } - style.left = name === "fontSize" ? "1em" : ret; - ret = style.pixelLeft + "px"; - - // Revert the changed values - style.left = left; - if ( rsLeft ) { - rs.left = rsLeft; - } - } - - return ret === "" ? "auto" : ret; - }; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -// Try to determine the default display value of an element -function css_defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - // Use the already-created iframe if possible - iframe = ( iframe || - jQuery("'); - else - lyr1 = $(''); - - if (opts.theme) - lyr2 = $(''); - else - lyr2 = $(''); - - if (opts.theme && full) { - s = ''; - } - else if (opts.theme) { - s = ''; - } - else if (full) { - s = ''; - } - else { - s = ''; - } - lyr3 = $(s); - - // if we have a message, style it - if (msg) { - if (opts.theme) { - lyr3.css(themedCSS); - lyr3.addClass('ui-widget-content'); - } - else - lyr3.css(css); - } - - // style the overlay - if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/) - lyr2.css(opts.overlayCSS); - lyr2.css('position', full ? 'fixed' : 'absolute'); - - // make iframe layer transparent in IE - if (msie || opts.forceIframe) - lyr1.css('opacity',0.0); - - //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el); - var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el); - $.each(layers, function() { - this.appendTo($par); - }); - - if (opts.theme && opts.draggable && $.fn.draggable) { - lyr3.draggable({ - handle: '.ui-dialog-titlebar', - cancel: 'li' - }); - } - - // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling) - var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0); - if (ie6 || expr) { - // give body 100% height - if (full && opts.allowBodyStretch && $.support.boxModel) - $('html,body').css('height','100%'); - - // fix ie6 issue when blocked element has a border width - if ((ie6 || !$.support.boxModel) && !full) { - var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth'); - var fixT = t ? '(0 - '+t+')' : 0; - var fixL = l ? '(0 - '+l+')' : 0; - } - - // simulate fixed position - $.each(layers, function(i,o) { - var s = o[0].style; - s.position = 'absolute'; - if (i < 2) { - if (full) - s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"'); - else - s.setExpression('height','this.parentNode.offsetHeight + "px"'); - if (full) - s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'); - else - s.setExpression('width','this.parentNode.offsetWidth + "px"'); - if (fixL) s.setExpression('left', fixL); - if (fixT) s.setExpression('top', fixT); - } - else if (opts.centerY) { - if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); - s.marginTop = 0; - } - else if (!opts.centerY && full) { - var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0; - var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"'; - s.setExpression('top',expression); - } - }); - } - - // show the message - if (msg) { - if (opts.theme) - lyr3.find('.ui-widget-content').append(msg); - else - lyr3.append(msg); - if (msg.jquery || msg.nodeType) - $(msg).show(); - } - - if ((msie || opts.forceIframe) && opts.showOverlay) - lyr1.show(); // opacity is zero - if (opts.fadeIn) { - var cb = opts.onBlock ? opts.onBlock : noOp; - var cb1 = (opts.showOverlay && !msg) ? cb : noOp; - var cb2 = msg ? cb : noOp; - if (opts.showOverlay) - lyr2._fadeIn(opts.fadeIn, cb1); - if (msg) - lyr3._fadeIn(opts.fadeIn, cb2); - } - else { - if (opts.showOverlay) - lyr2.show(); - if (msg) - lyr3.show(); - if (opts.onBlock) - opts.onBlock.bind(lyr3)(); - } - - // bind key and mouse events - bind(1, el, opts); - - if (full) { - pageBlock = lyr3[0]; - pageBlockEls = $(opts.focusableElements,pageBlock); - if (opts.focusInput) - setTimeout(focus, 20); - } - else - center(lyr3[0], opts.centerX, opts.centerY); - - if (opts.timeout) { - // auto-unblock - var to = setTimeout(function() { - if (full) - $.unblockUI(opts); - else - $(el).unblock(opts); - }, opts.timeout); - $(el).data('blockUI.timeout', to); - } - } - - // remove the block - function remove(el, opts) { - var count; - var full = (el == window); - var $el = $(el); - var data = $el.data('blockUI.history'); - var to = $el.data('blockUI.timeout'); - if (to) { - clearTimeout(to); - $el.removeData('blockUI.timeout'); - } - opts = $.extend({}, $.blockUI.defaults, opts || {}); - bind(0, el, opts); // unbind events - - if (opts.onUnblock === null) { - opts.onUnblock = $el.data('blockUI.onUnblock'); - $el.removeData('blockUI.onUnblock'); - } - - var els; - if (full) // crazy selector to handle odd field errors in ie6/7 - els = $('body').children().filter('.blockUI').add('body > .blockUI'); - else - els = $el.find('>.blockUI'); - - // fix cursor issue - if ( opts.cursorReset ) { - if ( els.length > 1 ) - els[1].style.cursor = opts.cursorReset; - if ( els.length > 2 ) - els[2].style.cursor = opts.cursorReset; - } - - if (full) - pageBlock = pageBlockEls = null; - - if (opts.fadeOut) { - count = els.length; - els.stop().fadeOut(opts.fadeOut, function() { - if ( --count === 0) - reset(els,data,opts,el); - }); - } - else - reset(els, data, opts, el); - } - - // move blocking element back into the DOM where it started - function reset(els,data,opts,el) { - var $el = $(el); - if ( $el.data('blockUI.isBlocked') ) - return; - - els.each(function(i,o) { - // remove via DOM calls so we don't lose event handlers - if (this.parentNode) - this.parentNode.removeChild(this); - }); - - if (data && data.el) { - data.el.style.display = data.display; - data.el.style.position = data.position; - data.el.style.cursor = 'default'; // #59 - if (data.parent) - data.parent.appendChild(data.el); - $el.removeData('blockUI.history'); - } - - if ($el.data('blockUI.static')) { - $el.css('position', 'static'); // #22 - } - - if (typeof opts.onUnblock == 'function') - opts.onUnblock(el,opts); - - // fix issue in Safari 6 where block artifacts remain until reflow - var body = $(document.body), w = body.width(), cssW = body[0].style.width; - body.width(w-1).width(w); - body[0].style.width = cssW; - } - - // bind/unbind the handler - function bind(b, el, opts) { - var full = el == window, $el = $(el); - - // don't bother unbinding if there is nothing to unbind - if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked'))) - return; - - $el.data('blockUI.isBlocked', b); - - // don't bind events when overlay is not in use or if bindEvents is false - if (!full || !opts.bindEvents || (b && !opts.showOverlay)) - return; - - // bind anchors and inputs for mouse and key events - var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove'; - if (b) - $(document).bind(events, opts, handler); - else - $(document).unbind(events, handler); - - // former impl... - // var $e = $('a,:input'); - // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler); - } - - // event handler to suppress keyboard/mouse events when blocking - function handler(e) { - // allow tab navigation (conditionally) - if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) { - if (pageBlock && e.data.constrainTabKey) { - var els = pageBlockEls; - var fwd = !e.shiftKey && e.target === els[els.length-1]; - var back = e.shiftKey && e.target === els[0]; - if (fwd || back) { - setTimeout(function(){focus(back);},10); - return false; - } - } - } - var opts = e.data; - var target = $(e.target); - if (target.hasClass('blockOverlay') && opts.onOverlayClick) - opts.onOverlayClick(e); - - // allow events within the message content - if (target.parents('div.' + opts.blockMsgClass).length > 0) - return true; - - // allow events for content that is not being blocked - return target.parents().children().filter('div.blockUI').length === 0; - } - - function focus(back) { - if (!pageBlockEls) - return; - var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0]; - if (e) - e.focus(); - } - - function center(el, x, y) { - var p = el.parentNode, s = el.style; - var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth'); - var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth'); - if (x) s.left = l > 0 ? (l+'px') : '0'; - if (y) s.top = t > 0 ? (t+'px') : '0'; - } - - function sz(el, p) { - return parseInt($.css(el,p),10)||0; - } - - } - - - /*global define:true */ - if (typeof define === 'function' && define.amd && define.amd.jQuery) { - define(['jquery'], setup); - } else { - setup(jQuery); - } - -})(); diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/ext/json2.js b/src/main/webapp/MagicLine4Web/ML4Web/js/ext/json2.js deleted file mode 100644 index d4720c0f..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/ext/json2.js +++ /dev/null @@ -1,506 +0,0 @@ -// json2.js -// 2016-05-01 -// Public Domain. -// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. -// See http://www.JSON.org/js.html -// This code should be minified before deployment. -// See http://javascript.crockford.com/jsmin.html - -// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO -// NOT CONTROL. - -// This file creates a global JSON object containing two methods: stringify -// and parse. This file is provides the ES5 JSON capability to ES3 systems. -// If a project might run on IE8 or earlier, then this file should be included. -// This file does nothing on ES5 systems. - -// JSON.stringify(value, replacer, space) -// value any JavaScript value, usually an object or array. -// replacer an optional parameter that determines how object -// values are stringified for objects. It can be a -// function or an array of strings. -// space an optional parameter that specifies the indentation -// of nested structures. If it is omitted, the text will -// be packed without extra whitespace. If it is a number, -// it will specify the number of spaces to indent at each -// level. If it is a string (such as "\t" or " "), -// it contains the characters used to indent at each level. -// This method produces a JSON text from a JavaScript value. -// When an object value is found, if the object contains a toJSON -// method, its toJSON method will be called and the result will be -// stringified. A toJSON method does not serialize: it returns the -// value represented by the name/value pair that should be serialized, -// or undefined if nothing should be serialized. The toJSON method -// will be passed the key associated with the value, and this will be -// bound to the value. - -// For example, this would serialize Dates as ISO strings. - -// Date.prototype.toJSON = function (key) { -// function f(n) { -// // Format integers to have at least two digits. -// return (n < 10) -// ? "0" + n -// : n; -// } -// return this.getUTCFullYear() + "-" + -// f(this.getUTCMonth() + 1) + "-" + -// f(this.getUTCDate()) + "T" + -// f(this.getUTCHours()) + ":" + -// f(this.getUTCMinutes()) + ":" + -// f(this.getUTCSeconds()) + "Z"; -// }; - -// You can provide an optional replacer method. It will be passed the -// key and value of each member, with this bound to the containing -// object. The value that is returned from your method will be -// serialized. If your method returns undefined, then the member will -// be excluded from the serialization. - -// If the replacer parameter is an array of strings, then it will be -// used to select the members to be serialized. It filters the results -// such that only members with keys listed in the replacer array are -// stringified. - -// Values that do not have JSON representations, such as undefined or -// functions, will not be serialized. Such values in objects will be -// dropped; in arrays they will be replaced with null. You can use -// a replacer function to replace those with JSON values. - -// JSON.stringify(undefined) returns undefined. - -// The optional space parameter produces a stringification of the -// value that is filled with line breaks and indentation to make it -// easier to read. - -// If the space parameter is a non-empty string, then that string will -// be used for indentation. If the space parameter is a number, then -// the indentation will be that many spaces. - -// Example: - -// text = JSON.stringify(["e", {pluribus: "unum"}]); -// // text is '["e",{"pluribus":"unum"}]' - -// text = JSON.stringify(["e", {pluribus: "unum"}], null, "\t"); -// // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - -// text = JSON.stringify([new Date()], function (key, value) { -// return this[key] instanceof Date -// ? "Date(" + this[key] + ")" -// : value; -// }); -// // text is '["Date(---current time---)"]' - -// JSON.parse(text, reviver) -// This method parses a JSON text to produce an object or array. -// It can throw a SyntaxError exception. - -// The optional reviver parameter is a function that can filter and -// transform the results. It receives each of the keys and values, -// and its return value is used instead of the original value. -// If it returns what it received, then the structure is not modified. -// If it returns undefined then the member is deleted. - -// Example: - -// // Parse the text. Values that look like ISO date strings will -// // be converted to Date objects. - -// myData = JSON.parse(text, function (key, value) { -// var a; -// if (typeof value === "string") { -// a = -// /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); -// if (a) { -// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], -// +a[5], +a[6])); -// } -// } -// return value; -// }); - -// myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { -// var d; -// if (typeof value === "string" && -// value.slice(0, 5) === "Date(" && -// value.slice(-1) === ")") { -// d = new Date(value.slice(5, -1)); -// if (d) { -// return d; -// } -// } -// return value; -// }); - -// This is a reference implementation. You are free to copy, modify, or -// redistribute. - -/*jslint - eval, for, this -*/ - -/*property - JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -if (typeof JSON !== "object") { - JSON = {}; -} - -(function () { - "use strict"; - - var rx_one = /^[\],:{}\s]*$/; - var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g; - var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; - var rx_four = /(?:^|:|,)(?:\s*\[)+/g; - var rx_escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; - var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 - ? "0" + n - : n; - } - - function this_value() { - return this.valueOf(); - } - - if (typeof Date.prototype.toJSON !== "function") { - - Date.prototype.toJSON = function () { - - return isFinite(this.valueOf()) - ? this.getUTCFullYear() + "-" + - f(this.getUTCMonth() + 1) + "-" + - f(this.getUTCDate()) + "T" + - f(this.getUTCHours()) + ":" + - f(this.getUTCMinutes()) + ":" + - f(this.getUTCSeconds()) + "Z" - : null; - }; - - Boolean.prototype.toJSON = this_value; - Number.prototype.toJSON = this_value; - String.prototype.toJSON = this_value; - } - - var gap; - var indent; - var meta; - var rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - rx_escapable.lastIndex = 0; - return rx_escapable.test(string) - ? "\"" + string.replace(rx_escapable, function (a) { - var c = meta[a]; - return typeof c === "string" - ? c - : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4); - }) + "\"" - : "\"" + string + "\""; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i; // The loop counter. - var k; // The member key. - var v; // The member value. - var length; - var mind = gap; - var partial; - var value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === "object" && - typeof value.toJSON === "function") { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === "function") { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case "string": - return quote(value); - - case "number": - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) - ? String(value) - : "null"; - - case "boolean": - case "null": - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce "null". The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is "object", we might be dealing with an object or an array or -// null. - - case "object": - -// Due to a specification blunder in ECMAScript, typeof null is "object", -// so watch out for that case. - - if (!value) { - return "null"; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === "[object Array]") { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || "null"; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 - ? "[]" - : gap - ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" - : "[" + partial.join(",") + "]"; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === "object") { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === "string") { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + ( - gap - ? ": " - : ":" - ) + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + ( - gap - ? ": " - : ":" - ) + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 - ? "{}" - : gap - ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}" - : "{" + partial.join(",") + "}"; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== "function") { - meta = { // table of character substitutions - "\b": "\\b", - "\t": "\\t", - "\n": "\\n", - "\f": "\\f", - "\r": "\\r", - "\"": "\\\"", - "\\": "\\\\" - }; - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ""; - indent = ""; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === "number") { - for (i = 0; i < space; i += 1) { - indent += " "; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === "string") { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== "function" && - (typeof replacer !== "object" || - typeof replacer.length !== "number")) { - throw new Error("JSON.stringify"); - } - -// Make a fake root object containing our value under the key of "". -// Return the result of stringifying the value. - - return str("", {"": value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== "function") { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k; - var v; - var value = holder[key]; - if (value && typeof value === "object") { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - rx_dangerous.lastIndex = 0; - if (rx_dangerous.test(text)) { - text = text.replace(rx_dangerous, function (a) { - return "\\u" + - ("0000" + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with "()" and "new" -// because they can cause invocation, and "=" because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with "@" (a non-JSON character). Second, we -// replace all simple value tokens with "]" characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or "]" or -// "," or ":" or "{" or "}". If that is so, then the text is safe for eval. - - if ( - rx_one.test( - text - .replace(rx_two, "@") - .replace(rx_three, "]") - .replace(rx_four, "") - ) - ) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The "{" operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval("(" + text + ")"); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return (typeof reviver === "function") - ? walk({"": j}, "") - : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError("JSON.parse"); - }; - } -}()); diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/ext/xmlsign_api_nx.js b/src/main/webapp/MagicLine4Web/ML4Web/js/ext/xmlsign_api_nx.js deleted file mode 100644 index fdcaee58..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/ext/xmlsign_api_nx.js +++ /dev/null @@ -1,425 +0,0 @@ -// 로컬 -var xml_cpUrl = location.port != ""?location.hostname+":"+location.port:location.hostname; -var xml_mlMainUrl = location.protocol+"//"+( location.port != ""?location.hostname+":"+location.port:location.hostname ); -var xml_mlDirPath = "/MagicLine4Web/ML4Web/"; -var xml_childHtml = "Child.html"; - -$(document).ready(function(){ - $('#dscertContainer').hide(); - - $.blockUI({ - message:'
              로딩중입니다.

              잠시만 기다려 주세요.

              ', - css:{left:(($(window).width()/2)-75)+'px'} - }); - - - magicline.xsnxapi.ML_funProcInitCheck(function(code,data){ - if( code == 0 ){ - magicline.xsnxapi.completeInit(); - } - }); - - magicline.xsnxapi.ML_checkInit(); - -}); - -if(typeof(magicline) == 'undefined'){ - magicline = {}; -} - -var magiclineXMLApi = function(){ - var callback = ""; - var defaultOptions = { - sign:{signType:"MakeSignData",msg:"",messageType:"",signOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO'], ds_pki_rsa:'rsa15', ds_pki_hash:'sha256',ds_msg_decode:"false",ds_pki_sign_type:"signeddata"}}, - signPdfOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO','OPT_USE_PKCS7','OPT_NO_CONTENT','OPT_HASHED_CONTENT'], ds_pki_rsa:'rsa15', ds_pki_hash:'sha256',ds_msg_decode:"true"}, - encOpt:{ds_pki_rsa:'rsa15'}, - signedenvOpt:{ds_pki_sign:['OPT_USE_CONTNET_INFO'], ds_pki_rsa:'rsa15', ds_pki_algo:'SEED-CBC'}, - // 추가 - idn : "", - vidType : "", - certOidfilter:"", //1.2.410.100001.2.2.1,1.2.410.200005.1.1.4 - certExpirefilter:true - } - - function CommonResopnseProcess( json ){ - - var response = JSON.parse( json ); - var close = response.close; - - if( response.close == 'closeDialog'){ - $('#dscertContainer').hide(); - } - } - - /** - * send 할 메시지를 생성 - */ - function MakeRequestJsonMessage( functionName, functionParameter, option ){ - var temp = - { - "funcName" : functionName, - "funcParam" : functionParameter - } - return JSON.stringify( temp ); - } - - function closeDialog(event){ - $('#dscertContainer').hide(); - - var obj = JSON.parse( event.data ); - if( obj.key == 'closeDialog'){ - $('#dscertContainer').hide(); - }else if( obj.resultMsg != null && obj.resultMsg !== "" ){ - magiclineXMLApi.callback( obj.code , obj.resultMsg ); - }/*else if(obj.opcode != null && obj.opcode !== ""){ - magicmrsApi.callback(obj); - }*/else{ - magiclineXMLApi.callback( obj.code , obj ); - } - } - - function addEventLisner( callback ){ - if(window.addEventListener){ - window.addEventListener("message",closeDialog, false); - }else if(window.attachEvent){ - window.attachEvent("onmessage", closeDialog ); - } - } - - function ML_sendPostMessage ( requestStr ){ - - var dialogTitle = "전자서명"; - $('#dscertContainer').show(); - var iframeWindow = document.getElementById('dscert').contentWindow; - - iframeWindow.postMessage(requestStr, xml_mlMainUrl); - } - - function ML_sendUtilMessage( requestStr ){ - var iframeWindow = document.getElementById('dscert').contentWindow; - iframeWindow.postMessage(requestStr, xml_mlMainUrl); - } - - function ML_funProcInitCheck (callback){ - magiclineXMLApi.callback = callback; - var childUrl = xml_mlMainUrl + xml_mlDirPath + xml_childHtml +"?lgUrl="+ xml_cpUrl + "&random=" + Math.random() * 99999; - $('#dscert').attr("src", childUrl); - addEventLisner( callback ); - } - - function completeInit(){ - magicline.is_ML_Sign_Init = true; - if( typeof magicline.initCallback == "function" ){ - magicline.initCallback(0, 'completeInit'); - } - $.unblockUI(); - } - - function ML_checkInit(){ - setTimeout(function(){ - if( magicline.is_ML_Sign_Init ){ - $.unblockUI(); - }else{ - ML_checkInit(); - } - },1500); - } - - function Init(callback){ - magiclineXMLApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - //추가 default option - param.STORAGELIST = ["web","hdd","token","mobile","unisign","smartcert"]; - param.STORAGESELECT = "web"; - param.USEVIRTUALKEYBOARD = false; //가상키보드 사용 여부 true,false - param.VIRTUALKEYBOARDTYPE = ""; //가상키보드 사용 여부 NSHC,RAON,INCA - param.WinClientVersion = "1.0.0.14"; - param.MacClientVersion = "1.0.0.13"; - param.Lin64ClientVersion = "1.0.0.12"; - param.Lin32ClientVersion = "1.0.0.12"; - param.MobileOption = ["ubikey", "mobisign"]; - - var option = null; - var request = MakeRequestJsonMessage("setUserOption", param, option); - - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - - } - - function MakeXMLDSIG(msg, callback){ - var XS_gOidPolicy = ""; // OID에 해당하는 인증서만 출력하도록 프로퍼티 설정 ("," = 구분자) - //###금융결제원 - 2개 - XS_gOidPolicy += "1.2.410.200005.1.1.5," ; - XS_gOidPolicy += "1.2.410.200005.1.1.6.8," ; - - //###한국증권전산 - 1개 - XS_gOidPolicy += "1.2.410.200004.5.1.1.7," ; - - //###한국전산원 - 2개 - XS_gOidPolicy += "1.2.410.200004.5.3.1.1," ; - XS_gOidPolicy += "1.2.410.200004.5.3.1.2," ; - - //###한국정보인증 - 1개 - XS_gOidPolicy += "1.2.410.200004.5.2.1.1," ; - //2009.12.07추가 - 24개(한국정보인증) - XS_gOidPolicy += "1.2.410.200004.5.2.1.3," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.5," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.5.12," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.5.28," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.5.30," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.5.32," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.114," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.115," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.183," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.229," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.237," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.245," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.246," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.250," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.251," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.254," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.48," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.70," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.73," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.90," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.93," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.99," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.257," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.255," ; - //2009.12.18추가 - 4개(한국정보인증) - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.65," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.221," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.249," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.252," ; - //2010.9.27추가 - 7개(한국정보인증) - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.248," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.275," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.235," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.279," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.113," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.284," ; - XS_gOidPolicy += "1.2.410.200004.5.2.1.6.285," ; - - //###한국전자인증 - 1개 - XS_gOidPolicy += "1.2.410.200004.5.4.1.2," ; - //2009.12.07추가 - 17개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.1.19," ; - XS_gOidPolicy += "1.2.410.200004.5.4.1.31," ; - XS_gOidPolicy += "1.2.410.200004.5.4.1.35," ; - XS_gOidPolicy += "1.2.410.200004.5.4.1.50," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.11," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.60," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.65," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.67," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.69," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.300," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.302," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.304," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.305," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.306," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.307," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.308," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.310," ; - //2009.12.28추가 - 10개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.64," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.66," ; - XS_gOidPolicy += "1.2.410.200004.5.4.1.14," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.42," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.36," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.25," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.312," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.311," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.55," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.313," ; - //2010.02.05추가 - 2개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.315," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.317," ; - //2010.05.06추가 - 13개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.318," ; //20100506 - XS_gOidPolicy += "1.2.410.200004.5.4.2.321," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.322," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.323," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.324," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.325," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.326," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.327," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.328," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.329," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.330," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.331," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.332," ; - //2010.05.06추가 - 2개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.57," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.50," ; - //2010.06.10추가 - 2개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.80," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.337," ; - //2010.10.07추가 - 1개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.340," ; - //2010.11.18추가 - 1개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.343," ; - //2010.12.20추가 - 1개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.350," ; - //2011.03.02추가 - 1개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.360," ; - //2011.06.13추가 - 1개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.367," ; - //2012.06.13추가 - 2개(한국전자인증) - XS_gOidPolicy += "1.2.410.200004.5.4.2.377," ; - XS_gOidPolicy += "1.2.410.200004.5.4.2.379," ; - - //###한국무역정보통신 - 1개 - XS_gOidPolicy += "1.2.410.200012.1.1.3," ; - //2009.12.01추가 - 14개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.5.19.1.1," ; - XS_gOidPolicy += "1.2.410.200012.5.13.1.1," ; - XS_gOidPolicy += "1.2.410.200012.5.1.1.171," ; - XS_gOidPolicy += "1.2.410.200012.5.6.1.31," ; - XS_gOidPolicy += "1.2.410.200012.1.1.411," ; - XS_gOidPolicy += "1.2.410.200012.5.11.1.81," ; - XS_gOidPolicy += "1.2.410.200012.5.21.1.11," ; - XS_gOidPolicy += "1.2.410.200012.5.20.1.21," ; - XS_gOidPolicy += "1.2.410.200012.5.1.1.191," ; //20100506 변경 - XS_gOidPolicy += "1.2.410.200012.1.1.801," ; - XS_gOidPolicy += "1.2.410.200012.1.1.9," ; - XS_gOidPolicy += "1.2.410.200012.5.18.1.21," ; - XS_gOidPolicy += "1.2.410.200012.5.17.1.11," ; - XS_gOidPolicy += "1.2.410.200012.5.15.1.11," ; - //2009.12.22추가 - 8개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.5.4.1.61," ; - XS_gOidPolicy += "1.2.410.200012.1.1.431," ; - XS_gOidPolicy += "1.2.410.200012.1.1.441," ; - XS_gOidPolicy += "1.2.410.200012.1.1.451," ; - XS_gOidPolicy += "1.2.410.200012.1.1.401," ; - XS_gOidPolicy += "1.2.410.200012.5.1.1.321," ; - XS_gOidPolicy += "1.2.410.200012.5.1.1.281," ; - XS_gOidPolicy += "1.2.410.200012.5.1.1.331," ; - //2010.02.22추가 - 3개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.5.27.1.1," ; - XS_gOidPolicy += "1.2.410.200012.5.26.1.11," ; - XS_gOidPolicy += "1.2.410.200012.1.1.471," ; - //2010.03.04추가 - 1개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.5.4.1.21," ; - //2010.05.06추가 - 7개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.1.1.4101," ; //20100506 7개 추가 - XS_gOidPolicy += "1.2.410.200012.1.1.481," ; - XS_gOidPolicy += "1.2.410.200012.1.1.491," ; - XS_gOidPolicy += "1.2.410.200012.1.1.4111," ; - XS_gOidPolicy += "1.2.410.200012.5.14.1.11," ; - XS_gOidPolicy += "1.2.410.200012.5.14.1.21," ; - XS_gOidPolicy += "1.2.410.200012.5.11.1.101," ; - //2011.04.15추가 - 3개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.5.28.1.21," ; - XS_gOidPolicy += "1.2.410.200012.5.18.1.31," ; - XS_gOidPolicy += "1.2.410.200012.5.18.1.33," ; - //2011.06.13추가 - 1개(한국무역정보통신) - XS_gOidPolicy += "1.2.410.200012.1.1.4151," ; - //2014.05.16 추가 - XS_gOidPolicy += "1.2.410.200012.5.4.1.141," ; - - // 아랫부분의 주석처리된 부분은 추가하지 말라는 이현진 조사관님의 지시로 막음. (2015.02.26) - //발행허용 HOMETAX 인증서 - // 한국증권전산 - //XS_gOidPolicy += "1.2.410.200004.5.1.1.12;" ; - // 한국정보인증 - XS_gOidPolicy += "1.2.410.200004.5.2.1.5001," ; - // 한국전자인증 - //XS_gOidPolicy += "1.2.410.200004.5.4.2.52;" ; - - // HOMETAX 사업자번호 인증서 - //한국증권전산 - //XS_gOidPolicy += "1.2.410.200004.5.1.1.10;" ; - //XS_gOidPolicy += "1.2.410.200004.5.1.1.12;" ; - // 금융결제원 - //XS_gOidPolicy += "1.2.410.200005.1.1.2;" ; - // 한국전산원 - //XS_gOidPolicy += "1.2.410.200004.5.3.1.5;" ; - // 한국전자인증 - //XS_gOidPolicy += "1.2.410.200004.5.4.2.52;" ; - - //XS_gOidPolicy = XS_gOidPolicy.replace(/\;/g,","); - - magiclineXMLApi.callback = callback; - - var param = defaultOptions.sign; - param.signType = "XMLSignature"; - - param.signOpt.ds_pki_sign_type = "sign"; - param.signOpt.ds_pki_xmlsign_type = "1"; - - if( msg!=null && typeof(msg)!='undefined' && msg!='' ){ - param.msg = msg; - } - - param.signOpt.cert_filter_oid = XS_gOidPolicy; - param.signOpt.cert_filter_expire = defaultOptions.certExpirefilter; - - param.certOidfilter = XS_gOidPolicy; - param.certExpirefilter = defaultOptions.certExpirefilter; - - var funcName = param.signType; - var option = null; - - var request = MakeRequestJsonMessage(funcName, param, option ); - - addEventLisner( callback ); - ML_sendPostMessage( request ); - } - - function MakeXMLEncryption(kmCert, msg, callback){ - magiclineXMLApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - param.kmCert = kmCert; - param.msg = msg; - var option = null; - - var request = MakeRequestJsonMessage("MakeXMLEncryption", param, option); - ML_sendUtilMessage(request); - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - function GetRandom(kmCert, callback){ - magiclineXMLApi.callback = callback; - - if(magicline.is_ML_Sign_Init){ - - var param = {}; - param.layer = "UI"; - param.kmCert = kmCert; - var option = null; - - var request = MakeRequestJsonMessage("getVIDRandom", param, option); - ML_sendUtilMessage(request); - - }else{ - alert("초기화 중입니다. 잠시 후 다시 시도해 주세요."); - } - } - - return{ - Init:Init, - MakeXMLDSIG:MakeXMLDSIG, - MakeXMLEncryption:MakeXMLEncryption, - GetRandom:GetRandom, - MakeRequestJsonMessage:MakeRequestJsonMessage, - ML_sendUtilMessage : ML_sendUtilMessage, - ML_funProcInitCheck : ML_funProcInitCheck, - completeInit:completeInit, - ML_checkInit:ML_checkInit, - } -} - -magicline.xsnxapi = new magiclineXMLApi(); \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/magic_e2e.js b/src/main/webapp/MagicLine4Web/ML4Web/js/magic_e2e.js deleted file mode 100644 index 78026916..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/magic_e2e.js +++ /dev/null @@ -1,87 +0,0 @@ -!function(){function a(a){function b(a,b){d(this,"InitError",a,100,b)}function c(a,b){d(this,"ProcessError",a,101,b)}function d(a,b,c,d,e){a.name=b,a.func=c,a.code=d,"string"==typeof e?a.message=e:(a.message=e.message,void 0!==e.errors&&(a.detail=e.errors))}b.prototype=Error.prototype,c.prototype=Error.prototype,a.version="1.0.0.0",a.session={id:null,svrCert:null,alg:null,key:null,iv:null},a.init=function(a){try{magicjs.init(a)}catch(c){throw new b("mle2e.init",c)}},a.makeCertReqMsg=function(){var a={ver:"1",id:"certreq"};return JSON.stringify(a)},a.encrypt=function(b){try{var d=a.session;a.session.key=null,a.session.iv=null;var e={ver:"1",id:"enc",result:"0",session:d.id};if(void 0==d.key||null==d.key){if(null==d.svrcert)throw new Error("The CertReq is required.");d.key=magicjs.generateRandomBytes(16).getBytes(),d.iv=magicjs.generateRandomBytes(16).getBytes();var f=magicjs.x509Cert.create(d.svrcert),g=null;g=d.key,g+=d.iv;var h=null;h=f.pubKey.encrypt(g,{scheme:"RSA-OAEP",md:"sha256"}),d.alg.indexOf("seed")&&(d.alg="seed");var i=magicjs.cipher.create(!0,d.alg+"-cbc",d.key);i.init(d.iv),i.update(d.id);var j=i.finish().getBytes();if(h+=j,304!=h.length)throw new Error("The length of cipher data is not the expected length.");e.hand=magicjs.base64.encode(h)}var i=magicjs.cipher.create(!0,d.alg+"-cbc",d.key);i.init(d.iv),i.update(magicjs.utf8.encode(b));var k=i.finish();return e.enc=magicjs.base64.encode(k),JSON.stringify(e)}catch(l){throw new c("mle2e.encrypt",l)}},a.decrypt=function(b){try{var d=JSON.parse(b);if("1"!=d.ver)throw new Error("The version of message is not 1.");var e=Number(d.result);if(0!=e)throw new Error("The result of message is not success. (result ="+e+")");var f=a.session;if("certreq"==d.id){f.id=d.session,f.svrcert=d.cert;var g=d.algo.toUpperCase();return"ARIA"==g?f.alg="ARIA128":f.alg=g,f.key=null,null}if("enc"==d.id){if(void 0==f.key||null==f.key)throw new Error("A handshake is required.");var h=magicjs.cipher.create(!1,f.alg+"-cbc",f.key);return h.init(f.iv),h.update(magicjs.base64.decode(d.enc)),magicjs.utf8.decode(h.finish().getBytes())}throw new Error("The id of message is neither certreq nor enc.")}catch(i){throw new c("mle2e.decrypt",i)}}}return"undefined"==typeof mle2e&&(mle2e={}),a(mle2e)}(); -document.write(""); -"object"!=typeof JSON&&(JSON={}),function(){"use strict";var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta,rep;function f(t){return t<10?"0"+t:t}function this_value(){return this.valueOf()}function quote(t){return rx_escapable.lastIndex=0,rx_escapable.test(t)?'"'+t.replace(rx_escapable,function(t){var e=meta[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+t+'"'}function str(t,e){var r,n,o,u,f,a=gap,i=e[t];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(t)),"function"==typeof rep&&(i=rep.call(e,t,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,f=[],"[object Array]"===Object.prototype.toString.apply(i)){for(u=i.length,r=0;r \uacc4\uc18d \uc9c4\ud589\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? - -TS096 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikeynx) - -TS097 = \uc704\uce58 - -ES001 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES002 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ES003 = \uc778\uc99d\uc11c\ub97c \uba3c\uc800 \uc120\ud0dd\ud558\uc138\uc694. -ES004 = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ES005 = \ucc98\ub9ac \uacfc\uc815 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ES006 = \uc778\uc99d\uc11c \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES007 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub294 \ubb38\uc790, \uc22b\uc790, \ud2b9\uc218\ubb38\uc790\uc758 \uc870\ud569\uc73c\ub85c 8\uc790\ub9ac \uc774\uc0c1 \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES008 = \uc0c8 \uc554\ud638\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES009 = \uc778\uc99d\uc11c\uac00 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES010 = \uc800\uc7a5 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ES011 = \ubcf4\uc548\ud1a0\ud070 \uc778\uc99d\uc11c \uc800\uc7a5\uac1c\uc218\ub97c \ucd08\uacfc \ud558\uc600\uc2b5\ub2c8\ub2e4. \ubcf4\uc548\ud1a0\ud070\uc758 \uc778\uc99d\uc11c\ub97c \uc0ad\uc81c \ud6c4 \uc2dc\ub3c4\ud574 \uc8fc\uc138\uc694. -ES012 = \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES013 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES014 = \ub85c \uc778\uc99d\uc11c\uac00 \ubcf5\uc0ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES015 = \uc0c8 \uc554\ud638\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694. -ES016 = \uc0c8 \uc554\ud638 \ud655\uc778\uc744 \uc785\ub825\ud574 \uc8fc\uc138\uc694. -ES017 = \uc778\uc99d\uc11c \uc0ad\uc81c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES018 = \ub85c \uc778\uc99d\uc11c \ubcf5\uc0ac\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES019 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. -ES020 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES021 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c\ub97c \uc120\ud0dd \ud574 \uc8fc\uc138\uc694. -ES022 = \uac1c\uc778\uc2dd\ubcc4 \uac12\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES023 = \uc778\uc99d\uc11c \uc800\uc7a5\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES024 = \uc778\uc99d\uc11c \uc11c\uba85\uc624\ub958 \uc785\ub2c8\ub2e4. -ES025 = \uc778\uc99d\uc11c \ubaa9\ub85d\uc870\ud68c \uc624\ub958 \uc785\ub2c8\ub2e4. -ES026 = \ubcf4\uc548\ud1a0\ud070 \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES027 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc744 \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES028 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES029 = \uc778\uc99d\uc11c \ub610\ub294 \uac1c\uc778\ud0a4 \ud615\uc2dd\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES030 = \uc778\uc99d\uc11c \ub85c\uadf8\uc778\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              \ub2e4\uc2dc \uc2dc\ub3c4\ud574 \uc8fc\uc138\uc694. -ES031 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES032 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \uc7a0\uacbc\uc2b5\ub2c8\ub2e4. -ES033 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES034 = \uc0ac\uc6a9\uc790\uac00 \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES035 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES036 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES037 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \ubaa8\ub4c8 \uac80\uc99d\uc774 \uc2e4\ud328 \ud558\uc600\uc2b5\ub2c8\ub2e4.\n\uacc4\uc18d \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES038 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES039 = \uc0ac\uc6a9\uc790\uac00 \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0)\uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES040 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES041 = IE9 \uc774\ud558\uc5d0\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uae30\ub2a5\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \n\uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\ud558\ub4dc\ub514\uc2a4\ud06c/\uc774\ub3d9\uc2dd \ubc84\ud2bc\uc744 \uc120\ud0dd\ud558\uc5ec \uc774\uc6a9\ud574\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ES042 = \ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud558\uc2dc\uc624. -ES043 = * \uc790\uc138\ud55c \uc815\ubcf4\ub294 \uc778\uc99d\uae30\uad00\uc758 \uc124\uba85\uc744 \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. -ES044 = \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824 \uc8fc\uc138\uc694. -ES045 = \uc120\ud0dd\ub41c \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c -ES046 = MagicLine \ud504\ub85c\uadf8\ub7a8\uc744 \uc124\uce58\ud569\ub2c8\ub2e4. -ES047 = MagicLine \uc124\uce58 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. -ES048 = \ucd5c\uc2e0 \ubc84\uc804\uc758 MagicLine\uc774 \uc544\ub2d9\ub2c8\ub2e4.
              \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c \uc124\uce58\ud569\ub2c8\ub2e4. -ES049 =
              \uc124\uce58 \ud6c4 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud558\uba74 \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucde8\uc18c\uc2dc \ub514\uc2a4\ud06c,\ubcf4\uc548\ub9e4\uccb4\ub97c \uc774\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. - -ES050 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \ub3d9\uc77c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES051 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES052 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \uc601\ubb38\uc744 \ud3ec\ud568\ud55c 2\uac1c \uc774\uc0c1\uc758 \ubb38\uc790 \ud0c0\uc785\uc73c\ub85c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. - -ES053 = \uae08\uc735\uc778\uc99d\uc11c \ub85c\ub4dc\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES054 = \uae08\uc735\uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES080 = SelectStorageInfo \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES081 = \uacf5\ub3d9\uc800\uc7a5\uc18c \ucd08\uae30\ud654 \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES082 = \uacf5\ub3d9\uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ES083 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc800\uc7a5\ub418\uc5b4 \uc788\ub294
              \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES084 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub97c \ube0c\ub77c\uc6b0\uc800\ub85c \ubcf5\uc0ac\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES100 = \uc778\uc99d\uc11c \uc815\ubcf4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.



              \u203b \ud558\ub4dc\ub514\uc2a4\ud06c, \uc774\ub3d9\uc2dd\ub514\uc2a4\ud06c\uc5d0 \uc788\ub294 \uacf5\ub3d9\uc778\uc99d\uc11c\ub97c \uc0ac\uc6a9\ud558\uc2dc\ub824\uba74
              [\ud558\ub4dc\ub514\uc2a4\ud06c/\uc774\ub3d9\uc2dd] \ubc84\ud2bc\uc744 \uc120\ud0dd\ud558\uc5ec \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. - -ES121 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc5f0\uc18d\uc73c\ub85c \ud2c0\ub9b4\uacbd\uc6b0 \uc778\uc99d\uc11c \uc120\ud0dd\ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4.
              \ud604\uc7ac\ub0a8\uc740 \uc2dc\ub3c4 \ud69f\uc218\ub294 count\ud68c \uc785\ub2c8\ub2e4. -ES122 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc2e4\ud328\uc2dc \ud574\ub2f9 \uc778\uc99d\uc11c\ub97c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4
              (\ud604\uc7ac count\ud68c \uc624\ub958)
              -ES123 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub97c count\ud68c\ud2c0\ub824
              \ud574\ub2f9 \uc778\uc99d\uc11c \uc0ac\uc6a9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES124 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 \uc785\ub825 \ud69f\uc218 count_limit\ud68c\ub97c \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c \uc120\ud0dd \ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4. - -ER100 = \ud574\ub2f9 \ud544\ub4dc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ud655\uc778\ud574 \uc8fc\uc138\uc694. -ER101 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc800\uc7a5\ub9e4\uccb4 \uc785\ub2c8\ub2e4. -ER102 = \uc800\uc7a5\ub9e4\uccb4 \uc124\uc815\uac12\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. -ER103 = callback \uac12\uc774 null\uc774\uac70\ub098 \ud568\uc218\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ER104 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ud568\uc218 \uc785\ub2c8\ub2e4. -ER105 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5 \uc785\ub2c8\ub2e4. -ER106 = PFX \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ER107 = \ud574\ub2f9 \uc778\uc99d\uc11c \ubaa9\ub85d \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ER108 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER109 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER110 = PFX \uc778\uc99d\uc11c \ubaa9\ub85d\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -ER111 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud30c\uc77c(*.der) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER112 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud0a4 \ud30c\uc77c(*.key) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER113 = \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER114 = \uc778\uc99d\uc11c *.der, *.key\uc744 \uac19\uc774 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER115 = \ud55c\uc30d\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER116 = \uc778\uc99d\uc11c\uc640 \ud0a4\ud30c\uc77c\uc744 \uac01\uac01 1\uac1c\uc529 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER117 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER118 = \uc778\uc99d\uc11c\uc5d0 \ub9de\ub294 \ud0a4\ud30c\uc77c\uc744 \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER119 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER120 = \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 \ubc84\ud2bc\uc744 \ub2e4\uc2dc \ud074\ub9ad\ud558\uc5ec \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER121 = \ud558\ub098\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER122 = \uc778\uc99d\uc11c \ud30c\uc77c\uc744 \uc120\ud0dd\ud574 \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER201 = \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uc785\ub2c8\ub2e4. -ER202 = \ube44\uc5b4\uc788\ub294 \ub370\uc774\ud130\uc785\ub2c8\ub2e4. -ER204 = \ud574\ub2f9 \uc778\uc99d\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ER205 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc11c\uba85\uc6a9 \uc778\uc99d\uc11c\uc640 \ud568\uaed8 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER206 = \ud55c \uc30d \ub610\ub294 \ub450 \uc30d\uc758 \uc778\uc99d\uc11c\ub97c \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER300 = \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc778\uc99d\uc11c \ubcf5\uc0ac\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              (\uc815\ucc45\uc0c1 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc544 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc5c6\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.) -ER888 = try catch Exeption -ER999 = \ud558\uc704 \ub808\uc774\uc5b4 \ud568\uc218 \uc5d0\ub7ec -ER401 = \ube44\ubc00\ubc88\ud638 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER402 = PIN \ubc88\ud638 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER411 = \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ER412 = \ub4dc\ub77c\uc774\ube0c\uba85 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER413 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ubbf8\ub514\uc5b4 \uc785\ub2c8\ub2e4. -ER492 = JS Toolkit\uc624\ub958 \uc785\ub2c8\ub2e4. -ER494 = C Toolkit \uc624\ub958 \uc785\ub2c8\ub2e4. - -#oid \uc815\uc758 -OID_1_2_410_100001_2_1_1=\uc804\uc790\uad00\uc778 -OID_1_2_410_100001_2_1_2=\ucef4\ud4e8\ud130 -OID_1_2_410_100001_2_1_3=\uc804\uc790\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_2_1_4=\uc804\uc790\uad00\uc778(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_5=\ucef4\ud4e8\ud130(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_2_1=\uacf5\ubb34\uc6d0\uc6a9 -OID_1_2_410_100001_2_2_2=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_1=\uc804\uc790\uad00\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_3=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_5_3_1_7=\ucef4\ud4e8\ud130\uc6a9 -OID_1_2_410_100001_5_3_1_9=SSL\uc6a9 -OID_1_2_410_200004_5_1_1_1=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778) -OID_1_2_410_200004_5_1_1_2=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778\uc11c\ubc84) -OID_1_2_410_200004_5_1_1_3=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \ubc95\uc778) -OID_1_2_410_200004_5_1_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uc11c\ubc84) -OID_1_2_410_200004_5_1_1_5=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_1_1_6=\ubc94\uc6a9\uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_7=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_1_1_8=\ubc94\uc6a9\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_9=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_1_1_9_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_1_1_10=\uace8\ub4dc \uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_11=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_1_1_12=\uad6d\uc138\uccad\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_1=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_2_1_2=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_2_1_3=\ud2b9\ubcc4\ub4f1\uae09(\uc804\uc790\uc785\ucc30) -OID_1_2_410_200004_5_2_1_4=1\ub4f1\uae09\uc778\uc99d\uc11c(\uc11c\ubc84) -OID_1_2_410_200004_5_2_1_5=\ud2b9\ubcc4\ub4f1\uae09 \ubc95\uc778 -OID_1_2_410_200004_5_2_1_5_140=\uc6a9\ub3c4\uc81c\ud55c(NEIS) -OID_1_2_410_200004_5_2_1_5_407=\uac74\uac15\ubcf4\ud5d8\uc2ec\uc0ac\ud3c9\uac00\uc6d0 \uc5c5\ubb34\uc804\uc6a9 \uc778\uc99d\uc11c -OID_1_2_410_200004_5_2_1_6=\uc6a9\ub3c4\uc81c\ud55c(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_7_1=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_2_1_7_2=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_2_1_7_3=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_2_1_5001=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778,\ubc95\uc778) -OID_1_2_410_200004_5_3_1_1=1\ub4f1\uae09(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_2=\ubc94\uc6a9\ubc95\uc778 -OID_1_2_410_200004_5_3_1_3=1\ub4f1\uae09(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_3_1_7=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_8=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_9=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_1=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_2=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_4_1_3=\ubc94\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_4_1_4=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_4_1_101=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_4_1_102=\uc99d\uad8c\uac70\ub798\uc6a9 -OID_1_2_410_200004_5_4_1_103=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_4_1_104=\uc804\uc790\ubbfc\uc6d0\uc6a9 -OID_1_2_410_200004_5_4_1_74=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_2_52=\uad6d\uc138\uccad\uc6a9 -OID_1_2_410_200004_5_5_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_2=\ubc94\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_3_1=\uc81c\ud734\uae30\uad00\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_4_1=\uc81c\ud734\uae30\uad00\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_4_2=\uc804\uc790\uc138\uae08\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_2=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_3=\uc11c\ubc84\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -#OID_1_2_410_200005_1_1_4=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_4=\uc740\ud589(\uac1c\uc778) -OID_1_2_410_200005_1_1_5=\ubc94\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6=\uc6a9\ub3c4\uc81c\ud55c\uc6a9 -OID_1_2_410_200005_1_1_6_1=\uae30\uc5c5\ubc45\ud0b9\uc6a9 -OID_1_2_410_200005_1_1_6_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200005_1_1_6_3=\uc870\ub2ec\uccad \uc6d0\ud074\ub9ad\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_4=\ud1f4\uc9c1\uc5f0\uae08 -OID_1_2_410_200005_1_1_6_5=\uc7ac\uc815\uacbd\uc81c\ubd80 CTR\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_8=\uae08\uc735\uacb0\uc81c\uc6d0(\uc804\uc790\uc138\uae08\uc6a9) -OID_1_2_410_200005_1_1_6_9=\uc0ac\uc124 -OID_1_2_410_200004_2_1=\uc778\uc99d\uae30\uad00 -OID_1_2_410_200012_1_1_1=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_2=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_3=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_4=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_5=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_6=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_7=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_8=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_9=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_10=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_11=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_12=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_101=\uc740\ud589/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_103=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_105=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200006_2_1=\uad6d\ubc29\uacf5\ubb34\uc6d0 -OID_1_2_410_200057_2_1_1=KEI/\uc5c5\ubb34\uc6a9 -OID_1_2_3_4_5=\ub9e4\uc9c1\uac00\ub4dc -OID_1_2_410_200057_2_5=\ud558\uc774\ud3ec\ud0c8 -OID_1_2_410_200057_2_6=\ud3ec\ud0c8\ub85c\uadf8\uc778 -OID_2_5_29_32_0=\ubaa8\ub4e0 \ubc1c\uae09 \uc815\ucc45 -OID_personal=\ubc94\uc6a9(\uac1c\uc778) -OID_personalb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uac1c\uc778) -OID_corporation4ec=\ubc94\uc6a9(\uae30\uc5c5) -OID_corporation4ecb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uae30\uc5c5) - -digitalSignature=\uc804\uc790\uc11c\uba85 -nonRepudiation=\ubd80\uc778\ubc29\uc9c0 -keyEncipherment=\ud0a4\uc554\ud638\ud654 \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_en.properties b/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_en.properties deleted file mode 100644 index ed8cb6d3..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_en.properties +++ /dev/null @@ -1,337 +0,0 @@ -# This line is ignored by the plugin -TS000 = Certificate Selection Screen -TS001 = Select Certificate -TS002 = No Searched Certificate. -TS003 = Certificate Password -TS004 = \ubcf4\uc548\ud1a0\ud070 Password -TS005 = Search Certificate -TS006 = Certificate View -TS007 = Change Certificate Password -TS008 = Delete Certificate -TS010 = \uc774\uc804 Password -TS011 = New Password -TS012 = New Password Confirm -TS013 = Delete Certificate -TS014 = Confirm -TS015 = Cancle -TS016 = Delete -TS017 = View Certificate -TS018 = \uc694\uc57d -TS019 = \uc790\uc138\ud788 -TS020 = Certificate Password\uac00 Change\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -TS021 = Certificate PasswordChange\uc5d0 failure\ud558\uc600\uc2b5\ub2c8\ub2e4. -TS022 = \uc120\ud0dd\ud55c Certificate -TS023 = Certificate Manage -TS024 = Copy Certificate -TS025 = View Certificate -TS026 = Certificate Delete -TS028 = Import -TS029 = Export -TS030 = Close -TS031 = Certificate\ub97c \uc800\uc7a5\ud560 Storage\ub97c \uc120\ud0dd \ud574\uc8fc\uc138\uc694. -TS032 = Certificate Import -TS033 = Certificate Export -TS034 = Sign Selected Certificate - -TS035 = Importing certificates into a browser -TS036 = Importing certificates -TS037 = Input \ubcf4\uc548\ud1a0\ud070 password -TS038 = Input certificate password -TS039 = Program Installation Guide -TS040 = Program Update - -#Local Storage -TS701 = -#PFX \ucc3e\uae30 -TS702 = -#\ub514\uc2a4\ud06c -TS703 = -#\uc548\uc804\ub514\uc2a4\ud06c -TS704 = -#\ubcf4\uc548\ud1a0\ud070 -TS705 = -#\ubaa8\ubc14\uc77c -TS706 = -#\uc2a4\ub9c8\ud2b8\uc778\uc99d -TS707 = -#\ud074\ub77c\uc6b0\ub4dc -TS708 = - -TS041 = \ubcf4\uc548\ub514\uc2a4\ud06c Password -TS042 = Alarm -TS043 = Error -TS044 = Certificate Information - -TS045 = Field -TS046 = Contents -TS047 = Version -TS048 = \uc77c\ub828\ubc88\ud638 -TS049 = \ubc1c\ud589\uc790 -TS050 = \uc720\ud6a8\uae30\uac04(\ubc1c\uae09\uc77c) -TS051 = \uc720\ud6a8\uae30\uac04(\ub9cc\ub8cc\uc77c) -TS052 = \uc8fc\uccb4 -TS053 = \ud0a4\uc0ac\uc6a9 -TS054 = Certificate \uc815\ucc45 -TS055 = \uc8fc\uccb4\ub300\uccb4 \uc774\ub984 -TS056 = CRL \ubc30\ud3ec\uc9c0\uc810 -TS057 = \uae30\uad00Information\uc9c0\uc810 -TS058 = \uc11c\uba85\uc54c\uace0\ub9ac\uc998 -TS059 = \uc18c\uc720\uc790\uba85 -TS060 = \uc6a9\ub3c4 -TS061 = \ubc1c\uae09\uae30\uad00 -TS062 = \ub9cc\ub8cc\uc77c -TS063 = \ubc1c\uae09\uc790 -TS064 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikey) -TS065 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) -TS066 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 -TS067 = \uc778\uc99d\uc11c\ud30c\uc77c \uacbd\ub85c -TS068 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 -TS069 = \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc778\uc99d\uc11c \uc800\uc7a5 -TS070 = \uc124\uce58 -TS071 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c -TS072 = \ud0c0\uc785 -TS073 = \uc77c\ubc18 -TS074 = \uc790\uc138\ud788 -TS075 = \uc0ac\uc6a9\uc790 \uc54c\ub9bc : -TS076 = \ubc1c\uae09\ub300\uc0c1 -TS077 = \uacf5\uac1c\ud0a4 -TS078 = \uae30\uad00\ud0a4 \uc2dd\ubcc4\uc790 -TS079 = \uc778\uc99d\uc11c\uc758 \uc6a9\ub3c4 -TS080 = \uc720\ud6a8\uae30\uac04 -TS081 = \ubd80\ud130 -TS082 = \uae4c\uc9c0 -TS083 = \uad6c\ubd84 -TS084 = \uc9c0\uc6d0\ub9e4\uccb4\uc5c6\uc74c -TS085 = \uc778\uc99d\uc11c \uc800\uc7a5 -TS086 = \uc778\uc99d\uc11c \uc800\uc7a5 \uc704\uce58 -TS087 = \ube0c\ub77c\uc6b0\uc800 -TS088 = \uc120\ud0dd\ub41c PFX \uc778\uc99d\uc11c -TS089 = \uc120\ud0dd\ub41c P12 \uc778\uc99d\uc11c -TS090 = PFX \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 - -TS091 = \uc120\ud0dd\ud558\uc2e0 \uc778\uc99d\uc11c -TS092 = (\ub0a8\uc740 \uae30\uac04 -TS093 = \uc77c)\uc5d0 \ub9cc\ub8cc \uc608\uc815\uc785\ub2c8\ub2e4.\n -TS094 = \uc778\uc99d\uc11c\ub97c \ubc1c\uae09\ubc1b\uc740 \uae30\uad00\uc758 \uc778\uc99d\uc13c\ud130\uc5d0\uc11c \uc778\uc99d\uc11c\ub97c \uac31\uc2e0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. - -TS095 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.
              \uacc4\uc18d \uc9c4\ud589\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? - -TS096 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikeynx) - -TS097 = \uc704\uce58 - -ES001 = Certificate Password\uac00 Change\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES002 = Certificate Password\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ES003 = Certificate\ub97c \uba3c\uc800 \uc120\ud0dd\ud558\uc138\uc694. -ES004 = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 Certificate\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ES005 = \ucc98\ub9ac \uacfc\uc815 \uc911 Error\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ES006 = Certificate Password\ub97c Input\ud574\uc8fc\uc138\uc694. -ES007 = Certificate Password\ub294 \ubb38\uc790, \uc22b\uc790, \ud2b9\uc218\ubb38\uc790\uc758 \uc870\ud569\uc73c\ub85c 8\uc790\ub9ac \uc774\uc0c1 Input\ud574\uc8fc\uc138\uc694. -ES008 = New Password\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES009 = Certificate\uac00 Delete\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES010 = \uc800\uc7a5 Storage\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ES011 = \ubcf4\uc548\ud1a0\ud070 Certificate \uc800\uc7a5\uac1c\uc218\ub97c \ucd08\uacfc \ud558\uc600\uc2b5\ub2c8\ub2e4. \ubcf4\uc548\ud1a0\ud070\uc758 Certificate\ub97c Delete \ud6c4 \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694. -ES012 = Certificate Import\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES013 = Certificate Export\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES014 = \ub85c Certificate\uac00 Copy\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES015 = New Password\ub97c Input\ud574 \uc8fc\uc138\uc694. -ES016 = New Password Confirm\uc744 Input\ud574 \uc8fc\uc138\uc694. -ES017 = Certificate Delete\uc5d0 failure\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES018 = \ub85c Certificate Copy\uc5d0 failure\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES019 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. -ES020 = Certificate Export\ub97c failure\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES021 = Selected Certificate\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
              Certificate\ub97c \uc120\ud0dd \ud574 \uc8fc\uc138\uc694. -ES022 = \uac1c\uc778\uc2dd\ubcc4 \uac12\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES023 = Certificate \uc800\uc7a5\uc5d0 failure\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES024 = Certificate \uc11c\uba85Error \uc785\ub2c8\ub2e4. -ES025 = Certificate \ubaa9\ub85d\uc870\ud68c Error \uc785\ub2c8\ub2e4. -ES026 = \ubcf4\uc548\ud1a0\ud070 \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES027 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc744 \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES028 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES029 = \uc778\uc99d\uc11c \ub610\ub294 \uac1c\uc778\ud0a4 \ud615\uc2dd\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES030 = \uc778\uc99d\uc11c \ub85c\uadf8\uc778\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              \ub2e4\uc2dc \uc2dc\ub3c4\ud574 \uc8fc\uc138\uc694. -ES031 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES032 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \uc7a0\uacbc\uc2b5\ub2c8\ub2e4. -ES033 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES034 = \uc0ac\uc6a9\uc790\uac00 \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES035 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES036 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES037 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \ubaa8\ub4c8 \uac80\uc99d\uc774 \uc2e4\ud328 \ud558\uc600\uc2b5\ub2c8\ub2e4.\n\uacc4\uc18d \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES038 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES039 = \uc0ac\uc6a9\uc790\uac00 \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0)\uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES040 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES041 = IE9 \uc774\ud558\uc5d0\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uae30\ub2a5\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \n\uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\ud558\ub4dc\ub514\uc2a4\ud06c/\uc774\ub3d9\uc2dd \ubc84\ud2bc\uc744 \uc120\ud0dd\ud558\uc5ec \uc774\uc6a9\ud574\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ES042 = \ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud558\uc2dc\uc624. -ES043 = * \uc790\uc138\ud55c \uc815\ubcf4\ub294 \uc778\uc99d\uae30\uad00\uc758 \uc124\uba85\uc744 \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. -ES044 = \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824 \uc8fc\uc138\uc694. -ES045 = \uc120\ud0dd\ub41c \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c -ES046 = MagicLine \ud504\ub85c\uadf8\ub7a8\uc744 \uc124\uce58\ud569\ub2c8\ub2e4. -ES047 = MagicLine \uc124\uce58 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. -ES048 = \ucd5c\uc2e0 \ubc84\uc804\uc758 MagicLine\uc774 \uc544\ub2d9\ub2c8\ub2e4.
              \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c \uc124\uce58\ud569\ub2c8\ub2e4. -ES049 =
              \uc124\uce58 \ud6c4 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud558\uba74 \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucde8\uc18c\uc2dc \ub514\uc2a4\ud06c,\ubcf4\uc548\ub9e4\uccb4\ub97c \uc774\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. - -ES050 = Certificate Password\ub294 \ub3d9\uc77c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES051 = Certificate Password\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES052 = Certificate Password\ub294 \uc601\ubb38\uc744 \ud3ec\ud568\ud55c 2\uac1c \uc774\uc0c1\uc758 \ubb38\uc790 \ud0c0\uc785\uc73c\ub85c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. - -ES053 = \uae08\uc735\uc778\uc99d\uc11c load\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES054 = \uae08\uc735\uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c Error\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES080 = SelectStorageInfo \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES081 = \uacf5\ub3d9\uc800\uc7a5\uc18c \ucd08\uae30\ud654 \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES082 = \uacf5\ub3d9\uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ES083 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc800\uc7a5\ub418\uc5b4 \uc788\ub294
              \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES084 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub97c \ube0c\ub77c\uc6b0\uc800\ub85c \ubcf5\uc0ac\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES121 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc5f0\uc18d\uc73c\ub85c \ud2c0\ub9b4\uacbd\uc6b0 \uc778\uc99d\uc11c \uc120\ud0dd\ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4.
              \ud604\uc7ac\ub0a8\uc740 \uc2dc\ub3c4 \ud69f\uc218\ub294 count\ud68c \uc785\ub2c8\ub2e4. -ES122 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc2e4\ud328\uc2dc \ud574\ub2f9 \uc778\uc99d\uc11c\ub97c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4
              (\ud604\uc7ac count\ud68c \uc624\ub958)
              -ES123 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub97c count\ud68c\ud2c0\ub824
              \ud574\ub2f9 \uc778\uc99d\uc11c \uc0ac\uc6a9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES124 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 \uc785\ub825 \ud69f\uc218 count_limit\ud68c\ub97c \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c \uc120\ud0dd \ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4. - -ER100 = \ud574\ub2f9 Field\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. Please Confirm. -ER101 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 Storage \uc785\ub2c8\ub2e4. -ER102 = Storage \uc124\uc815\uac12\uc744 Confirm\ud574 \uc8fc\uc138\uc694. -ER103 = callback \uac12\uc774 null\uc774\uac70\ub098 \ud568\uc218\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ER104 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ud568\uc218 \uc785\ub2c8\ub2e4. -ER105 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5 \uc785\ub2c8\ub2e4. -ER106 = PFX \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ER107 = \ud574\ub2f9 \uc778\uc99d\uc11c \ubaa9\ub85d \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ER108 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER109 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER110 = PFX \uc778\uc99d\uc11c \ubaa9\ub85d\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -ER111 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud30c\uc77c(*.der) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER112 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud0a4 \ud30c\uc77c(*.key) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER113 = \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER114 = \uc778\uc99d\uc11c *.der, *.key\uc744 \uac19\uc774 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER115 = \ud55c\uc30d\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER116 = \uc778\uc99d\uc11c\uc640 \ud0a4\ud30c\uc77c\uc744 \uac01\uac01 1\uac1c\uc529 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER117 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER118 = \uc778\uc99d\uc11c\uc5d0 \ub9de\ub294 \ud0a4\ud30c\uc77c\uc744 \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER119 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER120 = \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 \ubc84\ud2bc\uc744 \ub2e4\uc2dc \ud074\ub9ad\ud558\uc5ec \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER121 = \ud558\ub098\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER122 = \uc778\uc99d\uc11c \ud30c\uc77c\uc744 \uc120\ud0dd\ud574 \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER201 = Information \uc870\ud68c Error\uc785\ub2c8\ub2e4. -ER202 = \ube44\uc5b4\uc788\ub294 Data\uc785\ub2c8\ub2e4. -ER204 = \ud574\ub2f9 Certificate\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ER205 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc11c\uba85\uc6a9 \uc778\uc99d\uc11c\uc640 \ud568\uaed8 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER206 = \ud55c \uc30d \ub610\ub294 \ub450 \uc30d\uc758 \uc778\uc99d\uc11c\ub97c \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER300 = \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc778\uc99d\uc11c \ubcf5\uc0ac\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              (\uc815\ucc45\uc0c1 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc544 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc5c6\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.) -ER888 = try catch Exeption -ER999 = \ud558\uc704 \ub808\uc774\uc5b4 \ud568\uc218 Error -ER401 = Password Error \uc785\ub2c8\ub2e4. -ER402 = PIN \ubc88\ud638 Error \uc785\ub2c8\ub2e4. -ER411 = Certificate\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ER412 = \ub4dc\ub77c\uc774\ube0c\uba85 Error \uc785\ub2c8\ub2e4. -ER413 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ubbf8\ub514\uc5b4 \uc785\ub2c8\ub2e4. -ER492 = JS ToolkitError \uc785\ub2c8\ub2e4. -ER494 = C Toolkit Error \uc785\ub2c8\ub2e4. - -#oid \uc815\uc758 -OID_1_2_410_100001_2_1_1=\uc804\uc790\uad00\uc778 -OID_1_2_410_100001_2_1_2=\ucef4\ud4e8\ud130 -OID_1_2_410_100001_2_1_3=\uc804\uc790\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_2_1_4=\uc804\uc790\uad00\uc778(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_5=\ucef4\ud4e8\ud130(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_2_1=\uacf5\ubb34\uc6d0\uc6a9 -OID_1_2_410_100001_2_2_2=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_1=\uc804\uc790\uad00\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_3=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_5_3_1_7=\ucef4\ud4e8\ud130\uc6a9 -OID_1_2_410_100001_5_3_1_9=SSL\uc6a9 -OID_1_2_410_200004_5_1_1_1=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778) -OID_1_2_410_200004_5_1_1_2=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778\uc11c\ubc84) -OID_1_2_410_200004_5_1_1_3=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \ubc95\uc778) -OID_1_2_410_200004_5_1_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uc11c\ubc84) -OID_1_2_410_200004_5_1_1_5=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_1_1_6=\ubc94\uc6a9\uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_7=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_1_1_8=\ubc94\uc6a9\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_9=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_1_1_9_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_1_1_10=\uace8\ub4dc \uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_11=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_1_1_12=\uad6d\uc138\uccad\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_1=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_2_1_2=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_2_1_3=\ud2b9\ubcc4\ub4f1\uae09(\uc804\uc790\uc785\ucc30) -OID_1_2_410_200004_5_2_1_4=1\ub4f1\uae09Certificate(\uc11c\ubc84) -OID_1_2_410_200004_5_2_1_5=\ud2b9\ubcc4\ub4f1\uae09 \ubc95\uc778 -OID_1_2_410_200004_5_2_1_5_140=\uc6a9\ub3c4\uc81c\ud55c(NEIS) -OID_1_2_410_200004_5_2_1_5_407=\uac74\uac15\ubcf4\ud5d8\uc2ec\uc0ac\ud3c9\uac00\uc6d0 \uc5c5\ubb34\uc804\uc6a9 Certificate -OID_1_2_410_200004_5_2_1_6=\uc6a9\ub3c4\uc81c\ud55c(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_7_1=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_2_1_7_2=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_2_1_7_3=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_2_1_5001=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778,\ubc95\uc778) -OID_1_2_410_200004_5_3_1_1=1\ub4f1\uae09(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_2=\ubc94\uc6a9\ubc95\uc778 -OID_1_2_410_200004_5_3_1_3=1\ub4f1\uae09(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_3_1_7=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_8=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_9=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_1=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_2=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_4_1_3=\ubc94\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_4_1_4=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_4_1_101=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_4_1_102=\uc99d\uad8c\uac70\ub798\uc6a9 -OID_1_2_410_200004_5_4_1_103=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_4_1_104=\uc804\uc790\ubbfc\uc6d0\uc6a9 -OID_1_2_410_200004_5_4_1_74=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_2_52=\uad6d\uc138\uccad\uc6a9 -OID_1_2_410_200004_5_5_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_2=\ubc94\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_3_1=\uc81c\ud734\uae30\uad00\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_4_1=\uc81c\ud734\uae30\uad00\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_4_2=\uc804\uc790\uc138\uae08\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_2=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_3=\uc11c\ubc84\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -#OID_1_2_410_200005_1_1_4=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_4=\uc740\ud589(\uac1c\uc778) -OID_1_2_410_200005_1_1_5=\ubc94\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6=\uc6a9\ub3c4\uc81c\ud55c\uc6a9 -OID_1_2_410_200005_1_1_6_1=\uae30\uc5c5\ubc45\ud0b9\uc6a9 -OID_1_2_410_200005_1_1_6_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200005_1_1_6_3=\uc870\ub2ec\uccad \uc6d0\ud074\ub9ad\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_4=\ud1f4\uc9c1\uc5f0\uae08 -OID_1_2_410_200005_1_1_6_5=\uc7ac\uc815\uacbd\uc81c\ubd80 CTR\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_8=\uae08\uc735\uacb0\uc81c\uc6d0(\uc804\uc790\uc138\uae08\uc6a9) -OID_1_2_410_200005_1_1_6_9=\uc0ac\uc124 -OID_1_2_410_200004_2_1=\uc778\uc99d\uae30\uad00 -OID_1_2_410_200012_1_1_1=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_2=\uc804\uc790\uac70\ub798 Password\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_3=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_4=\uc804\uc790\uac70\ub798 Password\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_5=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_6=\uc804\uc790\uac70\ub798 Password\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_7=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_8=\uc804\uc790\ubb34\uc5ed Password\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_9=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_10=\uc804\uc790\ubb34\uc5ed Password\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_11=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_12=\uc804\uc790\ubb34\uc5ed Password\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_101=\uc740\ud589/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_103=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_105=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200006_2_1=\uad6d\ubc29\uacf5\ubb34\uc6d0 -OID_1_2_410_200057_2_1_1=KEI/\uc5c5\ubb34\uc6a9 -OID_1_2_3_4_5=\ub9e4\uc9c1\uac00\ub4dc -OID_1_2_410_200057_2_5=\ud558\uc774\ud3ec\ud0c8 -OID_1_2_410_200057_2_6=\ud3ec\ud0c8\ub85c\uadf8\uc778 -OID_2_5_29_32_0=\ubaa8\ub4e0 \ubc1c\uae09 \uc815\ucc45 -OID_personal=\ubc94\uc6a9(\uac1c\uc778) -OID_personalb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uac1c\uc778) -OID_corporation4ec=\ubc94\uc6a9(\uae30\uc5c5) -OID_corporation4ecb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uae30\uc5c5) - -digitalSignature=\uc804\uc790\uc11c\uba85 -nonRepudiation=\ubd80\uc778\ubc29\uc9c0 -keyEncipherment=\ud0a4Password\ud654 \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_ko.properties b/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_ko.properties deleted file mode 100644 index ededae41..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_ko.properties +++ /dev/null @@ -1,337 +0,0 @@ -# This line is ignored by the plugin -TS000 = \uc778\uc99d\uc11c \uc120\ud0dd\ucc3d -TS001 = \uc778\uc99d\uc11c \uc120\ud0dd -TS002 = \uac80\uc0c9\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -TS003 = \uc778\uc99d\uc11c \uc554\ud638 -TS004 = \ubcf4\uc548\ud1a0\ud070 \uc554\ud638 -TS005 = \uc778\uc99d\uc11c \ucc3e\uae30 -TS006 = \uc778\uc99d\uc11c \ubcf4\uae30 -TS007 = \uc778\uc99d\uc11c \uc554\ud638\ubcc0\uacbd -TS008 = \uc778\uc99d\uc11c \uc0ad\uc81c -TS010 = \uc774\uc804 \uc554\ud638 -TS011 = \uc0c8 \uc554\ud638 -TS012 = \uc0c8 \uc554\ud638 \ud655\uc778 -TS013 = \uc778\uc99d\uc11c \uc0ad\uc81c -TS014 = \ud655\uc778 -TS015 = \ucde8\uc18c -TS016 = \uc0ad\uc81c -TS017 = \uc778\uc99d\uc11c \ubcf4\uae30 -TS018 = \uc694\uc57d -TS019 = \uc790\uc138\ud788 -TS020 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -TS021 = \uc778\uc99d\uc11c \uc554\ud638\ubcc0\uacbd\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -TS022 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c -TS023 = \uc778\uc99d\uc11c \uad00\ub9ac -TS024 = \uc778\uc99d\uc11c \ubcf5\uc0ac -TS025 = \uc778\uc99d\uc11c \ubcf4\uae30 -TS026 = \uc778\uc99d\uc11c \uc0ad\uc81c -TS028 = \uac00\uc838\uc624\uae30 -TS029 = \ub0b4\ubcf4\ub0b4\uae30 -TS030 = \ub2eb\uae30 -TS031 = \uc778\uc99d\uc11c\ub97c \uc800\uc7a5\ud560 \ub9e4\uccb4\ub97c \uc120\ud0dd \ud574\uc8fc\uc138\uc694. -TS032 = \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 -TS033 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30 -TS034 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub85c \uc11c\uba85 - -TS035 = \ube0c\ub77c\uc6b0\uc800\ub85c \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 -TS036 = \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 -TS037 = \ubcf4\uc548 \ud1a0\ud070 \ube44\ubc00\ubc88\ud638 \uc785\ub825 -TS038 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 \uc785\ub825 -TS039 = \ud504\ub85c\uadf8\ub7a8 \uc124\uce58 \uc548\ub0b4 -TS040 = \ud504\ub85c\uadf8\ub7a8 \uc5c5\ub370\uc774\ud2b8 - -#\ube0c\ub77c\uc6b0\uc800 -TS701 = -#PFX \ucc3e\uae30 -TS702 = -#\ub514\uc2a4\ud06c -TS703 = -#\uc548\uc804\ub514\uc2a4\ud06c -TS704 = -#\ubcf4\uc548\ud1a0\ud070 -TS705 = -#\ud734\ub300\uc804\ud654 -TS706 = -#\uc2a4\ub9c8\ud2b8\uc778\uc99d -TS707 = -#\ud074\ub77c\uc6b0\ub4dc -TS708 = - -TS041 = \ubcf4\uc548\ub514\uc2a4\ud06c \uc554\ud638 -TS042 = \uc54c\ub9bc -TS043 = \uc624\ub958 -TS044 = \uc778\uc99d\uc11c \uc815\ubcf4 - -TS045 = \ud544\ub4dc -TS046 = \ub0b4\uc6a9 -TS047 = \ubc84\uc804 -TS048 = \uc77c\ub828\ubc88\ud638 -TS049 = \ubc1c\ud589\uc790 -TS050 = \uc720\ud6a8\uae30\uac04(\uc2dc\uc791) -TS051 = \uc720\ud6a8\uae30\uac04(\ub05d) -TS052 = \uc8fc\uccb4 -TS053 = \ud0a4\uc0ac\uc6a9 -TS054 = \uc778\uc99d\uc11c \uc815\ucc45 -TS055 = \uc8fc\uccb4\ub300\uccb4 \uc774\ub984 -TS056 = CRL \ubc30\ud3ec\uc9c0\uc810 -TS057 = \uae30\uad00\uc815\ubcf4\uc9c0\uc810 -TS058 = \uc11c\uba85\uc54c\uace0\ub9ac\uc998 -TS059 = \uc18c\uc720\uc790\uba85 -TS060 = \uc6a9\ub3c4 -TS061 = \ubc1c\uae09\uae30\uad00 -TS062 = \ub9cc\ub8cc\uc77c -TS063 = \ubc1c\uae09\uc790 -TS064 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikey) -TS065 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) -TS066 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 -TS067 = \uc778\uc99d\uc11c\ud30c\uc77c \uacbd\ub85c -TS068 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 -TS069 = \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc778\uc99d\uc11c \uc800\uc7a5 -TS070 = \uc124\uce58 -TS071 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c -TS072 = \ud0c0\uc785 -TS073 = \uc77c\ubc18 -TS074 = \uc790\uc138\ud788 -TS075 = \uc0ac\uc6a9\uc790 \uc54c\ub9bc : -TS076 = \ubc1c\uae09\ub300\uc0c1 -TS077 = \uacf5\uac1c\ud0a4 -TS078 = \uae30\uad00\ud0a4 \uc2dd\ubcc4\uc790 -TS079 = \uc778\uc99d\uc11c\uc758 \uc6a9\ub3c4 -TS080 = \uc720\ud6a8\uae30\uac04 -TS081 = \ubd80\ud130 -TS082 = \uae4c\uc9c0 -TS083 = \uad6c\ubd84 -TS084 = \uc9c0\uc6d0\ub9e4\uccb4\uc5c6\uc74c -TS085 = \uc778\uc99d\uc11c \uc800\uc7a5 -TS086 = \uc778\uc99d\uc11c \uc800\uc7a5 \uc704\uce58 -TS087 = \ube0c\ub77c\uc6b0\uc800 -TS088 = \uc120\ud0dd\ub41c PFX \uc778\uc99d\uc11c -TS089 = \uc120\ud0dd\ub41c P12 \uc778\uc99d\uc11c -TS090 = PFX \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 - -TS091 = \uc120\ud0dd\ud558\uc2e0 \uc778\uc99d\uc11c\ub294 -TS092 = (\ub0a8\uc740 \uae30\uac04 -TS093 = \uc77c)\uc5d0 \ub9cc\ub8cc \uc608\uc815\uc785\ub2c8\ub2e4.\n -TS094 = \uc778\uc99d\uc11c\ub97c \ubc1c\uae09\ubc1b\uc740 \uae30\uad00\uc758 \uc778\uc99d\uc13c\ud130\uc5d0\uc11c \uc778\uc99d\uc11c\ub97c \uac31\uc2e0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. - -TS095 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.
              \uacc4\uc18d \uc9c4\ud589\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? - -TS096 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikeynx) - -TS097 = \uc704\uce58 - -ES001 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES002 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ES003 = \uc778\uc99d\uc11c\ub97c \uba3c\uc800 \uc120\ud0dd\ud558\uc138\uc694. -ES004 = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ES005 = \ucc98\ub9ac \uacfc\uc815 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ES006 = \uc778\uc99d\uc11c \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES007 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub294 \ubb38\uc790, \uc22b\uc790, \ud2b9\uc218\ubb38\uc790\uc758 \uc870\ud569\uc73c\ub85c 8\uc790\ub9ac \uc774\uc0c1 \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES008 = \uc0c8 \uc554\ud638\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES009 = \uc778\uc99d\uc11c\uac00 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES010 = \uc800\uc7a5 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ES011 = \ubcf4\uc548\ud1a0\ud070 \uc778\uc99d\uc11c \uc800\uc7a5\uac1c\uc218\ub97c \ucd08\uacfc \ud558\uc600\uc2b5\ub2c8\ub2e4. \ubcf4\uc548\ud1a0\ud070\uc758 \uc778\uc99d\uc11c\ub97c \uc0ad\uc81c \ud6c4 \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694. -ES012 = \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES013 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES014 = \ub85c \uc778\uc99d\uc11c\uac00 \ubcf5\uc0ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES015 = \uc0c8 \uc554\ud638\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694. -ES016 = \uc0c8 \uc554\ud638 \ud655\uc778\uc744 \uc785\ub825\ud574 \uc8fc\uc138\uc694. -ES017 = \uc778\uc99d\uc11c \uc0ad\uc81c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES018 = \ub85c \uc778\uc99d\uc11c \ubcf5\uc0ac\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES019 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. -ES020 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES021 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c\ub97c \uc120\ud0dd \ud574 \uc8fc\uc138\uc694. -ES022 = \uac1c\uc778\uc2dd\ubcc4 \uac12\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES023 = \uc778\uc99d\uc11c \uc800\uc7a5\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES024 = \uc778\uc99d\uc11c \uc11c\uba85\uc624\ub958 \uc785\ub2c8\ub2e4. -ES025 = \uc778\uc99d\uc11c \ubaa9\ub85d\uc870\ud68c \uc624\ub958 \uc785\ub2c8\ub2e4. -ES026 = \ubcf4\uc548\ud1a0\ud070 \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES027 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc744 \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES028 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES029 = \uc778\uc99d\uc11c \ub610\ub294 \uac1c\uc778\ud0a4 \ud615\uc2dd\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES030 = \uc778\uc99d\uc11c \ub85c\uadf8\uc778\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              \ub2e4\uc2dc \uc2dc\ub3c4\ud574 \uc8fc\uc138\uc694. -ES031 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES032 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \uc7a0\uacbc\uc2b5\ub2c8\ub2e4. -ES033 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES034 = \uc0ac\uc6a9\uc790\uac00 \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES035 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES036 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES037 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \ubaa8\ub4c8 \uac80\uc99d\uc774 \uc2e4\ud328 \ud558\uc600\uc2b5\ub2c8\ub2e4.\n\uacc4\uc18d \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES038 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES039 = \uc0ac\uc6a9\uc790\uac00 \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0)\uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES040 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES041 = IE9 \uc774\ud558\uc5d0\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uae30\ub2a5\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \n\uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\ud558\ub4dc\ub514\uc2a4\ud06c/\uc774\ub3d9\uc2dd \ubc84\ud2bc\uc744 \uc120\ud0dd\ud558\uc5ec \uc774\uc6a9\ud574\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ES042 = \ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud558\uc2dc\uc624. -ES043 = * \uc790\uc138\ud55c \uc815\ubcf4\ub294 \uc778\uc99d\uae30\uad00\uc758 \uc124\uba85\uc744 \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. -ES044 = \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824 \uc8fc\uc138\uc694. -ES045 = \uc120\ud0dd\ub41c \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c -ES046 = MagicLine \ud504\ub85c\uadf8\ub7a8\uc744 \uc124\uce58\ud569\ub2c8\ub2e4. -ES047 = MagicLine \uc124\uce58 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. -ES048 = \ucd5c\uc2e0 \ubc84\uc804\uc758 MagicLine\uc774 \uc544\ub2d9\ub2c8\ub2e4.
              \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c \uc124\uce58\ud569\ub2c8\ub2e4. -ES049 =
              \uc124\uce58 \ud6c4 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud558\uba74 \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucde8\uc18c\uc2dc \ub514\uc2a4\ud06c,\ubcf4\uc548\ub9e4\uccb4\ub97c \uc774\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. - -ES050 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \ub3d9\uc77c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES051 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES052 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \uc601\ubb38\uc744 \ud3ec\ud568\ud55c 2\uac1c \uc774\uc0c1\uc758 \ubb38\uc790 \ud0c0\uc785\uc73c\ub85c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. - -ES053 = \uae08\uc735\uc778\uc99d\uc11c \ub85c\ub4dc\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES054 = \uae08\uc735\uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES080 = SelectStorageInfo \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES081 = \uacf5\ub3d9\uc800\uc7a5\uc18c \ucd08\uae30\ud654 \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES082 = \uacf5\ub3d9\uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ES083 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc800\uc7a5\ub418\uc5b4 \uc788\ub294
              \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES084 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub97c \ube0c\ub77c\uc6b0\uc800\ub85c \ubcf5\uc0ac\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES121 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc5f0\uc18d\uc73c\ub85c \ud2c0\ub9b4\uacbd\uc6b0 \uc778\uc99d\uc11c \uc120\ud0dd\ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4.
              \ud604\uc7ac\ub0a8\uc740 \uc2dc\ub3c4 \ud69f\uc218\ub294 count\ud68c \uc785\ub2c8\ub2e4. -ES122 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc2e4\ud328\uc2dc \ud574\ub2f9 \uc778\uc99d\uc11c\ub97c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4
              (\ud604\uc7ac count\ud68c \uc624\ub958)
              -ES123 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub97c count\ud68c\ud2c0\ub824
              \ud574\ub2f9 \uc778\uc99d\uc11c \uc0ac\uc6a9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES124 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 \uc785\ub825 \ud69f\uc218 count_limit\ud68c\ub97c \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c \uc120\ud0dd \ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4. - -ER100 = \ud574\ub2f9 \ud544\ub4dc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ud655\uc778\ud574 \uc8fc\uc138\uc694. -ER101 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc800\uc7a5\ub9e4\uccb4 \uc785\ub2c8\ub2e4. -ER102 = \uc800\uc7a5\ub9e4\uccb4 \uc124\uc815\uac12\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. -ER103 = callback \uac12\uc774 null\uc774\uac70\ub098 \ud568\uc218\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ER104 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ud568\uc218 \uc785\ub2c8\ub2e4. -ER105 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5 \uc785\ub2c8\ub2e4. -ER106 = PFX \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ER107 = \ud574\ub2f9 \uc778\uc99d\uc11c \ubaa9\ub85d \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ER108 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER109 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER110 = PFX \uc778\uc99d\uc11c \ubaa9\ub85d\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -ER111 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud30c\uc77c(*.der) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER112 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud0a4 \ud30c\uc77c(*.key) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER113 = \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER114 = \uc778\uc99d\uc11c *.der, *.key\uc744 \uac19\uc774 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER115 = \ud55c\uc30d\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER116 = \uc778\uc99d\uc11c\uc640 \ud0a4\ud30c\uc77c\uc744 \uac01\uac01 1\uac1c\uc529 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER117 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER118 = \uc778\uc99d\uc11c\uc5d0 \ub9de\ub294 \ud0a4\ud30c\uc77c\uc744 \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER119 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER120 = \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 \ubc84\ud2bc\uc744 \ub2e4\uc2dc \ud074\ub9ad\ud558\uc5ec \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER121 = \ud558\ub098\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER122 = \uc778\uc99d\uc11c \ud30c\uc77c\uc744 \uc120\ud0dd\ud574 \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER201 = \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uc785\ub2c8\ub2e4. -ER202 = \ube44\uc5b4\uc788\ub294 \ub370\uc774\ud130\uc785\ub2c8\ub2e4. -ER204 = \ud574\ub2f9 \uc778\uc99d\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ER205 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc11c\uba85\uc6a9 \uc778\uc99d\uc11c\uc640 \ud568\uaed8 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER206 = \ud55c \uc30d \ub610\ub294 \ub450 \uc30d\uc758 \uc778\uc99d\uc11c\ub97c \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER300 = \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc778\uc99d\uc11c \ubcf5\uc0ac\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              (\uc815\ucc45\uc0c1 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc544 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc5c6\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.) -ER888 = try catch Exeption -ER999 = \ud558\uc704 \ub808\uc774\uc5b4 \ud568\uc218 \uc5d0\ub7ec -ER401 = \ube44\ubc00\ubc88\ud638 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER402 = PIN \ubc88\ud638 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER411 = \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ER412 = \ub4dc\ub77c\uc774\ube0c\uba85 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER413 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ubbf8\ub514\uc5b4 \uc785\ub2c8\ub2e4. -ER492 = JS Toolkit\uc624\ub958 \uc785\ub2c8\ub2e4. -ER494 = C Toolkit \uc624\ub958 \uc785\ub2c8\ub2e4. - -#oid \uc815\uc758 -OID_1_2_410_100001_2_1_1=\uc804\uc790\uad00\uc778 -OID_1_2_410_100001_2_1_2=\ucef4\ud4e8\ud130 -OID_1_2_410_100001_2_1_3=\uc804\uc790\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_2_1_4=\uc804\uc790\uad00\uc778(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_5=\ucef4\ud4e8\ud130(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_2_1=\uacf5\ubb34\uc6d0\uc6a9 -OID_1_2_410_100001_2_2_2=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_1=\uc804\uc790\uad00\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_3=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_5_3_1_7=\ucef4\ud4e8\ud130\uc6a9 -OID_1_2_410_100001_5_3_1_9=SSL\uc6a9 -OID_1_2_410_200004_5_1_1_1=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778) -OID_1_2_410_200004_5_1_1_2=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778\uc11c\ubc84) -OID_1_2_410_200004_5_1_1_3=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \ubc95\uc778) -OID_1_2_410_200004_5_1_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uc11c\ubc84) -OID_1_2_410_200004_5_1_1_5=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_1_1_6=\ubc94\uc6a9\uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_7=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_1_1_8=\ubc94\uc6a9\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_9=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_1_1_9_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_1_1_10=\uace8\ub4dc \uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_11=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_1_1_12=\uad6d\uc138\uccad\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_1=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_2_1_2=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_2_1_3=\ud2b9\ubcc4\ub4f1\uae09(\uc804\uc790\uc785\ucc30) -OID_1_2_410_200004_5_2_1_4=1\ub4f1\uae09\uc778\uc99d\uc11c(\uc11c\ubc84) -OID_1_2_410_200004_5_2_1_5=\ud2b9\ubcc4\ub4f1\uae09 \ubc95\uc778 -OID_1_2_410_200004_5_2_1_5_140=\uc6a9\ub3c4\uc81c\ud55c(NEIS) -OID_1_2_410_200004_5_2_1_5_407=\uac74\uac15\ubcf4\ud5d8\uc2ec\uc0ac\ud3c9\uac00\uc6d0 \uc5c5\ubb34\uc804\uc6a9 \uc778\uc99d\uc11c -OID_1_2_410_200004_5_2_1_6=\uc6a9\ub3c4\uc81c\ud55c(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_7_1=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_2_1_7_2=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_2_1_7_3=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_2_1_5001=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778,\ubc95\uc778) -OID_1_2_410_200004_5_3_1_1=1\ub4f1\uae09(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_2=\ubc94\uc6a9\ubc95\uc778 -OID_1_2_410_200004_5_3_1_3=1\ub4f1\uae09(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_3_1_7=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_8=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_9=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_1=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_2=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_4_1_3=\ubc94\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_4_1_4=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_4_1_101=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_4_1_102=\uc99d\uad8c\uac70\ub798\uc6a9 -OID_1_2_410_200004_5_4_1_103=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_4_1_104=\uc804\uc790\ubbfc\uc6d0\uc6a9 -OID_1_2_410_200004_5_4_1_74=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_2_52=\uad6d\uc138\uccad\uc6a9 -OID_1_2_410_200004_5_5_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_2=\ubc94\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_3_1=\uc81c\ud734\uae30\uad00\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_4_1=\uc81c\ud734\uae30\uad00\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_4_2=\uc804\uc790\uc138\uae08\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_2=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_3=\uc11c\ubc84\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -#OID_1_2_410_200005_1_1_4=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_4=\uc740\ud589(\uac1c\uc778) -OID_1_2_410_200005_1_1_5=\ubc94\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6=\uc6a9\ub3c4\uc81c\ud55c\uc6a9 -OID_1_2_410_200005_1_1_6_1=\uae30\uc5c5\ubc45\ud0b9\uc6a9 -OID_1_2_410_200005_1_1_6_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200005_1_1_6_3=\uc870\ub2ec\uccad \uc6d0\ud074\ub9ad\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_4=\ud1f4\uc9c1\uc5f0\uae08 -OID_1_2_410_200005_1_1_6_5=\uc7ac\uc815\uacbd\uc81c\ubd80 CTR\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_8=\uae08\uc735\uacb0\uc81c\uc6d0(\uc804\uc790\uc138\uae08\uc6a9) -OID_1_2_410_200005_1_1_6_9=\uc0ac\uc124 -OID_1_2_410_200004_2_1=\uc778\uc99d\uae30\uad00 -OID_1_2_410_200012_1_1_1=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_2=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_3=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_4=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_5=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_6=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_7=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_8=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_9=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_10=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_11=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_12=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_101=\uc740\ud589/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_103=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_105=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200006_2_1=\uad6d\ubc29\uacf5\ubb34\uc6d0 -OID_1_2_410_200057_2_1_1=KEI/\uc5c5\ubb34\uc6a9 -OID_1_2_3_4_5=\ub9e4\uc9c1\uac00\ub4dc -OID_1_2_410_200057_2_5=\ud558\uc774\ud3ec\ud0c8 -OID_1_2_410_200057_2_6=\ud3ec\ud0c8\ub85c\uadf8\uc778 -OID_2_5_29_32_0=\ubaa8\ub4e0 \ubc1c\uae09 \uc815\ucc45 -OID_personal=\ubc94\uc6a9(\uac1c\uc778) -OID_personalb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uac1c\uc778) -OID_corporation4ec=\ubc94\uc6a9(\uae30\uc5c5) -OID_corporation4ecb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uae30\uc5c5) - -digitalSignature=\uc804\uc790\uc11c\uba85 -nonRepudiation=\ubd80\uc778\ubc29\uc9c0 -keyEncipherment=\ud0a4\uc554\ud638\ud654 \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_ko_KR.properties b/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_ko_KR.properties deleted file mode 100644 index ededae41..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/message/Messages_ko_KR.properties +++ /dev/null @@ -1,337 +0,0 @@ -# This line is ignored by the plugin -TS000 = \uc778\uc99d\uc11c \uc120\ud0dd\ucc3d -TS001 = \uc778\uc99d\uc11c \uc120\ud0dd -TS002 = \uac80\uc0c9\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -TS003 = \uc778\uc99d\uc11c \uc554\ud638 -TS004 = \ubcf4\uc548\ud1a0\ud070 \uc554\ud638 -TS005 = \uc778\uc99d\uc11c \ucc3e\uae30 -TS006 = \uc778\uc99d\uc11c \ubcf4\uae30 -TS007 = \uc778\uc99d\uc11c \uc554\ud638\ubcc0\uacbd -TS008 = \uc778\uc99d\uc11c \uc0ad\uc81c -TS010 = \uc774\uc804 \uc554\ud638 -TS011 = \uc0c8 \uc554\ud638 -TS012 = \uc0c8 \uc554\ud638 \ud655\uc778 -TS013 = \uc778\uc99d\uc11c \uc0ad\uc81c -TS014 = \ud655\uc778 -TS015 = \ucde8\uc18c -TS016 = \uc0ad\uc81c -TS017 = \uc778\uc99d\uc11c \ubcf4\uae30 -TS018 = \uc694\uc57d -TS019 = \uc790\uc138\ud788 -TS020 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -TS021 = \uc778\uc99d\uc11c \uc554\ud638\ubcc0\uacbd\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -TS022 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c -TS023 = \uc778\uc99d\uc11c \uad00\ub9ac -TS024 = \uc778\uc99d\uc11c \ubcf5\uc0ac -TS025 = \uc778\uc99d\uc11c \ubcf4\uae30 -TS026 = \uc778\uc99d\uc11c \uc0ad\uc81c -TS028 = \uac00\uc838\uc624\uae30 -TS029 = \ub0b4\ubcf4\ub0b4\uae30 -TS030 = \ub2eb\uae30 -TS031 = \uc778\uc99d\uc11c\ub97c \uc800\uc7a5\ud560 \ub9e4\uccb4\ub97c \uc120\ud0dd \ud574\uc8fc\uc138\uc694. -TS032 = \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 -TS033 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30 -TS034 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub85c \uc11c\uba85 - -TS035 = \ube0c\ub77c\uc6b0\uc800\ub85c \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 -TS036 = \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 -TS037 = \ubcf4\uc548 \ud1a0\ud070 \ube44\ubc00\ubc88\ud638 \uc785\ub825 -TS038 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 \uc785\ub825 -TS039 = \ud504\ub85c\uadf8\ub7a8 \uc124\uce58 \uc548\ub0b4 -TS040 = \ud504\ub85c\uadf8\ub7a8 \uc5c5\ub370\uc774\ud2b8 - -#\ube0c\ub77c\uc6b0\uc800 -TS701 = -#PFX \ucc3e\uae30 -TS702 = -#\ub514\uc2a4\ud06c -TS703 = -#\uc548\uc804\ub514\uc2a4\ud06c -TS704 = -#\ubcf4\uc548\ud1a0\ud070 -TS705 = -#\ud734\ub300\uc804\ud654 -TS706 = -#\uc2a4\ub9c8\ud2b8\uc778\uc99d -TS707 = -#\ud074\ub77c\uc6b0\ub4dc -TS708 = - -TS041 = \ubcf4\uc548\ub514\uc2a4\ud06c \uc554\ud638 -TS042 = \uc54c\ub9bc -TS043 = \uc624\ub958 -TS044 = \uc778\uc99d\uc11c \uc815\ubcf4 - -TS045 = \ud544\ub4dc -TS046 = \ub0b4\uc6a9 -TS047 = \ubc84\uc804 -TS048 = \uc77c\ub828\ubc88\ud638 -TS049 = \ubc1c\ud589\uc790 -TS050 = \uc720\ud6a8\uae30\uac04(\uc2dc\uc791) -TS051 = \uc720\ud6a8\uae30\uac04(\ub05d) -TS052 = \uc8fc\uccb4 -TS053 = \ud0a4\uc0ac\uc6a9 -TS054 = \uc778\uc99d\uc11c \uc815\ucc45 -TS055 = \uc8fc\uccb4\ub300\uccb4 \uc774\ub984 -TS056 = CRL \ubc30\ud3ec\uc9c0\uc810 -TS057 = \uae30\uad00\uc815\ubcf4\uc9c0\uc810 -TS058 = \uc11c\uba85\uc54c\uace0\ub9ac\uc998 -TS059 = \uc18c\uc720\uc790\uba85 -TS060 = \uc6a9\ub3c4 -TS061 = \ubc1c\uae09\uae30\uad00 -TS062 = \ub9cc\ub8cc\uc77c -TS063 = \ubc1c\uae09\uc790 -TS064 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikey) -TS065 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) -TS066 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 -TS067 = \uc778\uc99d\uc11c\ud30c\uc77c \uacbd\ub85c -TS068 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 -TS069 = \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc778\uc99d\uc11c \uc800\uc7a5 -TS070 = \uc124\uce58 -TS071 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c -TS072 = \ud0c0\uc785 -TS073 = \uc77c\ubc18 -TS074 = \uc790\uc138\ud788 -TS075 = \uc0ac\uc6a9\uc790 \uc54c\ub9bc : -TS076 = \ubc1c\uae09\ub300\uc0c1 -TS077 = \uacf5\uac1c\ud0a4 -TS078 = \uae30\uad00\ud0a4 \uc2dd\ubcc4\uc790 -TS079 = \uc778\uc99d\uc11c\uc758 \uc6a9\ub3c4 -TS080 = \uc720\ud6a8\uae30\uac04 -TS081 = \ubd80\ud130 -TS082 = \uae4c\uc9c0 -TS083 = \uad6c\ubd84 -TS084 = \uc9c0\uc6d0\ub9e4\uccb4\uc5c6\uc74c -TS085 = \uc778\uc99d\uc11c \uc800\uc7a5 -TS086 = \uc778\uc99d\uc11c \uc800\uc7a5 \uc704\uce58 -TS087 = \ube0c\ub77c\uc6b0\uc800 -TS088 = \uc120\ud0dd\ub41c PFX \uc778\uc99d\uc11c -TS089 = \uc120\ud0dd\ub41c P12 \uc778\uc99d\uc11c -TS090 = PFX \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 - -TS091 = \uc120\ud0dd\ud558\uc2e0 \uc778\uc99d\uc11c\ub294 -TS092 = (\ub0a8\uc740 \uae30\uac04 -TS093 = \uc77c)\uc5d0 \ub9cc\ub8cc \uc608\uc815\uc785\ub2c8\ub2e4.\n -TS094 = \uc778\uc99d\uc11c\ub97c \ubc1c\uae09\ubc1b\uc740 \uae30\uad00\uc758 \uc778\uc99d\uc13c\ud130\uc5d0\uc11c \uc778\uc99d\uc11c\ub97c \uac31\uc2e0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. - -TS095 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.
              \uacc4\uc18d \uc9c4\ud589\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? - -TS096 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4(ubikeynx) - -TS097 = \uc704\uce58 - -ES001 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES002 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ES003 = \uc778\uc99d\uc11c\ub97c \uba3c\uc800 \uc120\ud0dd\ud558\uc138\uc694. -ES004 = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ES005 = \ucc98\ub9ac \uacfc\uc815 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ES006 = \uc778\uc99d\uc11c \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES007 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub294 \ubb38\uc790, \uc22b\uc790, \ud2b9\uc218\ubb38\uc790\uc758 \uc870\ud569\uc73c\ub85c 8\uc790\ub9ac \uc774\uc0c1 \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES008 = \uc0c8 \uc554\ud638\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES009 = \uc778\uc99d\uc11c\uac00 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES010 = \uc800\uc7a5 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ES011 = \ubcf4\uc548\ud1a0\ud070 \uc778\uc99d\uc11c \uc800\uc7a5\uac1c\uc218\ub97c \ucd08\uacfc \ud558\uc600\uc2b5\ub2c8\ub2e4. \ubcf4\uc548\ud1a0\ud070\uc758 \uc778\uc99d\uc11c\ub97c \uc0ad\uc81c \ud6c4 \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694. -ES012 = \uc778\uc99d\uc11c \uac00\uc838\uc624\uae30\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES013 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc131\uacf5\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES014 = \ub85c \uc778\uc99d\uc11c\uac00 \ubcf5\uc0ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES015 = \uc0c8 \uc554\ud638\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694. -ES016 = \uc0c8 \uc554\ud638 \ud655\uc778\uc744 \uc785\ub825\ud574 \uc8fc\uc138\uc694. -ES017 = \uc778\uc99d\uc11c \uc0ad\uc81c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES018 = \ub85c \uc778\uc99d\uc11c \ubcf5\uc0ac\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES019 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. -ES020 = \uc778\uc99d\uc11c \ub0b4\ubcf4\ub0b4\uae30\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES021 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c\ub97c \uc120\ud0dd \ud574 \uc8fc\uc138\uc694. -ES022 = \uac1c\uc778\uc2dd\ubcc4 \uac12\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES023 = \uc778\uc99d\uc11c \uc800\uc7a5\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES024 = \uc778\uc99d\uc11c \uc11c\uba85\uc624\ub958 \uc785\ub2c8\ub2e4. -ES025 = \uc778\uc99d\uc11c \ubaa9\ub85d\uc870\ud68c \uc624\ub958 \uc785\ub2c8\ub2e4. -ES026 = \ubcf4\uc548\ud1a0\ud070 \uc554\ud638\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694. -ES027 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc744 \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES028 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES029 = \uc778\uc99d\uc11c \ub610\ub294 \uac1c\uc778\ud0a4 \ud615\uc2dd\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ES030 = \uc778\uc99d\uc11c \ub85c\uadf8\uc778\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              \ub2e4\uc2dc \uc2dc\ub3c4\ud574 \uc8fc\uc138\uc694. -ES031 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES032 = \uc778\uc99d\uc11c \uc554\ud638\uac00 \uc7a0\uacbc\uc2b5\ub2c8\ub2e4. -ES033 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES034 = \uc0ac\uc6a9\uc790\uac00 \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES035 = \uc778\uc99d\uc11c \ud734\ub300\ud3f0 \uc800\uc7a5 \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES036 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES037 = \uc2a4\ub9c8\ud2b8 \uc778\uc99d \ubaa8\ub4c8 \uac80\uc99d\uc774 \uc2e4\ud328 \ud558\uc600\uc2b5\ub2c8\ub2e4.\n\uacc4\uc18d \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES038 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\uc124\uce58\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES039 = \uc0ac\uc6a9\uc790\uac00 \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0)\uc11c\ube44\uc2a4\ub97c \ucde8\uc18c\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES040 = \ud734\ub300\ud3f0 \uc778\uc99d\uc11c \uc800\uc7a5(\uae08\uc735\uacb0\uc81c\uc6d0) \uc11c\ube44\uc2a4 \ud504\ub85c\uadf8\ub7a8\uc774\n\ucd5c\uc2e0 \ubc84\uc804\uc774 \uc544\ub2d9\ub2c8\ub2e4.\n\uc5c5\ub370\uc774\ud2b8\ub97c \uc9c4\ud589 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? -ES041 = IE9 \uc774\ud558\uc5d0\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uae30\ub2a5\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \n\uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\ud558\ub4dc\ub514\uc2a4\ud06c/\uc774\ub3d9\uc2dd \ubc84\ud2bc\uc744 \uc120\ud0dd\ud558\uc5ec \uc774\uc6a9\ud574\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ES042 = \ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud558\uc2dc\uc624. -ES043 = * \uc790\uc138\ud55c \uc815\ubcf4\ub294 \uc778\uc99d\uae30\uad00\uc758 \uc124\uba85\uc744 \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. -ES044 = \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824 \uc8fc\uc138\uc694. -ES045 = \uc120\ud0dd\ub41c \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c -ES046 = MagicLine \ud504\ub85c\uadf8\ub7a8\uc744 \uc124\uce58\ud569\ub2c8\ub2e4. -ES047 = MagicLine \uc124\uce58 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. -ES048 = \ucd5c\uc2e0 \ubc84\uc804\uc758 MagicLine\uc774 \uc544\ub2d9\ub2c8\ub2e4.
              \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c \uc124\uce58\ud569\ub2c8\ub2e4. -ES049 =
              \uc124\uce58 \ud6c4 \ub9e4\uccb4\ub97c \uc120\ud0dd\ud558\uba74 \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucde8\uc18c\uc2dc \ub514\uc2a4\ud06c,\ubcf4\uc548\ub9e4\uccb4\ub97c \uc774\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. - -ES050 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \ub3d9\uc77c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES051 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \uc5f0\uc18d\ub41c \ubb38\uc790/\uc22b\uc790 3\uc790\ub9ac \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -ES052 = \uc778\uc99d\uc11c \uc554\ud638\ub294 \uc601\ubb38\uc744 \ud3ec\ud568\ud55c 2\uac1c \uc774\uc0c1\uc758 \ubb38\uc790 \ud0c0\uc785\uc73c\ub85c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. - -ES053 = \uae08\uc735\uc778\uc99d\uc11c \ub85c\ub4dc\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ES054 = \uae08\uc735\uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES080 = SelectStorageInfo \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES081 = \uacf5\ub3d9\uc800\uc7a5\uc18c \ucd08\uae30\ud654 \ud568\uc218\ub97c \uc2e4\ud589\ud574\uc8fc\uc138\uc694. -ES082 = \uacf5\ub3d9\uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ub41c \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ES083 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc800\uc7a5\ub418\uc5b4 \uc788\ub294
              \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. -ES084 = \uc120\ud0dd\ud55c \uc778\uc99d\uc11c\ub97c \ube0c\ub77c\uc6b0\uc800\ub85c \ubcf5\uc0ac\ud558\uc600\uc2b5\ub2c8\ub2e4. - -ES121 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc5f0\uc18d\uc73c\ub85c \ud2c0\ub9b4\uacbd\uc6b0 \uc778\uc99d\uc11c \uc120\ud0dd\ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4.
              \ud604\uc7ac\ub0a8\uc740 \uc2dc\ub3c4 \ud69f\uc218\ub294 count\ud68c \uc785\ub2c8\ub2e4. -ES122 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0\uc54a\uc2b5\ub2c8\ub2e4.
              <Caps Lock>\ud0a4\uac00 \ucf1c\uc838 \uc788\ub294 \uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
              \ube44\ubc00\ubc88\ud638\ub294 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.
              count_limit\ud68c \uc2e4\ud328\uc2dc \ud574\ub2f9 \uc778\uc99d\uc11c\ub97c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4
              (\ud604\uc7ac count\ud68c \uc624\ub958)
              -ES123 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\ub97c count\ud68c\ud2c0\ub824
              \ud574\ub2f9 \uc778\uc99d\uc11c \uc0ac\uc6a9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -ES124 = \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638 \uc785\ub825 \ud69f\uc218 count_limit\ud68c\ub97c \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4.
              \uc778\uc99d\uc11c \uc120\ud0dd \ucc3d\uc774 \ub2eb\ud799\ub2c8\ub2e4. - -ER100 = \ud574\ub2f9 \ud544\ub4dc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ud655\uc778\ud574 \uc8fc\uc138\uc694. -ER101 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc800\uc7a5\ub9e4\uccb4 \uc785\ub2c8\ub2e4. -ER102 = \uc800\uc7a5\ub9e4\uccb4 \uc124\uc815\uac12\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. -ER103 = callback \uac12\uc774 null\uc774\uac70\ub098 \ud568\uc218\uac00 \uc544\ub2d9\ub2c8\ub2e4. -ER104 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ud568\uc218 \uc785\ub2c8\ub2e4. -ER105 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uae30\ub2a5 \uc785\ub2c8\ub2e4. -ER106 = PFX \uc778\uc99d\uc11c \ube44\ubc00\ubc88\ud638\uac00 \ud2c0\ub838\uc2b5\ub2c8\ub2e4. -ER107 = \ud574\ub2f9 \uc778\uc99d\uc11c \ubaa9\ub85d \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. -ER108 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER109 = PFX \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER110 = PFX \uc778\uc99d\uc11c \ubaa9\ub85d\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. -ER111 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud30c\uc77c(*.der) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER112 = \uc120\ud0dd\ub41c \uc778\uc99d\uc11c \ud0a4 \ud30c\uc77c(*.key) \uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -ER113 = \ube0c\ub77c\uc6b0\uc800 \uc778\uc99d\uc11c \uc815\ubcf4 \uc800\uc7a5 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. -ER114 = \uc778\uc99d\uc11c *.der, *.key\uc744 \uac19\uc774 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER115 = \ud55c\uc30d\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER116 = \uc778\uc99d\uc11c\uc640 \ud0a4\ud30c\uc77c\uc744 \uac01\uac01 1\uac1c\uc529 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER117 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER118 = \uc778\uc99d\uc11c\uc5d0 \ub9de\ub294 \ud0a4\ud30c\uc77c\uc744 \ub2e4\uc2dc \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER119 = \ub9cc\ub8cc\ub41c \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4. \uc778\uc99d\uc11c\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER120 = \uacf5\ub3d9\uc778\uc99d\uc11c \uac00\uc838\uc624\uae30 \ubc84\ud2bc\uc744 \ub2e4\uc2dc \ud074\ub9ad\ud558\uc5ec \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER121 = \ud558\ub098\uc758 \uc778\uc99d\uc11c\ub9cc \uc120\ud0dd \uac00\ub2a5 \ud569\ub2c8\ub2e4. -ER122 = \uc778\uc99d\uc11c \ud30c\uc77c\uc744 \uc120\ud0dd\ud574 \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. -ER201 = \uc815\ubcf4 \uc870\ud68c \uc624\ub958\uc785\ub2c8\ub2e4. -ER202 = \ube44\uc5b4\uc788\ub294 \ub370\uc774\ud130\uc785\ub2c8\ub2e4. -ER204 = \ud574\ub2f9 \uc778\uc99d\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -ER205 = \uc554\ud638\ud654\uc6a9 \uc778\uc99d\uc11c\ub294 \uc11c\uba85\uc6a9 \uc778\uc99d\uc11c\uc640 \ud568\uaed8 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. -ER206 = \ud55c \uc30d \ub610\ub294 \ub450 \uc30d\uc758 \uc778\uc99d\uc11c\ub97c \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. -ER300 = \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc778\uc99d\uc11c \ubcf5\uc0ac\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
              (\uc815\ucc45\uc0c1 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc544 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc5c6\ub294 \uc778\uc99d\uc11c\uc785\ub2c8\ub2e4.) -ER888 = try catch Exeption -ER999 = \ud558\uc704 \ub808\uc774\uc5b4 \ud568\uc218 \uc5d0\ub7ec -ER401 = \ube44\ubc00\ubc88\ud638 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER402 = PIN \ubc88\ud638 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER411 = \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. -ER412 = \ub4dc\ub77c\uc774\ube0c\uba85 \uc624\ub958 \uc785\ub2c8\ub2e4. -ER413 = \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ubbf8\ub514\uc5b4 \uc785\ub2c8\ub2e4. -ER492 = JS Toolkit\uc624\ub958 \uc785\ub2c8\ub2e4. -ER494 = C Toolkit \uc624\ub958 \uc785\ub2c8\ub2e4. - -#oid \uc815\uc758 -OID_1_2_410_100001_2_1_1=\uc804\uc790\uad00\uc778 -OID_1_2_410_100001_2_1_2=\ucef4\ud4e8\ud130 -OID_1_2_410_100001_2_1_3=\uc804\uc790\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_2_1_4=\uc804\uc790\uad00\uc778(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_5=\ucef4\ud4e8\ud130(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uacf5\uacf5/\ubbfc\uac04) -OID_1_2_410_100001_2_2_1=\uacf5\ubb34\uc6d0\uc6a9 -OID_1_2_410_100001_2_2_2=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_1=\uc804\uc790\uad00\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_3=\uac1c\uc778\uc6a9 -OID_1_2_410_100001_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9 -OID_1_2_410_100001_5_3_1_7=\ucef4\ud4e8\ud130\uc6a9 -OID_1_2_410_100001_5_3_1_9=SSL\uc6a9 -OID_1_2_410_200004_5_1_1_1=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778) -OID_1_2_410_200004_5_1_1_2=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uac1c\uc778\uc11c\ubc84) -OID_1_2_410_200004_5_1_1_3=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \ubc95\uc778) -OID_1_2_410_200004_5_1_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uc2a4\ud398\uc15c \uc11c\ubc84) -OID_1_2_410_200004_5_1_1_5=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_1_1_6=\ubc94\uc6a9\uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_7=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_1_1_8=\ubc94\uc6a9\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_9=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_1_1_9_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_1_1_10=\uace8\ub4dc \uac1c\uc778\uc11c\ubc84 -OID_1_2_410_200004_5_1_1_11=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_1_1_12=\uad6d\uc138\uccad\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_1=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_2_1_2=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_2_1_3=\ud2b9\ubcc4\ub4f1\uae09(\uc804\uc790\uc785\ucc30) -OID_1_2_410_200004_5_2_1_4=1\ub4f1\uae09\uc778\uc99d\uc11c(\uc11c\ubc84) -OID_1_2_410_200004_5_2_1_5=\ud2b9\ubcc4\ub4f1\uae09 \ubc95\uc778 -OID_1_2_410_200004_5_2_1_5_140=\uc6a9\ub3c4\uc81c\ud55c(NEIS) -OID_1_2_410_200004_5_2_1_5_407=\uac74\uac15\ubcf4\ud5d8\uc2ec\uc0ac\ud3c9\uac00\uc6d0 \uc5c5\ubb34\uc804\uc6a9 \uc778\uc99d\uc11c -OID_1_2_410_200004_5_2_1_6=\uc6a9\ub3c4\uc81c\ud55c(\ubc95\uc778) -OID_1_2_410_200004_5_2_1_7_1=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_2_1_7_2=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200004_5_2_1_7_3=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_2_1_5001=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778,\ubc95\uc778) -OID_1_2_410_200004_5_3_1_1=1\ub4f1\uae09(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_2=\ubc94\uc6a9\ubc95\uc778 -OID_1_2_410_200004_5_3_1_3=1\ub4f1\uae09(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_4=\uc6a9\ub3c4\uc81c\ud55c(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uae30\uad00/\ub2e8\uccb4) -OID_1_2_410_200004_5_3_1_6=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_3_1_7=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_3_1_8=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_3_1_9=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_1=\ubc94\uc6a9\uac1c\uc778 -OID_1_2_410_200004_5_4_1_2=\ubc94\uc6a9\uae30\uc5c5 -OID_1_2_410_200004_5_4_1_3=\ubc94\uc6a9(\uc11c\ubc84) -OID_1_2_410_200004_5_4_1_4=\ud2b9\uc218\ubaa9\uc801\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_1_5=\ud2b9\uc218\ubaa9\uc801\uc6a9(\ubc95\uc778) -OID_1_2_410_200004_5_4_1_101=\uc740\ud589\uac1c\uc778 -OID_1_2_410_200004_5_4_1_102=\uc99d\uad8c\uac70\ub798\uc6a9 -OID_1_2_410_200004_5_4_1_103=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200004_5_4_1_104=\uc804\uc790\ubbfc\uc6d0\uc6a9 -OID_1_2_410_200004_5_4_1_74=\uad6d\uc138\uccad\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_4_2_52=\uad6d\uc138\uccad\uc6a9 -OID_1_2_410_200004_5_5_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_2=\ubc94\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_3_1=\uc81c\ud734\uae30\uad00\uc6a9(\uac1c\uc778) -OID_1_2_410_200004_5_5_1_4_1=\uc81c\ud734\uae30\uad00\uc6a9(\uae30\uc5c5) -OID_1_2_410_200004_5_5_1_4_2=\uc804\uc790\uc138\uae08\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_1=\ubc94\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_2=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_3=\uc11c\ubc84\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -#OID_1_2_410_200005_1_1_4=\uc740\ud589/\uc2e0\uc6a9\uce74\ub4dc/\ubcf4\ud5d8\uc6a9(\uac1c\uc778) -OID_1_2_410_200005_1_1_4=\uc740\ud589(\uac1c\uc778) -OID_1_2_410_200005_1_1_5=\ubc94\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6=\uc6a9\ub3c4\uc81c\ud55c\uc6a9 -OID_1_2_410_200005_1_1_6_1=\uae30\uc5c5\ubc45\ud0b9\uc6a9 -OID_1_2_410_200005_1_1_6_2=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200005_1_1_6_3=\uc870\ub2ec\uccad \uc6d0\ud074\ub9ad\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_4=\ud1f4\uc9c1\uc5f0\uae08 -OID_1_2_410_200005_1_1_6_5=\uc7ac\uc815\uacbd\uc81c\ubd80 CTR\uc6a9(\ubc95\uc778/\ub2e8\uccb4) -OID_1_2_410_200005_1_1_6_8=\uae08\uc735\uacb0\uc81c\uc6d0(\uc804\uc790\uc138\uae08\uc6a9) -OID_1_2_410_200005_1_1_6_9=\uc0ac\uc124 -OID_1_2_410_200004_2_1=\uc778\uc99d\uae30\uad00 -OID_1_2_410_200012_1_1_1=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_2=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_3=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_4=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_5=\uc804\uc790\uac70\ub798 \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_6=\uc804\uc790\uac70\ub798 \uc554\ud638\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_7=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_8=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\uac1c\uc778) -OID_1_2_410_200012_1_1_9=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_10=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\ubc95\uc778) -OID_1_2_410_200012_1_1_11=\uc804\uc790\ubb34\uc5ed \uc11c\uba85\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_12=\uc804\uc790\ubb34\uc5ed \uc554\ud638\uc6a9(\uc11c\ubc84) -OID_1_2_410_200012_1_1_101=\uc740\ud589/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_103=\uc99d\uad8c/\ubcf4\ud5d8\uc6a9 -OID_1_2_410_200012_1_1_105=\uc2e0\uc6a9\uce74\ub4dc\uc6a9 -OID_1_2_410_200006_2_1=\uad6d\ubc29\uacf5\ubb34\uc6d0 -OID_1_2_410_200057_2_1_1=KEI/\uc5c5\ubb34\uc6a9 -OID_1_2_3_4_5=\ub9e4\uc9c1\uac00\ub4dc -OID_1_2_410_200057_2_5=\ud558\uc774\ud3ec\ud0c8 -OID_1_2_410_200057_2_6=\ud3ec\ud0c8\ub85c\uadf8\uc778 -OID_2_5_29_32_0=\ubaa8\ub4e0 \ubc1c\uae09 \uc815\ucc45 -OID_personal=\ubc94\uc6a9(\uac1c\uc778) -OID_personalb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uac1c\uc778) -OID_corporation4ec=\ubc94\uc6a9(\uae30\uc5c5) -OID_corporation4ecb=\ube0c\ub77c\uc6b0\uc800\uc6a9(\uae30\uc5c5) - -digitalSignature=\uc804\uc790\uc11c\uba85 -nonRepudiation=\ubd80\uc778\ubc29\uc9c0 -keyEncipherment=\ud0a4\uc554\ud638\ud654 \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/message/jquery.i18n.properties.min.js b/src/main/webapp/MagicLine4Web/ML4Web/js/message/jquery.i18n.properties.min.js deleted file mode 100644 index 4bf6abd0..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/message/jquery.i18n.properties.min.js +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * jquery.i18n.properties - * - * Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and - * MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. - * - * @version 1.2.2 - * @url https://github.com/jquery-i18n-properties/jquery-i18n-properties - * @inspiration Localisation assistance for jQuery (http://keith-wood.name/localisation.html) - * by Keith Wood (kbwood{at}iinet.com.au) June 2007 - * - *****************************************************************************/ -!function($){function callbackIfComplete(e){e.async&&(e.filesLoaded+=1,e.filesLoaded===e.totalFiles&&e.callback&&e.callback())}function loadAndParseFile(e,a){$.ajax({url:e,async:a.async,cache:a.cache,dataType:"text",success:function(e,r){parseData(e,a.mode),callbackIfComplete(a)},error:function(r,t,n){console.log("Failed to download or parse "+e),callbackIfComplete(a)}})}function parseData(data,mode){for(var parsed="",parameters=data.split(/\n/),regPlaceHolder=/(\{\d+})/g,regRepPlaceHolder=/\{(\d+)}/g,unicodeRE=/(\\u.{4})/gi,i=0;i0&&"#"!=parameters[i].match("^#")){var pair=parameters[i].split("=") -if(pair.length>0){for(var name=decodeURI(pair[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),value=1==pair.length?"":pair[1];"\\"==value.match(/\\$/);)value=value.substring(0,value.length-1),value+=parameters[++i].replace(/\s\s*$/,"") -for(var s=2;s0&&(fullname+="."),fullname+=names[i],eval("typeof "+fullname+' == "undefined"')&&eval(fullname+"={};")}function getFiles(e){return e&&e.constructor==Array?e:[e]}function unescapeUnicode(e){var a=[],r=parseInt(e.substr(2),16) -r>=0&&rt;t++){e.totalFiles+=1 -var s=e.language.substring(0,2) -if(0!=a.length&&-1==$.inArray(s,a)||(e.totalFiles+=1),e.language.length>=5){var l=e.language.substring(0,5) -0!=a.length&&-1==$.inArray(l,a)||(e.totalFiles+=1)}}for(var i=0,g=r.length;g>i;i++){loadAndParseFile(e.path+r[i]+".properties",e) -var s=e.language.substring(0,2) -if(0!=a.length&&-1==$.inArray(s,a)||loadAndParseFile(e.path+r[i]+"_"+s+".properties",e),e.language.length>=5){var l=e.language.substring(0,5) -0!=a.length&&-1==$.inArray(l,a)||loadAndParseFile(e.path+r[i]+"_"+l+".properties",e)}}e.callback&&!e.async&&e.callback()} -e.checkAvailableLanguages?$.ajax({url:e.path+"languages.json",async:e.async,cache:!1,success:function(e,a,t){r(e.languages||[])}}):r([])},$.i18n.prop=function(e){var a=$.i18n.map[e] -if(null==a)return"["+e+"]" -var r -2==arguments.length&&$.isArray(arguments[1])&&(r=arguments[1]) -var t -if("string"==typeof a){for(t=0;-1!=(t=a.indexOf("\\",t));)a="t"==a.charAt(t+1)?a.substring(0,t)+" "+a.substring(t++ +2):"r"==a.charAt(t+1)?a.substring(0,t)+"\r"+a.substring(t++ +2):"n"==a.charAt(t+1)?a.substring(0,t)+"\n"+a.substring(t++ +2):"f"==a.charAt(t+1)?a.substring(0,t)+"\f"+a.substring(t++ +2):"\\"==a.charAt(t+1)?a.substring(0,t)+"\\"+a.substring(t++ +2):a.substring(0,t)+a.substring(t+1) -var n,s,l=[] -for(t=0;t=0){var i=a.substring(0,t) -""!=i&&l.push(i),l.push(s),t=0,a=a.substring(n+1)}else t=n+1 -else t++ -""!=a&&l.push(a),a=l,$.i18n.map[e]=l}if(0==a.length)return"" -if(1==a.length&&"string"==typeof a[0])return a[0] -var g="" -for(t=0;t3&&(e=e.substring(0,3)+e.substring(3).toUpperCase()),e} -var cbSplit -cbSplit||(cbSplit=function(e,a,r){if("[object RegExp]"!==Object.prototype.toString.call(a))return"undefined"==typeof cbSplit._nativeSplit?e.split(a,r):cbSplit._nativeSplit.call(e,a,r) -var t,n,s,l,i=[],g=0,c=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=new RegExp(a.source,c+"g") -if(e+="",cbSplit._compliantExecNpcg||(t=new RegExp("^"+a.source+"$(?!\\s)",c)),void 0===r||0>+r)r=1/0 -else if(r=Math.floor(+r),!r)return[] -for(;(n=a.exec(e))&&(s=n.index+n[0].length,!(s>g&&(i.push(e.slice(g,n.index)),!cbSplit._compliantExecNpcg&&n.length>1&&n[0].replace(t,function(){for(var e=1;e1&&n.index=r)));)a.lastIndex===n.index&&a.lastIndex++ -return g===e.length?!l&&a.test("")||i.push(""):i.push(e.slice(g)),i.length>r?i.slice(0,r):i},cbSplit._compliantExecNpcg=void 0===/()??/.exec("")[1],cbSplit._nativeSplit=String.prototype.split),String.prototype.split=function(e,a){return cbSplit(this,e,a)}}(jQuery) diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/SmartCertVar.js b/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/SmartCertVar.js deleted file mode 100644 index 29ba8701..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/SmartCertVar.js +++ /dev/null @@ -1,158 +0,0 @@ -var DS_SmartCertUISize = { - miniSize : '390*400', - defaultSize: '600*400' -}; - -var DS_SmartCert_Filter = { - allowCA :'CROSSCERT,KICA,SIGNKOREA,TRADESIGN,YESSIGN', - allowOID :'', - allowExpire :false -}; - -var DS_SmartCert_SIGN_OPTION = { - SIGN_TYPE : "SIGNEDDATA_PKCS7", - /* - SIGNATURE // 서명값 - SIGNEDDATA_PKCS7 // PKCS#7에서 정의한 전자서명 형식 - SIGNEDDATA_CMS // CMS에서 정의한 전자서명 형식 - SIGNEDDATA_KOSCOM // 코스콤에서 정의한 전자서명 형식 - */ - CONTENTS_TYPE: "OPTION_NONE", - /* - OPTION_NONE // 옵션을 지정하지 않음 - OPTION_NO_CONTENT_INFO // 원본 메시지를 포함하지 않음 - */ -} - -var DS_SmartCertCustomParams ={ - - // 제휴사코드(발급신청서를 작성해서 드림시큐리티에 요청) - cpCode:"18010000", - - // 스마트 인증 창 표시 사이즈 - // 390*400 : DS_SmartCertUISize.miniSize - // 600*400 : DS_SmartCertUISize.defaultSize - winSize:DS_SmartCertUISize.defaultSize, - //winSize:DS_SmartCertUISize.miniSize, - - // 스마트인증 라이브러리 디렉토리경로 - //rootDirecoty:'http://mlweb.dreamsecurity.com:18443/ML4-Web/ML4WebSample/SmartCert', - rootDirecoty:'http://localhost:8080/ML4-Web/ML4WebSample/SmartCert', - - // 스마트인증앱(휴대폰)에서 전자서명을 위해 접속하는 페이지 - //signURL:'http://mlweb.dreamsecurity.com:18443/ML4-Web/ML4WebSample/SmartCert/jsp/mobile/sample_tobeSign.jsp' - signURL:'http://localhost:8080/ML4-Web/ML4WebSample/SmartCert/jsp/mobile/sample_tobeSign.jsp' -}; - - -var DS_SmartCertCommonParams ={ - // 스마트 인증 호출 버튼 ID - smartCertButtonID:'DS_iF_Smartcert_link', - - // 전자서명 오쳥 Form ( 스크립트에서 자동 생성) - requestFormID:'DS_SmartCertRequestForm', - signRequestText:'DS_SignRequestText', - - // 스마트 인증 공통창 DIV - requestDivID:'DS_iF_Smartcert', - // 스마트 인증 공통창 IFRAME - requestFrameID:'DS_iF_Smartcert_frame', - - // Cross Domain 회피를 위한 스마트인증 요청 페이지 (기본값 : 배포 파일 ) - cpProxyURL:DS_SmartCertCustomParams.rootDirecoty+"/jsp/smatcertRequest.jsp?d=main", - //cpProxyURL:DS_SmartCertCustomParams.rootDirecoty+"/jsp/cubrid/smatcertRequest.jsp?d=main", - - // 스마트인증 UI URL (기본값 : 배포 파일 ) d=main:요청 ,d=end:완료 - requestWindowURL:'https://www.smartcert.kr:10443/nonPlugin/requestSmartCert.sc', - //requestWindowURL:'http://10.10.30.57:8080/nonPlugin/requestSmartCert.sc', - - // Cross Domain 회피를 위한 스마트인증 결과 페이지 (기본값 : 배포 파일 ) - returnURL:DS_SmartCertCustomParams.rootDirecoty+'/jsp/smatcertResponse.jsp' - //returnURL:DS_SmartCertCustomParams.rootDirecoty+'/jsp/cubrid/smatcertResponse.jsp' -}; - - -//대체 가능 선택 라이브러리 -{ - // jquery library - // - if (window.jQuery) { - // jQuery is loaded - } else { - // jQuery is not loaded - document.write(''); - } - - // dialog library - document.write(''); - // dialog library css - document.write(''); -} - -var DS_SmartCert_Dialog ={ - - // Dialog Area(DIV/IFrame) 생성 - createDialogArea:function(){ - - var smartwebDiv=document.createElement('div'); - smartwebDiv.id =DS_SmartCertCommonParams.requestDivID; - smartwebDiv.name =DS_SmartCertCommonParams.requestDivID; - smartwebDiv.style.display='none'; - - var smartwebFrame=document.createElement('iframe'); - smartwebFrame.id=DS_SmartCertCommonParams.requestFrameID; - smartwebFrame.name=DS_SmartCertCommonParams.requestFrameID; - smartwebFrame.style.border='none'; - smartwebFrame.style.overflow='hidden'; - smartwebFrame.marginHeight=0; - smartwebFrame.marginWidth=0 - smartwebFrame.scrolling='no'; - - if(DS_SmartCertCustomParams.winSize=='390*400'){ - smartwebFrame.width='390'; - smartwebFrame.height='400'; - }else{ - smartwebFrame.width='600'; - smartwebFrame.height='400'; - } - smartwebDiv.appendChild(smartwebFrame); - document.body.appendChild(smartwebDiv); - }, - // SmarCert Dialog 초기화 함수 - init:function() { - // 0. Dialog DIV Area 삽입 - // 스마트 인증 Dialog 팝업을 위해 필요한 영역을 생성하며 , 별도 Area 구성시 Disable 가능하다. - DS_SmartCert_Dialog.createDialogArea(); - - // 1. 스마트 공인인증 Form Element 삽입 - // 스마트 인증 결과 확인을 위해 서비스 페이지 Submit 시 사용되며, 별도의 Form 사용시 Disable 가능하다. - DS_InitSmartCertWeb(); - - // 2. 스마트 공인인증 Dialog Library 초기화 - // 스마트 인증 Dialog 팝업을 위해 필요한 영역에 팝업창을 구성하는 라이브러리로, 별도 Dialog 라이브러리 운영시 Disable 가능하다. - if(DS_SmartCertCustomParams.winSize=='390*400'){ - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog({autoOpen: false, width: 390, height: 400, ly_id: DS_SmartCertCommonParams.requestDivID}); - }else{ - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog({autoOpen: false, width: 600, ly_id: DS_SmartCertCommonParams.requestDivID}); - } - }, - // SmarCert Dialog Open 함수 - showWindow:function() { - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog('open'); - $('#'+DS_SmartCertCommonParams.requestDivID).parent().css('z-index',120000); - }, - // SmarCert Dialog Close 함수 - closeWindow:function(){ - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog('close'); - } -} - -// 필수 라이브러리 - 스마트 인증 초기화 함수 동적 호출 - -document.write(''); - -//스마트인증 초기화 -window.onload = DS_SmartCert_Dialog.init; - - - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/SmartCertVar.js_Deploy b/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/SmartCertVar.js_Deploy deleted file mode 100644 index bec06e6b..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/SmartCertVar.js_Deploy +++ /dev/null @@ -1,124 +0,0 @@ -var DS_SmartCertUISize = { - miniSize : '390*400', - defaultSize: '600*400' -}; - -var DS_SmartCertCustomParams ={ - - // 제휴사코드(발급신청서를 작성해서 드림시큐리티에 요청) - cpCode:"18010000", - - // 스마트 인증 창 표시 사이즈 - // 390*400 : DS_SmartCertUISize.miniSize - // 600*400 : DS_SmartCertUISize.defaultSize - //winSize:DS_SmartCertUISize.defaultSize, - winSize:DS_SmartCertUISize.miniSize, - - // 스마트인증 라이브러리 디렉토리경로 - rootDirecoty:'/SmartCert', - - // 스마트인증앱(휴대폰)에서 전자서명을 위해 접속하는 페이지 - signURL:'/sample/mobile/sample_tobeSign.jsp' -}; - - -var DS_SmartCertCommonParams ={ - // 스마트 인증 호출 버튼 ID - smartCertButtonID:'DS_iF_Smartcert_link', - - // 전자서명 오쳥 Form ( 스크립트에서 자동 생성) - requestFormID:'DS_SmartCertRequestForm', - signRequestText:'DS_SignRequestText', - - // 스마트 인증 공통창 DIV - requestDivID:'DS_iF_Smartcert', - // 스마트 인증 공통창 IFRAME - requestFrameID:'DS_iF_Smartcert_frame', - - // Cross Domain 회피를 위한 스마트인증 요청 페이지 (기본값 : 배포 파일 ) - cpProxyURL:DS_SmartCertCustomParams.rootDirecoty+"/jsp/smatcertRequest.jsp?d=main", - - // 스마트인증 UI URL (기본값 : 배포 파일 ) d=main:요청 ,d=end:완료 - requestWindowURL:'https://www.smartcert.kr:10443/nonPlugin/requestSmartCert.sc', - - // Cross Domain 회피를 위한 스마트인증 결과 페이지 (기본값 : 배포 파일 ) - returnURL:DS_SmartCertCustomParams.rootDirecoty+'/jsp/smatcertResponse.jsp' -}; - - -//대체 가능 선택 라이브러리 -{ - // jquery library - document.write(''); - - // dialog library - document.write(''); - // dialog library css - document.write(''); -} - -var DS_SmartCert_Dialog ={ - - // Dialog Area(DIV/IFrame) 생성 - createDialogArea:function(){ - - var smartwebDiv=document.createElement('div'); - smartwebDiv.id =DS_SmartCertCommonParams.requestDivID; - smartwebDiv.name =DS_SmartCertCommonParams.requestDivID; - smartwebDiv.style.display='none'; - - var smartwebFrame=document.createElement('iframe'); - smartwebFrame.id=DS_SmartCertCommonParams.requestFrameID; - smartwebFrame.name=DS_SmartCertCommonParams.requestFrameID; - smartwebFrame.style.border='none'; - smartwebFrame.style.overflow='hidden'; - smartwebFrame.marginHeight=0; - smartwebFrame.marginWidth=0 - smartwebFrame.scrolling='no'; - - if(DS_SmartCertCustomParams.winSize=='390*400'){ - smartwebFrame.width='390'; - smartwebFrame.height='400'; - }else{ - smartwebFrame.width='600'; - smartwebFrame.height='400'; - } - smartwebDiv.appendChild(smartwebFrame); - document.body.appendChild(smartwebDiv); - }, - // SmarCert Dialog 초기화 함수 - init:function() { - // 0. Dialog DIV Area 삽입 - // 스마트 인증 Dialog 팝업을 위해 필요한 영역을 생성하며 , 별도 Area 구성시 Disable 가능하다. - DS_SmartCert_Dialog.createDialogArea(); - - // 1. 스마트 공인인증 Form Element 삽입 - // 스마트 인증 결과 확인을 위해 서비스 페이지 Submit 시 사용되며, 별도의 Form 사용시 Disable 가능하다. - DS_InitSmartCertWeb(); - - // 2. 스마트 공인인증 Dialog Library 초기화 - // 스마트 인증 Dialog 팝업을 위해 필요한 영역에 팝업창을 구성하는 라이브러리로, 별도 Dialog 라이브러리 운영시 Disable 가능하다. - if(DS_SmartCertCustomParams.winSize=='390*400'){ - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog({autoOpen: false, width: 390, height: 400, ly_id: DS_SmartCertCommonParams.requestDivID}); - }else{ - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog({autoOpen: false, width: 600, ly_id: DS_SmartCertCommonParams.requestDivID}); - } - }, - // SmarCert Dialog Open 함수 - showWindow:function() { - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog('open'); - }, - // SmarCert Dialog Close 함수 - closeWindow:function(){ - $('#'+DS_SmartCertCommonParams.requestDivID).SCweb_dialog('close'); - } -} - -// 필수 라이브러리 - 스마트 인증 초기화 함수 동적 호출 -document.write(''); - -//스마트인증 초기화 -window.onload = DS_SmartCert_Dialog.init; - - - diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/Smartcert_jq_Common_1.0.1.js b/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/Smartcert_jq_Common_1.0.1.js deleted file mode 100644 index 741c20e6..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/smartcert/Smartcert_jq_Common_1.0.1.js +++ /dev/null @@ -1,160 +0,0 @@ - - - function DS_InitSmartCertWeb(){ - var smartwebForm=document.createElement('form'); - smartwebForm.name =DS_SmartCertCommonParams.requestFormID; - smartwebForm.id =DS_SmartCertCommonParams.requestFormID; - - var smartwebElement=document.createElement('input'); - smartwebElement.type='hidden'; - smartwebElement.id=DS_SmartCertCommonParams.signRequestText; - smartwebElement.name=DS_SmartCertCommonParams.signRequestText; - smartwebForm.appendChild(smartwebElement); - - var smartwebElement2=document.createElement('input'); - smartwebElement2.type='hidden'; - smartwebElement2.id='telco'; - smartwebElement2.name='telco'; - smartwebForm.appendChild(smartwebElement2); - - var smartwebElement3=document.createElement('input'); - smartwebElement3.type='hidden'; - smartwebElement3.id='phoneNumber'; - smartwebElement3.name='phoneNumber'; - smartwebForm.appendChild(smartwebElement3); - - var smartwebElement4=document.createElement('input'); - smartwebElement4.type='hidden'; - smartwebElement4.id='filter'; - smartwebElement4.name='filter'; - smartwebForm.appendChild(smartwebElement4); - - var smartwebElement5=document.createElement('input'); - smartwebElement5.type='hidden'; - smartwebElement5.id='signOpt'; - smartwebElement5.name='signOpt'; - smartwebForm.appendChild(smartwebElement5); - - document.body.appendChild(smartwebForm); - } - - function DS_SmartcertRequest(tobeSignData, filter, signOpt, telco, phonenumber){ - - DS_SmartCert_Dialog.showWindow(); - - var requestForm = document.forms[DS_SmartCertCommonParams.requestFormID]; - - var requestTextElement = requestForm.elements[DS_SmartCertCommonParams.signRequestText]; - - requestTextElement.value = encodeURIComponent(tobeSignData); - - // 통신사, 전화번호 입력시 파라미터로 전달 - if(telco!=null && phonenumber!=null){ - var requestTextElement2 = requestForm.elements['telco']; - requestTextElement2.value=telco; - var requestTextElement3 = requestForm.elements['phonenumber']; - requestTextElement3.value=phonenumber; - } - - requestForm.method='post'; - requestForm.action=DS_SmartCertCommonParams.cpProxyURL ; - - requestForm.target=DS_SmartCertCommonParams.requestFrameID; - if(filter!=null) - requestForm.filter.value = filter; - - if(signOpt!=null) - requestForm.signOpt.value = signOpt; - - requestForm.submit(); - - return false; - } - - function DS_SmartCertPopup(query, telco, phoneNumber) - { - var smartwebForm = document.createElement('form'); - smartwebForm.name = 'certReqForm'; - - var smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'signURL'; - smartwebForm.appendChild(smartwebElement); - - smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'returnURL'; - smartwebForm.appendChild(smartwebElement); - - smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'telco'; - smartwebForm.appendChild(smartwebElement); - - smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'phoneNumber'; - smartwebForm.appendChild(smartwebElement); - - smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'query'; - smartwebForm.appendChild(smartwebElement); - - smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'winSize'; - smartwebForm.appendChild(smartwebElement); - - document.body.appendChild(smartwebForm); - - document.certReqForm.signURL.value = window.location.protocol+"//"+window.location.host+DS_SmartCertCustomParams.signURL; - //document.certReqForm.signURL.value = window.location.protocol+"//10.10.30.57:8443"+DS_SmartCertCustomParams.signURL; - document.certReqForm.returnURL.value = window.location.protocol+"//"+window.location.host+DS_SmartCertCommonParams.returnURL; - document.certReqForm.winSize.value = DS_SmartCertCustomParams.winSize; - document.certReqForm.action = DS_SmartCertCommonParams.requestWindowURL+"?d=main"; - - if(telco!=null && phoneNumber!=null) - { - document.certReqForm.telco.value = telco; - document.certReqForm.phoneNumber.value = phoneNumber; - } - - document.certReqForm.query.value = query + "&cpCode=" + DS_SmartCertCustomParams.cpCode; - document.certReqForm.method = "post"; - document.certReqForm.submit(); - } - - function DS_SignComplete(trID) - { - var smartwebForm = document.createElement('form'); - smartwebForm.name = 'SmartCertForm'; - - - var smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'cpCode'; - smartwebForm.appendChild(smartwebElement); - - smartwebElement = document.createElement('input'); - smartwebElement.type = 'hidden'; - smartwebElement.name = 'trID'; - smartwebForm.appendChild(smartwebElement); - - document.body.appendChild(smartwebForm); - - document.SmartCertForm.method='post'; - document.SmartCertForm.cpCode.value = DS_SmartCertCustomParams.cpCode; - document.SmartCertForm.trID.value=trID; - document.SmartCertForm.action = DS_SmartCertCommonParams.requestWindowURL+'?d=end'; - document.SmartCertForm.submit(); - } - - - function DS_SmartCertComplete(trID, returnCode, telco, phonenumber) - { - parent.OnSmartCertComplete(trID, returnCode, telco, phonenumber); - - } - -// DS_SmartCert_Dialog.init(); diff --git a/src/main/webapp/MagicLine4Web/ML4Web/js/util/ML4Web_ErrorCode.js b/src/main/webapp/MagicLine4Web/ML4Web/js/util/ML4Web_ErrorCode.js deleted file mode 100644 index 4654c1c0..00000000 --- a/src/main/webapp/MagicLine4Web/ML4Web/js/util/ML4Web_ErrorCode.js +++ /dev/null @@ -1,261 +0,0 @@ -var ErrorCodeObject = { - ML4Web_UI_init : 10100, - ML4Web_UI_MakeSignData : 10200, - ML4Web_UI_MakeEnvelopData : 10300, - ML4Web_UI_MakeSignedEnvelopedData : 10400, - ML4Web_UI_MakeExtentionData : 10500, - ML4Web_UI_CopyDialog : 10900, - ML4Web_UI_DeleteDialog : 11000, - ML4Web_UI_ImportDialog : 11100, - ML4Web_UI_ExportDialog : 11200, - ML4Web_UI_getSelectCert : 11300, - ML4Web_UI_MgmtDialog : 11500, - ML4Web_UI_MakeReSignData : 11600, - ML4Web_UI_getCertManager : 11700, - - ML4Web_UI_showCertDiv : 11800, - ML4Web_UI_selectStorageInfo : 11900, - ML4Web_UI_saveCertToStorage : 12100, - ML4Web_UI_getStorageCertList : 12200, - ML4Web_UI_getCertString : 12300, - - ML4Web_API_Init : 20000, - ML4Web_API_SetProperty : 20100, - ML4Web_API_GetProperty : 20200, - ML4Web_API_getSupportStorage : 20300, - ML4Web_API_selectStorageInfo : 20400, - ML4Web_API_getStorageCertList : 20500, - ML4Web_API_loadCertiList : 20600, - ML4Web_API_MakeSignData : 20700, - ML4Web_API_MakeEnvelopData : 20800, - ML4Web_API_MakeSignedEnvelopedData : 20900, - ML4Web_API_getCertString : 21000, - ML4Web_API_getCertInfo : 21100, - ML4Web_API_saveCertToStorage : 21200, - ML4Web_API_CopyCertToStorage : 21300, - ML4Web_API_DeleteStorageCert : 21400, - ML4Web_API_ChageStorageCertPasswd : 21500, - ML4Web_API_createCryptoMsg : 22000, - ML4Web_API_callExtLibFunc : 22100, - - Storage_API_Init : 30100, - Storage_API_SetProperty : 30200, - Storage_API_GetProperty : 30300, - Storage_API_SelectStorageInfo : 30400, - Storage_API_GetCertList : 30500, - Storage_API_GetCertString : 30600, - Storage_API_GetDetailCert : 30700, - Storage_API_SaveCert : 30800, - Storage_API_DeleteCert : 30900, - Storage_API_ChangePassword : 31000, - Storage_API_verifyVID : 31100, - Storage_API_getVIDRandom : 31200, - Storage_API_Sign : 32000, - Storage_API_EnvelopedData : 32100, - Storage_API_SingedEnvelopedData : 32200, - Storage_Web_SelectStorageInfo : 30401, - Storage_Web_GetCertList : 30501, - Storage_Web_GetCertString : 30601, - Storage_Web_GetDetailCert : 30701, - Storage_Web_SaveCert : 30801, - Storage_Web_DeleteCert : 30901, - Storage_Web_ChangePassword : 31001, - Storage_Web_verifyVID : 31101, - Storage_Web_getVIDRandom : 31201, - Storage_Web_Sign : 32001, - Storage_Web_EnvelopedData : 32101, - Storage_Web_SingedEnvelopedData : 32201, - Storage_Web_Signature : 32301, - Storage_Web_getSelectCert : 32401, - Storage_pfx_SelectStorageInfo : 30402, - Storage_pfx_GetCertList : 30502, - Storage_pfx_GetCertString : 30602, - Storage_pfx_GetDetailCert : 30702, - Storage_pfx_SaveCert : 30802, - Storage_pfx_DeleteCert : 30902, - Storage_pfx_ChangePassword : 31002, - Storage_pfx_verifyVID : 31102, - Storage_pfx_getVIDRandom : 31202, - Storage_pfx_Sign : 32002, - Storage_pfx_EnvelopedData : 32102, - Storage_pfx_SingedEnvelopedData : 32202, - Storage_hdd_SelectStorageInfo : 30403, - Storage_hdd_GetCertList : 30503, - Storage_hdd_GetCertString : 30603, - Storage_hdd_GetDetailCert : 30703, - Storage_hdd_SaveCert : 30803, - Storage_hdd_DeleteCert : 30903, - Storage_hdd_ChangePassword : 31003, - Storage_hdd_verifyVID : 31103, - Storage_hdd_getVIDRandom : 31203, - Storage_hdd_Sign : 32003, - Storage_hdd_EnvelopedData : 32103, - Storage_hdd_SingedEnvelopedData : 32203, - Storage_shdd_SelectStorageInfo : 30404, - Storage_shdd_GetCertList : 30504, - Storage_shdd_GetCertString : 30604, - Storage_shdd_GetDetailCert : 30704, - Storage_shdd_SaveCert : 30804, - Storage_shdd_DeleteCert : 30904, - Storage_shdd_ChangePassword : 31004, - Storage_shdd_verifyVID : 31104, - Storage_shdd_getVIDRandom : 31204, - Storage_shdd_Sign : 32004, - Storage_shdd_EnvelopedData : 32104, - Storage_shdd_SingedEnvelopedData : 32204, - Storage_token_SelectStorageInfo : 30405, - Storage_token_GetCertList : 30505, - Storage_token_GetCertString : 30605, - Storage_token_GetDetailCert : 30705, - Storage_token_SaveCert : 30805, - Storage_token_DeleteCert : 30905, - Storage_token_ChangePassword : 31005, - Storage_token_verifyVID : 31105, - Storage_token_getVIDRandom : 31205, - Storage_token_Sign : 32005, - Storage_token_EnvelopedData : 32105, - Storage_token_SingedEnvelopedData : 32205, - Storage_mobile_SelectStorageInfo : 30406, - Storage_mobile_GetCertList : 30506, - Storage_mobile_GetCertString : 30606, - Storage_mobile_GetDetailCert : 30706, - Storage_mobile_SaveCert : 30806, - Storage_mobile_DeleteCert : 30906, - Storage_mobile_ChangePassword : 31006, - Storage_mobile_verifyVID : 31106, - Storage_mobile_getVIDRandom : 31206, - Storage_mobile_Sign : 32006, - Storage_mobile_EnvelopedData : 32106, - Storage_mobile_SingedEnvelopedData : 32206, - Storage_smartcert_SelectStorageInfo : 30407, - Storage_smartcert_GetCertList : 30507, - Storage_smartcert_GetCertString : 30607, - Storage_smartcert_GetDetailCert : 30707, - Storage_smartcert_SaveCert : 30807, - Storage_smartcert_DeleteCert : 30907, - Storage_smartcert_ChangePassword : 31007, - Storage_smartcert_verifyVID : 31107, - Storage_smartcert_getVIDRandom : 31207, - Storage_smartcert_Sign : 32007, - Storage_smartcert_EnvelopedData : 32107, - Storage_smartcert_SingedEnvelopedData : 32207, - Storage_cloud_SelectStorageInfo : 30408, - Storage_cloud_GetCertList : 30508, - Storage_cloud_GetCertString : 30608, - Storage_cloud_GetDetailCert : 30708, - Storage_cloud_SaveCert : 30808, - Storage_cloud_DeleteCert : 30908, - Storage_cloud_ChangePassword : 31008, - Storage_cloud_verifyVID : 31108, - Storage_cloud_getVIDRandom : 31208, - Storage_cloud_Sign : 32008, - Storage_cloud_EnvelopedData : 32108, - Storage_cloud_SingedEnvelopedData : 32208, - Storage_kftc : 33100, - Storage_kftc_SaveCert : 33200, - Storage_smartcertnx_SelectStorageInfo : 30409, - Storage_smartcertnx_getVIDRandom : 30509, - Storage_smartcertnx_Sign : 30609, - - Crypto_API_init : 40100, - Crypto_API_genHmac : 40300, - Crypto_API_verifyHmac : 40400, - Crypto_API_encrypt : 40500, - Crypto_API_decrypt : 40600, - Crypto_API_sign : 40700, - Crypto_API_envelopedData : 40800, - Crypto_API_signedEnvelopedData : 40900, - Crypto_API_verifyVID : 41000, - Crypto_API_generateRandom : 41100, - Crypto_API_genKeypair : 41200, - Crypto_API_genHash : 41300, - Crypto_API_prikeyDecrypt : 41400, - Crypto_API_prikeyEncrypt : 41500, - Crypto_API_getVIDRandom : 41600, - Crypto_API_encryptKey : 41700, - Crypto_API_decryptKey : 41800, - Crypto_API_asymEncrypt : 41900, - Crypto_API_asymDecrypt : 42000, - Crypto_API_pfxImport : 42100, - Crypto_API_pfxExport : 42200, - Crypto_API_getFilePicker : 42300, - Crypto_API_pkcs7 : 42400, - Crypto_JS_genHmac : 40301, - Crypto_JS_verifyHmac : 40401, - Crypto_JS_encrypt : 40501, - Crypto_JS_decrypt : 40601, - Crypto_JS_sign : 40701, - Crypto_JS_envelopedData : 40801, - Crypto_JS_signedEnvelopedData : 40901, - Crypto_JS_verifyVID : 41001, - Crypto_JS_generateRandom : 41101, - Crypto_JS_genKeypair : 41201, - Crypto_JS_genHash : 41301, - Crypto_JS_prikeyDecrypt : 41401, - Crypto_JS_prikeyEncrypt : 41501, - Crypto_JS_getVIDRandom : 41601, - Crypto_JS_encryptKey : 41701, - Crypto_JS_decryptKey : 41801, - Crypto_JS_asymEncrypt : 41901, - Crypto_JS_asymDecrypt : 42001, - Crypto_JS_pfxImport : 42101, - Crypto_JS_pfxExport : 42201, - Crypto_Raw_genHmac : 40302, - Crypto_Raw_verifyHmac : 40402, - Crypto_Raw_encrypt : 40502, - Crypto_Raw_decrypt : 40602, - Crypto_Raw_sign : 40702, - Crypto_Raw_envelopedData : 40802, - Crypto_Raw_signedEnvelopedData : 40902, - Crypto_Raw_verifyVID : 41002, - Crypto_Raw_generateRandom : 41102, - Crypto_Raw_genKeypair : 41202, - Crypto_Raw_genHash : 41302, - Crypto_Raw_prikeyDecrypt : 41402, - Crypto_Raw_prikeyEncrypt : 41502, - Crypto_Raw_getVIDRandom : 41602, - Crypto_Raw_encryptKey : 41702, - Crypto_Raw_decryptKey : 41802, - Crypto_Raw_asymEncrypt : 41902, - Crypto_Raw_asymDecrypt : 42002, - Crypto_Raw_pfxImport : 42102, - Crypto_Raw_pfxExport : 42202, - Crypto_C_genHmac : 40303, - Crypto_C_verifyHmac : 40403, - Crypto_C_encrypt : 40503, - Crypto_C_decrypt : 40603, - Crypto_C_sign : 40703, - Crypto_C_envelopedData : 40803, - Crypto_C_signedEnvelopedData : 40903, - Crypto_C_verifyVID : 41003, - Crypto_C_generateRandom : 41103, - Crypto_C_genKeypair : 41203, - Crypto_C_genHash : 41303, - Crypto_C_prikeyDecrypt : 41403, - Crypto_C_prikeyEncrypt : 41503, - Crypto_C_getVIDRandom : 41603, - Crypto_C_encryptKey : 41703, - Crypto_C_decryptKey : 41803, - Crypto_C_asymEncrypt : 41903, - Crypto_C_asymDecrypt : 42003, - Crypto_C_pfxImport : 42103, - Crypto_C_pfxExport : 42203, - Crypto_C_getFilePicker : 42303, - - Resource_API_init : 50100, - Resource_API_callLocalServerAPI : 50200, - Resource_API_loadJSLibrary : 50300, - Resource_API_getLibInitType : 50400, - Resource_API_httpRequest : 50500, - Resource_API_makeJsonMessage : 50600, - - CS_Manager_API_init : 70100, - CS_Manager_API_callLocalServer : 70200, - CS_Manager_API_checkInstall : 70300, - CS_Manager_API_checkUpdate : 70400, - CS_Manager_API_crossServerData : 70500, - CS_Manager_API_createSessionID : 70600, - - Javascript_Verify_init : 80100 -} - diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/css/common.css b/src/main/webapp/MagicLine4Web/ML4WebExample/css/common.css deleted file mode 100644 index b21f2f7b..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/css/common.css +++ /dev/null @@ -1,142 +0,0 @@ -body {_text-align:center; font-family:"돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;padding:0px 0px 0px 0px;margin:0px 0px 0px 0px;font-size:12px;color:#383d41;line-height:140%;} -#center {width:580px; _text-align:left; margin:0px auto;} - -* basic */ -body, th, td, div, p, span, ol, ul, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, a, textarea, input, select {font-family:dotum, verdana, arial, sans-serif; font-size:12px; color:#676767;line-height:17px } -body, div, p, span, ol, ul, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, form, img {margin:0; padding:0} -ul, ol {list-style:none} -img {border:0} -/* //basic */ - - -/* link */ -a:link {color:#666; text-decoration:none} -a:visited {color:#666; text-decoration:none} -a:hover {color:#666; text-decoration:underline !important;} -a:active {color:#666; text-decoration:none} -/* //link */ - - -body{ - padding:0px 0px 0px 0px; - margin:0px 0px 0px 0px; - font-family:"돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; - font-size:12px; - color:#383d41; - line-height:160%; -} -.tx-center {text-align:center; } - -.f_11 {font-size:11px} - -.f_13 {font-size:13px} -.f_14 {font-size:14px} -.f_15 {font-size:15px} -.f_blue_ty1b {color:#0169A8; font-weight:bold;} -.f_gy_ty1b {color:#666666; font-weight:bold;} -.f_or_ty2 {color:#ee6a02} -.letter_sm1 {letter-spacing:-1px} -.f_dotum {font-family: "돋움"} -.f_black {color:#000} -.bold {font-weight:bold} -.block {display:block} -.f_or_ty1 {color:#ED7012} -.fl_l {float:left} -.fl_r {float:right} - -/* margin & padding */ -.mgt10 {margin-top:10px} -.mgt30 {margin-top:30px} - -/* //margin & padding */ -.p_absol -{ - position:absolute; -} -.pat55 {padding-top:55px} -.pab20 {padding-bottom:20px} -.par10 {padding-right:10px} - -.pat5 {padding-top:5px} -.pab20 {padding-bottom:20px} - -.f_or_ty1 {color:#ED7012} - - - - -.tx-center {text-align:center; } -.tx-center {text-align:center; } - -.f_11 {font-size:11px} -.f_14 {font-size:14px} -.f_13 {font-size:13px} -.f_blue_ty1b {color:#0169A8; font-weight:bold;} -.f_gy_ty1b {color:#666666; font-weight:bold;} -.f_or_ty2 {color:#ee6a02} -.letter_sm1 {letter-spacing:-1px} -.f_dotum {font-family: "돋움"} -.f_black {color:#000} -.bold {font-weight:bold} -.block {display:block} -.f_or_ty1 {color:#ED7012} -.fl_l {float:left} -.fl_r {float:right} - -/* margin & padding */ -.mgt10 {margin-top:10px} -.mgt30 {margin-top:30px} - -/* //margin & padding */ -.p_absol -{ - position:absolute; -} -.pat55 {padding-top:55px} -.pab20 {padding-bottom:20px} -.par10 {padding-right:10px} - - -.box -{ -position: relative; -border: dashed 1px #dadada; -margin-top: 15px; -background: inherit; -color: #AAB165; -} - -.box h2 -{ -background: inherit; -color: #6C7425; -text-transform: lowercase; -font-weight: normal; -font-size: 18px; -margin-bottom: 5px; -} - -.box_inner -{ -border: solid 1px #fff; -padding: 15px; -background: #FFFFE9 /*url('images/a4.gif') repeat-x;*/ -color: inherit; -} - -.ck_install -{ - border:#c6d7e9 solid 3px; - width:600px; - padding-left:20px; -} -.ck_install .head {width:455px; height:105px; padding:10px 0px 0px 105px; text-align:left; margin:0px 0px 5px 0px; background:url(../images/img.gif) no-repeat 0px 0px;} -.ck_install .btn_install_01 {float:right; display:block; padding:10px 0px 0px 0px;} -.ck_install .info {display:block; width:579px; height:72px; margin:10px 20px 10px 0px;} -.ck_install .guide_t {width:579px; padding:0px 0px 0px 0px; margin:0px 20px 0px 0px; background:url(../images/bg_guide_top.gif) no-repeat left top;} -.ck_install .guide_t .guide_b {padding:0px 0px 0px 0px; margin:0px; background:url(../images/bg_guide_bottom.gif) no-repeat left bottom;} -.ck_install .guide_t .guide_b .guide {padding:20px 0px 20px 0px; margin:0px; } -.ck_install .guide_t .guide_b .guide li {padding:15px 20px 0px 30px; text-align:left; background:url(../images/bg_guide.gif) repeat-y 0 top;} -.ck_install .guide_t .guide_b .guide img {padding:5px 0px 0px 80px;} -.ck_install .guide_t .guide_b .guide p {padding:0px 20px 0px 30px; margin:0px; text-align:left; background:url(../images/bg_guide.gif) repeat-y 0 top;} -.ck_install .copy {width:519px; padding:0px 30px 0px 30px; margin:10px 0px 10px 0px; } \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/css/global.css b/src/main/webapp/MagicLine4Web/ML4WebExample/css/global.css deleted file mode 100644 index 816f7131..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/css/global.css +++ /dev/null @@ -1,1225 +0,0 @@ -body { - background-color: white; - padding: 0px; - margin: 0px; - font-family: "Lucida Grande","Lucida Sans","Microsoft Sans Serif", "Lucida Sans Unicode","Verdana","Sans-serif","gulim","trebuchet ms" !important; - color: #111; - font-size:12px; - font-size-adjust:none; - font-stretch:normal; - font-style:normal; - font-variant:normal; - font-weight:normal; - line-height:1.25em; -} -table { - border: 0px; - padding: 0px; - margin: 0px; -} -table thead tr th{ - padding: 0px; - text-align: left; - vertical-align: top; - border: 0px; -} -table tbody tr td { - padding: 0px; - text-align: left; - vertical-align: top; - border: 0px; -} -table tr td { - padding: 0px; - text-align: left; - vertical-align: top; - border: 0px; -} -ul { - list-style: none; - margin: 0px; - padding: 0px; -} -ul li{ - list-style: none; - margin: 0px; - padding: 0px; -} - -p { -} - -TEXTAREA{ - font-size:12px; -} - -a:link { - color: #386698; - text-decoration: none; -} - -a:visited { - color: #386698; - text-decoration: none; -} - -a:hover { - color: #f47b20; -} - -a img { - border: 0px; -} - -a.link-disable { - cursor: text; - color: #999; -} - -/* Neutralize styling: - Elements with a vertical margin: */ - h1, h2, h3, h4, h5, h6, p, pre, - blockquote, ol, dl, address { - margin: 0 0 0px; - padding: 0px 0 0; - } - -form { -padding-top: 0px !important; -padding-bottom: 0px !important; -margin-top: 0px !important; -margin-bottom: 0px !important; -} - -/* ---------------- template styles ------------------------- */ -table#main-table { - min-width: 985px; - width: 100%; -} -table#main-table td { - padding: 0px; -} -table#main-table td#header { - background-image: url( ../images/ds-header-region-bg.gif); - background-repeat: repeat-x; - background-position: left top; - height: 100px; -} - -table#main-table td#menu-panel { - background-color: #fff; - padding-bottom: 20px; - border-right: solid 1px #636466; - width: 5%; - font-size: 100%; -} - -td#menu table#menu-table { - width: 225px; -} - -table#menu-table td { -} - -table#menu-table td#region1 { -} - -table#menu-table td#region2 { -} - -table#menu-table td#region3 { -} - -table#main-table td#middle-content { - padding-left: 20px; - padding-right: 20px; - padding-top: 15px; - padding-bottom: 15px; - background-color: #F4F4F4; - width: 95%; - - background-image: url(../images/menu-margin.gif); - background-position: left top; - background-repeat: repeat-y; -} - -td#middle-content table#content-table { - width: 100%; -} - -table#content-table td#page-header-links { - height: 20px; - vertical-align: middle; - padding-bottom: 5px; - margin-top:0px; -} - -table#content-table td#body { -} - -table#main-table td#footer { - height: 25px; - background-color: #bfbfbf; -} - - -/* ---------------- header styles ------------------ */ -div#header-div { - background-image: url( ../images/ds-header-bg.gif); - background-repeat: no-repeat; - background-position: left top; - height: 100px; - min-width: 985px; -} - -div#header-div div.left-logo { - /*background-image: url( ../images/header-logo.gif );*/ - background-repeat: no-repeat; - background-position: left top; - height: 32px; - /*width: 332px;*/ - width: 332px; - margin-top: 23px; - margin-left: 20px; - float: left; -} - -div#header-div div.left-logo a.header-home { -display: block; -} - -div#header-div div.left-logo a.header-home img{ -display: block; -} - -div#header-div div.right-logo { - /*background-image: url( ../images/mgt-logo.gif);*/ - background-repeat: no-repeat; - background-position: right top; - line-height: 18px; - height: 22px; - float: right; - width: 220px; - margin-top: 28px; - margin-right: 20px; - color:#2F5699; - font-size: 18px; - font-weight: normal; - text-align: right; -} - -div#header-div div.header-links { - clear: both; - float: left; - height: 25px; - width: 100%; - margin-top:10px; -} - - -div#header-div div.header-links div.right-links{ - clear: both; - float: right; - margin-right: 0px; - height: 35px; - padding-top: 0px; -} - -div#header-div div.header-links div.right-links ul { - background-image:url("../images/right-links-bg.gif"); - background-position:left top; - background-repeat:repeat-x; - padding-left: 25px; - padding-right: 15px; - padding-top: 9px; - padding-bottom: 7px; -} - -div.header-links ul { - list-style: none; - margin-left: 0px; - margin-top: 0px; - margin-bottom: 0px; - margin-right: 0px; - padding: 0px; - float: right; -} - -div.header-links ul li { - position: relative; - float: left; - padding-left: 5px; - padding-right: 5px; - padding-top: 0px; - padding-bottom: 0px; - margin: 0px; -} - - -/* ------------ page-header-links styles -------------- */ - -table.page-header-links-table { - width: 100%; -} - -table#main-table table.page-header-links-table tr td.page-header-help { - text-align: right; - font-size: 120%; -} - -td.page-header-help a { - /*background-image: url( ../images/help.gif);*/ - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - padding-bottom: 2px; - display: block; - float: right; - z-index: 10; -} -div.page-header-help a { - /*background-image: url( ../images/help.gif);*/ - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - padding-bottom: 2px; - line-height: 17px; - float: right; - z-index: 10; - padding-right: 15px; - margin-top: 5px; - position: relative; -} - -table#main-table table.page-header-links-table tr td.breadcrumbs table.breadcrumb-table tr td.breadcrumb-link { - padding-right: 0px; - font-size: 90%; -} - -table#main-table table.page-header-links-table tr td.breadcrumbs table.breadcrumb-table tr td.breadcrumb-link a{ - padding-right: 0px; - font-size: 90%; -} - -table#main-table table.page-header-links-table tr td.breadcrumbs table.breadcrumb-table tr td.breadcrumb-current-page a{ - padding-right: 0px; - font-size: 90%; - color: #999; - cursor: text; -} - - -/* ------------- menu styles ---------------------- */ -div#menu { - margin-left: 0px; - margin-right: 0px; - min-width: 225px; -} - -div#menu ul.main { -} - -div#menu ul.main li { - font-weight: normal; -} - -div#menu ul.main li.normal { -} - -div#menu ul.main li a.menu-home { - font-weight:bold; - height:22px; - line-height:22px; - padding-top:0px; - padding-bottom:0px; - display: block; - /*width:215px;*/ - padding-left: 10px; - padding-right: 20px; - color: #0067B1; - background-image: url(../images/home-bg.gif); - background-repeat: repeat-x; - background-position: left top; -} - -div#menu ul.main li a.menu-home:hover { - color: #111; - background-image: none; - background-color: #CCCCCC; -} - -div#menu ul.main li.menu-header { - background-image:url(../images/menu_header.gif); - background-position: left bottom; - background-repeat:repeat-x; - font-weight:normal; - height:28px; - line-height:24px; - padding-top:0px; - padding-bottom:0px; - display: block; - /*width:215px;*/ - padding-left: 10px; - padding-right: 20px; - cursor: text; -} - -div#menu ul.main li.menu-header img { - float:right; - margin-right:-15px; - margin-top:4px; - cursor: pointer; -} - -div#menu ul.main li.menu-disabled-link img { - float:right; - margin-right:-15px; - cursor: pointer; -} - -div#menu ul.main li a.menu-default { - /* background-image: url( ../images/default-menu-icon.gif ); */ - background-repeat: no-repeat; - background-position: 16px 2px; - background-color: transparent; - height: 16px; - display: block; - /*width:187px;*/ - padding-left: 38px; - padding-right: 20px; - padding-top: 3px; - padding-bottom: 3px; - cursor: pointer; - border-top: solid 1px #fff; - border-bottom: solid 1px #fff; - color: #2F7ABD; - font-weight:normal; -} - -div#menu ul.main li a.menu-default-selected { - /* background-image: url( ../images/default-menu-icon.gif ); */ - background-repeat: no-repeat; - background-position: 16px 2px; - background-color: transparent; - height: 16px; - display: block; - /*width:187px;*/ - padding-left: 38px; - padding-right: 20px; - padding-top: 3px; - padding-bottom: 3px; - cursor: pointer; - border-top: solid 1px #ccc; - border-bottom: solid 1px #ccc; - color: #2F7ABD; - font-weight:normal; -} - -div#menu ul.main li a.menu-default:hover { - background-color: #D3E3FF; - border-bottom: solid 1px #99BEFF; - border-top: solid 1px #99BEFF; - color: #00447C; -} - -div#menu ul.main li.menu-disabled-link { - /* background-image: url( ../images/default-menu-icon.gif ); */ - background-repeat: no-repeat; - background-position: 16px 2px; - background-color: #F5F5F5; - color: #111111; - height: 16px; - display: block; - /*width:187px;*/ - padding-left: 38px; - padding-right: 20px; - padding-top: 3px; - padding-bottom: 3px; - cursor: pointer; - border-top: solid 1px #fff; - border-bottom: solid 1px #fff; - font-weight:normal; - cursor:text; -} - -div#menu ul.sub li a.menu-disabled-link:hover { - background-color: #F5F5F5; - color: #111111; -} - -div#menu ul.sub { - *margin-top: -13px; -} - -/* -------------- child no-01 styles -------------- */ - -div#menu ul.sub li a.menu-default { - background-position: 16px 2px; - /*width:187px;*/ - padding-left: 38px; - padding-right: 20px; - color: #2F7ABD; -} - - /* ----------- child no-01 (disabled) styles ------------------- */ - - div#menu ul.sub li.menu-disabled-link { - background-position: 16px 2px; - /*width:187px;*/ - padding-left: 38px; - padding-right: 20px; - color: #111; - } - -/* -------------- child no-02 styles -------------- */ - -div#menu ul.sub li.normal ul.sub li a.menu-default { - background-position: 32px 2px; - /*width:171px;*/ - padding-left: 54px; - padding-right: 20px; -} - - /* ----------- child no-02 (disabled) styles ------------------- */ - - div#menu ul.sub li.normal ul.sub li.menu-disabled-link { - background-position: 32px 2px; - /*width:171px;*/ - padding-left: 54px; - padding-right: 20px; - } - - -/* -------------- child no-03 styles -------------- */ - -div#menu ul.sub li.normal ul.sub li.normal ul.sub li a.menu-default { - background-position: 48px 2px; - /*width:155px;*/ - padding-left: 70px; - padding-right: 20px; -} - - /* ----------- child no-03 (disabled) styles ------------------- */ - - div#menu ul.sub li.normal ul.sub li.normal ul.sub li.menu-disabled-link { - background-position: 48px 2px; - /*width:155px;*/ - padding-left: 70px; - padding-right: 20px; - } - -/* -------------- child no-04 styles -------------- */ - -div#menu ul.sub li.normal ul.sub li.normal ul.sub li.normal ul.sub li a.menu-default { - background-position: 64px 2px; - /*width:139px;*/ - padding-left: 86px; - padding-right: 20px; -} - - /* ----------- child no-04 (disabled) styles ------------------- */ - - div#menu ul.sub li.normal ul.sub li.normal ul.sub li.normal ul.sub li.menu-disabled-link { - background-position: 64px 2px; - /*width:139px;*/ - padding-left: 86px; - padding-right: 20px; - } - -/* -------------- child no-05 styles -------------- */ - -div#menu ul.sub li.normal ul.sub li.normal ul.sub li.normal ul.sub li.normal ul.sub li a.menu-default { - background-position: 80px 2px; - /*width:123px;*/ - padding-left: 102px; - padding-right: 20px; -} - - /* ----------- child no-05 (disabled) styles ------------------- */ - - div#menu ul.sub li.normal ul.sub li.normal ul.sub li.normal ul.sub li.normal ul.sub li.menu-disabled-link { - background-position: 80px 2px; - /*width:123px;*/ - padding-left: 102px; - padding-right: 20px; - } - -/* ------------- footer styles -------------------- */ - -div#footer-div { - height: 27px; - width: 100%; -} - -div#footer-div div.footer-content { - height: 27px; - margin: auto; - padding: 0px; -} - -div#footer-div div.footer-content div.copyright { - padding-top: 5px; - color: #fff; - width: 450px; - float: left; - margin-left: 20px; -} - -div#footer-div div.footer-content div.poweredby { - background-image: url( ../images/powered.gif); - background-repeat: no-repeat; - background-position: left 3px; - width: 127px; - height: 27px; - float: right; - margin-right: 20px; -} - -/* --------------- middle content styles ----------------- */ - -div#middle { - background-color: #F4F4F4; - width: 100%; -} - -div#middle div#workArea { - padding: 10px; - background-color: white; -} - -div#middle h2 { - color: #0D4d79; - margin-top: 0px; - margin-bottom: 10px; - font-size: 150%; - font-weight: normal; - padding-bottom: 5px; - border-bottom: solid 1px #96A9CA; -} - -div#middle div#workArea h3 {\ - color: #0D4d79; - font-size: 140%; - font-weight: normal; - margin-top: 5px; - margin-bottom: 10px; -} -div#middle div#workArea h4 { - font-size: 130%; - font-weight: normal; - margin-top: 5px; - margin-bottom: 10px; -} -div#middle div#workArea h5 { - font-size: 120%; - font-weight: normal; - margin-top: 5px; - margin-bottom: 10px; -} -div#middle div#workArea h3.mediator { - font-size: 120%; - font-weight: bold; - margin-top: 5px; - margin-bottom: 5px; - padding-bottom: 4px; - border-bottom: solid 1px #ccc; - -} -/* ---- login styles ----- */ - -div#middle div#features { - padding-right: 30px; -} -div#features tr.feature { -} -div#features tr.feature td { - border-top: solid 1px #BCBEC0; - padding-top: 20px; - padding-bottom: 20px; -} -div#features tr.feature-top { -} -div#features tr.feature-top td { - border-top: solid 0px #BCBEC0; - padding-top: 0px; - padding-bottom: 20px; -} -tr.feature td img { - float: left; - margin-right: 20px; -} - -tr.feature h3 { - font-weight: normal; - font-size: 120%; - color: #0067B1; -} - -div#middle div#loginbox { - background-color: #fff; - border: solid 1px #BCBEC0; - padding: 20px; - margin-top: 10px; -} - -div#loginbox { - text-align: center; -} - -div#loginbox h2 { - font-weight: normal; - font-size: 150%; - text-align: center; - color: #0067B1; - margin-bottom: 10px; - padding-bottom: 15px; -} - -div#loginbox table { - margin: auto; -} - -div#loginbox table tr td { - padding: 3px; -} - -div#loginbox a{ -} - -div#loginbox input.user { - width: 150px !important; -} - -div#loginbox input.password { - width: 150px !important; -} - -/* ------------- REFINED ------------------ */ -/* ------------- Table Styled Left -------- */ -div#workArea table.styledLeft { - border-collapse: collapse; - margin-left: 2px; - width: 100%; -} - -div#workArea table.styledSession{ - border-collapse: collapse; - margin-left: 2px; - width: 600; -} - - -div#workArea table.styledLeft thead th { - background-image:url(../images/table-header.gif); - background-position: left bottom; - background-repeat:repeat-x; - border:1px solid #cccccc; - font-weight:normal; - height:22px; - line-height:20px; - margin-bottom:5px; - padding-left:8px; -} - -div#workArea table.styledLeft tbody tr td.middle-header { - background-image:url(../images/table-header.gif); - background-position: left bottom; - background-repeat:repeat-x; - border:1px solid #cccccc; - font-weight:normal; - height:22px; - line-height:20px; - margin-bottom:5px; - padding-left:8px; -} - -div#workArea table.styledLeft tbody tr td.sub-header { - background-image:url(../images/table-header.gif); - background-position: left bottom; - background-repeat:repeat-x; - border:1px solid #cccccc; - border-bottom: 0px solid #666; - border-top: 1px solid #666; - font-weight:normal; - height:22px; - line-height:20px; - margin-bottom:5px; - padding-left:8px; -} - -div#workArea table.styledLeft tbody tr td { - border: solid 1px #cccccc; - height: 25px; - padding-top: 2px; - padding-bottom: 2px; - padding-left: 8px !important; - padding-right: 8px !important; - vertical-align: middle !important; -} - -div#workArea table.styledLeft tbody tr td.nopadding { - border: solid 1px #cccccc; - height: 25px; - padding-top: 0px; - padding-bottom: 0px; - padding-left: 0px !important; - padding-right: 0px !important; - vertical-align: middle !important; -} -div#workArea table.styledLeft tbody tr td.formRow { - padding-top: 10px; - padding-bottom: 10px; - border-right: solid 1px #cccccc; - } -div#workArea table.styledLeft tbody tr td.buttonRow { - padding-top: 5px; - padding-bottom: 5px; - /* background-image: url(../images/buttonRow-bg.gif); */ - background-position: left top; - background-repeat: repeat-x; -} -/* ------------- Table Styled Inner -------- */ -div#workArea table.styledInner { - border-collapse: collapse; - margin-left: 2px; - width: 100%; -} - -div#workArea table.styledInner thead th { - background-image: none; - background-color: #E7E7E8; - border:1px solid #cccccc; - font-weight:normal; - height:22px; - line-height:20px; - margin-bottom:5px; - padding-left:8px; -} -div#workArea table.styledInner tbody tr td { - border: solid 1px #cccccc !important; - height: 25px; - padding-top: 2px; - padding-bottom: 2px; - padding-left: 8px !important; - padding-right: 8px !important; - vertical-align: middle !important; -} -.buttonRowAlone { - padding-top: 5px; - padding-bottom: 5px; - background-image: url(../images/buttonRow-bg.gif); - background-position: left top; - background-repeat: repeat-x; - border-bottom: solid 1px #cccccc; - border-top: solid 1px #cccccc; -} -div#workArea table.noBorders tbody tr td { - border:none; -} -div#workArea table.noBorders tbody tr td table.styledLeft td { - border: solid 1px #cccccc; -} -div#workArea table.noBorders{ -border: solid 1px #cccccc; -} -div#workArea table.normal { - border-collapse: separate; - padding: 3px; -} -div#workArea table.normal-nopadding { - border-collapse: separate; - padding: 0px; - width: 100%; -} -div#workArea table.normal tbody tr td { - border: 0px; -} -div#workArea table.normal-nopadding tbody tr td { - border: solid 0px #cccccc !important; - height: 25px; - padding-top: 3px; - padding-bottom: 3px; - padding-left: 8px !important; - padding-right: 8px !important; - vertical-align: middle !important; -} -div#workArea table.normal-nopadding tbody tr td.top-align { - vertical-align: top !important; -} -div#workArea table.normal-nopadding tbody tr td.middle-header { - background-image:url(../images/table-header.gif); - background-position: left bottom; - background-repeat:repeat-x; - border-top:1px solid #cccccc !important; - border-bottom:1px solid #cccccc !important; - border-left:0px solid #cccccc; - border-right:0px solid #cccccc; - font-weight:normal; - height:22px; - line-height:20px; - margin-bottom:5px; - padding-left:8px; -} -div#workArea table.normal-nopadding tbody tr td.sub-header { - background-image: none; - background-color: #ededed; - border-top:1px solid #cccccc; - border-bottom:1px solid #cccccc; - border-left:1px solid #cccccc; - border-right:1px solid #cccccc; - font-weight:normal; - height:22px; - line-height:20px; - margin-bottom:5px; - padding-left:8px; -} -div#workArea table.normal-nopadding tbody tr td.nopadding { -padding: 0px !important; -border: 0px !important; -} -div#workArea table.normal tbody tr td.nopadding { -padding: 0px !important; -border: 0px !important; -} -/* ---------------- table styles --------------------------- */ -.tableOddRow{background-color: white;} -.tableEvenRow{background-color: #ededed;} - -.button{ - background-image:url(../images/button-bg.gif); - background-repeat:repeat-x; - background-position:0 0; - padding-left: 5px; - padding-right: 5px; - padding-top:0px; - padding-bottom:0px; - border:solid 1px #9D9FA1; -} -.button:focus{ - background-image:url(../images/button-bg-focus.gif); -} -.button:hover{ - background-image:url(../images/button-bg-hover.gif); - border:solid 1px #8268A8; -} - - -a.icon-link { -/* background-image: url(../images/default-menu-icon.gif); */ -background-repeat: no-repeat; -background-position: left top; -padding-left: 20px; -line-height: 17px; -height: 17px; -float: left; -position: relative; -margin-left: 10px; -margin-top: 5px; -margin-bottom: 3px; -white-space: nowrap; -cursor:pointer; -} -a.icon-link-nofloat { -/* background-image: url(../images/default-menu-icon.gif); */ -background-repeat: no-repeat; -background-position: left top; -padding-left: 20px !important; -padding-bottom: 2px; -line-height: 17px; -height: 17px; -margin-left: 10px; -margin-right: 20px !important; -margin-top: 5px; -margin-bottom: 3px; -white-space: nowrap; -display: block; -} -a.delete-icon-link { - background-image: url( ../images/delete.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.delete-icon-link-nofloat { - background-image: url( ../images/delete.gif ); - background-repeat: no-repeat; - background-position: left 2px; - padding-left: 20px; - line-height: 23px; - height: 23px; - float: none; - margin-left: 10px; - margin-top: 0px; - margin-bottom: 0px; - white-space: nowrap; - padding-top: 0px; - padding-bottom: 0px; - display: block; -} -a#delete1, a#delete2 { - background-image: url( ../images/delete.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 0px; - margin-bottom: 0px; - white-space: nowrap; -} - -a#icon { - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 0px; - margin-bottom: 0px; - white-space: nowrap; -} - - -a.edit-icon-link { - background-image: url( ../images/edit.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.copy-icon-link { - background-image: url( ../images/copy.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.move-icon-link { - background-image: url( ../images/move.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.view-icon-link { - background-image: url( ../images/view.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.feed-small-res-icon-link { - background-image: url( ../images/icon-feed-small-res.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.registry-picker-icon-link { - background-image: url( ../images/registry_picker.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.nseditor-icon-link { - background-image: url( ../images/nseditor-icon.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.add-icon-link { - background-image: url( ../images/add.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -a.policie-icon-link { - background-image: url( ../images/policies.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -span.icon-text { -/* background-image: url(../images/default-menu-icon.gif); */ -background-repeat: no-repeat; -background-position: left top; -padding-left: 20px; -line-height: 17px; -height: 17px; -float: left; -position: relative; -margin-left: 10px; -margin-top: 3px; -margin-bottom: 3px; -white-space: nowrap; -} -span.icon-text-disabled { -/* background-image: url(../images/default-menu-icon.gif); */ -background-repeat: no-repeat; -background-position: left top; -padding-left: 20px; -line-height: 17px; -height: 17px; -float: left; -position: relative; -margin-left: 10px; -margin-top: 3px; -margin-bottom: 3px; -white-space: nowrap; -color: #999; -} -select { -font-size: 100%; -} -.required{ -color:red; -} -.longInput{ -width:250px; -} -.leftCol-small{ -width:150px; -} -.leftCol-med{ -width:250px; -} -.leftCol-big{ -width:350px; -} -.ajax-loading-message{ -position:relative; -margin-top:100px; -margin-left:150px; -font-size:15px; -font-weight:bold; -color:#aaaaaa; -} -.ajax-loading-message img{ -margin-right:20px; -} -/*--- service parameter page styles ( use to remove the unwanted colors inherited from Highlightre styles ---- */ -div.dp-highlighter { -background-color: transparent; -} -div.dp-highlighter ol { -background-color: transparent; -} -div.dp-highlighter ol li.alt { -background-color: transparent; -} -div.dp-highlighter ol li, .dp-highlighter .columns div { -background-color: transparent; -} -input.text-box-big { -width: 250px; -} -.info-box{ -background-color:#EEF3F6; -border:1px solid #ABA7A7; -font-size:13px; -font-weight:bold; -margin-bottom:10px; -padding:10px; -} -.mSelected { - background-color: #DDDDDD !important; -} -div.clear { -font-size:4px; -line-height:4px; -} - -pre.programlisting, pre.screen { - background-color: #F0F0F0; - border-bottom: none; - color: #990033; - font-size: 9pt; - font-family: "Courier New"; - padding-left: 10pt; - padding-right: 10pt; -} -span.emphasis { - color: #24753C; -} - diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/css/main.css b/src/main/webapp/MagicLine4Web/ML4WebExample/css/main.css deleted file mode 100644 index 30adeaa1..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/css/main.css +++ /dev/null @@ -1,214 +0,0 @@ -/* ---------------- template styles ------------------------- */ - -table#main-table td#header { - background-image: url( ../images/ds-header-region-bg.gif); -} - -table#main-table td#menu-panel { - border-right: solid 0px #73559D; -} - - -/* ---------------- header styles ------------------ */ -div#header-div { - background-image: url( ../images/ds-header-bg.gif); -} - -div#header-div div.left-logo { - /*background-image: url( ../images/esb-header-logo.gif );*/ - margin-left:45px; - margin-top:35px; -} - -div#header-div div.right-logo { - /*background-image:url("../images/right-logo-bg.gif"); - background-position:right top; - background-repeat:no-repeat; - color:#542988;*/ - color:#2F5699; - height:32px; - margin-right:20px; - line-height: 30px; - margin-top:20px; - padding-right:0px; - padding-top:5px; -} -div#header-div div.header-links { - margin-top:0px; -} -div#header-div div.header-links div.right-links { - margin-right: 0px; - height: 35px; - padding-top: 0px; -} -div#header-div div.header-links div.right-links ul { - background-image:url("../images/right-links-bg.gif"); - background-position:left top; - background-repeat:repeat-x; - padding-left: 25px; - padding-right: 15px; - padding-top: 9px; - padding-bottom: 7px; -} -/* ------------- menu styles ---------------------- */ -div#menu { -} - -div#menu ul.main { -} - -div#menu ul.main li { -} - -div#menu ul.main li.normal { -} - -div#menu ul.main li a.menu-home { - display: none !important; -} - -div#menu ul.main li.menu-header { - background-image:url("../images/menu_header.gif"); - height: 28px; -} - -div#menu ul.main li a.menu-default { -} - -div#menu ul.main li a.menu-default:hover { - /*background-color: #EFECF5; - border-bottom: solid 1px #C2B7D8; - border-top: solid 1px #C2B7D8; - */ - background-color: #D3E3FF; - border-bottom: solid 1px #99BEFF; - border-top: solid 1px #99BEFF; - color: #00447C; -} - -div#menu ul.sub { -} - -/* -------------- child no-01 styles -------------- */ - -div#menu ul.sub li.normal { - -} - -div#menu ul.sub li a.menu-default { -} - -/* ----------- child no-01 (disabled) styles ------------------- */ - -div#menu ul.sub li a.menu-disabled-link { - } - - div#menu ul.sub li a.menu-disabled-link:hover { - } - -/* -------------- child no-02 styles -------------- */ - -div#menu ul.sub li.normal ul.sub li a.menu-default { - -} - -/* -------------- child no-03 styles -------------- */ - -div#menu ul.sub li.normal ul.sub li.normal ul.sub li a.menu-default { -} - -/* ------------- footer styles -------------------- */ - -div#footer-div div.footer-content div.poweredby { - background-image: url(../images/powered-ds.gif); - background-position: right top; -} - -/* ---- login styles ----- */ - - -/* --------------- table styles -------------------- */ - -.tableOddRow{background-color: white;} -.tableEvenRow{background-color: #EFECF5;} - -.button:hover{ - background-image:url(../images/ds-button-bg-hover.gif); - border:solid 1px #8268A8; -} - -/* =============================================================================================================== */ - - - -.cornerExpand { - position: relative; - top: 3px; - left: -12px; - cursor: pointer; -} - -.cornerCollapse { - position: relative; - top: 3px; - left: -12px; - cursor: pointer; -} - -/* chanaka */ - -.form-table td{ - padding-bottom:5px !important; - padding-left:5px !important; - padding-top:5px !important; - padding-right:10px !important; -} -.form-table td div.indented{ - padding-left:7px !important; - color:#595959 !important; -} -.form-table-left{ -width:100px; -} - -.longTextField{ -width:270px; -} -.rowAlone{ -padding-top:10px; -padding-bottom:10px; -} -.tabedBox{ -border:solid 1px #cccccc; -margin-left:10px; -padding:10px; -margin-bottom:10px; -} -/* chanaka end */ - -a.fact-selector-icon-link { - background-image: url( ../images/facts-selector.gif ); - background-repeat: no-repeat; - background-position: left top; - padding-left: 20px; - line-height: 17px; - height: 17px; - float: left; - position: relative; - margin-left: 10px; - margin-top: 5px; - margin-bottom: 3px; - white-space: nowrap; -} -table#main-table td#middle-content { -background-image: url(../images/menu-margin.gif); -background-position: left top; -background-repeat: repeat-y; -} - -.f_blue_ty1 {color:#0169A8; font-size:12px} -.f_blue_ty1b {color:#0169A8; font-weight:bold; font-size:15px} -.f_red_ty1b {color:#CC0000; font-weight:bold; font-size:11px; padding-left: 10px} -.f_red_ty1 {color:#CC0000; font-size:11px; padding-left: 10px} - - diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/1px.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/1px.gif deleted file mode 100644 index f866f1db..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/1px.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide.gif deleted file mode 100644 index c114be0d..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide_bottom.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide_bottom.gif deleted file mode 100644 index d051e25a..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide_bottom.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide_top.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide_top.gif deleted file mode 100644 index a431fc48..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/bg_guide_top.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg-focus.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg-focus.gif deleted file mode 100644 index be3943d7..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg-focus.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg-hover.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg-hover.gif deleted file mode 100644 index fe591292..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg-hover.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg.gif deleted file mode 100644 index 6c75daaf..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/button-bg.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/down-arrow.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/down-arrow.gif deleted file mode 100644 index e4092cf3..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/down-arrow.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-button-bg-hover.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-button-bg-hover.gif deleted file mode 100644 index c4e3ffbc..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-button-bg-hover.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-header-bg.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-header-bg.gif deleted file mode 100644 index a3f93df5..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-header-bg.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-header-region-bg.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-header-region-bg.gif deleted file mode 100644 index 3b42835c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/ds-header-region-bg.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/favicon.ico b/src/main/webapp/MagicLine4Web/ML4WebExample/images/favicon.ico deleted file mode 100644 index 562cda23..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/favicon.ico and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/forum.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/forum.gif deleted file mode 100644 index e92779ad..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/forum.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/issue-tracker.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/issue-tracker.gif deleted file mode 100644 index 9029c129..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/issue-tracker.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/mailing-list.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/mailing-list.gif deleted file mode 100644 index 06d61e3c..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/mailing-list.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu-header.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu-header.gif deleted file mode 100644 index c35ee017..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu-header.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu-margin.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu-margin.gif deleted file mode 100644 index e9c1465d..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu-margin.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu_header.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu_header.gif deleted file mode 100644 index 892f6951..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/menu_header.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/powered-ds.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/powered-ds.gif deleted file mode 100644 index af3ee1fd..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/powered-ds.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/right-links-bg.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/right-links-bg.gif deleted file mode 100644 index 19fed9b4..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/right-links-bg.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/table-header.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/table-header.gif deleted file mode 100644 index 92283f09..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/table-header.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/up-arrow.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/up-arrow.gif deleted file mode 100644 index 325a93a5..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/up-arrow.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/images/user-guide.gif b/src/main/webapp/MagicLine4Web/ML4WebExample/images/user-guide.gif deleted file mode 100644 index 9342adcd..00000000 Binary files a/src/main/webapp/MagicLine4Web/ML4WebExample/images/user-guide.gif and /dev/null differ diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/include/footer.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/include/footer.jsp deleted file mode 100644 index ac786262..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/include/footer.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8"%> - - -
              - - - - - - - - -
              - -
              - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/include/header.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/include/header.jsp deleted file mode 100644 index 9c1b52ac..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/include/header.jsp +++ /dev/null @@ -1,22 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8"%> - - - - - - - - -Welcome to MagicLine4Web Page - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/include/menu.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/include/menu.jsp deleted file mode 100644 index 6e8743c5..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/include/menu.jsp +++ /dev/null @@ -1,198 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8"%> - - - - - - - or other required elements. - thead: [ 1, "
              - - - - - - or other required elements. - thead: [ 1, "
              diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/index.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/index.jsp deleted file mode 100644 index d5d4f7c2..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/index.jsp +++ /dev/null @@ -1,179 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8"%> - - - -
              -



              - -

              [ 2016-07-18 10:30 ]

              -* Version : 클라이언트 : win = 1.0.1.0, mac = 1.0.1.0
              -1. [bugfix]
              - - 보안토큰 인증서 복사 오류 수정
              - -2. [기능추가]
              - - 인증서 찾기 안드로이드 기기 추가
              - - 인증서 필터링 기능 추가
              - - cs update html 추가
              - - libType(CRYPT)이 C 인 경우 CS 실행 기능 추가
              - -3. [기능변경]
              - - 관리메뉴 인증서 복사시 암호 체크 기능 적용
              - -

              - -

              [ 2016-07-12 10:30 ]

              -* Version : 클라이언트 : win = 1.0.1.0, mac = 1.0.1.0
              -1. [bugfix]
              - - 다이얼로그 z-index조정
              - - alert 다이얼로그 포커스 처리
              - -2. [기능추가]
              - - pfx 모바일 인증 기능 추가
              - - cs 설치 download type 및 모바일 기기 예외 처리 추가
              - - 인증서 목록 필터 적용 개발중
              - - js minify 버전 적용
              - -3. [기능변경]
              - - 사이트 Domain 변수화
              - - 사이트 언어 ko로 픽스 적용
              - - pfx import 창 탭이벤트 포커스 처리
              - -

              - -

              [ 2016-07-07 10:30 ]

              -* Version : 클라이언트 : win = 1.0.1.0, mac = 1.0.1.0
              -1. [bugfix]
              - - 인증서 재서명창 호출 오류 수정
              - -2. [기능추가]
              - - cs 설치 관련 기능 추가
              - -3. [기능변경]
              - - 로컬스토리지 인증서 백업 MLCert 사용여부를 config 옵션 처리.
              - -

              - -

              [ 2016-07-05 10:30 ]

              -* Version : 클라이언트 : win = 1.0.1.0, mac = 1.0.1.0
              -1. [bugfix]
              - - MLjquiWindow 다이얼로그 창 z-index 조정
              - - 오류 메세지 표시 오류 버그 패치
              - - ie8 디자인 패치 적용
              - -2. [기능추가]
              - - 스마트인증 연동 스크립트 추가
              - - 초기화 시점 조절. 외부 Alert Dialog 기능 개발
              - -3. [기능변경]
              - - 초기화 완료 체크 로직 변경
              - -

              - -

              [ 2016-07-04 10:30 ]

              -* Version : 클라이언트 : win = 1.0.1.0, mac = 1.0.1.0
              -1. [bugfix]
              - - 클라이언트 종료시 메시지가 깨지는 현상 수정
              - - IE8 적용 패치. 스크립트 오류 수정
              - - 오류 코드 문구 추가 & 정리
              - - localStorage DreamWebCert Sync 기능 개발로 인한
              - Side Effect. Storage Api DeleteCert, SaveCert 기능 버그패치
              - -2. [기능추가]
              - - CS Install popup open 모듈 추가
              - - mlcert.dreamsecurity.com iframe 적용
              - - localStorage DreamWebCert Sync 기능 개발
              - -3. [기능변경]
              - - 없음
              - -

              - -

              [ 2016-06-30 10:30 ]

              -* Version : 클라이언트 : win = 1.0.0.31, mac = 1.0.1.0
              -1. [bugfix]
              - - 공백삭제, 한글 메세지 처리, 콜백정리
              - -2. [기능추가]
              - - PFX 인증서 가져오기 웹스토리지 인증서 저장 여부 선택 기능 추가
              - - Loading 완료 체크 변수 적용
              - - mac용 cs 파일 추가
              - -3. [기능변경]
              - - design js plugin concat & minify
              - -

              - -

              [ 2016-06-28 10:30 ]

              -* Version : 클라이언트 : win = 1.0.0.31
              -1. [bugfix]
              - - 없음
              - -2. [기능추가]
              - - Loading 완료 체크 변수 적용
              - - 멀티 OS 테스트 환경 적용
              - -3. [기능변경]
              - - 도메인 설정 방법 변경.(Config 으로 1원화)
              - - 스마트 공인인증 Web 취소 메시지 처리 부분 삭제
              - - SSL 공인인증서 적용 및 도메인 변경
              - - SSL 공인인증서 포트 변경으로 인한 포트 체크 로직 수정
              - - 테스트 코드 삭제
              - -

              - -

              [ 2016-06-26 10:00 ]

              -* Version : 클라이언트 : win = 1.0.0.31
              -1. [bugfix]
              - - ie8 지원을 위한 버그패치
              - -2. [기능추가]
              - - 버그리포팅 메뉴 추가
              - - 스마트인증 모바일 추가
              - - 스마트인증 Web 처리 모듈 추가
              - - 클라이언트 업데이트 c crypto filepicker 기능 추가
              - - C crypto 에서만 사용되는, PFX 파일 선택하기위한 getFilePicker() 함수 추가
              - - input 창 enterKey 이벤트 처리 적용
              - -3. [기능변경]
              - - pfx savecert 함수 기능 패치 - realname 부재 인증서에 대한 처리
              - - 메인다이얼로그창 Full Screen Iframe 적용
              - -

              - -

              [ 2016-06-22 09:30 ]

              -* Version : 클라이언트 : win = 1.0.0.31
              -1. [bugfix]
              - - cs 설치 문구 수정
              - -2. [기능추가]
              - - 인증서 가져오기 팝업 추가
              - - 인증서 삭제 팝업 추가
              - - 로컬서버 설치 모듈 추가
              - - 로컬서버 인스톨 모듈 개발
              - -3. [기능변경]
              - - 패스워드 유효성 검사 수정
              - - 패키징 구조 변경
              - -

              - -

              [ 2016-06-21 09:30 ]

              -* Version : 클라이언트 : win = 1.0.0.31
              - * 최초릴리즈
              - -




              - -
              - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/login.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/login.jsp deleted file mode 100644 index 00d3eb84..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/login.jsp +++ /dev/null @@ -1,121 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%> - - - - - - - - - - - - - - - - - - - - - - - - -
              - -
              - - - - - -
              - - - - - -
              - -
              - -
              - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/loginR.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/loginR.jsp deleted file mode 100644 index 6b9e448d..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/loginR.jsp +++ /dev/null @@ -1,163 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="com.dreamsecurity.magicline.JCaosCheckCert"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509Certificate"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509GeneralName"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509OtherName"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Base64"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Hex"%> -<%@ page import="com.dreamsecurity.jcaos.vid.VID"%> -<%@ page import="java.math.BigInteger"%> -<%@ page import="java.net.URLDecoder"%> -<%@ page import="com.dreamsecurity.JCAOSProvider" %> -<% - // 서명 검증 셈플 - // 클라이언트에서 받은 서명 데이타를 검증 - String sResult = ""; - String sSignData = null; - String vidRandom = null; - JCaosCheckCert jcaosCheck = null; - //String sIDN = null; - String sSourceText = null; - String textCheck = ""; - String sPolicy = ""; - String sidentifyData = ""; - - // 서명 데이타를 가져옴 - // 본 셈플에서는 서명 값을 Post Data 의 SignData 에 넣어서 보낸다고 간주 코딩 한다 - sSignData = request.getParameter("signedData"); - sSignData = URLDecoder.decode(sSignData, "utf-8"); - vidRandom = request.getParameter("vidRandom"); - vidRandom = URLDecoder.decode(vidRandom, "utf-8"); - String idn = request.getParameter("idn"); - - sResult = sResult+"- SignData ["+sSignData+"]
              \n"+"- VIDData ["+vidRandom+"]
              \n"; - - System.out.println(sResult); - - // 서명 데이타가 있을때 서명 검증 - if (sSignData != null && sSignData.length() > 0){ - try{ - - - // API 초기화 (한번만 실행) - JCAOSProvider.installProvider(false); - // 라이센스 경로 설정 - //com.dreamsecurity.jcaos.Environment.setLicensePath("C:/Tomcat 5.5/webapps/MagicLine4/WEB-INF/lib"); - - - jcaosCheck = new JCaosCheckCert(); - - // 서버가 알고 잇는 주민등록 번호를 등록한다 - jcaosCheck.setVIDRandom(idn, vidRandom); - - sResult = sResult+"
              \n- 인증서 검증 시작
              \n"; - - // 서명 검증 - // 검증후 원문이 리턴됨 - int iResult = jcaosCheck.checkCert(sSignData); - /* - - JCaosCheckCert.checkCert 의 에러코드는 하기와 같습니다. - JCaosCheckCert.STAT_OK // 성공 - JCaosCheckCert.STAT_ERR_WRONGCERT // 정상적인 인증서가 아님 - JCaosCheckCert.STAT_ERR_ETC // 기타 오류 - JCaosCheckCert.STAT_ERR_VerifyException // 서명 검증 실패 - JCaosCheckCert.STAT_ERR_CertificateNotYetValidException // 인증서 유효기간 검증 오류 - JCaosCheckCert.STAT_ERR_CertificateExpiredException // 인증서 만료 - JCaosCheckCert.STAT_ERR_ObtainCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_BuildCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_TrustRootException // 신뢰할수 없는 최상위 인증서 - JCaosCheckCert.STAT_ERR_ValidateCertPathException // 인증서 경로 검증 실패 - JCaosCheckCert.STAT_ERR_RevokedCertException // 폐지된 인증서 - JCaosCheckCert.STAT_ERR_RevocationCheckException // CRL 검증 실패 - JCaosCheckCert.STAT_ERR_NotExistSignerCertException // 서명자 인증서 누락 - JCaosCheckCert.STAT_ERR_IOException // IOException - JCaosCheckCert.STAT_ERR_FileNotFoundException // FileNotFoundException - JCaosCheckCert.STAT_ERR_NoSuchAlgorithmException // NoSuchAlgorithmException - JCaosCheckCert.STAT_ERR_NoSuchProviderException // NoSuchProviderException - JCaosCheckCert.STAT_ERR_ParsingException // ParsingException - JCaosCheckCert.STAT_ERR_IdentifyException // 본인확인 실패 - */ - - if (iResult != 0){ - // 오류 발생시 오류를 구분 - String sCertResult = null; - switch(iResult){ - case JCaosCheckCert.STAT_ERR_WRONGCERT : // 정상적인 인증서가 아님 - sCertResult = "서명에 사용된 인증서가 정상적인 인증서가 아닙니다."; - break; - case JCaosCheckCert.STAT_ERR_RevocationCheckException : // CRL 검증 실패 - case JCaosCheckCert.STAT_ERR_NotExistSignerCertException : // 서명자 인증서 누락 - case JCaosCheckCert.STAT_ERR_IOException : // IOException - case JCaosCheckCert.STAT_ERR_FileNotFoundException : // FileNotFoundException - case JCaosCheckCert.STAT_ERR_ETC : // 기타 오류 - case JCaosCheckCert.STAT_ERR_BuildCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ObtainCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ValidateCertPathException : // 인증서 경로 검증 실패 - case JCaosCheckCert.STAT_ERR_TrustRootException : // 신뢰할수 없는 최상위 인증서 - sCertResult = "서명 인증서 검증 오류 ["+iResult+"]."; - break; - case JCaosCheckCert.STAT_ERR_VerifyException : // 서명 검증 실패 - sCertResult = "서명 검증 실패"; - break; - case JCaosCheckCert.STAT_ERR_CertificateNotYetValidException : // 인증서 유효기간 검증 오류 - sCertResult = "서명 인증서 유효기간 검증 오류"; - break; - case JCaosCheckCert.STAT_ERR_CertificateExpiredException : // 인증서 만료 - sCertResult = "만료된 인증서 "; - break; - case JCaosCheckCert.STAT_ERR_RevokedCertException : // 폐지된 인증서 - sCertResult = "폐지된 인증서"; - break; - default: - sCertResult = "기타오류 ["+iResult+"]"; - break; - } - sResult = "
              \n- "+sCertResult+" \n[" + jcaosCheck.getLastErr() +"]
              \n\n"; - }else{ - // 서명 검증에 성공 - sResult = sResult+ "- 인증서 검증 성공
              \n"; - - // 서명에 사용된 인증서를 가져온다 - X509Certificate cert = jcaosCheck.getUserCert(); - String signerDN = cert.getSubjectDN().getName(); // 인증서 DN - BigInteger serialNumber = cert.getSerialNumber(); // 인증서 시리얼 - - // 본인확인 - switch (jcaosCheck.getVIDCheck()){ - case JCaosCheckCert.STAT_VID_NOTCHECK: - sResult = sResult+"- 본인 확인 하지 않음
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_OK: - sResult = sResult+"- 본인 확인 성공
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_FAIL: - sResult = sResult+"- 본인 확인 실패
              \n"; - break; - } - - - - // 화면 출력값 생성 - sResult = sResult+ "
              \n- 사용자 DN ["+signerDN+"]
              \n"+"
              \n"; - sResult = sResult+ "- 발급자 DN ["+cert.getIssuerDN().getName()+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 SN ["+cert.getSerialNumber().toString(16)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 정책 ["+cert.getCertificatePolicies().getPolicyIdentifier(0)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 serialNumber ["+serialNumber+"]
              \n"+"
              \n"; - - - } - }catch(Exception e){ - // 인증서 검증중 오류가 난 경우 - // 처리를 편하게 하기 위해 - // 상용중에는 사용자의 인증서의 유효성의 문제가 잇는 경우가 대부분 입니다. - //e.printStackTrace(); - sResult = "서명 검증에 실패 하였습니다.\n [" + e.getMessage()+"]\");"; - } - } else - { - sResult=" - 서명 데이타가 존재하지 않습니다..
              \n"; - } - - out.print(sResult); - System.out.println(sResult); -%> diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/saveCert.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/saveCert.jsp deleted file mode 100644 index 2aaa4d71..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/saveCert.jsp +++ /dev/null @@ -1,136 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%> - - - - -
              -

              MagicLine Save Certificate

              -
              - - - - - - - - - - -
              Description
                공개키와 개인키를 통해 인증서를 저장합니다.
              - -

               

              -
              - - - - - - - - - - - - - - - - - - - - -
              Client Digital Signature Information
              - - - - - - - - - - - - - - - - - -
              signcert* - - -
              signpri* - - -
              kmcert* - - -
              kmpri* - - -
              -
              - -   - -
              -
              -
              -

               

              - -
              -
              - - - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/signedAjax.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/signedAjax.jsp deleted file mode 100644 index ea5e84dd..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/signedAjax.jsp +++ /dev/null @@ -1,176 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%> - - - -
              -

              MagicLine Digital Signature

              -
              - - - - - - - - - - - -
              Description
                웹 구간 전달 메시지 전체에 대해 클라이언트에서 전자서명을 실행합니다.(비동기 통신)
              -

               

              -
              - - - - - - - - - - - - - - - - - - -
              Client Digital Signature Information
              - - - - - -
              전자서명 원문 데이터 입력* - - -
              -
              - -
              -

               

              - - - - - - - -
              -

               

              -
              -
              - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/signedAjaxR.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/signedAjaxR.jsp deleted file mode 100644 index 34a8fa41..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/signedAjaxR.jsp +++ /dev/null @@ -1,178 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="com.dreamsecurity.magicline.JCaosCheckCert"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509Certificate"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509GeneralName"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509OtherName"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Base64"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Hex"%> -<%@ page import="com.dreamsecurity.jcaos.vid.VID"%> -<%@ page import="java.math.BigInteger"%> -<%@ page import="java.net.URLDecoder"%> -<%@ page import="java.util.Properties"%> -<%@ page import="java.util.ArrayList"%> -<% - // 서명 검증 셈플 - // 클라이언트에서 받은 서명 데이타를 검증 - String sResult = ""; - String sSignData = null; - String sVIDRandomHash = null; - JCaosCheckCert jcaosCheck = null; - String sSourceText = ""; - String submitType = ""; - String textCheck = ""; - String sPolicy = ""; - String sidentifyData = ""; - - // 서명 데이타를 가져옴 - // 본 셈플에서는 서명 값을 Post Data 의 SignData 에 넣어서 보낸다고 간주 코딩 한다 - sSignData = request.getParameter("sign"); - submitType = request.getParameter("sType"); - - sResult = sResult+"- SignData ["+sSignData+"]
              \n"; - - // 서명 데이타가 있을때 서명 검증 - if (sSignData != null && sSignData.length() > 0){ - try { - jcaosCheck = new JCaosCheckCert(); - sResult = sResult+"
              \n- 인증서 검증 시작
              \n"; - - // 서명 검증 - // 검증후 원문이 리턴됨 - int iResult = jcaosCheck.checkCert(sSignData); - /* - - JCaosCheckCert.checkCert 의 에러코드는 하기와 같습니다. - JCaosCheckCert.STAT_OK // 성공 - JCaosCheckCert.STAT_ERR_WRONGCERT // 정상적인 인증서가 아님 - JCaosCheckCert.STAT_ERR_ETC // 기타 오류 - JCaosCheckCert.STAT_ERR_VerifyException // 서명 검증 실패 - JCaosCheckCert.STAT_ERR_CertificateNotYetValidException // 인증서 유효기간 검증 오류 - JCaosCheckCert.STAT_ERR_CertificateExpiredException // 인증서 만료 - JCaosCheckCert.STAT_ERR_ObtainCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_BuildCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_TrustRootException // 신뢰할수 없는 최상위 인증서 - JCaosCheckCert.STAT_ERR_ValidateCertPathException // 인증서 경로 검증 실패 - JCaosCheckCert.STAT_ERR_RevokedCertException // 폐지된 인증서 - JCaosCheckCert.STAT_ERR_RevocationCheckException // CRL 검증 실패 - JCaosCheckCert.STAT_ERR_NotExistSignerCertException // 서명자 인증서 누락 - JCaosCheckCert.STAT_ERR_IOException // IOException - JCaosCheckCert.STAT_ERR_FileNotFoundException // FileNotFoundException - JCaosCheckCert.STAT_ERR_NoSuchAlgorithmException // NoSuchAlgorithmException - JCaosCheckCert.STAT_ERR_NoSuchProviderException // NoSuchProviderException - JCaosCheckCert.STAT_ERR_ParsingException // ParsingException - JCaosCheckCert.STAT_ERR_IdentifyException // 본인확인 실패 - */ - if( iResult == 0 ){ - sResult = sResult+ "- 인증서 검증 성공
              \n"; - }else if( iResult == 3000 ){ - sResult = sResult+ "- 인증서 검증 하지않음
              \n"; - }else if ( iResult != 0 ){ - // 오류 발생시 오류를 구분 - String sCertResult = null; - switch(iResult){ - case JCaosCheckCert.STAT_ERR_WRONGCERT : // 정상적인 인증서가 아님 - sCertResult = "서명에 사용된 인증서가 정상적인 인증서가 아닙니다."; - break; - case JCaosCheckCert.STAT_ERR_RevocationCheckException : // CRL 검증 실패 - case JCaosCheckCert.STAT_ERR_NotExistSignerCertException : // 서명자 인증서 누락 - case JCaosCheckCert.STAT_ERR_IOException : // IOException - case JCaosCheckCert.STAT_ERR_FileNotFoundException : // FileNotFoundException - case JCaosCheckCert.STAT_ERR_ETC : // 기타 오류 - case JCaosCheckCert.STAT_ERR_BuildCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ObtainCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ValidateCertPathException : // 인증서 경로 검증 실패 - case JCaosCheckCert.STAT_ERR_TrustRootException : // 신뢰할수 없는 최상위 인증서 - sCertResult = "서명 인증서 검증 오류 ["+iResult+"]."; - break; - case JCaosCheckCert.STAT_ERR_VerifyException : // 서명 검증 실패 - sCertResult = "서명 검증 실패"; - break; - case JCaosCheckCert.STAT_ERR_CertificateNotYetValidException : // 인증서 유효기간 검증 오류 - sCertResult = "서명 인증서 유효기간 검증 오류"; - break; - case JCaosCheckCert.STAT_ERR_CertificateExpiredException : // 인증서 만료 - sCertResult = "만료된 인증서 "; - break; - case JCaosCheckCert.STAT_ERR_RevokedCertException : // 폐지된 인증서 - sCertResult = "폐지된 인증서"; - break; - default: - sCertResult = "기타오류 ["+iResult+"]"; - break; - } - sResult = "
              \n- "+sCertResult+" \n[" + jcaosCheck.getLastErr() +"]
              \n\n"; - } - if( iResult == 0 || iResult == 3000 ){ - - - // 서명에 사용된 인증서를 가져온다 - X509Certificate cert = jcaosCheck.getUserCert(); - String signerDN = cert.getSubjectDN().getName(); // 인증서 DN - BigInteger serialNumber = cert.getSerialNumber(); // 인증서 시리얼 - - // 본인확인 - switch (jcaosCheck.getVIDCheck()){ - case JCaosCheckCert.STAT_VID_NOTCHECK: - sResult = sResult+"- 본인 확인 하지 않음
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_OK: - sResult = sResult+"- 본인 확인 성공
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_FAIL: - sResult = sResult+"- 본인 확인 실패
              \n"; - break; - } - - // 서명 값 (Base64) - String base64SignData = sSignData; - - // 서명 원문을 가져온다 - //sSourceText = jcaosCheck.getSrcStr(); // 원문의 인코딩을 알고 있어어야 한다 생략시 UTF-8 로 인코딩한다 - //String sSourceText = jcaosCheck.getSrcStr("EUC-KR"); // 원문의 인코딩을 알고 있어어야 한다 생략시 EUC-KR(그 외 인코딩도 가능) 로 인코딩한다 - //textCheck = new String(jcaosCheck.getSrcByte()); - //byte[] textByte = Base64.decode(textCheck); - sSourceText = new String(jcaosCheck.getSrcByte(), "UTF-8"); - - Properties props = new Properties(); - props.load(pageContext.getServletContext().getResourceAsStream("/MagicLine4Web/ML4Web/js/message/Messages.properties")); - sPolicy = props.getProperty("OID_" + cert.getCertificatePolicies().getPolicyIdentifier(0).replace(".", "_")); - - ArrayList generalNames = cert.getSubjectAlternativeName(); - if (generalNames != null && generalNames.size() > 0) - { - X509GeneralName genName; - for (int i=0; i\n- 사용자 DN ["+signerDN+"]
              \n"+"
              \n"; - sResult = sResult+ "- 발급자 DN ["+cert.getIssuerDN().getName()+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 SN ["+cert.getSerialNumber().toString(16)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 정책 ["+cert.getCertificatePolicies().getPolicyIdentifier(0)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 구분 ["+sPolicy+"]
              \n"+"
              \n"; - sResult = sResult+ "- 원문 ["+sSourceText+"]
              \n"+"
              \n"; - sResult = sResult+ "- 본인확인 식별값 ["+sidentifyData+"]
              \n"+"
              \n"; - } - }catch(Exception e){ - // 인증서 검증중 오류가 난 경우 - // 처리를 편하게 하기 위해 - // 상용중에는 사용자의 인증서의 유효성의 문제가 잇는 경우가 대부분 입니다. - // - e.printStackTrace(); - sResult = "서명 검증에 실패 하였습니다.\n [" + e.getMessage()+"]\");"; - } - }else{ - sResult=" - 서명 데이타가 존재하지 않습니다..
              \n"; - } - out.print(""+sResult+""); - //System.out.println(sResult); -%> - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/signedForm.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/signedForm.jsp deleted file mode 100644 index 2ebe68b0..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/signedForm.jsp +++ /dev/null @@ -1,184 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%> - - - -
              -

              MagicLine Digital Signature

              -
              - - - - - - - - - - -
              Description
                웹 구간 전달 메시지 전체에 대해 클라이언트에서 전자서명을 실행합니다.
              - -

               

              -
              - - - - - - - - - - - - - - - - - - - - -
              Client Digital Signature Information
              - - - - - -
              전자서명 원문 데이터 입력* - - -
              -
              - -
              -
              - - -
              -

               

              - -
              -
              - - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/signedFormR.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/signedFormR.jsp deleted file mode 100644 index e44e6f35..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/signedFormR.jsp +++ /dev/null @@ -1,274 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="com.dreamsecurity.magicline.JCaosCheckCert"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509Certificate"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509GeneralName"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509OtherName"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Base64"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Hex"%> -<%@ page import="com.dreamsecurity.jcaos.vid.VID"%> -<%@ page import="java.math.BigInteger"%> -<%@ page import="java.net.URLDecoder"%> -<%@ page import="java.util.Properties"%> -<%@ page import="java.util.ArrayList"%> -<% - // 서명 검증 셈플 - // 클라이언트에서 받은 서명 데이타를 검증 - String sResult = ""; - String sSignData = null; - String sVIDRandomHash = null; - JCaosCheckCert jcaosCheck = null; - String sSourceText = ""; - String submitType = ""; - String textCheck = ""; - String sPolicy = ""; - String sidentifyData = ""; - String signOrigin = ""; - - // 18.07.10 : 결과 확인을 위해 서명 원문 데이터를 가져온다 - signOrigin = request.getParameter("signOrigin"); - if(signOrigin != null){ - signOrigin = new String(signOrigin.getBytes("8859_1"), "utf-8"); - } - - // 서명 데이타를 가져옴 - // 본 셈플에서는 서명 값을 Post Data 의 SignData 에 넣어서 보낸다고 간주 코딩 한다 - sSignData = request.getParameter("sign"); - sSignData = URLDecoder.decode(sSignData, "utf-8"); - - sResult = sResult+"- SignData ["+sSignData+"]
              \n"; - - // 서명 데이타가 있을때 서명 검증 - if (sSignData != null && sSignData.length() > 0){ - try{ - jcaosCheck = new JCaosCheckCert(); - - // 인증서 검증전에 본인 확인을 하기 위한 VIDRandomHash 값이 있으면 설정한다 - // 본인확인 방법은 - // 1. 주민번호 + VIDRandom : jcaosCheck.setVIDRandom("주민등록번호(사업자번호)", "VIDRandom 값") - // 2. VidRandomHash : jcaosCheck.setVIDRandomHash("VIDHash 값") - // 상기 둘중 하나의 방법으로 가능하다 - // 본 셈플에서는 VIDRandomHash 로 검증을 한다 - // 참고로 VID값이 설정 안되면 본인확인을 하지 않는다 - //jcaosCheck.setVIDRandomHash(sVIDRandomHash); - - sResult = sResult+"
              \n- 서명 검증 시작
              \n"; - - // 서명 검증 - // 검증후 원문이 리턴됨 - int iResult = jcaosCheck.checkCert(sSignData); - /* - - JCaosCheckCert.checkCert 의 에러코드는 하기와 같습니다. - JCaosCheckCert.STAT_OK // 성공 - JCaosCheckCert.STAT_ERR_WRONGCERT // 정상적인 인증서가 아님 - JCaosCheckCert.STAT_ERR_ETC // 기타 오류 - JCaosCheckCert.STAT_ERR_VerifyException // 서명 검증 실패 - JCaosCheckCert.STAT_ERR_CertificateNotYetValidException // 인증서 유효기간 검증 오류 - JCaosCheckCert.STAT_ERR_CertificateExpiredException // 인증서 만료 - JCaosCheckCert.STAT_ERR_ObtainCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_BuildCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_TrustRootException // 신뢰할수 없는 최상위 인증서 - JCaosCheckCert.STAT_ERR_ValidateCertPathException // 인증서 경로 검증 실패 - JCaosCheckCert.STAT_ERR_RevokedCertException // 폐지된 인증서 - JCaosCheckCert.STAT_ERR_RevocationCheckException // CRL 검증 실패 - JCaosCheckCert.STAT_ERR_NotExistSignerCertException // 서명자 인증서 누락 - JCaosCheckCert.STAT_ERR_IOException // IOException - JCaosCheckCert.STAT_ERR_FileNotFoundException // FileNotFoundException - JCaosCheckCert.STAT_ERR_NoSuchAlgorithmException // NoSuchAlgorithmException - JCaosCheckCert.STAT_ERR_NoSuchProviderException // NoSuchProviderException - JCaosCheckCert.STAT_ERR_ParsingException // ParsingException - JCaosCheckCert.STAT_ERR_IdentifyException // 본인확인 실패 - */ - if( iResult == 0 ){ - sResult = sResult+ "- 인증서 검증 성공
              \n"; - }else if( iResult == 3000 ){ - sResult = sResult+ "- 인증서 검증 하지않음
              \n"; - }else if ( iResult != 0 ){ - // 오류 발생시 오류를 구분 - String sCertResult = null; - switch(iResult){ - case JCaosCheckCert.STAT_ERR_WRONGCERT : // 정상적인 인증서가 아님 - sCertResult = "서명에 사용된 인증서가 정상적인 인증서가 아닙니다."; break; - case JCaosCheckCert.STAT_ERR_RevocationCheckException : // CRL 검증 실패 - case JCaosCheckCert.STAT_ERR_NotExistSignerCertException : // 서명자 인증서 누락 - case JCaosCheckCert.STAT_ERR_IOException : // IOException - case JCaosCheckCert.STAT_ERR_FileNotFoundException : // FileNotFoundException - case JCaosCheckCert.STAT_ERR_ETC : // 기타 오류 - case JCaosCheckCert.STAT_ERR_BuildCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ObtainCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ValidateCertPathException : // 인증서 경로 검증 실패 - case JCaosCheckCert.STAT_ERR_TrustRootException : // 신뢰할수 없는 최상위 인증서 - sCertResult = "서명 인증서 검증 오류 ["+iResult+"]."; break; - case JCaosCheckCert.STAT_ERR_VerifyException : // 서명 검증 실패 - sCertResult = "서명 검증 실패"; break; - case JCaosCheckCert.STAT_ERR_CertificateNotYetValidException : // 인증서 유효기간 검증 오류 - sCertResult = "서명 인증서 유효기간 검증 오류"; break; - case JCaosCheckCert.STAT_ERR_CertificateExpiredException : // 인증서 만료 - sCertResult = "만료된 인증서 "; break; - case JCaosCheckCert.STAT_ERR_RevokedCertException : // 폐지된 인증서 - sCertResult = "폐지된 인증서"; break; - default: - sCertResult = "기타오류 ["+iResult+"]"; break; - } - sResult = "
              \n- "+sCertResult+" \n[" + jcaosCheck.getLastErr() +"]
              \n\n"; - } - if( iResult == 0 || iResult == 3000 ){ - // 서명에 사용된 인증서를 가져온다 - X509Certificate cert = jcaosCheck.getUserCert(); - String signerDN = cert.getSubjectDN().getName(); // 인증서 DN - BigInteger serialNumber = cert.getSerialNumber(); // 인증서 시리얼 - - // 본인확인 - switch (jcaosCheck.getVIDCheck()){ - case JCaosCheckCert.STAT_VID_NOTCHECK: - sResult = sResult+"- 본인 확인 하지 않음
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_OK: - sResult = sResult+"- 본인 확인 성공
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_FAIL: - sResult = sResult+"- 본인 확인 실패
              \n"; - break; - } - - // 서명 값 (Base64) - String base64SignData = sSignData; - - // 서명 원문을 가져온다 - // sSourceText = jcaosCheck.getSrcStr(); // 원문의 인코딩을 알고 있어어야 한다 생략시 UTF-8 로 인코딩한다 - // String sSourceText = jcaosCheck.getSrcStr("EUC-KR"); // 원문의 인코딩을 알고 있어어야 한다 생략시 EUC-KR(그 외 인코딩도 가능) 로 인코딩한다 - //sSourceText = new String(jcaosCheck.getSrcByte()); - sSourceText = new String( jcaosCheck.getSrcByte(), "UTF-8"); - //byte[] textByte = Base64.decode(textCheck); - //sSourceText = new String(textByte, "UTF-8"); - - Properties props = new Properties(); - props.load(pageContext.getServletContext().getResourceAsStream("/MagicLine4Web/ML4Web/js/message/Messages.properties")); - sPolicy = props.getProperty("OID_" + cert.getCertificatePolicies().getPolicyIdentifier(0).replace(".", "_")); - - ArrayList generalNames = cert.getSubjectAlternativeName(); - if (generalNames != null && generalNames.size() > 0) - { - X509GeneralName genName; - for (int i=0; i\n- 사용자 DN ["+signerDN+"]
              \n"+"
              \n"; - sResult = sResult+ "- 발급자 DN ["+cert.getIssuerDN().getName()+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 SN ["+cert.getSerialNumber().toString(16)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 정책 ["+cert.getCertificatePolicies().getPolicyIdentifier(0)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 구분 ["+sPolicy+"]
              \n"+"
              \n"; - sResult = sResult+ "- 본인확인 식별값 ["+sidentifyData+"]
              \n"+"
              \n"; - } - - }catch(Exception e){ - // 인증서 검증중 오류가 난 경우 - // 처리를 편하게 하기 위해 - // 상용중에는 사용자의 인증서의 유효성의 문제가 잇는 경우가 대부분 입니다. - // - e.printStackTrace(); - sResult = "서명 검증에 실패 하였습니다.\n [" + e.getMessage()+"]\");"; - } - }else{ - sResult=" - 서명 데이타가 존재하지 않습니다..
              \n"; - } - //out.print(sResult); - //System.out.println(sResult); -%> - - - -
              -

              MagicLine Digital Signature Result

              -
              - - - - - - - - - -
              Description
              사용자가 선택한 인증서를 이용하여 원문데이터에 전자서명값을 추출하여 서버에서 전자서명 검증을 실행하며
              - 서버는 사용자 인증서의 유효성 여부를 확인한다. -
              - -

               

              -
              - - - - - - - - - - - -
              Client Digital Signature Request Data
              - - - - - - - - - - - - - -
              서명원문<%=signOrigin%>
              서명결과<%=sSourceText %>
              일치여부
              -
              -

               

              - - - - - - - - - - - -
              Client Certificate Information
              - - - - - -
              sResult:<%=sResult%>
              -
              -
              -

               

              -
              -
              - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/vidClientIDN.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/vidClientIDN.jsp deleted file mode 100644 index 3556df43..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/vidClientIDN.jsp +++ /dev/null @@ -1,212 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%> - - -<%@ page import="com.dreamsecurity.magice2e.MagicE2E" %> -<%@ page import="com.dreamsecurity.magicline.util.Base64" %> -<% - String sessionString = ""; - int result = 0; - StringBuffer sbCert = new StringBuffer(); - //MagicE2E.setConfPath("C:/Users/jung/eclipse-workspace/MagicLine4Web_Ratato/WebContent/WEB-INF/magicline/config/"); - // 세션에 값이 있는지 확인 - - MagicE2E temp = ( MagicE2E ) session.getAttribute("Magie2e"); - - if( temp == null ){ - MagicE2E ml = new MagicE2E( sbCert ); - sessionString = sbCert.toString(); - session.setAttribute( "Magie2e", ml ); - }else{ - result = MagicE2E.init(); - if( result == 0 ){ - result = temp.open( sbCert ); - if( result == 0 ){ - sessionString = sbCert.toString(); - }else{ - temp.close(); - session.invalidate(); - } - }else{ - temp.close(); - session.invalidate(); - } - - } -%> - - - - - - - - - - - - - - - -
              MagicE2E Result
              sbCert<%=sbCert.toString() %>
              -
              -

              MagicLine Digital Signature

              - -
              - - - - - - - - - -
              Description
                웹 구간 전달 메시지 전체에 대해 클라이언트에서 전자서명을 실행합니다.
              -

               

              -
              - -
              -
              - - - - - - - - - - - - - - - - - - - - - -
              Client Digital Signature Information
              - - - - - - - - - -
              전자서명 원문 데이터를 입력한다* - -
              주민등록번호* - -
              -
              - -
              - - - -
              -

               

              - -
              -
              - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/vidClientIDNR.jsp b/src/main/webapp/MagicLine4Web/ML4WebExample/vidClientIDNR.jsp deleted file mode 100644 index dba8513c..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/vidClientIDNR.jsp +++ /dev/null @@ -1,330 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="com.dreamsecurity.magicline.JCaosCheckCert"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509Certificate"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509GeneralName"%> -<%@ page import="com.dreamsecurity.jcaos.x509.X509OtherName"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Base64"%> -<%@ page import="com.dreamsecurity.jcaos.util.encoders.Hex"%> -<%@ page import="com.dreamsecurity.jcaos.vid.VID"%> -<%@ page import="com.dreamsecurity.jcaos.cms.SignedData"%> -<%@ page import="com.dreamsecurity.jcaos.cms.SignerInfo"%> -<%@ page import="com.dreamsecurity.magice2e.MagicE2E" %> -<%@ page import="java.math.BigInteger"%> -<%@ page import="java.net.URLDecoder"%> -<%@ page import="java.util.Properties"%> -<%@ page import="java.util.ArrayList"%> -<%@ page import="java.util.HashMap" %> -<%@ page import="java.text.SimpleDateFormat" %> -<% - // 18.07.10 : 결과 확인을 위해 서명 원문 데이터르 가져옴 - String signOrigin = request.getParameter("signOrigin"); - if(signOrigin != null){ - signOrigin = new String(signOrigin.getBytes("8859_1"), "utf-8"); - } - - String sSignData = URLDecoder.decode(request.getParameter("sign"), "utf-8"); - String sVIDRandom = URLDecoder.decode(request.getParameter("vidRandom"), "utf-8"); - - String sResult = ""; - String sSourceText = ""; - String textCheck = ""; - String sSignerDn = ""; - String sIssuerDn = ""; - String sSerialNumber = ""; - String sCertificatePolicies = ""; - String sPolicy = ""; - String sVidCheck = ""; - String sIdentifyData = ""; - String sSignDate = ""; - - sResult = sResult+"- SignData ["+sSignData+"]
              \n"+"- VIDData ["+sVIDRandom+"]
              \n"; - - // 서명 데이타가 있을때 서명 검증 - if (sSignData != null && sSignData.length() > 0){ - try { - // 개인정보 복호화 시작 - MagicE2E ml = (MagicE2E)session.getAttribute("Magie2e"); - String sEncData = request.getParameter("encData").replaceAll("&quot;", "\"").replaceAll(""", "\""); // 암호화 데이터 - HashMap map = new HashMap(); - StringBuffer sbPlain = new StringBuffer(); // 출력 버퍼 - System.out.println("- Encrypt Result ["+ sEncData +"]"); - // 암호 스트링이 있을때만 복호화 - if (sEncData != null && sEncData.length() > 0 && ml != null){ - int sDecryptResult = ml.decrypt(sEncData, sbPlain); // 복호화 상태값(0일 경우 정상) - - System.out.println("- sDecryptResult ["+ sDecryptResult +"]"); - System.out.println("- Decrypt Result ["+ java.net.URLDecoder.decode((String)sbPlain.toString(),"utf-8") +"]"); - - // 복호화 데이터 - String[] parts = java.net.URLDecoder.decode((String)sbPlain.toString(),"utf-8").split("&"); - - if( parts.length > 1){ - for (String pair : parts) { - String[] kv = pair.split("="); - map.put(kv[0], kv[1]); - } - }else{ - String temp = java.net.URLDecoder.decode((String)sbPlain.toString(),"utf-8"); - String[] kv = temp.split("="); - map.put( kv[0], kv[1] ); - } - } - // 개인정보 복호화 끝 - - JCaosCheckCert jcaosCheck = new JCaosCheckCert(); - - // 서버가 알고 잇는 주민등록 번호를 등록한다 - jcaosCheck.setVIDRandom(map.get("encIdn"), sVIDRandom); - - sResult = sResult+"
              \n- 인증서 검증 시작
              \n"; - - // 서명 검증 - // 검증후 원문이 리턴됨 - int iResult = jcaosCheck.checkCert(sSignData); - - /* - - JCaosCheckCert.checkCert 의 에러코드는 하기와 같습니다. - JCaosCheckCert.STAT_OK // 성공 - JCaosCheckCert.STAT_ERR_WRONGCERT // 정상적인 인증서가 아님 - JCaosCheckCert.STAT_ERR_ETC // 기타 오류 - JCaosCheckCert.STAT_ERR_VerifyException // 서명 검증 실패 - JCaosCheckCert.STAT_ERR_CertificateNotYetValidException // 인증서 유효기간 검증 오류 - JCaosCheckCert.STAT_ERR_CertificateExpiredException // 인증서 만료 - JCaosCheckCert.STAT_ERR_ObtainCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_BuildCertPathException // 인증서 경로 구축 실패 - JCaosCheckCert.STAT_ERR_TrustRootException // 신뢰할수 없는 최상위 인증서 - JCaosCheckCert.STAT_ERR_ValidateCertPathException // 인증서 경로 검증 실패 - JCaosCheckCert.STAT_ERR_RevokedCertException // 폐지된 인증서 - JCaosCheckCert.STAT_ERR_RevocationCheckException // CRL 검증 실패 - JCaosCheckCert.STAT_ERR_NotExistSignerCertException // 서명자 인증서 누락 - JCaosCheckCert.STAT_ERR_IOException // IOException - JCaosCheckCert.STAT_ERR_FileNotFoundException // FileNotFoundException - JCaosCheckCert.STAT_ERR_NoSuchAlgorithmException // NoSuchAlgorithmException - JCaosCheckCert.STAT_ERR_NoSuchProviderException // NoSuchProviderException - JCaosCheckCert.STAT_ERR_ParsingException // ParsingException - JCaosCheckCert.STAT_ERR_IdentifyException // 본인확인 실패 - */ - if( iResult == 0 ){ - sResult = sResult+ "- 인증서 검증 성공
              \n"; - }else if( iResult == 3000 ){ - sResult = sResult+ "- 인증서 검증 하지않음
              \n"; - }else if ( iResult != 0 ){ - // 오류 발생시 오류를 구분 - String sCertResult = null; - switch(iResult){ - case JCaosCheckCert.STAT_ERR_WRONGCERT : // 정상적인 인증서가 아님 - sCertResult = "서명에 사용된 인증서가 정상적인 인증서가 아닙니다."; - break; - case JCaosCheckCert.STAT_ERR_RevocationCheckException : // CRL 검증 실패 - case JCaosCheckCert.STAT_ERR_NotExistSignerCertException : // 서명자 인증서 누락 - case JCaosCheckCert.STAT_ERR_IOException : // IOException - case JCaosCheckCert.STAT_ERR_FileNotFoundException : // FileNotFoundException - case JCaosCheckCert.STAT_ERR_ETC : // 기타 오류 - case JCaosCheckCert.STAT_ERR_BuildCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ObtainCertPathException : // 인증서 경로 구축 실패 - case JCaosCheckCert.STAT_ERR_ValidateCertPathException : // 인증서 경로 검증 실패 - case JCaosCheckCert.STAT_ERR_TrustRootException : // 신뢰할수 없는 최상위 인증서 - sCertResult = "서명 인증서 검증 오류 ["+iResult+"]."; - break; - case JCaosCheckCert.STAT_ERR_VerifyException : // 서명 검증 실패 - sCertResult = "서명 검증 실패"; - break; - case JCaosCheckCert.STAT_ERR_CertificateNotYetValidException : // 인증서 유효기간 검증 오류 - sCertResult = "서명 인증서 유효기간 검증 오류"; - break; - case JCaosCheckCert.STAT_ERR_CertificateExpiredException : // 인증서 만료 - sCertResult = "만료된 인증서 "; - break; - case JCaosCheckCert.STAT_ERR_RevokedCertException : // 폐지된 인증서 - sCertResult = "폐지된 인증서"; - break; - default: - sCertResult = "기타오류 ["+iResult+"]"; - break; - } - sResult = "
              \n- "+sCertResult+" \n[" + jcaosCheck.getLastErr() +"]
              \n\n"; - - } - if( iResult == 0 || iResult == 3000 ){ - - - // 서명에 사용된 인증서를 가져온다 - X509Certificate cert = jcaosCheck.getUserCert(); - String signerDN = cert.getSubjectDN().getName(); // 인증서 DN - BigInteger serialNumber = cert.getSerialNumber(); // 인증서 시리얼 - - // 본인확인 - switch (jcaosCheck.getVIDCheck()){ - case JCaosCheckCert.STAT_VID_NOTCHECK: - sResult = sResult+"- 본인 확인 하지 않음
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_OK: - sResult = sResult+"- 본인 확인 성공
              \n"; - break; - case JCaosCheckCert.STAT_VID_CHECK_FAIL: - sResult = sResult+"- 본인 확인 실패
              \n"; - break; - } - - - // 서명 값 (Base64) - String base64SignData = sSignData; - - // 서명 원문을 가져온다 - //sSourceText = jcaosCheck.getSrcStr("UTF-8"); // 원문의 인코딩을 알고 있어어야 한다 생략시 UTF-8 로 인코딩한다 - - //byte[] textByte = Base64.decode(textCheck); - sSourceText = new String( jcaosCheck.getSrcByte(), "utf-8" ); - //System.out.println("[TRACE] sSourceText :: " + sSourceText); - // URL 형식 문자열을 잘라서 서명원문을 가져온다 - // ex) sign=&signOrigin=1234&vidRandom=&vidType=client&encData=&signData=1234&idn= - //String sSourceTextVal = sSourceText.substring(sSourceText.indexOf("signData=")); - //sSourceText = sSourceTextVal.substring(sSourceTextVal.indexOf("=")+1, sSourceTextVal.indexOf("&idn=")); - - //byte[] textByte = Base64.decode(textCheck); - //sSourceText = new String(textByte, "utf-8"); - - Properties props = new Properties(); - props.load(getServletContext().getResourceAsStream("/MagicLine4Web/ML4Web/js/message/Messages.properties")); - - sPolicy = props.getProperty("OID_" + cert.getCertificatePolicies().getPolicyIdentifier(0).replace(".", "_")); - - ArrayList generalNames = cert.getSubjectAlternativeName(); - if (generalNames != null && generalNames.size() > 0) - { - X509GeneralName genName; - for (int i=0; i\n- 사용자 DN ["+signerDN+"]
              \n"+"
              \n"; - sResult = sResult+ "- 발급자 DN ["+cert.getIssuerDN().getName()+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 SN ["+cert.getSerialNumber().toString(16)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 정책 ["+cert.getCertificatePolicies().getPolicyIdentifier(0)+"]
              \n"+"
              \n"; - sResult = sResult+ "- 인증서 구분 ["+sPolicy+"]
              \n"+"
              \n"; - sResult = sResult+ "- 본인확인 식별값 ["+sIdentifyData+"]
              \n"+"
              \n"; - } - }catch(Exception e){ - // 인증서 검증중 오류가 난 경우 - // 처리를 편하게 하기 위해 - // 상용중에는 사용자의 인증서의 유효성의 문제가 잇는 경우가 대부분 입니다. - // - e.printStackTrace(); - sResult = "서명 검증에 실패 하였습니다.\n [" + e.getMessage()+"]\");"; - } - }else{ - sResult=" - 서명 데이타가 존재하지 않습니다..
              \n"; - } - //out.print(sResult); - //System.out.println(sResult); -%> - - - -
              -

              MagicLine Digital Signature Result

              -
              - - - - - - - - - - -
              Digital Signature Result
               
              - - - - - - - -
              - description : - - 사용자가 선택한 인증서를 이용하여 원문데이터에 전자서명값을 추출하여 서버에서 전자서명 검증을 실행하며
              - 서버는 사용자 인증서의 유효성 여부를 확인한다.
              -
              -
              -

               

              -
              - - - - - - - - - - - -
              Client Digital Signature Request Data
              - - - - - - - - - - - - - -
              서명원문<%=signOrigin%>
              서명결과<%=sSourceText %>
              일치여부
              -
              -

               

              - - - - - - - - - - - -
              Client Certificate Information
              - - - - - -
              sResult:<%=sResult%>
              -
              -
              -

               

              - -
              -
              - - \ No newline at end of file diff --git a/src/main/webapp/MagicLine4Web/ML4WebExample/별첨.유니코드변환.html b/src/main/webapp/MagicLine4Web/ML4WebExample/별첨.유니코드변환.html deleted file mode 100644 index ae08b5a2..00000000 --- a/src/main/webapp/MagicLine4Web/ML4WebExample/별첨.유니코드변환.html +++ /dev/null @@ -1,95 +0,0 @@ - - - -Unicode Convertor - - - - - - - -
              -유니코드->한글     -한글->유니코드     - - -
              - - - - - - diff --git a/src/main/webapp/crosseditor/binary/images/한국공예디자인문화진흥원_main_pc10.jpg b/src/main/webapp/crosseditor/binary/images/한국공예디자인문화진흥원_main_pc10.jpg deleted file mode 100644 index afd470e6..00000000 Binary files a/src/main/webapp/crosseditor/binary/images/한국공예디자인문화진흥원_main_pc10.jpg and /dev/null differ diff --git a/src/main/webapp/download/prsct/검찰연계_등록양식.xlsx b/src/main/webapp/download/prsct/검찰연계_등록양식.xlsx deleted file mode 100644 index 831f9f60..00000000 Binary files a/src/main/webapp/download/prsct/검찰연계_등록양식.xlsx and /dev/null differ diff --git a/src/main/webapp/publish/pdfView.pdf b/src/main/webapp/publish/pdfView.pdf deleted file mode 100644 index 7817360c..00000000 Binary files a/src/main/webapp/publish/pdfView.pdf and /dev/null differ diff --git a/src/main/webapp/sample_mjon/jquery-3.5.0.js b/src/main/webapp/sample_mjon/jquery-3.5.0.js deleted file mode 100644 index 7f6a4d26..00000000 --- a/src/main/webapp/sample_mjon/jquery-3.5.0.js +++ /dev/null @@ -1,10860 +0,0 @@ -/*! - * jQuery JavaScript Library v3.5.0 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2020-04-10T15:07Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.5.0", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.5 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2020-03-14 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = Object.create( null ); - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting
              ", "
              " ], - col: [ 2, "", "
              " ], - tr: [ 2, "", "
              " ], - td: [ 3, "", "
              " ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - -
              - -
              - -
              -
              -

              돌아가기

              -
              -

              상세발송정보(샘플-문자온)

              - *mberId와 accessKey값은 실제 서비스시에는 jsp_example_hstry_r1.jsp 파일에 작성하여 사용하세요 -
              (샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.) -


              - -
              -
              -
              - - -
              -
              *메시지ID - -
              -
              -
              -
              페이지번호 - (기본값-1) -
              -
              -
              -
              페이지당 출력갯수 - (기본값-30(30~500)) -
              -
              -
              -
              테스트여부 - (기본값 없음, YF-테스트(실패), YS-테스트(성공) -
              -
              - -
              -   - -
              - -
              -
              - -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              메시지상세ID - 문자구분(유형) - 발신번호 - 수신번호 - 처리상태 - 등록일시 - 발송일시 - 남겨진리스트수량(다음페이지여부) -
              -
              - -
              - -
              - -
              - - diff --git a/src/main/webapp/sample_mjon/jsp_example_hstry_detail_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_hstry_detail_r1.jsp deleted file mode 100644 index eb2e256d..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_hstry_detail_r1.jsp +++ /dev/null @@ -1,110 +0,0 @@ -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.io.BufferedReader"%> -<%@page import="org.apache.http.HttpResponse"%> -<%@page import="org.apache.http.client.methods.HttpPost"%> -<%@page import="org.apache.http.impl.client.HttpClients"%> -<%@page import="org.apache.http.client.HttpClient"%> -<%@page import="org.apache.http.HttpEntity"%> -<%@page import="java.net.URLEncoder"%> -<%@page import="org.apache.http.entity.ContentType"%> -<%@page import="org.apache.http.entity.mime.content.FileBody"%> -<%@page import="java.io.File"%> -<%@page import="java.util.Iterator"%> -<%@page import="java.nio.charset.Charset"%> -<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%> -<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%> -<%@page import="java.util.HashMap"%> -<%@page import="java.util.Map"%> -<%@ page language="java" contentType="text/html; charset=utf-8 " pageEncoding="utf-8"%> -<% - try{ - //기본 설정값 - final String encodingType = "UTF-8"; - final String boundary = "__BDR__"; - - //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요 - //실제서비스용 - final String mberId = "antelope"; //문자온 로그인 아이디 - final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key - - //테스트용 - //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key - - - /******************** 전송요청 URL ********************/ - final String apiUrl = "https://api.munjaon.co.kr/api/inqry/hstryDetail"; // 전송요청 URL - -// String apiUrl = "https://apidev.munjaon.co.kr:9998/api/inqry/hstryDetail"; - /**************** 발송가능건수 예제 ******************/ - System.out.println("상세발송이력"); - - - Map params = new HashMap(); - - /******************** 인증정보 ********************/ - params.put("mberId", mberId); //문자온 로그인 아이디 - params.put("accessKey", apiKey); //APIKEY - - /******************** 전송정보 ********************/ - //(필수) - String p_msgGroupId = request.getParameter("p_msgGroupId"); //메시지 group id - - //(선택) - String p_page = request.getParameter("p_page"); //페이지번호 기본-1 - String p_pageSize = request.getParameter("p_pageSize"); //페이지당 출력갯수-30(30~500) - String p_testYn = request.getParameter("p_testYn"); //테스트데이터여부 '', 'YF', 'YS' - - - //추가 전송 데이터 - params.put("msgGroupId" , p_msgGroupId); //문자 전송 정보 - params.put("page" , p_page); //페이지번호 - params.put("pageSize" , p_pageSize); //페이지당 출력갯수 - params.put("test_yn" , p_testYn); //테스트 여부 - - - String result = ""; - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류 - try{ - builder.addTextBody(key, params.get(key) - , ContentType.create("Multipart/related", encodingType)); - }catch(Exception ex){ - //ex.printStackTrace() - - } - - } - - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}"); - } - -%> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_hstry_form_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_hstry_form_r1.jsp deleted file mode 100644 index 11879047..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_hstry_form_r1.jsp +++ /dev/null @@ -1,258 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - - - - -
              - -
              - -
              -
              -

              돌아가기

              -
              -

              전체발송정보(샘플-문자온)

              - *mberId와 accessKey값은 실제 서비스시에는 jsp_example_hstry_r1.jsp 파일에 작성하여 사용하세요 -
              (샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.) -


              - -
              -
              -
              - - -
              -
              페이지번호 - (기본값-1) -
              -
              -
              -
              페이지당 출력갯수 - (기본값-30(30~500)) -
              -
              -
              -
              조회시작일자 - (기본값 오늘)ex)20230601 -
              -
              -
              -
              조회마감일자 - (기본값 내일)ex)20230602 -
              -
              -
              -
              테스트여부 - (기본값 없음, YF-테스트(실패), YS-테스트(성공) -
              -
              -
              -   - -
              - -
              -
              - -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              메시지ID - - 문자구분(유형) - - 발신번호 - - 전체요청수 - - 성공건수 - 실패건수 - 대기건수 - 처리상태 - 문자내용 - 등록일시 - 발송일시 - 남겨진리스트수량(다음페이지여부) -
              -
              - -
              - -
              - -
              - - diff --git a/src/main/webapp/sample_mjon/jsp_example_hstry_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_hstry_r1.jsp deleted file mode 100644 index 1f149f1f..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_hstry_r1.jsp +++ /dev/null @@ -1,109 +0,0 @@ -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.io.BufferedReader"%> -<%@page import="org.apache.http.HttpResponse"%> -<%@page import="org.apache.http.client.methods.HttpPost"%> -<%@page import="org.apache.http.impl.client.HttpClients"%> -<%@page import="org.apache.http.client.HttpClient"%> -<%@page import="org.apache.http.HttpEntity"%> -<%@page import="java.net.URLEncoder"%> -<%@page import="org.apache.http.entity.ContentType"%> -<%@page import="org.apache.http.entity.mime.content.FileBody"%> -<%@page import="java.io.File"%> -<%@page import="java.util.Iterator"%> -<%@page import="java.nio.charset.Charset"%> -<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%> -<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%> -<%@page import="java.util.HashMap"%> -<%@page import="java.util.Map"%> -<%@ page language="java" contentType="text/html; charset=utf-8 " pageEncoding="utf-8"%> -<% - try{ - //기본 설정값 - final String encodingType = "UTF-8"; - final String boundary = "__BDR__"; - - //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요 - //실제서비스용 - final String mberId = "antelope"; //문자온 로그인 아이디 - final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key - - //테스트용 - //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key - - - /******************** 전송요청 URL ********************/ - final String apiUrl = "https://api.munjaon.co.kr/api/inqry/hstry"; - - /**************** 발송가능건수 예제 ******************/ - System.out.println("전체발송이력"); - - - Map params = new HashMap(); - - /******************** 인증정보 ********************/ - params.put("mberId", mberId); //문자온 로그인 아이디 - params.put("accessKey", apiKey); //APIKEY - - /******************** 전송정보 ********************/ - //(선택) - String p_page = request.getParameter("p_page"); //페이지번호 기본-1 - String p_pageSize = request.getParameter("p_pageSize"); //페이지당 출력갯수-30(30~500) - String p_startDate = request.getParameter("p_startDate"); //조회시작일자-기본값 오늘 - String p_endDate = request.getParameter("p_endDate"); //조회마감일자-기본값 내일 - String p_testYn = request.getParameter("p_testYn"); //테스트데이터여부 '', 'YF', 'YS' - - //추가 전송 데이터 - params.put("page" , p_page); //페이지번호 - params.put("pageSize" , p_pageSize); //페이지당 출력갯수 - params.put("startDate" , p_startDate); //시작일자 - params.put("endDate" , p_endDate); //마감일자 - params.put("test_yn" , p_testYn); //테스트 여부 - - - String result = ""; - - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류 - try{ - builder.addTextBody(key, params.get(key) - , ContentType.create("Multipart/related", encodingType)); - }catch(Exception ex){ - //ex.printStackTrace() - - } - - } - - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}"); - } - -%> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_select_price_form_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_select_price_form_r1.jsp deleted file mode 100644 index a2602565..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_select_price_form_r1.jsp +++ /dev/null @@ -1,142 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - - - - -
              - -
              - -
              -
              -

              돌아가기

              -
              -

              발송가능건수(샘플-문자온)

              - *mberId와 accessKey값은 실제 서비스시에는 jsp_example_select_price_r1.jsp 파일에 작성하여 사용하세요 -
              *샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다. -


              - -
              -
              -
              - - -
              -   - -
              - -
              -
              - -
              -
              -
              -
              단문단가 : -
              - -
              장문단가 : -
              - -
              그림문자단가 : -
              - -
              현재보유금액 : -
              - -
              단문발송가능건수 : -
              - -
              장문발송가능건수 : -
              - -
              그림문자발송가능건수 : -
              - -
              - -
              -
              - -
              - -
              - -
              - - diff --git a/src/main/webapp/sample_mjon/jsp_example_select_price_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_select_price_r1.jsp deleted file mode 100644 index ade30f6e..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_select_price_r1.jsp +++ /dev/null @@ -1,95 +0,0 @@ -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.io.BufferedReader"%> -<%@page import="org.apache.http.HttpResponse"%> -<%@page import="org.apache.http.client.methods.HttpPost"%> -<%@page import="org.apache.http.impl.client.HttpClients"%> -<%@page import="org.apache.http.client.HttpClient"%> -<%@page import="org.apache.http.HttpEntity"%> -<%@page import="java.net.URLEncoder"%> -<%@page import="org.apache.http.entity.ContentType"%> -<%@page import="org.apache.http.entity.mime.content.FileBody"%> -<%@page import="java.io.File"%> -<%@page import="java.util.Iterator"%> -<%@page import="java.nio.charset.Charset"%> -<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%> -<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%> -<%@page import="java.util.HashMap"%> -<%@page import="java.util.Map"%> -<%@ page language="java" contentType="text/html; charset=utf-8 " pageEncoding="utf-8"%> -<% - try{ - //기본 설정값 - final String encodingType = "UTF-8"; - final String boundary = "__BDR__"; - - //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요 - //실제서비스용 - final String mberId = "antelope"; //문자온 로그인 아이디 - final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key - - - //테스트용 - //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key - - - /******************** 전송요청 URL ********************/ - final String apiUrl = "https://api.munjaon.co.kr/api/inqry/price"; - - /**************** 발송가능건수 예제 ******************/ - System.out.println("잔액|단가|발송가능건수"); - - - - Map params = new HashMap(); - - /******************** 인증정보 ********************/ - params.put("mberId", mberId); //문자온 로그인 아이디 - params.put("accessKey", apiKey); //APIKEY - - /******************** 전송정보 ********************/ - String result = ""; - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류 - try{ - builder.addTextBody(key, params.get(key) - , ContentType.create("Multipart/related", encodingType)); - }catch(Exception ex){ - //ex.printStackTrace() - - } - - } - - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}"); - } - -%> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_send_msg_form_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_send_msg_form_r1.jsp deleted file mode 100644 index 055f4b3d..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_send_msg_form_r1.jsp +++ /dev/null @@ -1,164 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - - - - -
              -
              - -
              -
              -

              돌아가기

              -
              - -

              문자발송(샘플-문자온)

              - *mberId와 accessKey값은 실제 서비스시에는 jsp_example_send_msg_r1.jsp 파일에 작성하여 사용하세요 -
              (샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.) -


              - -
              -
              -
              - - - -
              -
              callFrom - -
              -
              - - -
              -
              callToList - -
              -
              - - -
              -
              smsTxt - -
              -
              - - -
              -
              nameStr - -
              -
              - - -
              -
              테스트여부 - (기본값 없음, YF-테스트(실패), YS-테스트(성공) -
              -
              - -
              -   -
              - -
              -
              - - -
              -
              -
              -
              메세지ID : -
              - -
              성공수량 : -
              - -
              실패수량 : -
              - -
              block수량 : -
              - -
              메세지타입 : -
              -
              -
              -
              - - -
              - -
              -
              - diff --git a/src/main/webapp/sample_mjon/jsp_example_send_msg_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_send_msg_r1.jsp deleted file mode 100644 index d29e439c..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_send_msg_r1.jsp +++ /dev/null @@ -1,137 +0,0 @@ -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.io.BufferedReader"%> -<%@page import="org.apache.http.HttpResponse"%> -<%@page import="org.apache.http.client.methods.HttpPost"%> -<%@page import="org.apache.http.impl.client.HttpClients"%> -<%@page import="org.apache.http.client.HttpClient"%> -<%@page import="org.apache.http.HttpEntity"%> -<%@page import="java.net.URLEncoder"%> -<%@page import="org.apache.http.entity.ContentType"%> -<%@page import="org.apache.http.entity.mime.content.FileBody"%> -<%@page import="java.io.File"%> -<%@page import="java.util.Iterator"%> -<%@page import="java.nio.charset.Charset"%> -<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%> -<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%> -<%@page import="java.util.HashMap"%> -<%@page import="java.util.Map"%> -<%@ page language="java" contentType="text/html; charset=utf-8 " pageEncoding="utf-8"%> -<% - try{ - //기본 설정값 - final String encodingType = "UTF-8"; - final String boundary = "____boundary____"; - - //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용 - //실제서비스용 - final String mberId = "antelope"; //문자온 로그인 아이디 - final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key - - - //테스트용 - //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key - - /******************** 전송 요청 URL ********************/ - final String apiUrl = "https://api.munjaon.co.kr/api/send/sendMsg"; //개발테스트용 URL - - /******************** 전송 정보 ********************/ - //필수 값 - String p_callFrom = request.getParameter("p_callFrom"); //발신자 번호 - String p_callToList = request.getParameter("p_callToList"); //수신자 번호 - String p_smsTxt = request.getParameter("p_smsTxt"); //문자 내용 - - //선택 값 - String p_nameStr = request.getParameter("p_nameStr"); //치환용 이름 - String p_testYn = request.getParameter("p_testYn"); //테스트 데이터 여부 '', 'YF', 'YS' - - /* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */ - - //String p_sPrice = request.getParameter("p_sPrice"); //단문문자단가 - //String p_fileCnt = request.getParameter("p_fileCnt"); //첨부파일갯수 - //String p_totPrice = request.getParameter("p_totPrice"); //총결제금액 - //String p_txtReplYn = request.getParameter("p_txtReplYn"); //치환문자 여부 Y//N - //String p_txtReplYn = "N"; //치환문자 여부 - 초기 지원안함 - //String p_msgType = request.getParameter("p_msgType"); //문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡 - //String p_msgKind = request.getParameter("p_msgKind"); //N-일반,A-광고,C-선거 - //String p_msgKind = "N"; //N-일반,A-광고,C-선거 - 초기 지원안함 - - //String p_mmsPrice = request.getParameter("p_mmsPrice"); //mms단가 - //String p_mPrice = request.getParameter("p_mPrice"); //장문문자단가 - //String p_spamStatus = request.getParameter("p_spamStatus"); //스팸문자 유무 - - //예약문자의 경우(선택값) - //String p_reserveYn = request.getParameter("p_reserveYn"); //예약문자 여부 N or Y - //String p_divideCnt = request.getParameter("p_divideCnt"); //분할문자 건수 - //String p_divideTime = request.getParameter("p_divideTime"); //분할문자 간격 - //String p_reqDate = request.getParameter("p_reqDate"); //예약시간 - - /* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */ - - Map params = new HashMap(); - - //필수 전송 데이터 - params.put("mberId", mberId); //회원 아이디 - params.put("accessKey", apiKey); //인증키 - params.put("callFrom" , p_callFrom); //발신자 번호 - params.put("callToList" , p_callToList); //수신자 번호 - params.put("smsTxt" , p_smsTxt); //문자 내용 - - //선택 전송 데이터 - params.put("nameStr" , p_nameStr); //치환용 이름 - params.put("test_yn" , p_testYn); //테스트 데이터 여부 - - - //REST API 전송 - String result = ""; - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - try{ - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류 - try{ - builder.addTextBody(key, params.get(key) - , ContentType.create("Multipart/related", encodingType)); - }catch(Exception ex){ - ex.printStackTrace(); - } - } - }catch(Exception ex){ - ex.printStackTrace(); - - } - - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}"); - } - - - /**************** 문자발송 Response 예제 ******************/ - /* "result_code": 결과코드, "msgGroupId": 메세지 그룹 ID, "msgType": 메세지 타입 */ - /* "test_yn": 테스트 데이터 여부, "successCnt": 성공 건수 , "blockCnt" : 수신거부 건수*/ -%> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_send_msgs_form_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_send_msgs_form_r1.jsp deleted file mode 100644 index f57a7a46..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_send_msgs_form_r1.jsp +++ /dev/null @@ -1,183 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - - - -
              -
              - -
              -
              -

              돌아가기

              -
              - -

              대량문자발송(샘플-문자온)

              - *mberId와 accessKey값은 실제 서비스시에는 jsp_example_send_msg_r1.jsp 파일에 작성하여 사용하세요 -
              (샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.) -


              - -
              -
              - -
              - -
              - -
              -   - -
              - -
              - - - -
              -
              callFrom - -
              -
              - - -
              -
              테스트여부 - (기본값 없음, YF-테스트(실패), YS-테스트(성공) -
              -
              - - -
              -
              p_callTo_1 - -
              -
              - -
              -
              p_smsTxt_1 - -
              -
              - -
              -
              - - -
              -
              -
              메세지ID : -
              - -
              성공수량 : -
              - -
              실패수량 : -
              - -
              block수량 : -
              - -
              메세지타입 : -
              - -
              -
              - -
              -
              -
              diff --git a/src/main/webapp/sample_mjon/jsp_example_send_msgs_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_send_msgs_r1.jsp deleted file mode 100644 index 9461fb9a..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_send_msgs_r1.jsp +++ /dev/null @@ -1,163 +0,0 @@ -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.io.BufferedReader"%> -<%@page import="org.apache.http.HttpResponse"%> -<%@page import="org.apache.http.client.methods.HttpPost"%> -<%@page import="org.apache.http.impl.client.HttpClients"%> -<%@page import="org.apache.http.client.HttpClient"%> -<%@page import="org.apache.http.HttpEntity"%> -<%@page import="java.net.URLEncoder"%> -<%@page import="org.apache.http.entity.ContentType"%> -<%@page import="org.apache.http.entity.mime.content.FileBody"%> -<%@page import="java.io.File"%> -<%@page import="java.util.Iterator"%> -<%@page import="java.nio.charset.Charset"%> -<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%> -<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%> -<%@page import="java.util.HashMap"%> -<%@page import="java.util.Map"%> -<%@ page language="java" contentType="text/html; charset=utf-8 " pageEncoding="utf-8"%> -<% - try{ - //기본 설정값’ - final String encodingType = "UTF-8"; - final String boundary = "____boundary____"; - - //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용 - //실제서비스용 - final String mberId = "antelope"; //문자온 로그인 아이디 - final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key - - //테스트용 - //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key - - - /******************** 전송 요청 URL ********************/ - String apiUrl = "https://api.munjaon.co.kr/api/send/sendMsgs"; //개발테스트용 URL - - /******************** 전송 정보 ********************/ - //필수 값’ - String p_callFrom = request.getParameter("p_callFrom"); //발신자 번호 - String p_callTo_1 = request.getParameter("p_callTo_1"); //수신자 번호 1 - String p_smsTxt_1 = request.getParameter("p_smsTxt_1"); //문자 내용 1 - - //선택 값 - String p_testYn = request.getParameter("p_testYn"); //테스트 데이터 여부 '', 'YF', 'YS' - - /* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */ - - //String p_nameStr_1 = request.getParameter("p_nameStr_1"); //치환용 이름 1 - //String p_mmsPrice = request.getParameter("p_mmsPrice"); //mms 단가 - //String p_mPrice = request.getParameter("p_mPrice"); //장문문자단가 - //String p_spamStatus = request.getParameter("p_spamStatus"); //스팸문자 유무 - - //String p_eachPrice = request.getParameter("p_eachPrice"); //개별 금액 - //String p_fileCnt = request.getParameter("p_fileCnt"); //첨부파일갯수 - //String p_sPrice = request.getParameter("p_sPrice"); //단문문자단가 - //String p_totPrice = request.getParameter("p_totPrice"); //총결제금액 - //String p_txtReplYn = request.getParameter("p_txtReplYn"); //치환문자 여부 Y//N - //String p_txtReplYn = "N"; //치환문자 여부 - 초기 지원안함 - //String p_msgType = request.getParameter("p_msgType"); //문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡 - //String p_msgKind = request.getParameter("p_msgKind"); //N-일반,A-광고,C-선거 - //String p_msgKind = "N"; //N-일반,A-광고,C-선거 - 초기 지원안함 - - //예약문자의 경우(선택값) - //String p_reserveYn = request.getParameter("p_reserveYn"); //예약문자 여부 N or Y - //String p_divideCnt = request.getParameter("p_divideCnt"); //분할문자 건수 - //String p_divideTime = request.getParameter("p_divideTime"); //분할문자 간격 - //String p_reqDate = request.getParameter("p_reqDate"); //예약시간 - - Map params = new HashMap(); - - //필수 전송 데이터 - params.put("mberId", mberId); //회원 아이디 - params.put("accessKey", apiKey); //인증키 - params.put("callFrom" , p_callFrom); //발신번호 - - //선택 전송 데이터 - params.put("test_yn" , p_testYn); //테스트 여부 - - //전송할 데이터에 수신자, 문자내용 개수만큼 추가해주기 - for (int i=1;i<101;i++){ //최대 수신자 100명 - String p_callTo = "p_callTo_"+Integer.toString(i); - String p_smsTxt = "p_smsTxt_"+Integer.toString(i); - - String s_callTo = "callTo_"+Integer.toString(i); - String s_smsTxt = "smsTxt_"+Integer.toString(i); - - p_callTo_1 = request.getParameter(p_callTo); - p_smsTxt_1 = request.getParameter(p_smsTxt); - - - System.out.println("======i====="); - System.out.println(i); - System.out.println(p_callTo_1); - System.out.println(p_smsTxt_1); - - - if (p_callTo_1 != null - && p_smsTxt_1 != null - && !"".equals(p_callTo_1) - && !"".equals(p_smsTxt_1) - ){ - params.put(s_callTo, p_callTo_1); //수신자 추가 - params.put(s_smsTxt, p_smsTxt_1); //문자내용 추가 - } else{ - break; - } - } - - //REST API 전송 - String result = ""; - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - try{ - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류˜ - try{ - builder.addTextBody(key, params.get(key) - , ContentType.create("Multipart/related", encodingType)); - }catch(Exception ex){ - ex.printStackTrace(); - - } - - } - }catch(Exception ex){ - ex.printStackTrace(); - - } - - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}"); - } - - /**************** 문자발송 Response 예제 ******************/ - /* "result_code": 결과코드, "msgGroupIdList": 메세지 그룹 ID 리스트, "msgTypeList": 메세지 타입 리스트*/ - /* "test_yn": 테스트 데이터 여부, "successCnt": 성공 건수 , "blockCnt" : 수신거부 건수, "failCnt": 발송실패 건수*/ -%> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_start_form_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_start_form_r1.jsp deleted file mode 100644 index 34088872..00000000 --- a/src/main/webapp/sample_mjon/jsp_example_start_form_r1.jsp +++ /dev/null @@ -1,23 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - - -
              -
              - - -
              -
              - diff --git a/src/main/webapp/sample_mjon/jsp_샘플_예제.zip b/src/main/webapp/sample_mjon/jsp_샘플_예제.zip deleted file mode 100644 index e73d1c1f..00000000 Binary files a/src/main/webapp/sample_mjon/jsp_샘플_예제.zip and /dev/null differ diff --git a/src/main/webapp/tabulator/dist/css/tabulator.css b/src/main/webapp/tabulator/dist/css/tabulator.css deleted file mode 100644 index 2e46211b..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator.css +++ /dev/null @@ -1,1207 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #999; - background-color: #888; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #e6e6e6; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #cdcdcd; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #cdcdcd; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: #f3f3f3 !important; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #f3f3f3 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #e2e2e2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #aaa; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #EFEFEF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #aaa; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #aaa; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #EFEFEF; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #aaa; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #aaa; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #aaa; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -/*# sourceMappingURL=tabulator.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator.css.map b/src/main/webapp/tabulator/dist/css/tabulator.css.map deleted file mode 100644 index 764e43ef..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","file":"tabulator.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #888;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #e6e6e6;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #cdcdcd;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #cdcdcd; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f3f3f3 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator.min.css b/src/main/webapp/tabulator/dist/css/tabulator.min.css deleted file mode 100644 index b5cda47c..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#cdcdcd}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333} -/*# sourceMappingURL=tabulator.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator.min.css.map deleted file mode 100644 index 2697c18a..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","file":"tabulator.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #888;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #e6e6e6;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #cdcdcd;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #cdcdcd; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f3f3f3 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.css b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.css deleted file mode 100644 index 4d764056..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.css +++ /dev/null @@ -1,1410 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #ddd; - background-color: #fff; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #ddd; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #ddd; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid #ddd; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ececec !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #ddd; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #ddd; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #ddd; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f5f5f5; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #ddd; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #ddd; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #f9f9f9; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #ddd; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #ddd; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #ddd; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - background-color: #fff; - margin-bottom: 20px; - border: none; -} - -.tabulator .tabulator-header { - border-bottom: 2px solid #ddd; - background-color: #fff; - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - background-color: #fff; - border-right: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 8px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - border-top: 2px solid #ddd; - background: inherit; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator.table-striped .tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -.tabulator.table-bordered { - border: 1px solid #ddd; -} - -.tabulator.table-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #ddd; -} - -.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #ddd; -} - -.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content { - padding: 5px; -} - -.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row { - min-height: 24px; -} - -.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 5px; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success { - background: #dff0d8 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info { - background: #d9edf7 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning { - background: #fcf8e3 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger { - background: #f2dede !important; -} - -.tabulator-row { - min-height: 30px; - border-bottom: 1px solid #ddd; -} - -.tabulator-row.tabulator-row-even { - background-color: transparent; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f5f5f5 !important; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC !important; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell { - padding: 8px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #333; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - border: none; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - border: 1px solid #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #333; -} - -/*# sourceMappingURL=tabulator_bootstrap3.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.css.map deleted file mode 100644 index dbb72cdf..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap3.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #ddd;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #ddd;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n margin-bottom: 20px;\n border: none; }\n .tabulator .tabulator-header {\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #fff;\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n border-top: 2px solid #ddd;\n background: inherit; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator.table-striped .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-bordered {\n border: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd; }\n .tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 24px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important; }\n\n.tabulator-row {\n min-height: 30px;\n border-bottom: 1px solid #ddd; }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell {\n padding: 8px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border: none; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n .tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.min.css b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.min.css deleted file mode 100644 index fc4c52d1..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #ddd;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #ddd;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #ddd;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #ddd;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#f3f3f3!important;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #ddd;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #ddd;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#f9f9f9}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#f9f9f9}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator{background-color:#fff;margin-bottom:20px;border:none}.tabulator .tabulator-header{border-bottom:2px solid #ddd;background-color:#fff;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:8px}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{width:100%;border-bottom:1px solid #ddd}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer{border-top:2px solid #ddd;background:inherit}.tabulator .tabulator-footer .tabulator-calcs-holder{border-bottom:1px solid #ddd;border-top:1px solid #ddd}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator.table-striped .tabulator-row.tabulator-row-even{background-color:#f9f9f9}.tabulator.table-bordered{border:1px solid #ddd}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #ddd}.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content{padding:5px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row{min-height:24px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success{background:#dff0d8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info{background:#d9edf7!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{background:#fcf8e3!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger{background:#f2dede!important}.tabulator-row{min-height:30px;border-bottom:1px solid #ddd}.tabulator-row.tabulator-row-even{background-color:transparent}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important}}.tabulator-row.tabulator-selected{background-color:#9abcea!important}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}}.tabulator-row .tabulator-cell{padding:8px;border-right:none}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-item,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border:none}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{border:1px solid #333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333} -/*# sourceMappingURL=tabulator_bootstrap3.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.min.css.map deleted file mode 100644 index bdfad6fc..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap3.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap3.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #ddd;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #ddd;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n margin-bottom: 20px;\n border: none; }\n .tabulator .tabulator-header {\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #fff;\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n border-top: 2px solid #ddd;\n background: inherit; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator.table-striped .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-bordered {\n border: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd; }\n .tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 24px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important; }\n\n.tabulator-row {\n min-height: 30px;\n border-bottom: 1px solid #ddd; }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell {\n padding: 8px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border: none; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n .tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.css b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.css deleted file mode 100644 index 7f1501eb..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.css +++ /dev/null @@ -1,1674 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #dee2e6; - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #dee2e6; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #dee2e6; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ececec !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #dee2e6; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #dee2e6; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #dee2e6; - border-top: 1px solid #dee2e6; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f5f5f5; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #dee2e6; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #dee2e6; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #f9f9f9; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #dee2e6; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #dee2e6; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #dee2e6; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - background-color: #fff; - border: none; -} - -.tabulator .tabulator-header { - border-top: 1px solid #dee2e6; - border-bottom: 2px solid #dee2e6; - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 12px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input { - padding: .375rem .75rem; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: .25rem; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - font-size: 1rem; - line-height: 1.5; - color: #495057; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus { - color: #495057; - background-color: #fff; - border: 1px solid #1D68CD; - outline: 0; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0; - margin-top: 5px; - padding: 8px 12px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="first"] { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="last"] { - border: 1px solid #dee2e6; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - border-color: #007bff; - background-color: #007bff; - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - border-color: #dee2e6; - background: #fff; - color: #6c757d; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - border-color: #dee2e6; - background: #e9ecef; - color: #0056b3; - } -} - -.tabulator.thead-dark .tabulator-header { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.thead-dark .tabulator-header .tabulator-col { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.table-dark { - background-color: #212529; -} - -.tabulator.table-dark:not(.thead-light) .tabulator-header { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.table-dark .tabulator-tableholder { - color: #fff; -} - -.tabulator.table-dark .tabulator-row { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table-dark .tabulator-row:hover { - background-color: #32383e; - } - .tabulator.table-dark .tabulator-row:hover .tabulator-cell { - background-color: rgba(255, 255, 255, 0.075); - } -} - -.tabulator.table-dark .tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -.tabulator.table-dark .tabulator-footer { - border-color: #32383e !important; -} - -.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder { - border-color: #32383e !important; - background: #212529 !important; -} - -.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row { - border-color: #32383e !important; - background-color: #212529 !important; - color: #fff !important; -} - -.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover { - background-color: #f5f5f5; - cursor: pointer; - } - .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator.table-striped.table-dark .tabulator-row:nth-child(even) .tabulator-cell { - background-color: rgba(255, 255, 255, 0.05); -} - -.tabulator.table-bordered { - border: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-borderless .tabulator-header { - border: none; -} - -.tabulator.table-borderless .tabulator-row { - border: none; -} - -.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content { - padding: 5px !important; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row { - min-height: 26px; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 5px !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary { - background: #b8daff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary { - background: #d6d8db !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success { - background: #c3e6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info { - background: #bee5eb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning { - background: #ffeeba !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger { - background: #f5c6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light { - background: #fdfdfe !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark { - background: #c6c8ca !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary { - background: #007bff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success { - background: #28a745 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info { - background: #17a2b8 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning { - background: #ffc107 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger { - background: #dc3545 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark { - background: #343a40 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary { - background: #b8daff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary { - background: #d6d8db !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success { - background: #c3e6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info { - background: #bee5eb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning { - background: #ffeeba !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger { - background: #f5c6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light { - background: #fdfdfe !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark { - background: #c6c8ca !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary { - background: #007bff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success { - background: #28a745 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info { - background: #17a2b8 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning { - background: #ffc107 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger { - background: #dc3545 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark { - background: #343a40 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active { - background: #f5f5f5 !important; -} - -.tabulator-row { - min-height: 40px; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-cell { - padding: 12px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #fff; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: initial; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - color: inherit; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -/*# sourceMappingURL=tabulator_bootstrap4.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.css.map deleted file mode 100644 index 979ce190..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap4.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap4.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #007bff;\n background-color: #007bff;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0056b3; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark {\n background-color: #212529; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark .tabulator-tableholder {\n color: #fff; }\n .tabulator.table-dark .tabulator-row {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-dark .tabulator-row:hover {\n background-color: #32383e; }\n .tabulator.table-dark .tabulator-row:hover .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.075); } }\n .tabulator.table-dark .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-dark .tabulator-footer {\n border-color: #32383e !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder {\n border-color: #32383e !important;\n background: #212529 !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #32383e !important;\n background-color: #212529 !important;\n color: #fff !important; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table-dark .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.05); }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #f5f5f5 !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.min.css b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.min.css deleted file mode 100644 index 1072f1a2..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #dee2e6;font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #dee2e6;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #dee2e6;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #dee2e6;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-footer{border-top:1px solid #dee2e6;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dee2e6;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #dee2e6;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#f9f9f9}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #dee2e6;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;border-bottom:2px solid #dee2e6}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #dee2e6;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#f9f9f9}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #dee2e6}.tabulator-edit-list{max-height:200px;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #dee2e6;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;border-bottom:2px solid #dee2e6}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{background-color:#fff;border:none}.tabulator .tabulator-header{border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6;color:inherit}.tabulator .tabulator-header .tabulator-col{border-right:none;background-color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:12px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{padding:.375rem .75rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-size:1rem;line-height:1.5;color:#495057}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus{color:#495057;background-color:#fff;border:1px solid #1d68cd;outline:0}.tabulator .tabulator-header .tabulator-calcs-holder{width:100%;border-bottom:1px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer,.tabulator .tabulator-footer .tabulator-paginator,.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer .tabulator-pages{margin:0}.tabulator .tabulator-footer .tabulator-page{margin:5px 0 0;padding:8px 12px}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#007bff;background-color:#007bff;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{border-color:#dee2e6;background:#fff;color:#6c757d}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{border-color:#dee2e6;background:#e9ecef;color:#0056b3}}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{border-color:#32383e;background-color:#212529;color:#fff}.tabulator.table-dark{background-color:#212529}.tabulator.table-dark:not(.thead-light) .tabulator-header,.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col{border-color:#32383e;background-color:#212529;color:#fff}.tabulator.table-dark .tabulator-tableholder{color:#fff}.tabulator.table-dark .tabulator-row{border-color:#32383e;background-color:#212529;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator.table-dark .tabulator-row:hover{background-color:#32383e}.tabulator.table-dark .tabulator-row:hover .tabulator-cell{background-color:hsla(0,0%,100%,.075)}}.tabulator.table-dark .tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator.table-dark .tabulator-footer{border-color:#32383e!important}.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder{border-color:#32383e!important;background:#212529!important}.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row{border-color:#32383e!important;background-color:#212529!important;color:#fff!important}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even{background-color:#f9f9f9}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator.table-striped.table-dark .tabulator-row:nth-child(2n) .tabulator-cell{background-color:hsla(0,0%,100%,.05)}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:5px!important}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row{min-height:26px}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary{background:#b8daff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info{background:#bee5eb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary{background:#007bff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success{background:#28a745!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark{background:#343a40!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#b8daff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#bee5eb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#007bff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#28a745!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#343a40!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#f5f5f5!important}.tabulator-row{min-height:40px;border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-cell{padding:12px;border-right:none}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:initial}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{color:inherit}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc} -/*# sourceMappingURL=tabulator_bootstrap4.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.min.css.map deleted file mode 100644 index 61dced6f..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap4.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap4.scss"],"names":[],"mappings":"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,CAC/C,0BACE,wBAA2B,CAG3B,4JACE,8BAAiC,CAGrC,yFACE,WAAc,CAChB,4EACE,qBAAyB,CAC3B,2EACE,eAAkB,CAClB,2FACE,qBAAyB,CAC7B,gFACE,4BAAgC,CAClC,kFACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,8EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,4EACE,4BAAgC,CAClC,2EACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,4EACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,kGACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,8FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,0FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,4FACE,4BAAgC,CAClC,2FACE,4BAAgC,CAClC,0FACE,4BAAgC,CAClC,4FACE,4BAAgC,CAEpC,eACE,eAAgB,CAChB,+BAAkC,CAClC,+BACE,YAAa,CACb,iBAAoB,CACpB,4CACE,iBAAoB,CACtB,4DACE,qBAAwB,CAKtB,8SACE,eAAkB,CAC1B,+BACE,kBAAqB,CACrB,oCACE,UAAa,CAEnB,4BACE,eAAkB,CAClB,oEACE,UAAa,CACb,4EACE,oCAA6C,CACjD,wCACE,mEACE,UAAa,CAAE,CAGnB,6HACE,aAAgB,CAEpB,0DACE,kBAAmB,CACnB,mBAAsB,CAExB,oDACE,kBAAqB,CACrB,yDACE,UAAa,CAEjB,oDACE,aAAgB,CAKd,sRACE,eAAkB","file":"tabulator_bootstrap4.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #007bff;\n background-color: #007bff;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0056b3; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark {\n background-color: #212529; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark .tabulator-tableholder {\n color: #fff; }\n .tabulator.table-dark .tabulator-row {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-dark .tabulator-row:hover {\n background-color: #32383e; }\n .tabulator.table-dark .tabulator-row:hover .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.075); } }\n .tabulator.table-dark .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-dark .tabulator-footer {\n border-color: #32383e !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder {\n border-color: #32383e !important;\n background: #212529 !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #32383e !important;\n background-color: #212529 !important;\n color: #fff !important; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table-dark .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.05); }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #f5f5f5 !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.css b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.css deleted file mode 100644 index 397f6405..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.css +++ /dev/null @@ -1,1701 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #dee2e6; - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #dee2e6; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #dee2e6; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #dadfe4 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #dee2e6; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #dee2e6; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #dee2e6; - border-top: 1px solid #dee2e6; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #e9ecef; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #ced4da; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #dee2e6; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #dee2e6; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #e9ecef; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #dee2e6; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #dee2e6; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #dee2e6; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - background-color: #fff; - border: none; -} - -.tabulator .tabulator-header { - border-top: 1px solid #dee2e6; - border-bottom: 2px solid #dee2e6; - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 12px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input { - padding: .375rem .75rem; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: .25rem; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - font-size: 1rem; - line-height: 1.5; - color: #495057; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus { - color: #495057; - background-color: #fff; - border: 1px solid #1D68CD; - outline: 0; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0; - margin-top: 5px; - padding: 8px 12px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="first"] { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="last"] { - border: 1px solid #dee2e6; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - border-color: #0d6efd; - background-color: #0d6efd; - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - border-color: #dee2e6; - background: #fff; - color: #6c757d; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - border-color: #dee2e6; - background: #e9ecef; - color: #0a58ca; - } -} - -.tabulator.thead-dark .tabulator-header { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.thead-dark .tabulator-header .tabulator-col { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.table { - background-color: #fff; -} - -.tabulator.table:not(.thead-light) .tabulator-header { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.table .tabulator-tableholder { - color: #212529; -} - -.tabulator.table .tabulator-row { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table .tabulator-row:hover { - background-color: #dee2e6; - } - .tabulator.table .tabulator-row:hover .tabulator-cell { - background-color: #ced4da; - } -} - -.tabulator.table .tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -.tabulator.table .tabulator-footer { - border-color: #dee2e6 !important; -} - -.tabulator.table .tabulator-footer .tabulator-calcs-holder { - border-color: #dee2e6 !important; - background: #fff !important; -} - -.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row { - border-color: #dee2e6 !important; - background-color: #fff !important; - color: #212529 !important; -} - -.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even { - background-color: #e9ecef; -} - -.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover { - background-color: #ced4da; - cursor: pointer; - } - .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator.table-striped.table .tabulator-row:nth-child(even) .tabulator-cell { - background-color: transparent; -} - -.tabulator.table-bordered { - border: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-borderless .tabulator-header { - border: none; -} - -.tabulator.table-borderless .tabulator-row { - border: none; -} - -.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content { - padding: 5px !important; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row { - min-height: 26px; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 5px !important; -} - -.tabulator.table-sm .tabulator-row { - padding-top: 0; - padding-bottom: 0; -} - -.tabulator.table-sm .tabulator-col-resize-handle { - padding: 0; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active { - background: #6c757d !important; -} - -.tabulator-row { - min-height: 40px; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-cell { - padding: 12px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #fff; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: initial; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - color: inherit; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-popup-container { - background: #fff; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - color: #fff; - } -} - -/*# sourceMappingURL=tabulator_bootstrap5.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.css.map deleted file mode 100644 index 6f28858a..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap5.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap5.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #dadfe4 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #e9ecef; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #0d6efd;\n background-color: #0d6efd;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0a58ca; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table {\n background-color: #fff; }\n .tabulator.table:not(.thead-light) .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table .tabulator-tableholder {\n color: #212529; }\n .tabulator.table .tabulator-row {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table .tabulator-row:hover {\n background-color: #dee2e6; }\n .tabulator.table .tabulator-row:hover .tabulator-cell {\n background-color: #ced4da; } }\n .tabulator.table .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table .tabulator-footer {\n border-color: #dee2e6 !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder {\n border-color: #dee2e6 !important;\n background: #fff !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #dee2e6 !important;\n background-color: #fff !important;\n color: #212529 !important; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: transparent; }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-row {\n padding-top: 0;\n padding-bottom: 0; }\n .tabulator.table-sm .tabulator-col-resize-handle {\n padding: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #6c757d !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n\n.tabulator-popup-container {\n background: #fff; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: #fff; } }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.min.css b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.min.css deleted file mode 100644 index 62108b9c..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #dee2e6;font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #dee2e6;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #dee2e6;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #dee2e6;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#dadfe4!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-footer{border-top:1px solid #dee2e6;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dee2e6;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #dee2e6;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#e9ecef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #dee2e6;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;border-bottom:2px solid #dee2e6}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;border:1px solid #dee2e6;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#e9ecef}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #dee2e6}.tabulator-edit-list{max-height:200px;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #dee2e6;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;border-bottom:2px solid #dee2e6}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{background-color:#fff;border:none}.tabulator .tabulator-header{border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6;color:inherit}.tabulator .tabulator-header .tabulator-col{border-right:none;background-color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:12px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{padding:.375rem .75rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-size:1rem;line-height:1.5;color:#495057}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus{color:#495057;background-color:#fff;border:1px solid #1d68cd;outline:0}.tabulator .tabulator-header .tabulator-calcs-holder{width:100%;border-bottom:1px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer,.tabulator .tabulator-footer .tabulator-paginator,.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer .tabulator-pages{margin:0}.tabulator .tabulator-footer .tabulator-page{margin:5px 0 0;padding:8px 12px}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#0d6efd;background-color:#0d6efd;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{border-color:#dee2e6;background:#fff;color:#6c757d}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{border-color:#dee2e6;background:#e9ecef;color:#0a58ca}}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{border-color:#dee2e6;background-color:#fff;color:#212529}.tabulator.table{background-color:#fff}.tabulator.table:not(.thead-light) .tabulator-header,.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col{border-color:#dee2e6;background-color:#fff;color:#212529}.tabulator.table .tabulator-tableholder{color:#212529}.tabulator.table .tabulator-row{border-color:#dee2e6;background-color:#fff;color:#212529}@media (hover:hover) and (pointer:fine){.tabulator.table .tabulator-row:hover{background-color:#dee2e6}.tabulator.table .tabulator-row:hover .tabulator-cell{background-color:#ced4da}}.tabulator.table .tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator.table .tabulator-footer{border-color:#dee2e6!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder{border-color:#dee2e6!important;background:#fff!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row{border-color:#dee2e6!important;background-color:#fff!important;color:#212529!important}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even{background-color:#e9ecef}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator.table-striped.table .tabulator-row:nth-child(2n) .tabulator-cell{background-color:transparent}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:5px!important}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row{min-height:26px}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px!important}.tabulator.table-sm .tabulator-row{padding-top:0;padding-bottom:0}.tabulator.table-sm .tabulator-col-resize-handle{padding:0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#6c757d!important}.tabulator-row{min-height:40px;border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-cell{padding:12px;border-right:none}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:initial}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{color:inherit}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-popup-container{background:#fff}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{color:#fff}} -/*# sourceMappingURL=tabulator_bootstrap5.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.min.css.map deleted file mode 100644 index de9b5a51..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bootstrap5.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap5.scss"],"names":[],"mappings":"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AiC,CAGrC,yFACE,WAAc,CAChB,4EACE,qBAAyB,CAC3B,2EACE,eAAkB,CAClB,2FACE,qBAAyB,CAC7B,mCACE,aAAc,CACd,gBAAmB,CACrB,iDACE,SAAY,CACd,gFACE,4BAAgC,CAClC,kFACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,8EACE,4BAAgC,CAClC,wEACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,4EACE,4BAAgC,CAClC,2EACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,4EACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,kGACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,8FACE,4BAAgC,CAClC,wFACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,0FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,4FACE,4BAAgC,CAClC,2FACE,4BAAgC,CAClC,0FACE,4BAAgC,CAClC,4FACE,4BAAgC,CAEpC,eACE,eAAgB,CAChB,+BAAkC,CAClC,+BACE,YAAa,CACb,iBAAoB,CACpB,4CACE,iBAAoB,CACtB,4DACE,qBAAwB,CAKtB,8SACE,eAAkB,CAC1B,+BACE,kBAAqB,CACrB,oCACE,UAAa,CAEnB,4BACE,eAAkB,CAClB,oEACE,UAAa,CACb,4EACE,oCAA6C,CACjD,wCACE,mEACE,UAAa,CAAE,CAGnB,6HACE,aAAgB,CAEpB,0DACE,kBAAmB,CACnB,mBAAsB,CAExB,oDACE,kBAAqB,CACrB,yDACE,UAAa,CAEjB,oDACE,aAAgB,CAKd,sRACE,eAAkB,CAExB,2BACE,eAAkB,CAEpB,sDACE,UAAa,CACb,8DACE,oCAA6C,CAEjD,wCACE,qDACE,UAAa,CAAE","file":"tabulator_bootstrap5.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #dadfe4 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #e9ecef; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #0d6efd;\n background-color: #0d6efd;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0a58ca; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table {\n background-color: #fff; }\n .tabulator.table:not(.thead-light) .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table .tabulator-tableholder {\n color: #212529; }\n .tabulator.table .tabulator-row {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table .tabulator-row:hover {\n background-color: #dee2e6; }\n .tabulator.table .tabulator-row:hover .tabulator-cell {\n background-color: #ced4da; } }\n .tabulator.table .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table .tabulator-footer {\n border-color: #dee2e6 !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder {\n border-color: #dee2e6 !important;\n background: #fff !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #dee2e6 !important;\n background-color: #fff !important;\n color: #212529 !important; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: transparent; }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-row {\n padding-top: 0;\n padding-bottom: 0; }\n .tabulator.table-sm .tabulator-col-resize-handle {\n padding: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #6c757d !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n\n.tabulator-popup-container {\n background: #fff; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: #fff; } }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bulma.css b/src/main/webapp/tabulator/dist/css/tabulator_bulma.css deleted file mode 100644 index be53abc7..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bulma.css +++ /dev/null @@ -1,1374 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #999; - background-color: white; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: transparent; - color: #363636; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: transparent; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: rgba(0, 0, 0, 0); - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0); - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #363636; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #363636; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #363636; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #363636; - color: #363636; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: rgba(13, 13, 13, 0) !important; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: rgba(13, 13, 13, 0) !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: transparent; - white-space: nowrap; - overflow: visible; - color: #363636; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ededed !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #aaa; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: transparent; - color: #363636; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: rgba(13, 13, 13, 0) !important; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: rgba(13, 13, 13, 0) !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #363636; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #dbdbdb; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #dbdbdb; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: transparent; -} - -.tabulator-row.tabulator-row-even { - background-color: #fafafa; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #fafafa; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #00d1b2; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #aaa; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #363636; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #363636; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: transparent; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #363636; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #363636; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: transparent; - border: 1px solid #aaa; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #fafafa; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #aaa; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #aaa; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #363636; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: transparent; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(0, 0, 0, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: transparent; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #363636; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #aaa; - padding: 4px; - padding-top: 6px; - color: #363636; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #363636; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #363636; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #363636; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #363636; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator { - border: none; -} - -.tabulator .tabulator-header { - border: 1px solid #dbdbdb; - border-width: 0 0 2px; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - border: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.5em 0.75em; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: 0px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input { - border: 1px solid #dbdbdb; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - border: 1px solid #dbdbdb; - border-width: 2px 0 0; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell { - border-bottom-width: 0; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border: 1px solid #dbdbdb; - border-width: 0 0 2px; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border: 1px solid #dbdbdb; - border-width: 2px 0 0; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell { - border-bottom-width: 0; -} - -.tabulator .tabulator-footer { - padding: 0.5em 0.75em; - border: 1px solid #dbdbdb; - border-width: 2px 0 0; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - margin: -5px -10px 10px -10px; - border: 1px solid #dbdbdb; - border-width: 0 0 2px; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell { - border-bottom-width: 0; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0 0.1875em; - padding: calc(0.375em - 1px) 0.75em; - border: 1px solid #dbdbdb; - font-size: 16px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - border-color: #4a4a4a; - color: #363636; - font-weight: bold; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - border-color: #b5b5b5; - background: inherit; - color: inherit; - } -} - -.tabulator.is-striped .tabulator-row:nth-child(even) { - background-color: #fafafa; -} - -.tabulator.is-bordered { - border: 1px solid #dbdbdb; -} - -.tabulator.is-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #dbdbdb; -} - -.tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #dbdbdb; -} - -.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.25em 0.5em; -} - -.tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 0.25em 0.5em; -} - -.tabulator-row { - min-height: 22px; -} - -.tabulator-row.tabulator-row-even { - background-color: inherit; -} - -.tabulator-row.tabulator-selected { - background-color: #00d1b2 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #009e86 !important; - } -} - -.tabulator-row .tabulator-cell { - padding: 0.5em 0.75em; - border: 1px solid #dbdbdb; - border-width: 0 0 1px; -} - -.tabulator-row.tabulator-group { - border-bottom: 1px solid #999; - border-right: none; - border-top: 1px solid #999; - color: #363636; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: none; - border-top: 1px solid #999; - color: #363636; -} - -.tabulator-popup-container { - background: white; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: white; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - color: white; - } -} - -/*# sourceMappingURL=tabulator_bulma.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bulma.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bulma.css.map deleted file mode 100644 index 3637b3cc..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bulma.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bulma.scss"],"names":[],"mappings":"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","file":"tabulator_bulma.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: white;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0); } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #363636;\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: rgba(13, 13, 13, 0) !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: transparent; }\n .tabulator-row.tabulator-row-even {\n background-color: #fafafa; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: transparent; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fafafa; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #363636;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n\n.tabulator {\n border: none; }\n .tabulator .tabulator-header {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n border: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.75em; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -5px -10px 10px -10px;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n font-size: 16px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n background: inherit;\n color: inherit; } }\n .tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa; }\n .tabulator.is-bordered {\n border: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em; }\n .tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em; }\n\n.tabulator-row {\n min-height: 22px; }\n .tabulator-row.tabulator-row-even {\n background-color: inherit; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #009e86 !important; } }\n .tabulator-row .tabulator-cell {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px; }\n .tabulator-row.tabulator-group {\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-popup-container {\n background: white; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: white; }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: white; } }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bulma.min.css b/src/main/webapp/tabulator/dist/css/tabulator_bulma.min.css deleted file mode 100644 index 32d2eea9..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bulma.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #999;background-color:#fff;font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:transparent;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:transparent;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:transparent}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#363636}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#363636}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #363636;color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:rgba(13,13,13,0)!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:rgba(13,13,13,0)!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:transparent;white-space:nowrap;overflow:visible;color:#363636}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ededed!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:rgba(13,13,13,0)!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:rgba(13,13,13,0)!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#363636;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dbdbdb;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:transparent}.tabulator-row.tabulator-row-even{background-color:#fafafa}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#00d1b2}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:transparent;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:transparent}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:transparent;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fafafa}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{max-height:200px;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#363636;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:transparent;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:transparent;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#363636;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#363636;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator{border:none}.tabulator .tabulator-header{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-header .tabulator-col{border-right:none}.tabulator .tabulator-header .tabulator-col.tabulator-moving{border:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .75em}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{border:1px solid #dbdbdb}.tabulator .tabulator-header .tabulator-calcs-holder{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer{padding:.5em .75em;border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-5px -10px 10px;border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer .tabulator-page{margin:0 .1875em;padding:calc(.375em - 1px) .75em;border:1px solid #dbdbdb;font-size:16px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#b5b5b5;background:inherit;color:inherit}}.tabulator.is-striped .tabulator-row:nth-child(2n){background-color:#fafafa}.tabulator.is-bordered{border:1px solid #dbdbdb}.tabulator.is-bordered .tabulator-header .tabulator-col,.tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dbdbdb}.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content,.tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.25em .5em}.tabulator-row{min-height:22px}.tabulator-row.tabulator-row-even{background-color:inherit}.tabulator-row.tabulator-selected{background-color:#00d1b2!important}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#009e86!important}}.tabulator-row .tabulator-cell{padding:.5em .75em;border:solid #dbdbdb;border-width:0 0 1px}.tabulator-print-table .tabulator-print-table-group,.tabulator-row.tabulator-group{border-bottom:1px solid #999;border-right:none;border-top:1px solid #999;color:#363636}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box}.tabulator-popup-container{background:#fff}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{color:#fff}} -/*# sourceMappingURL=tabulator_bulma.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_bulma.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_bulma.min.css.map deleted file mode 100644 index 117ba882..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_bulma.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bulma.scss"],"names":[],"mappings":"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","file":"tabulator_bulma.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: white;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0); } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #363636;\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: rgba(13, 13, 13, 0) !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: transparent; }\n .tabulator-row.tabulator-row-even {\n background-color: #fafafa; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: transparent; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fafafa; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #363636;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n\n.tabulator {\n border: none; }\n .tabulator .tabulator-header {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n border: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.75em; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -5px -10px 10px -10px;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n font-size: 16px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n background: inherit;\n color: inherit; } }\n .tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa; }\n .tabulator.is-bordered {\n border: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em; }\n .tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em; }\n\n.tabulator-row {\n min-height: 22px; }\n .tabulator-row.tabulator-row-even {\n background-color: inherit; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #009e86 !important; } }\n .tabulator-row .tabulator-cell {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px; }\n .tabulator-row.tabulator-group {\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-popup-container {\n background: white; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: white; }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: white; } }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_materialize.css b/src/main/webapp/tabulator/dist/css/tabulator_materialize.css deleted file mode 100644 index 115a06e7..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_materialize.css +++ /dev/null @@ -1,1412 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid rgba(0, 0, 0, 0.12); - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid rgba(0, 0, 0, 0.12); - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid rgba(0, 0, 0, 0.12); - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ebebeb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-footer { - border-top: 1px solid rgba(0, 0, 0, 0.12); - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - border-top: 1px solid rgba(0, 0, 0, 0.12); - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid rgba(0, 0, 0, 0.12); - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid rgba(0, 0, 0, 0.12); - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #ee6e73; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #f8f8f8; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f8f8f8; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #ee6e73; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #ee6e73; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid rgba(0, 0, 0, 0.12); - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid rgba(0, 0, 0, 0.12); - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid rgba(0, 0, 0, 0.12); - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #ee6e73; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid rgba(0, 0, 0, 0.12); - border-bottom: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid rgba(0, 0, 0, 0.12); - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid rgba(0, 0, 0, 0.12); - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #f8f8f8; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: rgba(0, 0, 0, 0.12); - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #ee6e73; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #ee6e73; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #ee6e73; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid rgba(0, 0, 0, 0.12); - border-bottom: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid rgba(0, 0, 0, 0.12); - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - border: none; - background-color: #fff; - width: 100%; - max-width: 100%; -} - -.tabulator .tabulator-header { - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 15px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: -10px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 10px; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - min-width: 600%; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - background-color: transparent; - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0; - margin-top: 5px; - padding: 8px 12px; - border-radius: 0; - border-right: none; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page[data-page="next"], -.tabulator .tabulator-footer .tabulator-page:first-of-type { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="prev"], -.tabulator .tabulator-footer .tabulator-page:last-of-type { - border: 1px solid rgba(0, 0, 0, 0.12); - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #ee6e73; -} - -.tabulator.striped .tabulator-row:nth-child(even) { - background-color: #f8f8f8; -} - -.tabulator.striped .tabulator-row:nth-child(even).tabulator-selected { - background-color: #ee6e73 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover { - background-color: #f8f8f8; - cursor: pointer; - } - .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected:hover { - background-color: #ee6e73 !important; - cursor: pointer; - } -} - -.tabulator-row { - min-height: 46px; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -.tabulator-row .tabulator-cell { - padding: 15px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #fff; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - border-left: none; - border-right: none; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -/*# sourceMappingURL=tabulator_materialize.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_materialize.css.map b/src/main/webapp/tabulator/dist/css/tabulator_materialize.css.map deleted file mode 100644 index f30a1095..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_materialize.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_materialize.scss"],"names":[],"mappings":"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","file":"tabulator_materialize.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ebebeb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f8f8f8; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #ee6e73;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #ee6e73;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.12);\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f8f8f8; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: rgba(0, 0, 0, 0.12);\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #ee6e73; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #ee6e73; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff;\n width: 100%;\n max-width: 100%; }\n .tabulator .tabulator-header {\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 15px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: -10px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n background-color: transparent;\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px;\n border-radius: 0;\n border-right: none;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"next\"], .tabulator .tabulator-footer .tabulator-page:first-of-type {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"prev\"], .tabulator .tabulator-footer .tabulator-page:last-of-type {\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f8f8f8; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected:hover {\n background-color: #ee6e73 !important;\n cursor: pointer; } }\n\n.tabulator-row {\n min-height: 46px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n .tabulator-row .tabulator-cell {\n padding: 15px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border-left: none;\n border-right: none; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_materialize.min.css b/src/main/webapp/tabulator/dist/css/tabulator_materialize.min.css deleted file mode 100644 index 66306bd5..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_materialize.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid rgba(0,0,0,.12);font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid rgba(0,0,0,.12);background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid rgba(0,0,0,.12);background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ebebeb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-footer{border-top:1px solid rgba(0,0,0,.12);background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#f3f3f3!important;border-bottom:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid rgba(0,0,0,.12);border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid rgba(0,0,0,.12);border-radius:3px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#f8f8f8}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f8f8f8;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#ee6e73}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#ee6e73;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid rgba(0,0,0,.12);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #ee6e73;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid rgba(0,0,0,.12);border-bottom:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid rgba(0,0,0,.12);border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid rgba(0,0,0,.12);box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#f8f8f8}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:rgba(0,0,0,.12);border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid rgba(0,0,0,.12)}.tabulator-edit-list{max-height:200px;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#ee6e73}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #ee6e73}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#ee6e73}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid rgba(0,0,0,.12);padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid rgba(0,0,0,.12);border-bottom:2px solid rgba(0,0,0,.12)}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid rgba(0,0,0,.12);border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff;width:100%;max-width:100%}.tabulator .tabulator-header{color:inherit}.tabulator .tabulator-header .tabulator-col{border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:15px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:-10px}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:10px}.tabulator .tabulator-header .tabulator-calcs-holder{width:100%;border-bottom:1px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer{background-color:transparent;color:inherit}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator .tabulator-footer .tabulator-page{margin:5px 0 0;padding:8px 12px;border-radius:0;border-right:none;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page:first-of-type,.tabulator .tabulator-footer .tabulator-page[data-page=next]{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabulator .tabulator-footer .tabulator-page:last-of-type,.tabulator .tabulator-footer .tabulator-page[data-page=prev]{border:1px solid rgba(0,0,0,.12);border-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{color:#ee6e73}.tabulator.striped .tabulator-row:nth-child(2n){background-color:#f8f8f8}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected{background-color:#ee6e73!important}@media (hover:hover) and (pointer:fine){.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:#f8f8f8;cursor:pointer}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected:hover{background-color:#ee6e73!important;cursor:pointer}}.tabulator-row{min-height:46px;border-bottom:1px solid rgba(0,0,0,.12)}.tabulator-row.tabulator-row-even{background-color:#fff}.tabulator-row .tabulator-cell{padding:15px;border-right:none}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item{color:inherit}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:none;border-right:none}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}.tabulator-print-table .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc} -/*# sourceMappingURL=tabulator_materialize.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_materialize.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_materialize.min.css.map deleted file mode 100644 index cdaf8c71..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_materialize.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_materialize.scss"],"names":[],"mappings":"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","file":"tabulator_materialize.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ebebeb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f8f8f8; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #ee6e73;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #ee6e73;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.12);\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f8f8f8; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: rgba(0, 0, 0, 0.12);\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #ee6e73; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #ee6e73; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff;\n width: 100%;\n max-width: 100%; }\n .tabulator .tabulator-header {\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 15px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: -10px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n background-color: transparent;\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px;\n border-radius: 0;\n border-right: none;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"next\"], .tabulator .tabulator-footer .tabulator-page:first-of-type {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"prev\"], .tabulator .tabulator-footer .tabulator-page:last-of-type {\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f8f8f8; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected:hover {\n background-color: #ee6e73 !important;\n cursor: pointer; } }\n\n.tabulator-row {\n min-height: 46px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n .tabulator-row .tabulator-cell {\n padding: 15px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border-left: none;\n border-right: none; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_midnight.css b/src/main/webapp/tabulator/dist/css/tabulator_midnight.css deleted file mode 100644 index 7f3fe7d4..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_midnight.css +++ /dev/null @@ -1,1305 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #333; - background-color: #222; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #333; - color: #fff; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #333; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #1a1a1a; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #1a1a1a; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #888; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #888; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: #404040 !important; - border-top: 1px solid #888; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #404040 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #666; - white-space: nowrap; - overflow: visible; - color: #fff; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #373737 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #888; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #888; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #333; - color: #333; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #404040 !important; - border-bottom: 1px solid #888; - border-top: 1px solid #888; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #404040 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #333; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #666; -} - -.tabulator-row.tabulator-row-even { - background-color: #444; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #999; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #000; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #888; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #888; - border-bottom: 1px solid #888; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #888; - border-bottom: 1px solid #888; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #888; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #888; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #888; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #999; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #888; - border-bottom: 2px solid #888; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #fff; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #666; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #666; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #888; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #666; - border: 1px solid #888; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #444; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #888; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #888; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #fff; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #666; - background: #999; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(102, 102, 102, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #999; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #666; - background: #999; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #fff; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #888; - padding: 4px; - padding-top: 6px; - color: #fff; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #888; - border-bottom: 2px solid #888; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #888; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #fff; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #fff; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator { - background-color: #222; -} - -.tabulator .tabulator-header .tabulator-col { - background-color: #333; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - color: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select { - border: 1px solid #999; - background: #444; - color: #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - background: #1a1a1a !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #1a1a1a !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - background: #262626 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: #262626 !important; -} - -.tabulator .tabulator-footer .tabulator-paginator label { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page { - color: #333; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator-row.tabulator-group { - min-width: 100%; - color: #333; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item { - color: #666; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #999; - background: #444; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(153, 153, 153, 0.5); -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { - outline: 1px solid #444; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #999; - background: #666; - } -} - -.tabulator-print-table .tabulator-print-table-group { - color: #333; -} - -/*# sourceMappingURL=tabulator_midnight.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_midnight.css.map b/src/main/webapp/tabulator/dist/css/tabulator_midnight.css.map deleted file mode 100644 index 3908ac51..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_midnight.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,sBAAsB;EACtB,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,gCAAgC;EAChC,6BAA6B;EAC7B,4BAA4B;EAC5B,2BAA2B;EAC3B,wBAAwB;AAAE;;AAC1B;EACE,eAAe;AAAE;;AACnB;EACE,qBAAqB;AAAE;;AACzB;EACE,iBAAiB;AAAE;;AACrB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,WAAW;EACX,6BAA6B;EAC7B,sBAAsB;EACtB,WAAW;EACX,iBAAiB;EACjB,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;AAAE;;AACtB;EACE,aAAa;AAAE;;AACjB;EACE,kBAAkB;EAClB,gBAAgB;AAAE;;AAClB;EACE,qBAAqB;AAAE;;AAC3B;EACE,oBAAoB;EACpB,kBAAkB;EAClB,sBAAsB;EACtB,sBAAsB;EACtB,2BAA2B;EAC3B,4BAA4B;EAC5B,gBAAgB;EAChB,gBAAgB;EAChB,sBAAsB;EACtB,gBAAgB;AAAE;;AAClB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,mBAAmB;EACnB,oBAAoB;AAAE;;AACxB;EACE,sBAAsB;EACtB,kBAAkB;EAClB,YAAY;AAAE;;AACd;EACE,cAAc;AAAE;;AAChB;EACE,eAAe;EACf,WAAW;AAAE;;AACjB;EACE,kBAAkB;AAAE;;AACtB;EACE,sBAAsB;EACtB,WAAW;EACX,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,sBAAsB;AAAE;;AACxB;EACE,mBAAmB;EACnB,sBAAsB;AAAE;;AAC1B;EACE,sBAAsB;EACtB,WAAW;EACX,sBAAsB;EACtB,YAAY;EACZ,gBAAgB;AAAE;;AACpB;EACE,wBAAwB;AAAE;;AAC9B;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,UAAU;AAAE;;AACZ;EACE,QAAQ;EACR,SAAS;EACT,kCAAkC;EAClC,mCAAmC;EACnC,6BAA6B;AAAE;;AACrC;EACE,kBAAkB;EAClB,aAAa;EACb,0BAA0B;EAC1B,gBAAgB;EAChB,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,eAAe;EACf,WAAW;EACX,kBAAkB;AAAE;;AACpB;EACE,uBAAuB;AAAE;;AAC3B;EACE,eAAe;AAAE;;AACnB;EACE,QAAQ;EACR,SAAS;AAAE;;AACf;EACE,mBAAmB;AAAE;;AACvB;EACE;IACE,eAAe;IACf,yBAAyB;EAAE;AAAE;;AACjC;EACE,WAAW;AAAE;;AACb;EACE;IACE,eAAe;IACf,6BAA6B;EAAE;AAAE;;AACrC;EACE,gBAAgB;EAChB,6BAA6B;AAAE;;AACnC;EACE,WAAW;AAAE;;AACb;EACE;IACE,eAAe;IACf,6BAA6B;EAAE;AAAE;;AACrC;EACE,gBAAgB;EAChB,6BAA6B;AAAE;;AACnC;EACE,WAAW;AAAE;;AACb;EACE;IACE,eAAe;IACf,0BAA0B;EAAE;AAAE;;AAClC;EACE,mBAAmB;EACnB,0BAA0B;EAC1B,WAAW;AAAE;;AACjB;EACE,yBAAyB;EACzB,uBAAuB;EACvB,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AAAE;;AAC3B;EACE,yBAAyB;AAAE;;AAC7B;EACE,gBAAgB;EAChB,iBAAiB;AAAE;;AACrB;EACE,gBAAgB;EAChB,oBAAoB;AAAE;;AACxB;EACE,uBAAuB;EACvB,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,YAAY;AAAE;;AAClB;EACE,gBAAgB;EAChB,OAAO;EACP,WAAW;AAAE;;AACb;EACE,4BAA4B;AAAE;;AAChC;EACE,2BAA2B;AAAE;;AACjC;EACE,sBAAsB;EACtB,8BAA8B;EAC9B,0BAA0B;EAC1B,6BAA6B;AAAE;;AAC/B;EACE,8BAA8B;AAAE;;AAChC;EACE,aAAa;AAAE;;AACrB;EACE,aAAa;AAAE;;AACnB;EACE,kBAAkB;EAClB,WAAW;EACX,mBAAmB;EACnB,cAAc;EACd,iCAAiC;AAAE;;AACnC;EACE,aAAa;AAAE;;AACjB;EACE,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;AAAE;;AACb;EACE,gBAAgB;EAChB,eAAe;AAAE;;AACnB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,WAAW;EACX,iBAAiB;EACjB,eAAe;EACf,mBAAmB;AAAE;;AACzB;EACE,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,mBAAmB;EACnB,iBAAiB;EACjB,WAAW;AAAE;;AACb;EACE,iBAAiB;EACjB,8BAA8B;AAAE;;AAChC;EACE,6BAA6B;AAAE;;AACjC;EACE,0BAA0B;AAAE;;AACpC;EACE,0BAA0B;EAC1B,sBAAsB;EACtB,WAAW;EACX,iBAAiB;EACjB,mBAAmB;EACnB,iBAAiB;EACjB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;AAAE;;AACtB;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,8BAA8B;EAC9B,iBAAiB;AAAE;;AACnB;EACE,aAAa;AAAE;;AACnB;EACE,sBAAsB;EACtB,WAAW;EACX,gBAAgB;EAChB,8BAA8B;EAC9B,6BAA6B;EAC7B,0BAA0B;EAC1B,gBAAgB;AAAE;;AAClB;EACE,qBAAqB;EACrB,8BAA8B;AAAE;;AAChC;EACE,aAAa;AAAE;;AACnB;EACE,mBAAmB;EACnB,mBAAmB;AAAE;;AACzB;EACE,iBAAiB;AAAE;;AACrB;EACE,mBAAmB;AAAE;;AACvB;EACE,OAAO;EACP,iBAAiB;EACjB,WAAW;EACX,oBAAoB;EACpB,oBAAoB;EACpB,kBAAkB;AAAE;;AACtB;EACE,qBAAqB;EACrB,aAAa;EACb,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;AAAE;;AACtB;EACE,aAAa;AAAE;;AACjB;EACE,qBAAqB;EACrB,aAAa;EACb,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;EAClB,oCAAoC;AAAE;;AACtC;EACE,WAAW;AAAE;;AACf;EACE,WAAW;AAAE;;AACf;EACE;IACE,eAAe;IACf,8BAA8B;IAC9B,WAAW;EAAE;AAAE;;AACvB;EACE,kBAAkB;EAClB,qBAAqB;EACrB,UAAU;EACV,iBAAiB;EACjB,kBAAkB;EAClB,WAAW;EACX,sBAAsB;AAAE;;AACxB;EACE;IACE,iBAAiB;EAAE;AAAE;;AACzB;EACE,UAAU;EACV,eAAe;AAAE;;AACrB;EACE,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,MAAM;EACN,OAAO;EACP,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,8BAA8B;EAC9B,kBAAkB;AAAE;;AACpB;EACE,qBAAqB;EACrB,cAAc;EACd,kBAAkB;EAClB,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AAAE;;AACjB;EACE,sBAAsB;EACtB,WAAW;AAAE;;AACf;EACE,sBAAsB;EACtB,cAAc;AAAE;;AAExB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,gBAAgB;EAChB,sBAAsB;AAAE;;AACxB;EACE,sBAAsB;AAAE;;AAC1B;EACE;IACE,sBAAsB;IACtB,eAAe;EAAE;AAAE;;AACvB;EACE,sBAAsB;AAAE;;AAC1B;EACE;IACE,sBAAsB;IACtB,eAAe;EAAE;AAAE;;AACvB;EACE,sBAAsB;EACtB,gBAAgB;AAAE;;AACpB;EACE,kBAAkB;EAClB,0BAA0B;EAC1B,6BAA6B;EAC7B,oBAAoB;EACpB,WAAW;AAAE;;AACf;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,OAAO;EACP,WAAW;AAAE;;AACb;EACE,MAAM;EACN,YAAY;AAAE;;AAChB;EACE;IACE,iBAAiB;EAAE;AAAE;;AAC3B;EACE,sBAAsB;EACtB,YAAY;EACZ,0BAA0B;EAC1B,6BAA6B;AAAE;;AAC/B;EACE,aAAa;AAAE;;AACjB;EACE,eAAe;AAAE;;AACjB;EACE,kBAAkB;AAAE;;AACpB;EACE,mBAAmB;AAAE;;AAC7B;EACE,qBAAqB;EACrB,kBAAkB;EAClB,sBAAsB;EACtB,YAAY;EACZ,4BAA4B;EAC5B,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AAAE;;AACzB;EACE,qBAAqB;EACrB,gBAAgB;EAChB,OAAO;EACP,yBAAyB;EACzB,WAAW;AAAE;;AACb;EACE,4BAA4B;AAAE;;AAChC;EACE,2BAA2B;AAAE;;AACjC;EACE,sBAAsB;EACtB,aAAa;EACb,UAAU;AAAE;;AACZ;;EACE,WAAW;EACX,uBAAuB;EACvB,aAAa;AAAE;;AACnB;EACE,yBAAyB;AAAE;;AAC3B;;EACE,WAAW;EACX,uBAAuB;EACvB,cAAc;AAAE;;AACpB;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;AAAE;;AACtB;EACE,UAAU;AAAE;;AACZ;EACE,WAAW;EACX,WAAW;EACX,eAAe;EACf,gBAAgB;AAAE;;AACxB;EACE,qBAAqB;EACrB,UAAU;AAAE;;AACd;EACE,qBAAqB;EACrB,sBAAsB;EACtB,WAAW;EACX,UAAU;EACV,gBAAgB;EAChB,iBAAiB;EACjB,8BAA8B;EAC9B,2BAA2B;EAC3B,6BAA6B;AAAE;;AACjC;EACE,oBAAoB;EACpB,uBAAuB;EACvB,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,8BAA8B;EAC9B,gBAAgB;AAAE;;AAClB;EACE;IACE,eAAe;IACf,8BAA8B;EAAE;AAAE;;AACtC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,uBAAuB;AAAE;;AACzB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AACtB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AAClB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AACxB;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,yBAAyB;EACzB,oBAAoB;EACpB,YAAY;EACZ,WAAW;EACX,mBAAmB;EACnB,gBAAgB;EAChB,WAAW;EACX,iBAAiB;EACjB,gBAAgB;AAAE;;AAClB;EACE;IACE,WAAW;IACX,eAAe;EAAE;AAAE;;AACvB;EACE,gBAAgB;AAAE;;AACpB;EACE,aAAa;AAAE;;AACjB;EACE,YAAY;AAAE;;AAChB;EACE,aAAa;AAAE;;AACnB;EACE,qBAAqB;EACrB,YAAY;EACZ,WAAW;EACX,mBAAmB;AAAE;;AACzB;EACE,sBAAsB;EACtB,6BAA6B;EAC7B,4BAA4B;EAC5B,0BAA0B;EAC1B,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AAAE;;AACjB;EACE;IACE,eAAe;IACf,oCAAoC;EAAE;AAAE;;AAC5C;EACE,kBAAkB;EAClB,kCAAkC;EAClC,mCAAmC;EACnC,0BAA0B;EAC1B,gBAAgB;AAAE;;AACpB;EACE,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;AAAE;;AACtB;EACE,kBAAkB;AAAE;;AACtB;EACE,mBAAmB;AAAE;;AACvB;EACE,qBAAqB;AAAE;;AACzB;EACE,qBAAqB;EACrB,QAAQ;EACR,SAAS;EACT,kBAAkB;EAClB,iCAAiC;EACjC,oCAAoC;EACpC,eAAe;EACf,2BAA2B;EAC3B,sBAAsB;AAAE;;AAC1B;EACE,iBAAiB;EACjB,WAAW;AAAE;;AAEnB;EACE,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,gBAAgB;EAChB,sBAAsB;EACtB,wCAAwC;EACxC,eAAe;EACf,gBAAgB;EAChB,iCAAiC;EACjC,cAAc;AAAE;;AAElB;EACE,YAAY;EACZ,kBAAkB;AAAE;;AAEtB;EACE,2BAA2B;EAC3B,gBAAgB;EAChB,kBAAkB;EAClB,gBAAgB;EAChB,eAAe;EACf,oBAAoB;AAAE;;AAExB;EACE,kBAAkB;EAClB,sBAAsB;EACtB,iBAAiB;EACjB,iBAAiB;AAAE;;AACnB;EACE,WAAW;AAAE;;AACf;EACE;IACE,eAAe;IACf,gBAAgB;EAAE;AAAE;;AACxB;EACE,mBAAmB;AAAE;;AACrB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,qBAAqB;EACrB,WAAW;EACX,WAAW;EACX,UAAU;EACV,WAAW;EACX,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,wBAAwB;AAAE;;AAEhC;EACE,0BAA0B;AAAE;;AAE9B;EACE,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,iCAAiC;AAAE;;AACnC;EACE,YAAY;EACZ,WAAW;EACX,aAAa;AAAE;;AACf;EACE,WAAW;EACX,gBAAgB;AAAE;;AAClB;EACE,2CAA2C;AAAE;;AACjD;EACE,uBAAuB;AAAE;;AAC3B;EACE;IACE,eAAe;IACf,WAAW;IACX,gBAAgB;EAAE;AAAE;;AAC1B;EACE,YAAY;EACZ,WAAW;EACX,kBAAkB;AAAE;;AACtB;EACE,6BAA6B;EAC7B,YAAY;EACZ,gBAAgB;EAChB,WAAW;EACX,iBAAiB;AAAE;;AACrB;;EACE,kBAAkB;AAAE;;AACtB;;EACE,kBAAkB;AAAE;;AACtB;;EACE,kBAAkB;AAAE;;AACtB;;EACE,kBAAkB;AAAE;;AAExB;EACE,cAAc;AAAE;;AAElB;EACE,mBAAmB;EACnB,cAAc;AAAE;;AAChB;EACE,mBAAmB;EACnB,2BAA2B;EAC3B,qBAAqB;AAAE;;AACvB;EACE,qBAAqB;EACrB,iBAAiB;AAAE;;AACrB;EACE,gBAAgB;EAChB,kBAAkB;AAAE;;AACtB;EACE,SAAS;EACT,cAAc;AAAE;;AACpB;EACE,qBAAqB;EACrB,2BAA2B;AAAE;;AAC7B;EACE,qBAAqB;EACrB,gBAAgB;EAChB,kCAAkC;EAClC,+BAA+B;EAC/B,oBAAoB;EACpB,4BAA4B;AAAE;;AAChC;EACE,qBAAqB;EACrB,gBAAgB;AAAE;;AACpB;EACE,2BAA2B;AAAE;;AAC/B;EACE,4BAA4B;AAAE;;AAClC;EACE,UAAU;EACV,cAAc;EACd,kBAAkB;AAAE;;AACtB;EACE,mBAAmB;AAAE;;AAEzB;EACE,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;EACR,cAAc;AAAE;;AAElB;EACE,wBAAwB;AAAE;;AAE5B;EACE,yBAAyB;AAAE;;AAC3B;EACE,qBAAqB;EACrB,sBAAsB;EACtB,WAAW;EACX,UAAU;EACV,gBAAgB;EAChB,iBAAiB;EACjB,8BAA8B;EAC9B,2BAA2B;EAC3B,6BAA6B;AAAE;;AACjC;EACE,sBAAsB;EACtB,6BAA6B;EAC7B,4BAA4B;EAC5B,0BAA0B;EAC1B,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AAAE;;AACjB;EACE;IACE,eAAe;IACf,oCAAoC;EAAE;AAAE;;AAC5C;EACE,kBAAkB;EAClB,kCAAkC;EAClC,mCAAmC;EACnC,0BAA0B;EAC1B,gBAAgB;AAAE;;AACpB;EACE,6BAA6B;AAAE;;AACjC;EACE,6BAA6B;AAAE;;AACjC;EACE,6BAA6B;AAAE;;AACjC;EACE,6BAA6B;AAAE;;AACjC;EACE,8BAA8B;AAAE;;AAClC;EACE,qBAAqB;AAAE;;AACzB;EACE,qBAAqB;EACrB,QAAQ;EACR,SAAS;EACT,kBAAkB;EAClB,iCAAiC;EACjC,oCAAoC;EACpC,eAAe;EACf,2BAA2B;EAC3B,sBAAsB;AAAE;;AAC1B;EACE,iBAAiB;EACjB,WAAW;AAAE;;AACjB;EACE,oBAAoB;EACpB,uBAAuB;EACvB,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,8BAA8B;EAC9B,gBAAgB;AAAE;;AAClB;EACE;IACE,eAAe;IACf,8BAA8B;EAAE;AAAE;;AACtC;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,uBAAuB;AAAE;;AACzB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AACtB;EACE,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AAClB;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,QAAQ;EACR,WAAW;EACX,UAAU;EACV,gBAAgB;AAAE;;AAE1B;EACE,sBAAsB;AAAE;;AACxB;EACE,sBAAsB;AAAE;;AACxB;EACE,WAAW;AAAE;;AACf;;EACE,sBAAsB;EACtB,gBAAgB;EAChB,WAAW;AAAE;;AACjB;EACE,8BAA8B;AAAE;;AAChC;EACE,8BAA8B;AAAE;;AACpC;EACE,8BAA8B;AAAE;;AAChC;EACE,8BAA8B;AAAE;;AACpC;EACE,WAAW;AAAE;;AACf;EACE,WAAW;AAAE;;AACf;EACE,WAAW;EACX,oBAAoB;EACpB,oBAAoB;EACpB,kBAAkB;AAAE;;AAExB;EACE,eAAe;EACf,WAAW;AAAE;;AACb;EACE;IACE,eAAe;IACf,oCAAoC;EAAE;AAAE;;AAC5C;EACE,WAAW;AAAE;;AAEjB;EACE,gBAAgB;AAAE;;AAClB;EACE,WAAW;AAAE;;AACb;EACE,WAAW;EACX,gBAAgB;AAAE;;AAClB;EACE,2CAA2C;AAAE;;AACjD;EACE,uBAAuB;AAAE;;AAC3B;EACE;IACE,WAAW;IACX,gBAAgB;EAAE;AAAE;;AAE5B;EACE,WAAW;AAAE","file":"tabulator_midnight.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #333;\n background-color: #222;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #333;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #333;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #1a1a1a;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #1a1a1a; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #404040 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #666;\n white-space: nowrap;\n overflow: visible;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #373737 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #888; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #888; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #333;\n color: #333;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #404040 !important;\n border-bottom: 1px solid #888;\n border-top: 1px solid #888;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #404040 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #666; }\n .tabulator-row.tabulator-row-even {\n background-color: #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #888;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #888;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #999;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #666;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #666; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #666;\n border: 1px solid #888;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #444; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #888;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #888; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #fff;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #666;\n background: #999; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(102, 102, 102, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #999; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #666;\n background: #999; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #fff;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #888;\n padding: 4px;\n padding-top: 6px;\n color: #fff;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n\n.tabulator {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #333; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {\n border: 1px solid #999;\n background: #444;\n color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #1a1a1a !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #1a1a1a !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row.tabulator-group {\n min-width: 100%;\n color: #333; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: #666; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #999;\n background: #444; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(153, 153, 153, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #999;\n background: #666; } }\n\n.tabulator-print-table .tabulator-print-table-group {\n color: #333; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_midnight.min.css b/src/main/webapp/tabulator/dist/css/tabulator_midnight.min.css deleted file mode 100644 index ab016fb4..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_midnight.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #333;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#1a1a1a}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#404040!important;border-top:1px solid #888;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#404040!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#333;color:#333;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#404040!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#404040!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#666}.tabulator-row.tabulator-row-even{background-color:#444}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#000}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#666;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#666}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#666;border:1px solid #888;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#444}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#888;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #888}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#fff;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#666;background:#999}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,40%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #999}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#666;background:#999}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#fff;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #888;padding:6px 4px 4px;color:#fff;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #888}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #888}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #888}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #888}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #888;border-bottom:2px solid #888}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator{background-color:#222}.tabulator .tabulator-header .tabulator-col{background-color:#333}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder,.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!important}.tabulator .tabulator-footer .tabulator-calcs-holder,.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important}.tabulator .tabulator-footer .tabulator-page-counter,.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page{color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator-row.tabulator-group{min-width:100%;color:#333}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item{color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,60%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #444}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#999;background:#666}}.tabulator-print-table .tabulator-print-table-group{color:#333} -/*# sourceMappingURL=tabulator_midnight.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_midnight.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_midnight.min.css.map deleted file mode 100644 index 982dd4e4..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_midnight.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"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","file":"tabulator_midnight.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #333;\n background-color: #222;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #333;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #333;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #1a1a1a;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #1a1a1a; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #404040 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #666;\n white-space: nowrap;\n overflow: visible;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #373737 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #888; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #888; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #333;\n color: #333;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #404040 !important;\n border-bottom: 1px solid #888;\n border-top: 1px solid #888;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #404040 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #666; }\n .tabulator-row.tabulator-row-even {\n background-color: #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #888;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #888;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #999;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #666;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #666; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #666;\n border: 1px solid #888;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #444; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #888;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #888; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #fff;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #666;\n background: #999; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(102, 102, 102, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #999; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #666;\n background: #999; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #fff;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #888;\n padding: 4px;\n padding-top: 6px;\n color: #fff;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n\n.tabulator {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #333; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {\n border: 1px solid #999;\n background: #444;\n color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #1a1a1a !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #1a1a1a !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row.tabulator-group {\n min-width: 100%;\n color: #333; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: #666; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #999;\n background: #444; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(153, 153, 153, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #999;\n background: #666; } }\n\n.tabulator-print-table .tabulator-print-table-group {\n color: #333; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_modern.css b/src/main/webapp/tabulator/dist/css/tabulator_modern.css deleted file mode 100644 index fb890274..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_modern.css +++ /dev/null @@ -1,1360 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #fff; - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #3759D7; - background-color: #fff; - color: #3759D7; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #fff; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #3759D7; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #b7c3f1; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #fff; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #b7c3f1; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #b7c3f1; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #3759D7; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #3759D7; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #3759D7; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #3759D7; - color: #3759D7; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #fff; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #f3f3f3; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #fff; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #fff; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #fff; - color: #3759D7; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: white !important; - border-bottom: 1px solid #fff; - border-top: 1px solid #fff; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #3759D7; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #3759D7; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #f3f3f3; -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #fff; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #fff; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #fff; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #fff; - border-bottom: 2px solid #fff; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #f3f3f3; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #f3f3f3; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #fff; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3759D7; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3759D7; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #f3f3f3; - border: 1px solid #fff; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #fff; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #fff; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #fff; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #f3f3f3; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(243, 243, 243, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #f3f3f3; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #fff; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #fff; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #fff; - border-bottom: 2px solid #fff; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #fff; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3759D7; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3759D7; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator .tabulator-header { - border-bottom: 3px solid #3759D7; - margin-bottom: 4px; - padding-left: 10px; - font-size: 1.1em; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: 2px solid #fff; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-col:nth-child(1) { - padding-left: 10px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - border: 1px solid #3759D7; - font-size: 1em; - color: #3759D7; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 2px solid #3759D7; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - padding-left: 10px; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - border-top: 2px solid #3759D7 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - padding-left: 0 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell { - background: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #3759D7; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #3759D7; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #3759D7; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - border-top: 3px solid #3759D7 !important; - border-bottom: 2px solid #3759D7 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell { - background: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child { - border-left: 10px solid transparent; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - border-bottom: none !important; -} - -.tabulator-row { - margin-bottom: 2px; -} - -.tabulator-row .tabulator-cell:first-child { - border-left: 10px solid #3759D7; -} - -.tabulator-row:nth-child(even) { - background-color: #627ce0; -} - -.tabulator-row:nth-child(even) .tabulator-cell { - background-color: #fff; -} - -.tabulator-row:nth-child(even) .tabulator-cell:first-child { - border-left: 10px solid #627ce0; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - cursor: pointer; - } - .tabulator-row.tabulator-selectable:hover .tabulator-cell { - background-color: #bbb; - } -} - -.tabulator-row.tabulator-selected .tabulator-cell { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover .tabulator-cell { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-moving { - pointer-events: none !important; -} - -.tabulator-row .tabulator-cell { - padding: 6px 4px; - border-right: 2px solid #fff; - background-color: #f3f3f3; -} - -.tabulator-row.tabulator-group { - min-width: 100%; - margin-bottom: 2px; - border-bottom: 2px solid #3759D7; - border-top: 2px solid #3759D7; - border-right: none; - background: #8ca0e8; -} - -.tabulator-row.tabulator-group span { - color: #3759D7; -} - -.tabulator-edit-select-list { - border: 1px solid #1D68CD; -} - -.tabulator-print-table .tabulator-print-table-group { - border-bottom: 2px solid #3759D7; - border-top: 2px solid #3759D7; - background: #8ca0e8; - margin-bottom: 2px; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #3759D7; -} - -/*# sourceMappingURL=tabulator_modern.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_modern.css.map b/src/main/webapp/tabulator/dist/css/tabulator_modern.css.map deleted file mode 100644 index 3e45069f..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_modern.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"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","file":"tabulator_modern.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #fff;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3759D7;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #fff;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3759D7;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #fff;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #b7c3f1; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3759D7;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #f3f3f3;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #fff; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #fff;\n border-top: 1px solid #fff;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #3759D7;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3759D7; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #fff;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #f3f3f3;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #f3f3f3; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #f3f3f3;\n border: 1px solid #fff;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #fff;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #fff; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(243, 243, 243, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #f3f3f3;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #fff;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #fff;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator .tabulator-header {\n border-bottom: 3px solid #3759D7;\n margin-bottom: 4px;\n padding-left: 10px;\n font-size: 1.1em; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: 2px solid #fff;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col:nth-child(1) {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n border: 1px solid #3759D7;\n font-size: 1em;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 2px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border-top: 2px solid #3759D7 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n padding-left: 0 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n\n.tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #3759D7; }\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n border-top: 3px solid #3759D7 !important;\n border-bottom: 2px solid #3759D7 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid transparent; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n border-bottom: none !important; }\n\n.tabulator-row {\n margin-bottom: 2px; }\n .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid #3759D7; }\n .tabulator-row:nth-child(even) {\n background-color: #627ce0; }\n .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: #fff; }\n .tabulator-row:nth-child(even) .tabulator-cell:first-child {\n border-left: 10px solid #627ce0; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n cursor: pointer; }\n .tabulator-row.tabulator-selectable:hover .tabulator-cell {\n background-color: #bbb; } }\n .tabulator-row.tabulator-selected .tabulator-cell {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover .tabulator-cell {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 6px 4px;\n border-right: 2px solid #fff;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-group {\n min-width: 100%;\n margin-bottom: 2px;\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n border-right: none;\n background: #8ca0e8; }\n .tabulator-row.tabulator-group span {\n color: #3759D7; }\n\n.tabulator-edit-select-list {\n border: 1px solid #1D68CD; }\n\n.tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n background: #8ca0e8;\n margin-bottom: 2px; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3759D7; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_modern.min.css b/src/main/webapp/tabulator/dist/css/tabulator_modern.min.css deleted file mode 100644 index ec8fde63..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_modern.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #fff;background-color:#fff;font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #3759d7;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #fff;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #fff;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#b7c3f1}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #3759d7;color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #fff}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #fff}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#3759d7;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:#f3f3f3}.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#f3f3f3;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#f3f3f3}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #fff;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#f3f3f3;border:1px solid #fff;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#fff;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #fff}.tabulator-edit-list{max-height:200px;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,95.3%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #fff;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #fff;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #fff}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #fff}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #fff}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #fff}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #fff;border-bottom:2px solid #fff}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #fff;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3759d7;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator .tabulator-header{border-bottom:3px solid #3759d7;margin-bottom:4px;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header .tabulator-col{border-right:2px solid #fff;background-color:#fff}.tabulator .tabulator-header .tabulator-col:first-child{padding-left:10px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{border:1px solid #3759d7;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:2px solid #3759d7}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px}.tabulator .tabulator-header .tabulator-calcs-holder{border-top:2px solid #3759d7!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#3759d7}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.tabulator .tabulator-footer .tabulator-calcs-holder{border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child{border-left:10px solid transparent}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none!important}.tabulator-row{margin-bottom:2px}.tabulator-row .tabulator-cell:first-child{border-left:10px solid #3759d7}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row:nth-child(2n) .tabulator-cell:first-child{border-left:10px solid #627ce0}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{padding:6px 4px;border-right:2px solid #fff;background-color:#f3f3f3}.tabulator-row.tabulator-group{min-width:100%;margin-bottom:2px;border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;border-right:none;background:#8ca0e8}.tabulator-row.tabulator-group span{color:#3759d7}.tabulator-edit-select-list{border:1px solid #1d68cd}.tabulator-print-table .tabulator-print-table-group{border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;background:#8ca0e8;margin-bottom:2px}.tabulator-print-table .tabulator-print-table-group span{color:#3759d7} -/*# sourceMappingURL=tabulator_modern.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_modern.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_modern.min.css.map deleted file mode 100644 index d729e42f..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_modern.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"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","file":"tabulator_modern.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #fff;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3759D7;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #fff;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3759D7;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #fff;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #b7c3f1; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3759D7;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #f3f3f3;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #fff; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #fff;\n border-top: 1px solid #fff;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #3759D7;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3759D7; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #fff;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #f3f3f3;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #f3f3f3; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #f3f3f3;\n border: 1px solid #fff;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #fff;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #fff; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(243, 243, 243, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #f3f3f3;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #fff;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #fff;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator .tabulator-header {\n border-bottom: 3px solid #3759D7;\n margin-bottom: 4px;\n padding-left: 10px;\n font-size: 1.1em; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: 2px solid #fff;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col:nth-child(1) {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n border: 1px solid #3759D7;\n font-size: 1em;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 2px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border-top: 2px solid #3759D7 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n padding-left: 0 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n\n.tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #3759D7; }\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n border-top: 3px solid #3759D7 !important;\n border-bottom: 2px solid #3759D7 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid transparent; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n border-bottom: none !important; }\n\n.tabulator-row {\n margin-bottom: 2px; }\n .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid #3759D7; }\n .tabulator-row:nth-child(even) {\n background-color: #627ce0; }\n .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: #fff; }\n .tabulator-row:nth-child(even) .tabulator-cell:first-child {\n border-left: 10px solid #627ce0; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n cursor: pointer; }\n .tabulator-row.tabulator-selectable:hover .tabulator-cell {\n background-color: #bbb; } }\n .tabulator-row.tabulator-selected .tabulator-cell {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover .tabulator-cell {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 6px 4px;\n border-right: 2px solid #fff;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-group {\n min-width: 100%;\n margin-bottom: 2px;\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n border-right: none;\n background: #8ca0e8; }\n .tabulator-row.tabulator-group span {\n color: #3759D7; }\n\n.tabulator-edit-select-list {\n border: 1px solid #1D68CD; }\n\n.tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n background: #8ca0e8;\n margin-bottom: 2px; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3759D7; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.css b/src/main/webapp/tabulator/dist/css/tabulator_semanticui.css deleted file mode 100644 index 45b37370..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.css +++ /dev/null @@ -1,2032 +0,0 @@ -/******************************* - Site Settings -*******************************/ - -/*------------------- - Fonts ---------------------*/ - -/*------------------- - Base Sizes ---------------------*/ - -/* This is the single variable that controls them all */ - -/* The size of page text */ - -/*------------------- - Exact Pixel Values ---------------------*/ - -/* - These are used to specify exact pixel values in em - for things like borders that remain constantly - sized as emSize adjusts - - Since there are many more sizes than names for sizes, - these are named by their original pixel values. - -*/ - -/*------------------- - Border Radius ---------------------*/ - -/* See Power-user section below - for explanation of $px variables -*/ - -/*------------------- - Site Colors ---------------------*/ - -/*--- Colors ---*/ - -/*--- Light Colors ---*/ - -/*--- Neutrals ---*/ - -/*--- Colored Backgrounds ---*/ - -/*--- Colored Text ---*/ - -/*--- Colored Headers ---*/ - -/*--- Colored Border ---*/ - -/*------------------- - Alpha Colors ---------------------*/ - -/*------------------- - Brand Colors ---------------------*/ - -/*-------------- - Page Heading ----------------*/ - -/*------------------- - Page ---------------------*/ - -/*-------------- - Form Input ----------------*/ - -/* This adjusts the default form input across all elements */ - -/* Input Text Color */ - -/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */ - -/*------------------- - Focused Input ---------------------*/ - -/* Used on inputs, textarea etc */ - -/* Used on dropdowns, other larger blocks */ - -/*------------------- - Sizes ---------------------*/ - -/* - Sizes are all expressed in terms of 14px/em (default em) - This ensures these "ratios" remain constant despite changes in EM -*/ - -/*------------------- - Paragraph ---------------------*/ - -/*------------------- - Links ---------------------*/ - -/*------------------- - Highlighted Text ---------------------*/ - -/*------------------- - Em Sizes ---------------------*/ - -/* - This rounds $size values to the closest pixel then expresses that value in (r)em. - This ensures all size values round to exact pixels -*/ - -/* em */ - -/* rem */ - -/*------------------- - Loader ---------------------*/ - -/*------------------- - Grid ---------------------*/ - -/*------------------- - Transitions ---------------------*/ - -/*------------------- - Breakpoints ---------------------*/ - -/* Columns */ - -/******************************* - Power-User -*******************************/ - -/*------------------- - Emotive Colors ---------------------*/ - -/* Positive */ - -/* Negative */ - -/* Info */ - -/* Warning */ - -/*------------------- - Paths ---------------------*/ - -/* For source only. Modified in gulp for dist */ - -/*------------------- - Icons ---------------------*/ - -/* Maximum Glyph Width of Icon */ - -/*------------------- - Neutral Text ---------------------*/ - -/*------------------- - Brand Colors ---------------------*/ - -/*------------------- - Borders ---------------------*/ - -/*------------------- - Accents ---------------------*/ - -/* Differentiating Neutrals */ - -/* Differentiating Layers */ - -/*------------------- - Derived Values ---------------------*/ - -/* Loaders Position Offset */ - -/* Rendered Scrollbar Width */ - -/* Maximum Single Character Glyph Width, aka Capital "W" */ - -/* Used to match floats with text */ - -/* Header Spacing */ - -/* Minimum Mobile Width */ - -/* Positive / Negative Dupes */ - -/* Responsive */ - -/******************************* - States -*******************************/ - -/*------------------- - Disabled ---------------------*/ - -/*------------------- - Hover ---------------------*/ - -/*--- Shadows ---*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/*------------------- - Focus ---------------------*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/*------------------- - Down (:active) ---------------------*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/*------------------- - Active ---------------------*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/******************************* - Table -*******************************/ - -/*------------------- - Element ---------------------*/ - -/*-------------- - Parts ----------------*/ - -/* Table Row */ - -/* Table Cell */ - -/* Table Header */ - -/* Table Footer */ - -/* Responsive Size */ - -/*------------------- - Types ---------------------*/ - -/* Definition */ - -/*-------------- - Couplings ----------------*/ - -/*-------------- - States ----------------*/ - -/* Positive */ - -/* Negative */ - -/* Error */ - -/* Warning */ - -/* Active */ - -/*-------------- - Types ----------------*/ - -/* Attached */ - -/* Striped */ - -/* Selectable */ - -/* Sortable */ - -/* Colors */ - -/* Inverted */ - -/* Basic */ - -/* Padded */ - -/* Compact */ - -/* Sizes */ - -.tabulator { - position: relative; - border: 1px solid rgba(34, 36, 38, 0.15); - background-color: #FFFFFF; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #F9FAFB; - color: rgba(0, 0, 0, 0.87); - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #ddd; - background: #F9FAFB; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #dae1e7; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #ddd; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #dae1e7; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #e2e2e2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: white !important; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #EFEFEF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #ddd; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #DB2828; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #DB2828; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #ddd; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #EFEFEF; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #ddd; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #ddd; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #ddd; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #ddd; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - width: 100%; - margin: 1em 0em; - border: 1px solid rgba(34, 36, 38, 0.15); - box-shadow: none; - border-radius: 0.28571rem; - color: rgba(0, 0, 0, 0.87); - /* Red */ - /* Orange */ - /* Yellow */ - /* Olive */ - /* Green */ - /* Teal */ - /* Blue */ - /* Violet */ - /* Purple */ - /* Pink */ - /* Brown */ - /* Grey */ - /* Black */ -} - -.tabulator .tabulator-header { - border-right: none; - border-bottom: 1px solid rgba(34, 36, 38, 0.1); - background-color: #F9FAFB; - box-shadow: none; - color: rgba(0, 0, 0, 0.87); - font-style: none; - font-weight: bold; - text-transform: none; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; - background-color: #F9FAFB; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.92857em 0.78571em; -} - -.tabulator .tabulator-tableholder .tabulator-table { - background-color: transparent; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-footer { - padding: 0.78571em 0.78571em; - border-top: 1px solid rgba(34, 36, 38, 0.15); - box-shadow: none; - background: #F9FAFB; - text-align: right; - color: rgba(0, 0, 0, 0.87); - font-style: normal; - font-weight: normal; - text-transform: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - margin: -0.78571em -0.78571em 0.78571em -0.78571em; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -0.78571em; - border-bottom: none; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive { - box-shadow: 0px 0px 0px #A3C293 inset; - background: #FCFFF5 !important; - color: #21BA45 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover { - background: #f7ffe6 !important; - color: #13ae38 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative { - box-shadow: 0px 0px 0px #E0B4B4 inset; - background: #FFF6F6 !important; - color: #DB2828 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover { - background: #ffe7e7 !important; - color: #d41616 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error { - box-shadow: 0px 0px 0px #E0B4B4 inset; - background: #FFF6F6 !important; - color: #DB2828 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover { - background: #ffe7e7 !important; - color: #d12323 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning { - box-shadow: 0px 0px 0px #C9BA9B inset; - background: #FFFAF3 !important; - color: #F2C037 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover { - background: #fff4e4 !important; - color: #f1bb29 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset; - background: #E0E0E0 !important; - color: rgba(0, 0, 0, 0.87) !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover { - background: #f7ffe6 !important; - color: #13ae38 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active { - pointer-events: none; - color: rgba(0, 0, 0, 0.2); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover { - pointer-events: none; - color: rgba(0, 0, 0, 0.2); - } -} - -.tabulator.inverted { - background: #333333; - color: rgba(255, 255, 255, 0.9); - border: none; -} - -.tabulator.inverted .tabulator-header { - background-color: rgba(0, 0, 0, 0.15); - border-color: rgba(255, 255, 255, 0.1) !important; - color: rgba(255, 255, 255, 0.9); -} - -.tabulator.inverted .tabulator-header .tabulator-col { - border-color: rgba(255, 255, 255, 0.1) !important; -} - -.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row { - color: rgba(255, 255, 255, 0.9); - border: none; -} - -.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-color: rgba(255, 255, 255, 0.1) !important; -} - -.tabulator.inverted .tabulator-footer { - background: #FFFFFF; -} - -.tabulator.striped .tabulator-row:nth-child(even) { - background-color: #f2f2f2; -} - -.tabulator.celled { - border: 1px solid rgba(34, 36, 38, 0.15); -} - -.tabulator.celled .tabulator-header .tabulator-col { - border-right: 1px solid rgba(34, 36, 38, 0.1); -} - -.tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid rgba(34, 36, 38, 0.1); -} - -.tabulator[class*="single line"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: none; -} - -.tabulator.red { - border-top: 0.2em solid #DB2828; -} - -.tabulator.inverted.red { - background-color: #DB2828 !important; - color: #FFFFFF !important; -} - -.tabulator.orange { - border-top: 0.2em solid #F2711C; -} - -.tabulator.inverted.orange { - background-color: #F2711C !important; - color: #FFFFFF !important; -} - -.tabulator.yellow { - border-top: 0.2em solid #FBBD08; -} - -.tabulator.inverted.yellow { - background-color: #FBBD08 !important; - color: #FFFFFF !important; -} - -.tabulator.olive { - border-top: 0.2em solid #B5CC18; -} - -.tabulator.inverted.olive { - background-color: #B5CC18 !important; - color: #FFFFFF !important; -} - -.tabulator.green { - border-top: 0.2em solid #21BA45; -} - -.tabulator.inverted.green { - background-color: #21BA45 !important; - color: #FFFFFF !important; -} - -.tabulator.teal { - border-top: 0.2em solid #00B5AD; -} - -.tabulator.inverted.teal { - background-color: #00B5AD !important; - color: #FFFFFF !important; -} - -.tabulator.blue { - border-top: 0.2em solid #2185D0; -} - -.tabulator.inverted.blue { - background-color: #2185D0 !important; - color: #FFFFFF !important; -} - -.tabulator.violet { - border-top: 0.2em solid #6435C9; -} - -.tabulator.inverted.violet { - background-color: #6435C9 !important; - color: #FFFFFF !important; -} - -.tabulator.purple { - border-top: 0.2em solid #A333C8; -} - -.tabulator.inverted.purple { - background-color: #A333C8 !important; - color: #FFFFFF !important; -} - -.tabulator.pink { - border-top: 0.2em solid #E03997; -} - -.tabulator.inverted.pink { - background-color: #E03997 !important; - color: #FFFFFF !important; -} - -.tabulator.brown { - border-top: 0.2em solid #A5673F; -} - -.tabulator.inverted.brown { - background-color: #A5673F !important; - color: #FFFFFF !important; -} - -.tabulator.grey { - border-top: 0.2em solid #767676; -} - -.tabulator.inverted.grey { - background-color: #767676 !important; - color: #FFFFFF !important; -} - -.tabulator.black { - border-top: 0.2em solid #1B1C1D; -} - -.tabulator.inverted.black { - background-color: #1B1C1D !important; - color: #FFFFFF !important; -} - -.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content { - padding: 1em 1em; -} - -.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 20px; -} - -.tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 1em 1em; -} - -.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content { - padding: 1.5em 1.5em; -} - -.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 26px; -} - -.tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 1.5em 1.5em; -} - -.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.5em 0.7em; -} - -.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 12px; -} - -.tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 0.5em 0.7em; -} - -.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.4em 0.6em; -} - -.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 10px; -} - -.tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 0.4em 0.6em; -} - -.tabulator-row { - border-bottom: 1px solid rgba(34, 36, 38, 0.1); -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset; - background: #E0E0E0 !important; - color: rgba(0, 0, 0, 0.87) !important; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC !important; - cursor: pointer; - } -} - -.tabulator-row.tabulator-moving { - pointer-events: none !important; -} - -.tabulator-row .tabulator-cell { - padding: 0.78571em 0.78571em; - border-right: none; - vertical-align: middle; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - color: #fff; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-menu { - background: #FFFFFF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - background: #F9FAFB; - } -} - -.tabulator-edit-select-list { - background: #FFFFFF; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #FFFFFF; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #FFFFFF; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -/*# sourceMappingURL=tabulator_semanticui.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.css.map b/src/main/webapp/tabulator/dist/css/tabulator_semanticui.css.map deleted file mode 100644 index 5257b5c4..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.css","sourcesContent":["/*******************************\n Site Settings\n*******************************/\n/*-------------------\n Fonts\n--------------------*/\n/*-------------------\n Base Sizes\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\n Exact Pixel Values\n--------------------*/\n/*\n These are used to specify exact pixel values in em\n for things like borders that remain constantly\n sized as emSize adjusts\n\n Since there are many more sizes than names for sizes,\n these are named by their original pixel values.\n\n*/\n/*-------------------\n Border Radius\n--------------------*/\n/* See Power-user section below\n for explanation of $px variables\n*/\n/*-------------------\n Site Colors\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\n Alpha Colors\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*--------------\n Page Heading\n---------------*/\n/*-------------------\n Page\n--------------------*/\n/*--------------\n Form Input\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\n Focused Input\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\n Sizes\n--------------------*/\n/*\n Sizes are all expressed in terms of 14px/em (default em)\n This ensures these \"ratios\" remain constant despite changes in EM\n*/\n/*-------------------\n Paragraph\n--------------------*/\n/*-------------------\n Links\n--------------------*/\n/*-------------------\n Highlighted Text\n--------------------*/\n/*-------------------\n Em Sizes\n--------------------*/\n/*\n This rounds $size values to the closest pixel then expresses that value in (r)em.\n This ensures all size values round to exact pixels\n*/\n/* em */\n/* rem */\n/*-------------------\n Loader\n--------------------*/\n/*-------------------\n Grid\n--------------------*/\n/*-------------------\n Transitions\n--------------------*/\n/*-------------------\n Breakpoints\n--------------------*/\n/* Columns */\n/*******************************\n Power-User\n*******************************/\n/*-------------------\n Emotive Colors\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\n Paths\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\n Icons\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\n Neutral Text\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*-------------------\n Borders\n--------------------*/\n/*-------------------\n Accents\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\n Derived Values\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\n States\n*******************************/\n/*-------------------\n Disabled\n--------------------*/\n/*-------------------\n Hover\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Focus\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Down (:active)\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Active\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\n Table\n*******************************/\n/*-------------------\n Element\n--------------------*/\n/*--------------\n Parts\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\n Types\n--------------------*/\n/* Definition */\n/*--------------\n Couplings\n---------------*/\n/*--------------\n States\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\n Types\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n border: 1px solid rgba(34, 36, 38, 0.15);\n background-color: #FFFFFF;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #F9FAFB;\n color: rgba(0, 0, 0, 0.87);\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #dae1e7; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */ }\n .tabulator .tabulator-header {\n border-right: none;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #F9FAFB; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.92857em 0.78571em; }\n .tabulator .tabulator-tableholder .tabulator-table {\n background-color: transparent; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); } }\n .tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9); }\n .tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-footer {\n background: #FFFFFF; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f2f2f2; }\n .tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15); }\n .tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator[class*=\"single line\"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none; }\n .tabulator.red {\n border-top: 0.2em solid #DB2828; }\n .tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important; }\n .tabulator.orange {\n border-top: 0.2em solid #F2711C; }\n .tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important; }\n .tabulator.yellow {\n border-top: 0.2em solid #FBBD08; }\n .tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important; }\n .tabulator.olive {\n border-top: 0.2em solid #B5CC18; }\n .tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important; }\n .tabulator.green {\n border-top: 0.2em solid #21BA45; }\n .tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important; }\n .tabulator.teal {\n border-top: 0.2em solid #00B5AD; }\n .tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important; }\n .tabulator.blue {\n border-top: 0.2em solid #2185D0; }\n .tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important; }\n .tabulator.violet {\n border-top: 0.2em solid #6435C9; }\n .tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important; }\n .tabulator.purple {\n border-top: 0.2em solid #A333C8; }\n .tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important; }\n .tabulator.pink {\n border-top: 0.2em solid #E03997; }\n .tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important; }\n .tabulator.brown {\n border-top: 0.2em solid #A5673F; }\n .tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important; }\n .tabulator.grey {\n border-top: 0.2em solid #767676; }\n .tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important; }\n .tabulator.black {\n border-top: 0.2em solid #1B1C1D; }\n .tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px; }\n .tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px; }\n .tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px; }\n .tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px; }\n .tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em; }\n\n.tabulator-row {\n border-bottom: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.78571em 0.78571em;\n border-right: none;\n vertical-align: middle; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n color: #fff; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-menu {\n background: #FFFFFF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n background: #F9FAFB; } }\n\n.tabulator-edit-select-list {\n background: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #FFFFFF; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.min.css b/src/main/webapp/tabulator/dist/css/tabulator_semanticui.min.css deleted file mode 100644 index 0de28c22..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#f9fafb;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#dae1e7;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#dae1e7}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #db2828}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#db2828}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{width:100%;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571rem;color:rgba(0,0,0,.87)}.tabulator .tabulator-header{border-bottom:1px solid rgba(34,36,38,.1);box-shadow:none;color:rgba(0,0,0,.87);font-style:none;font-weight:700;text-transform:none}.tabulator .tabulator-header,.tabulator .tabulator-header .tabulator-col{border-right:none;background-color:#f9fafb}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.92857em .78571em}.tabulator .tabulator-tableholder .tabulator-table{background-color:transparent}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{padding:.78571em;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;background:#f9fafb;text-align:right;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;text-transform:none}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-.78571em -.78571em .78571em;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-.78571em;border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#21ba45!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover{background:#f7ffe6!important;color:#13ae38!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover{background:#ffe7e7!important;color:#d41616!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover{background:#ffe7e7!important;color:#d12323!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#f2c037!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover{background:#fff4e4!important;color:#f1bb29!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover{background:#f7ffe6!important;color:#13ae38!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{pointer-events:none;color:rgba(0,0,0,.2)}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover{pointer-events:none;color:rgba(0,0,0,.2)}}.tabulator.inverted{background:#333;color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-header{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-header,.tabulator.inverted .tabulator-header .tabulator-col{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row{color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-footer{background:#fff}.tabulator.striped .tabulator-row:nth-child(2n){background-color:#f2f2f2}.tabulator.celled{border:1px solid rgba(34,36,38,.15)}.tabulator.celled .tabulator-header .tabulator-col,.tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid rgba(34,36,38,.1)}.tabulator[class*="single line"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:none}.tabulator.red{border-top:.2em solid #db2828}.tabulator.inverted.red{background-color:#db2828!important;color:#fff!important}.tabulator.orange{border-top:.2em solid #f2711c}.tabulator.inverted.orange{background-color:#f2711c!important;color:#fff!important}.tabulator.yellow{border-top:.2em solid #fbbd08}.tabulator.inverted.yellow{background-color:#fbbd08!important;color:#fff!important}.tabulator.olive{border-top:.2em solid #b5cc18}.tabulator.inverted.olive{background-color:#b5cc18!important;color:#fff!important}.tabulator.green{border-top:.2em solid #21ba45}.tabulator.inverted.green{background-color:#21ba45!important;color:#fff!important}.tabulator.teal{border-top:.2em solid #00b5ad}.tabulator.inverted.teal{background-color:#00b5ad!important;color:#fff!important}.tabulator.blue{border-top:.2em solid #2185d0}.tabulator.inverted.blue{background-color:#2185d0!important;color:#fff!important}.tabulator.violet{border-top:.2em solid #6435c9}.tabulator.inverted.violet{background-color:#6435c9!important;color:#fff!important}.tabulator.purple{border-top:.2em solid #a333c8}.tabulator.inverted.purple{background-color:#a333c8!important;color:#fff!important}.tabulator.pink{border-top:.2em solid #e03997}.tabulator.inverted.pink{background-color:#e03997!important;color:#fff!important}.tabulator.brown{border-top:.2em solid #a5673f}.tabulator.inverted.brown{background-color:#a5673f!important;color:#fff!important}.tabulator.grey{border-top:.2em solid #767676}.tabulator.inverted.grey{background-color:#767676!important;color:#fff!important}.tabulator.black{border-top:.2em solid #1b1c1d}.tabulator.inverted.black{background-color:#1b1c1d!important;color:#fff!important}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content{padding:1em}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:20px}.tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content{padding:1.5em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:26px}.tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1.5em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .7em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:12px}.tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.5em .7em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content{padding:.4em .6em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:10px}.tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.4em .6em}.tabulator-row{border-bottom:1px solid rgba(34,36,38,.1)}.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}}.tabulator-row.tabulator-selected{background-color:#9abcea!important}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{padding:.78571em;border-right:none;vertical-align:middle}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{color:#fff}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-menu{background:#fff}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f9fafb}}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666} -/*# sourceMappingURL=tabulator_semanticui.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_semanticui.min.css.map deleted file mode 100644 index fb8918bb..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_semanticui.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.min.css","sourcesContent":["/*******************************\n Site Settings\n*******************************/\n/*-------------------\n Fonts\n--------------------*/\n/*-------------------\n Base Sizes\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\n Exact Pixel Values\n--------------------*/\n/*\n These are used to specify exact pixel values in em\n for things like borders that remain constantly\n sized as emSize adjusts\n\n Since there are many more sizes than names for sizes,\n these are named by their original pixel values.\n\n*/\n/*-------------------\n Border Radius\n--------------------*/\n/* See Power-user section below\n for explanation of $px variables\n*/\n/*-------------------\n Site Colors\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\n Alpha Colors\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*--------------\n Page Heading\n---------------*/\n/*-------------------\n Page\n--------------------*/\n/*--------------\n Form Input\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\n Focused Input\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\n Sizes\n--------------------*/\n/*\n Sizes are all expressed in terms of 14px/em (default em)\n This ensures these \"ratios\" remain constant despite changes in EM\n*/\n/*-------------------\n Paragraph\n--------------------*/\n/*-------------------\n Links\n--------------------*/\n/*-------------------\n Highlighted Text\n--------------------*/\n/*-------------------\n Em Sizes\n--------------------*/\n/*\n This rounds $size values to the closest pixel then expresses that value in (r)em.\n This ensures all size values round to exact pixels\n*/\n/* em */\n/* rem */\n/*-------------------\n Loader\n--------------------*/\n/*-------------------\n Grid\n--------------------*/\n/*-------------------\n Transitions\n--------------------*/\n/*-------------------\n Breakpoints\n--------------------*/\n/* Columns */\n/*******************************\n Power-User\n*******************************/\n/*-------------------\n Emotive Colors\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\n Paths\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\n Icons\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\n Neutral Text\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*-------------------\n Borders\n--------------------*/\n/*-------------------\n Accents\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\n Derived Values\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\n States\n*******************************/\n/*-------------------\n Disabled\n--------------------*/\n/*-------------------\n Hover\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Focus\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Down (:active)\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Active\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\n Table\n*******************************/\n/*-------------------\n Element\n--------------------*/\n/*--------------\n Parts\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\n Types\n--------------------*/\n/* Definition */\n/*--------------\n Couplings\n---------------*/\n/*--------------\n States\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\n Types\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n border: 1px solid rgba(34, 36, 38, 0.15);\n background-color: #FFFFFF;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #F9FAFB;\n color: rgba(0, 0, 0, 0.87);\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #dae1e7; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */ }\n .tabulator .tabulator-header {\n border-right: none;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #F9FAFB; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.92857em 0.78571em; }\n .tabulator .tabulator-tableholder .tabulator-table {\n background-color: transparent; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); } }\n .tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9); }\n .tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-footer {\n background: #FFFFFF; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f2f2f2; }\n .tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15); }\n .tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator[class*=\"single line\"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none; }\n .tabulator.red {\n border-top: 0.2em solid #DB2828; }\n .tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important; }\n .tabulator.orange {\n border-top: 0.2em solid #F2711C; }\n .tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important; }\n .tabulator.yellow {\n border-top: 0.2em solid #FBBD08; }\n .tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important; }\n .tabulator.olive {\n border-top: 0.2em solid #B5CC18; }\n .tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important; }\n .tabulator.green {\n border-top: 0.2em solid #21BA45; }\n .tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important; }\n .tabulator.teal {\n border-top: 0.2em solid #00B5AD; }\n .tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important; }\n .tabulator.blue {\n border-top: 0.2em solid #2185D0; }\n .tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important; }\n .tabulator.violet {\n border-top: 0.2em solid #6435C9; }\n .tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important; }\n .tabulator.purple {\n border-top: 0.2em solid #A333C8; }\n .tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important; }\n .tabulator.pink {\n border-top: 0.2em solid #E03997; }\n .tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important; }\n .tabulator.brown {\n border-top: 0.2em solid #A5673F; }\n .tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important; }\n .tabulator.grey {\n border-top: 0.2em solid #767676; }\n .tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important; }\n .tabulator.black {\n border-top: 0.2em solid #1B1C1D; }\n .tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px; }\n .tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px; }\n .tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px; }\n .tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px; }\n .tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em; }\n\n.tabulator-row {\n border-bottom: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.78571em 0.78571em;\n border-right: none;\n vertical-align: middle; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n color: #fff; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-menu {\n background: #FFFFFF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n background: #F9FAFB; } }\n\n.tabulator-edit-select-list {\n background: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #FFFFFF; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_simple.css b/src/main/webapp/tabulator/dist/css/tabulator_simple.css deleted file mode 100644 index ab978e1b..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_simple.css +++ /dev/null @@ -1,1251 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #999; - background-color: #fff; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #ddd; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #ddd; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: white !important; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: white !important; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #ddd; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #ddd; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #fff; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #ddd; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #ddd; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #ddd; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #ddd; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - border: none; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - background: #f2f2f2 !important; - border-bottom: 1px solid #999; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - background: #f2f2f2 !important; - border-bottom: 1px solid #fff; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: #f2f2f2 !important; -} - -.tabulator-row { - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #666; -} - -/*# sourceMappingURL=tabulator_simple.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_simple.css.map b/src/main/webapp/tabulator/dist/css/tabulator_simple.css.map deleted file mode 100644 index d1b8ada4..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_simple.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"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","file":"tabulator_simple.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #999; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n\n.tabulator-row {\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css b/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css deleted file mode 100644 index 2ac751f1..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* .tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666} */ -/*# sourceMappingURL=tabulator_simple.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css.map deleted file mode 100644 index 749034e1..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"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","file":"tabulator_simple.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #999; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n\n.tabulator-row {\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_site.css b/src/main/webapp/tabulator/dist/css/tabulator_site.css deleted file mode 100644 index 92a48221..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_site.css +++ /dev/null @@ -1,1336 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #222; - background-color: #fff; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #3FB449; - background-color: #222; - color: #fff; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #222; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #3FB449; - background: #090909; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #090909; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #3FB449; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #3FB449; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #3FB449; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #3FB449; - color: #3FB449; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - background: #2f2f2f !important; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #2f2f2f !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; - min-width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #e2e2e2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #aaa; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #3FB449; - background-color: #222; - color: #222; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #2f2f2f !important; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #2f2f2f !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #222; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #3FB449; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 10; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #EFEFEF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - pointer-events: none; - z-index: 15; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #aaa; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3FB449; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3FB449; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #aaa; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #EFEFEF; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #aaa; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #aaa; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #aaa; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3FB449; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3FB449; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - border: none; - border-bottom: 5px solid #222; -} - -.tabulator[tabulator-layout="fitColumns"] .tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator .tabulator-header { - border-bottom: 3px solid #3FB449; -} - -.tabulator .tabulator-header .tabulator-col { - background-color: #222; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 8px; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - background: #3c3c3c !important; - border-top: 1px solid #aaa; - border-bottom: none; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #3c3c3c !important; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #3FB449; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #484848 !important; - color: #fff; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top { - border-bottom: none; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom { - border-top: none; -} - -.tabulator .tabulator-footer { - padding: 5px 10px; - padding-top: 8px; - border-top: 3px solid #3FB449; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - margin: -8px -10px 8px -10px; - background: #3c3c3c !important; - border-top: none; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: #3c3c3c !important; - color: #fff !important; -} - -.tabulator .tabulator-footer .tabulator-paginator label { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page { - background-color: #fff; - color: #222; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator-row .tabulator-cell { - padding: 6px; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - background: #3FB449; -} - -.tabulator-row.tabulator-group { - border-right: 1px solid #aaa; - border-top: 1px solid #000; - border-bottom: 2px solid #3FB449; - background: #222; - color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - background-color: #090909; - } -} - -.tabulator-row.tabulator-group span { - color: #3FB449; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-print-table-group { - border-bottom: 2px solid #3FB449; - background: #222; - color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - background-color: #090909; - } -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #3FB449; -} - -/*# sourceMappingURL=tabulator_site.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_site.css.map b/src/main/webapp/tabulator/dist/css/tabulator_site.css.map deleted file mode 100644 index 9a1214ca..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_site.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"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","file":"tabulator_site.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #222;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3FB449;\n background-color: #222;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #222;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3FB449;\n background: #090909;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #090909; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3FB449;\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #2f2f2f !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #3FB449;\n background-color: #222;\n color: #222;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #2f2f2f !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #2f2f2f !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3FB449; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n border-bottom: 5px solid #222; }\n .tabulator[tabulator-layout=\"fitColumns\"] .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator .tabulator-header {\n border-bottom: 3px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #3c3c3c !important;\n border-top: 1px solid #aaa;\n border-bottom: none; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3FB449; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #484848 !important;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top {\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom {\n border-top: none; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n padding-top: 8px;\n border-top: 3px solid #3FB449; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -8px -10px 8px -10px;\n background: #3c3c3c !important;\n border-top: none;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important;\n color: #fff !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n background-color: #fff;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row .tabulator-cell {\n padding: 6px; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n background: #3FB449; }\n\n.tabulator-row.tabulator-group {\n border-right: 1px solid #aaa;\n border-top: 1px solid #000;\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n background-color: #090909; } }\n .tabulator-row.tabulator-group span {\n color: #3FB449; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n background-color: #090909; } }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3FB449; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_site.min.css b/src/main/webapp/tabulator/dist/css/tabulator_site.min.css deleted file mode 100644 index ea582c88..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_site.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{position:relative;border:1px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#090909}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #3fb449;color:#3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#2f2f2f!important;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#2f2f2f!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#e2e2e2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{border-top:1px solid #3fb449;background-color:#222;color:#222;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#2f2f2f!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#2f2f2f!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;border-bottom:5px solid #222}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator .tabulator-header{border-bottom:3px solid #3fb449}.tabulator .tabulator-header .tabulator-col{background-color:#222}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:8px}.tabulator .tabulator-header .tabulator-calcs-holder{background:#3c3c3c!important;border-top:1px solid #aaa;border-bottom:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#3fb449}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top{border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom{border-top:none}.tabulator .tabulator-footer{padding:8px 10px 5px;border-top:3px solid #3fb449}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-8px -10px 8px;background:#3c3c3c!important;border-top:none;border-bottom:1px solid #aaa}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-page-counter,.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page{background-color:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator-row .tabulator-cell{padding:6px}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#3fb449}.tabulator-row.tabulator-group{border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;background:#222;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:#090909}}.tabulator-row.tabulator-group span{color:#3fb449}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{border-bottom:2px solid #3fb449;background:#222;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:#090909}}.tabulator-print-table .tabulator-print-table-group span{color:#3fb449} -/*# sourceMappingURL=tabulator_site.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/css/tabulator_site.min.css.map b/src/main/webapp/tabulator/dist/css/tabulator_site.min.css.map deleted file mode 100644 index 17fe40ea..00000000 --- a/src/main/webapp/tabulator/dist/css/tabulator_site.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"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","file":"tabulator_site.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #222;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3FB449;\n background-color: #222;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #222;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3FB449;\n background: #090909;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #090909; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3FB449;\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #2f2f2f !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #3FB449;\n background-color: #222;\n color: #222;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #2f2f2f !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #2f2f2f !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3FB449; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 10;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n border-bottom: 5px solid #222; }\n .tabulator[tabulator-layout=\"fitColumns\"] .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator .tabulator-header {\n border-bottom: 3px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #3c3c3c !important;\n border-top: 1px solid #aaa;\n border-bottom: none; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3FB449; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #484848 !important;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top {\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom {\n border-top: none; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n padding-top: 8px;\n border-top: 3px solid #3FB449; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -8px -10px 8px -10px;\n background: #3c3c3c !important;\n border-top: none;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important;\n color: #fff !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n background-color: #fff;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row .tabulator-cell {\n padding: 6px; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n background: #3FB449; }\n\n.tabulator-row.tabulator-group {\n border-right: 1px solid #aaa;\n border-top: 1px solid #000;\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n background-color: #090909; } }\n .tabulator-row.tabulator-group span {\n color: #3FB449; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n background-color: #090909; } }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3FB449; }\n"]} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/js/jquery_wrapper.js b/src/main/webapp/tabulator/dist/js/jquery_wrapper.js deleted file mode 100644 index aef69a34..00000000 --- a/src/main/webapp/tabulator/dist/js/jquery_wrapper.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the Tabulator package. - * - * (c) Oliver Folkerd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * Full Documentation & Demos can be found at: http://olifolkerd.github.io/tabulator/ - * - */ - -(function (root, factory) { - "use strict"; - if (typeof define === 'function' && define.amd) { - define(['jquery', 'tabulator', 'jquery-ui'], factory); - } - else if(typeof module !== 'undefined' && module.exports) { - module.exports = factory( - require('jquery'), - require('tabulator'), - require('jquery-ui') - ); - } - else { - factory(root.jQuery, root.Tabulator); - } -}(this, function ($, Tabulator) { - - $.widget("ui.tabulator", { - _create:function(){ - var options = Object.assign({}, this.options); - var props = []; - - delete options.create; - delete options.disabled; - - this.table = new Tabulator(this.element[0], options); - window.table = this.table; - - //retrieve properties on prototype - props = Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(this.table))); - - //retrieve properties added by modules - props = props.concat(Object.getOwnPropertyNames(this.table)); - - //map tabulator functions to jquery wrapper - for(let key of props){ - if(typeof this.table[key] === "function" && key.charAt(0) !== "_"){ - this[key] = this.table[key].bind(this.table); - } - } - }, - - _setOption: function(option, value){ - console.error("Tabulator jQuery wrapper does not support setting options after the table has been instantiated"); - }, - - _destroy: function(option, value){ - this.table.destroy(); - }, - }); -})); diff --git a/src/main/webapp/tabulator/dist/js/tabulator.js b/src/main/webapp/tabulator/dist/js/tabulator.js deleted file mode 100644 index 17e5949d..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator.js +++ /dev/null @@ -1,26358 +0,0 @@ -/* Tabulator v5.5.2 (c) Oliver Folkerd 2023 */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tabulator = factory()); -}(this, (function () { 'use strict'; - - var defaultOptions = { - - debugEventsExternal:false, //flag to console log events - debugEventsInternal:false, //flag to console log events - debugInvalidOptions:true, //allow toggling of invalid option warnings - debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings - debugInitialization:true, //allow toggling of pre initialization function call warnings - debugDeprecation:true, //allow toggling of deprecation warnings - - height:false, //height of tabulator - minHeight:false, //minimum height of tabulator - maxHeight:false, //maximum height of tabulator - - columnHeaderVertAlign:"top", //vertical alignment of column headers - - popupContainer:false, - - columns:[],//store for colum header info - columnDefaults:{}, //store column default props - - data:false, //default starting data - - autoColumns:false, //build columns from data row structure - autoColumnsDefinitions:false, - - nestedFieldSeparator:".", //separator for nested data - - footerElement:false, //hold footer element - - index:"id", //filed for row index - - textDirection:"auto", - - addRowPos:"bottom", //position to insert blank rows, top|bottom - - headerVisible:true, //hide header - - renderVertical:"virtual", - renderHorizontal:"basic", - renderVerticalBuffer:0, // set virtual DOM buffer size - - scrollToRowPosition:"top", - scrollToRowIfVisible:true, - - scrollToColumnPosition:"left", - scrollToColumnIfVisible:true, - - rowFormatter:false, - rowFormatterPrint:null, - rowFormatterClipboard:null, - rowFormatterHtmlOutput:null, - - rowHeight:null, - - placeholder:false, - - dataLoader:true, - dataLoaderLoading:false, - dataLoaderError:false, - dataLoaderErrorTimeout:3000, - - dataSendParams:{}, - - dataReceiveParams:{}, - }; - - class CoreFeature{ - - constructor(table){ - this.table = table; - } - - ////////////////////////////////////////// - /////////////// DataLoad ///////////////// - ////////////////////////////////////////// - - reloadData(data, silent, columnsChanged){ - return this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged); - } - - ////////////////////////////////////////// - ///////////// Localization /////////////// - ////////////////////////////////////////// - - langText(){ - return this.table.modules.localize.getText(...arguments); - } - - langBind(){ - return this.table.modules.localize.bind(...arguments); - } - - langLocale(){ - return this.table.modules.localize.getLocale(...arguments); - } - - - ////////////////////////////////////////// - ////////// Inter Table Comms ///////////// - ////////////////////////////////////////// - - commsConnections(){ - return this.table.modules.comms.getConnections(...arguments); - } - - commsSend(){ - return this.table.modules.comms.send(...arguments); - } - - ////////////////////////////////////////// - //////////////// Layout ///////////////// - ////////////////////////////////////////// - - layoutMode(){ - return this.table.modules.layout.getMode(); - } - - layoutRefresh(force){ - return this.table.modules.layout.layout(force); - } - - - ////////////////////////////////////////// - /////////////// Event Bus //////////////// - ////////////////////////////////////////// - - subscribe(){ - return this.table.eventBus.subscribe(...arguments); - } - - unsubscribe(){ - return this.table.eventBus.unsubscribe(...arguments); - } - - subscribed(key){ - return this.table.eventBus.subscribed(key); - } - - subscriptionChange(){ - return this.table.eventBus.subscriptionChange(...arguments); - } - - dispatch(){ - return this.table.eventBus.dispatch(...arguments); - } - - chain(){ - return this.table.eventBus.chain(...arguments); - } - - confirm(){ - return this.table.eventBus.confirm(...arguments); - } - - dispatchExternal(){ - return this.table.externalEvents.dispatch(...arguments); - } - - subscribedExternal(key){ - return this.table.externalEvents.subscribed(key); - } - - subscriptionChangeExternal(){ - return this.table.externalEvents.subscriptionChange(...arguments); - } - - ////////////////////////////////////////// - //////////////// Options ///////////////// - ////////////////////////////////////////// - - options(key){ - return this.table.options[key]; - } - - setOption(key, value){ - if(typeof value !== "undefined"){ - this.table.options[key] = value; - } - - return this.table.options[key]; - } - - ////////////////////////////////////////// - /////////// Deprecation Checks /////////// - ////////////////////////////////////////// - - deprecationCheck(oldOption, newOption){ - return this.table.deprecationAdvisor.check(oldOption, newOption); - } - - deprecationCheckMsg(oldOption, msg){ - return this.table.deprecationAdvisor.checkMsg(oldOption, msg); - } - - deprecationMsg(msg){ - return this.table.deprecationAdvisor.msg(msg); - } - ////////////////////////////////////////// - //////////////// Modules ///////////////// - ////////////////////////////////////////// - - module(key){ - return this.table.module(key); - } - } - - //public column object - class ColumnComponent { - constructor (column){ - this._column = column; - this.type = "ColumnComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._column.table.componentFunctionBinder.handle("column", target._column, name); - } - } - }); - } - - getElement(){ - return this._column.getElement(); - } - - getDefinition(){ - return this._column.getDefinition(); - } - - getField(){ - return this._column.getField(); - } - - getTitleDownload() { - return this._column.getTitleDownload(); - } - - getCells(){ - var cells = []; - - this._column.cells.forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - isVisible(){ - return this._column.visible; - } - - show(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.show(); - }); - }else { - this._column.show(); - } - } - - hide(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.hide(); - }); - }else { - this._column.hide(); - } - } - - toggle(){ - if(this._column.visible){ - this.hide(); - }else { - this.show(); - } - } - - delete(){ - return this._column.delete(); - } - - getSubColumns(){ - var output = []; - - if(this._column.columns.length){ - this._column.columns.forEach(function(column){ - output.push(column.getComponent()); - }); - } - - return output; - } - - getParentColumn(){ - return this._column.parent instanceof Column ? this._column.parent.getComponent() : false; - } - - _getSelf(){ - return this._column; - } - - scrollTo(position, ifVisible){ - return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible); - } - - getTable(){ - return this._column.table; - } - - move(to, after){ - var toColumn = this._column.table.columnManager.findColumn(to); - - if(toColumn){ - this._column.table.columnManager.moveColumn(this._column, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - } - - getNextColumn(){ - var nextCol = this._column.nextColumn(); - - return nextCol ? nextCol.getComponent() : false; - } - - getPrevColumn(){ - var prevCol = this._column.prevColumn(); - - return prevCol ? prevCol.getComponent() : false; - } - - updateDefinition(updates){ - return this._column.updateDefinition(updates); - } - - getWidth(){ - return this._column.getWidth(); - } - - setWidth(width){ - var result; - - if(width === true){ - result = this._column.reinitializeWidth(true); - }else { - result = this._column.setWidth(width); - } - - this._column.table.columnManager.rerenderColumns(true); - - return result; - } - } - - var defaultColumnOptions = { - "title": undefined, - "field": undefined, - "columns": undefined, - "visible": undefined, - "hozAlign": undefined, - "vertAlign": undefined, - "width": undefined, - "minWidth": 40, - "maxWidth": undefined, - "maxInitialWidth": undefined, - "cssClass": undefined, - "variableHeight": undefined, - "headerVertical": undefined, - "headerHozAlign": undefined, - "headerWordWrap": false, - "editableTitle": undefined, - }; - - //public cell object - class CellComponent { - - constructor (cell){ - this._cell = cell; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name); - } - } - }); - } - - getValue(){ - return this._cell.getValue(); - } - - getOldValue(){ - return this._cell.getOldValue(); - } - - getInitialValue(){ - return this._cell.initialValue; - } - - getElement(){ - return this._cell.getElement(); - } - - getRow(){ - return this._cell.row.getComponent(); - } - - getData(transform){ - return this._cell.row.getData(transform); - } - getType(){ - return "cell"; - } - getField(){ - return this._cell.column.getField(); - } - - getColumn(){ - return this._cell.column.getComponent(); - } - - setValue(value, mutate){ - if(typeof mutate == "undefined"){ - mutate = true; - } - - this._cell.setValue(value, mutate); - } - - restoreOldValue(){ - this._cell.setValueActual(this._cell.getOldValue()); - } - - restoreInitialValue(){ - this._cell.setValueActual(this._cell.initialValue); - } - - checkHeight(){ - this._cell.checkHeight(); - } - - getTable(){ - return this._cell.table; - } - - _getSelf(){ - return this._cell; - } - } - - class Cell extends CoreFeature{ - constructor(column, row){ - super(column.table); - - this.table = column.table; - this.column = column; - this.row = row; - this.element = null; - this.value = null; - this.initialValue; - this.oldValue = null; - this.modules = {}; - - this.height = null; - this.width = null; - this.minWidth = null; - - this.component = null; - - this.loaded = false; //track if the cell has been added to the DOM yet - - this.build(); - } - - //////////////// Setup Functions ///////////////// - //generate element - build(){ - this.generateElement(); - - this.setWidth(); - - this._configureCell(); - - this.setValueActual(this.column.getFieldValue(this.row.data)); - - this.initialValue = this.value; - } - - generateElement(){ - this.element = document.createElement('div'); - this.element.className = "tabulator-cell"; - this.element.setAttribute("role", "gridcell"); - } - - _configureCell(){ - var element = this.element, - field = this.column.getField(), - vertAligns = { - top:"flex-start", - bottom:"flex-end", - middle:"center", - }, - hozAligns = { - left:"flex-start", - right:"flex-end", - center:"center", - }; - - //set text alignment - element.style.textAlign = this.column.hozAlign; - - if(this.column.vertAlign){ - element.style.display = "inline-flex"; - - element.style.alignItems = vertAligns[this.column.vertAlign] || ""; - - if(this.column.hozAlign){ - element.style.justifyContent = hozAligns[this.column.hozAlign] || ""; - } - } - - if(field){ - element.setAttribute("tabulator-field", field); - } - - //add class to cell if needed - if(this.column.definition.cssClass){ - var classNames = this.column.definition.cssClass.split(" "); - classNames.forEach((className) => { - element.classList.add(className); - }); - } - - this.dispatch("cell-init", this); - - //hide cell if not visible - if(!this.column.visible){ - this.hide(); - } - } - - //generate cell contents - _generateContents(){ - var val; - - val = this.chain("cell-format", this, null, () => { - return this.element.innerHTML = this.value; - }); - - switch(typeof val){ - case "object": - if(val instanceof Node){ - - //clear previous cell contents - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.element.appendChild(val); - }else { - this.element.innerHTML = ""; - - if(val != null){ - console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val); - } - } - break; - case "undefined": - this.element.innerHTML = ""; - break; - default: - this.element.innerHTML = val; - } - } - - cellRendered(){ - this.dispatch("cell-rendered", this); - } - - //////////////////// Getters //////////////////// - getElement(containerOnly){ - if(!this.loaded){ - this.loaded = true; - if(!containerOnly){ - this.layoutElement(); - } - } - - return this.element; - } - - getValue(){ - return this.value; - } - - getOldValue(){ - return this.oldValue; - } - - //////////////////// Actions //////////////////// - setValue(value, mutate, force){ - var changed = this.setValueProcessData(value, mutate, force); - - if(changed){ - this.dispatch("cell-value-updated", this); - - this.cellRendered(); - - if(this.column.definition.cellEdited){ - this.column.definition.cellEdited.call(this.table, this.getComponent()); - } - - this.dispatchExternal("cellEdited", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - } - } - - setValueProcessData(value, mutate, force){ - var changed = false; - - if(this.value !== value || force){ - - changed = true; - - if(mutate){ - value = this.chain("cell-value-changing", [this, value], null, value); - } - } - - this.setValueActual(value); - - if(changed){ - this.dispatch("cell-value-changed", this); - } - - return changed; - } - - setValueActual(value){ - this.oldValue = this.value; - - this.value = value; - - this.dispatch("cell-value-save-before", this); - - this.column.setFieldValue(this.row.data, value); - - this.dispatch("cell-value-save-after", this); - - if(this.loaded){ - this.layoutElement(); - } - } - - layoutElement(){ - this._generateContents(); - - this.dispatch("cell-layout", this); - } - - setWidth(){ - this.width = this.column.width; - this.element.style.width = this.column.widthStyled; - } - - clearWidth(){ - this.width = ""; - this.element.style.width = ""; - } - - getWidth(){ - return this.width || this.element.offsetWidth; - } - - setMinWidth(){ - this.minWidth = this.column.minWidth; - this.element.style.minWidth = this.column.minWidthStyled; - } - - setMaxWidth(){ - this.maxWidth = this.column.maxWidth; - this.element.style.maxWidth = this.column.maxWidthStyled; - } - - checkHeight(){ - // var height = this.element.css("height"); - this.row.reinitializeHeight(); - } - - clearHeight(){ - this.element.style.height = ""; - this.height = null; - - this.dispatch("cell-height", this, ""); - } - - setHeight(){ - this.height = this.row.height; - this.element.style.height = this.row.heightStyled; - - this.dispatch("cell-height", this, this.row.heightStyled); - } - - getHeight(){ - return this.height || this.element.offsetHeight; - } - - show(){ - this.element.style.display = this.column.vertAlign ? "inline-flex" : ""; - } - - hide(){ - this.element.style.display = "none"; - } - - delete(){ - this.dispatch("cell-delete", this); - - if(!this.table.rowManager.redrawBlock && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.column.deleteCell(this); - this.row.deleteCell(this); - this.calcs = {}; - } - - getIndex(){ - return this.row.getCellIndex(this); - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new CellComponent(this); - } - - return this.component; - } - } - - class Column extends CoreFeature{ - - constructor(def, parent){ - super(parent.table); - - this.definition = def; //column definition - this.parent = parent; //hold parent object - this.type = "column"; //type of element - this.columns = []; //child columns - this.cells = []; //cells bound to this column - this.element = this.createElement(); //column header element - this.contentElement = false; - this.titleHolderElement = false; - this.titleElement = false; - this.groupElement = this.createGroupElement(); //column group holder element - this.isGroup = false; - this.hozAlign = ""; //horizontal text alignment - this.vertAlign = ""; //vert text alignment - - //multi dimensional filed handling - this.field =""; - this.fieldStructure = ""; - this.getFieldValue = ""; - this.setFieldValue = ""; - - this.titleDownload = null; - this.titleFormatterRendered = false; - - this.mapDefinitions(); - - this.setField(this.definition.field); - - this.modules = {}; //hold module variables; - - this.width = null; //column width - this.widthStyled = ""; //column width pre-styled to improve render efficiency - this.maxWidth = null; //column maximum width - this.maxWidthStyled = ""; //column maximum pre-styled to improve render efficiency - this.maxInitialWidth = null; - this.minWidth = null; //column minimum width - this.minWidthStyled = ""; //column minimum pre-styled to improve render efficiency - this.widthFixed = false; //user has specified a width for this column - - this.visible = true; //default visible state - - this.component = null; - - //initialize column - if(this.definition.columns){ - - this.isGroup = true; - - this.definition.columns.forEach((def, i) => { - var newCol = new Column(def, this); - this.attachColumn(newCol); - }); - - this.checkColumnVisibility(); - }else { - parent.registerColumnField(this); - } - - this._initialize(); - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.setAttribute("role", "columnheader"); - el.setAttribute("aria-sort", "none"); - - switch(this.table.options.columnHeaderVertAlign){ - case "middle": - el.style.justifyContent = "center"; - break; - case "bottom": - el.style.justifyContent = "flex-end"; - break; - } - - return el; - } - - createGroupElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col-group-cols"); - - return el; - } - - mapDefinitions(){ - var defaults = this.table.options.columnDefaults; - - //map columnDefaults onto column definitions - if(defaults){ - for(let key in defaults){ - if(typeof this.definition[key] === "undefined"){ - this.definition[key] = defaults[key]; - } - } - } - - this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition); - } - - checkDefinition(){ - Object.keys(this.definition).forEach((key) => { - if(Column.defaultOptionList.indexOf(key) === -1){ - console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key); - } - }); - } - - setField(field){ - this.field = field; - this.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : []; - this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData; - this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData; - } - - //register column position with column manager - registerColumnPosition(column){ - this.parent.registerColumnPosition(column); - } - - //register column position with column manager - registerColumnField(column){ - this.parent.registerColumnField(column); - } - - //trigger position registration - reRegisterPosition(){ - if(this.isGroup){ - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - }else { - this.registerColumnPosition(this); - } - } - - //build header element - _initialize(){ - var def = this.definition; - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(def.headerVertical){ - this.element.classList.add("tabulator-col-vertical"); - - if(def.headerVertical === "flip"){ - this.element.classList.add("tabulator-col-vertical-flip"); - } - } - - this.contentElement = this._buildColumnHeaderContent(); - - this.element.appendChild(this.contentElement); - - if(this.isGroup){ - this._buildGroupHeader(); - }else { - this._buildColumnHeader(); - } - - this.dispatch("column-init", this); - } - - //build header element for header - _buildColumnHeader(){ - var def = this.definition; - - this.dispatch("column-layout", this); - - //set column visibility - if(typeof def.visible != "undefined"){ - if(def.visible){ - this.show(true); - }else { - this.hide(true); - } - } - - //assign additional css classes to column header - if(def.cssClass){ - var classNames = def.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - if(def.field){ - this.element.setAttribute("tabulator-field", def.field); - } - - //set min width if present - this.setMinWidth(parseInt(def.minWidth)); - - if (def.maxInitialWidth) { - this.maxInitialWidth = parseInt(def.maxInitialWidth); - } - - if(def.maxWidth){ - this.setMaxWidth(parseInt(def.maxWidth)); - } - - this.reinitializeWidth(); - - //set horizontal text alignment - this.hozAlign = this.definition.hozAlign; - this.vertAlign = this.definition.vertAlign; - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - } - - _buildColumnHeaderContent(){ - var contentElement = document.createElement("div"); - contentElement.classList.add("tabulator-col-content"); - - this.titleHolderElement = document.createElement("div"); - this.titleHolderElement.classList.add("tabulator-col-title-holder"); - - contentElement.appendChild(this.titleHolderElement); - - this.titleElement = this._buildColumnHeaderTitle(); - - this.titleHolderElement.appendChild(this.titleElement); - - return contentElement; - } - - //build title element of column - _buildColumnHeaderTitle(){ - var def = this.definition; - - var titleHolderElement = document.createElement("div"); - titleHolderElement.classList.add("tabulator-col-title"); - - if(def.headerWordWrap){ - titleHolderElement.classList.add("tabulator-col-title-wrap"); - } - - if(def.editableTitle){ - var titleElement = document.createElement("input"); - titleElement.classList.add("tabulator-title-editor"); - - titleElement.addEventListener("click", (e) => { - e.stopPropagation(); - titleElement.focus(); - }); - - titleElement.addEventListener("change", () => { - def.title = titleElement.value; - this.dispatchExternal("columnTitleChanged", this.getComponent()); - }); - - titleHolderElement.appendChild(titleElement); - - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - titleElement.value = text || (def.title || " "); - }); - }else { - titleElement.value = def.title || " "; - } - - }else { - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - this._formatColumnHeaderTitle(titleHolderElement, text || (def.title || " ")); - }); - }else { - this._formatColumnHeaderTitle(titleHolderElement, def.title || " "); - } - } - - return titleHolderElement; - } - - _formatColumnHeaderTitle(el, title){ - var contents = this.chain("column-format", [this, title, el], null, () => { - return title; - }); - - switch(typeof contents){ - case "object": - if(contents instanceof Node){ - el.appendChild(contents); - }else { - el.innerHTML = ""; - console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents); - } - break; - case "undefined": - el.innerHTML = ""; - break; - default: - el.innerHTML = contents; - } - } - - //build header element for column group - _buildGroupHeader(){ - this.element.classList.add("tabulator-col-group"); - this.element.setAttribute("role", "columngroup"); - this.element.setAttribute("aria-title", this.definition.title); - - //asign additional css classes to column header - if(this.definition.cssClass){ - var classNames = this.definition.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - - this.element.appendChild(this.groupElement); - } - - //flat field lookup - _getFlatData(data){ - return data[this.field]; - } - - //nested field lookup - _getNestedData(data){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - dataObj = dataObj[structure[i]]; - - output = dataObj; - - if(!dataObj){ - break; - } - } - - return output; - } - - //flat field set - _setFlatData(data, value){ - if(this.field){ - data[this.field] = value; - } - } - - //nested field set - _setNestedData(data, value){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length; - - for(let i = 0; i < length; i++){ - - if(i == length -1){ - dataObj[structure[i]] = value; - }else { - if(!dataObj[structure[i]]){ - if(typeof value !== "undefined"){ - dataObj[structure[i]] = {}; - }else { - break; - } - } - - dataObj = dataObj[structure[i]]; - } - } - } - - //attach column to this group - attachColumn(column){ - if(this.groupElement){ - this.columns.push(column); - this.groupElement.appendChild(column.getElement()); - - column.columnRendered(); - }else { - console.warn("Column Warning - Column being attached to another column instead of column group"); - } - } - - //vertically align header in column - verticalAlign(alignment, height){ - - //calculate height of column header and group holder element - var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight); - // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight; - - this.element.style.height = parentHeight + "px"; - - this.dispatch("column-height", this, this.element.style.height); - - if(this.isGroup){ - this.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + "px"; - } - - //vertically align cell contents - // if(!this.isGroup && alignment !== "top"){ - // if(alignment === "bottom"){ - // this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + "px"; - // }else{ - // this.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + "px"; - // } - // } - - this.columns.forEach(function(column){ - column.verticalAlign(alignment); - }); - } - - //clear vertical alignment - clearVerticalAlign(){ - this.element.style.paddingTop = ""; - this.element.style.height = ""; - this.element.style.minHeight = ""; - this.groupElement.style.minHeight = ""; - - this.columns.forEach(function(column){ - column.clearVerticalAlign(); - }); - - this.dispatch("column-height", this, ""); - } - - //// Retrieve Column Information //// - //return column header element - getElement(){ - return this.element; - } - - //return column group element - getGroupElement(){ - return this.groupElement; - } - - //return field name - getField(){ - return this.field; - } - - getTitleDownload() { - return this.titleDownload; - } - - //return the first column in a group - getFirstColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[0].getFirstColumn(); - }else { - return false; - } - } - } - - //return the last column in a group - getLastColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[this.columns.length -1].getLastColumn(); - }else { - return false; - } - } - } - - //return all columns in a group - getColumns(traverse){ - var columns = []; - - if(traverse){ - this.columns.forEach((column) => { - columns.push(column); - - columns = columns.concat(column.getColumns(true)); - }); - }else { - columns = this.columns; - } - - return columns; - } - - //return all columns in a group - getCells(){ - return this.cells; - } - - //retrieve the top column in a group of columns - getTopColumn(){ - if(this.parent.isGroup){ - return this.parent.getTopColumn(); - }else { - return this; - } - } - - //return column definition object - getDefinition(updateBranches){ - var colDefs = []; - - if(this.isGroup && updateBranches){ - this.columns.forEach(function(column){ - colDefs.push(column.getDefinition(true)); - }); - - this.definition.columns = colDefs; - } - - return this.definition; - } - - //////////////////// Actions //////////////////// - checkColumnVisibility(){ - var visible = false; - - this.columns.forEach(function(column){ - if(column.visible){ - visible = true; - } - }); - - if(visible){ - this.show(); - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - }else { - this.hide(); - } - } - - //show column - show(silent, responsiveToggle){ - if(!this.visible){ - this.visible = true; - - this.element.style.display = ""; - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.show(); - }); - - if(!this.isGroup && this.width === null){ - this.reinitializeWidth(); - } - - this.table.columnManager.verticalAlignHeaders(); - - this.dispatch("column-show", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), true); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - //hide column - hide(silent, responsiveToggle){ - if(this.visible){ - this.visible = false; - - this.element.style.display = "none"; - - this.table.columnManager.verticalAlignHeaders(); - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.hide(); - }); - - this.dispatch("column-hide", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - matchChildWidths(){ - var childWidth = 0; - - if(this.contentElement && this.columns.length){ - this.columns.forEach(function(column){ - if(column.visible){ - childWidth += column.getWidth(); - } - }); - - this.contentElement.style.maxWidth = (childWidth - 1) + "px"; - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - } - } - - removeChild(child){ - var index = this.columns.indexOf(child); - - if(index > -1){ - this.columns.splice(index, 1); - } - - if(!this.columns.length){ - this.delete(); - } - } - - setWidth(width){ - this.widthFixed = true; - this.setWidthActual(width); - } - - setWidthActual(width){ - if(isNaN(width)){ - width = Math.floor((this.table.element.clientWidth/100) * parseInt(width)); - } - - width = Math.max(this.minWidth, width); - - if(this.maxWidth){ - width = Math.min(this.maxWidth, width); - } - - this.width = width; - this.widthStyled = width ? width + "px" : ""; - - this.element.style.width = this.widthStyled; - - if(!this.isGroup){ - this.cells.forEach(function(cell){ - cell.setWidth(); - }); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - this.dispatch("column-width", this); - } - - checkCellHeights(){ - var rows = []; - - this.cells.forEach(function(cell){ - if(cell.row.heightInitialized){ - if(cell.row.getElement().offsetParent !== null){ - rows.push(cell.row); - cell.row.clearCellHeight(); - }else { - cell.row.heightInitialized = false; - } - } - }); - - rows.forEach(function(row){ - row.calcHeight(); - }); - - rows.forEach(function(row){ - row.setCellHeight(); - }); - } - - getWidth(){ - var width = 0; - - if(this.isGroup){ - this.columns.forEach(function(column){ - if(column.visible){ - width += column.getWidth(); - } - }); - }else { - width = this.width; - } - - return width; - } - - getLeftOffset(){ - var offset = this.element.offsetLeft; - - if(this.parent.isGroup){ - offset += this.parent.getLeftOffset(); - } - - return offset; - } - - getHeight(){ - return Math.ceil(this.element.getBoundingClientRect().height); - } - - setMinWidth(minWidth){ - if(this.maxWidth && minWidth > this.maxWidth){ - minWidth = this.maxWidth; - - console.warn("the minWidth ("+ minWidth + "px) for column '" + this.field + "' cannot be bigger that its maxWidth ("+ this.maxWidthStyled + ")"); - } - - this.minWidth = minWidth; - this.minWidthStyled = minWidth ? minWidth + "px" : ""; - - this.element.style.minWidth = this.minWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMinWidth(); - }); - } - - setMaxWidth(maxWidth){ - if(this.minWidth && maxWidth < this.minWidth){ - maxWidth = this.minWidth; - - console.warn("the maxWidth ("+ maxWidth + "px) for column '" + this.field + "' cannot be smaller that its minWidth ("+ this.minWidthStyled + ")"); - } - - this.maxWidth = maxWidth; - this.maxWidthStyled = maxWidth ? maxWidth + "px" : ""; - - this.element.style.maxWidth = this.maxWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMaxWidth(); - }); - } - - delete(){ - return new Promise((resolve, reject) => { - if(this.isGroup){ - this.columns.forEach(function(column){ - column.delete(); - }); - } - - this.dispatch("column-delete", this); - - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.contentElement = false; - this.titleElement = false; - this.groupElement = false; - - if(this.parent.isGroup){ - this.parent.removeChild(this); - } - - this.table.columnManager.deregisterColumn(this); - - this.table.columnManager.rerenderColumns(true); - - resolve(); - }); - } - - columnRendered(){ - if(this.titleFormatterRendered){ - this.titleFormatterRendered(); - } - - this.dispatch("column-rendered", this); - } - - //////////////// Cell Management ///////////////// - //generate cell for this column - generateCell(row){ - var cell = new Cell(this, row); - - this.cells.push(cell); - - return cell; - } - - nextColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._nextVisibleColumn(index + 1) : false; - } - - _nextVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._nextVisibleColumn(index + 1); - } - - prevColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._prevVisibleColumn(index - 1) : false; - } - - _prevVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._prevVisibleColumn(index - 1); - } - - reinitializeWidth(force){ - this.widthFixed = false; - - //set width if present - if(typeof this.definition.width !== "undefined" && !force){ - // maxInitialWidth ignored here as width specified - this.setWidth(this.definition.width); - } - - this.dispatch("column-width-fit-before", this); - - this.fitToData(force); - - this.dispatch("column-width-fit-after", this); - } - - //set column width to maximum cell width for non group columns - fitToData(force){ - if(this.isGroup){ - return; - } - - if(!this.widthFixed){ - this.element.style.width = ""; - - this.cells.forEach((cell) => { - cell.clearWidth(); - }); - } - - var maxWidth = this.element.offsetWidth; - - if(!this.width || !this.widthFixed){ - this.cells.forEach((cell) => { - var width = cell.getWidth(); - - if(width > maxWidth){ - maxWidth = width; - } - }); - - if(maxWidth){ - var setTo = maxWidth + 1; - if (this.maxInitialWidth && !force) { - setTo = Math.min(setTo, this.maxInitialWidth); - } - this.setWidthActual(setTo); - } - } - } - - updateDefinition(updates){ - var definition; - - if(!this.isGroup){ - if(!this.parent.isGroup){ - definition = Object.assign({}, this.getDefinition()); - definition = Object.assign(definition, updates); - - return this.table.columnManager.addColumn(definition, false, this) - .then((column) => { - - if(definition.field == this.field){ - this.field = false; //clear field name to prevent deletion of duplicate column from arrays - } - - return this.delete() - .then(() => { - return column.getComponent(); - }); - - }); - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - } - - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new ColumnComponent(this); - } - - return this.component; - } - } - - Column.defaultOptionList = defaultColumnOptions; - - class Helpers{ - - static elVisible(el){ - return !(el.offsetWidth <= 0 && el.offsetHeight <= 0); - } - - static elOffset(el){ - var box = el.getBoundingClientRect(); - - return { - top: box.top + window.pageYOffset - document.documentElement.clientTop, - left: box.left + window.pageXOffset - document.documentElement.clientLeft - }; - } - - static deepClone(obj, clone, list = []){ - var objectProto = {}.__proto__, - arrayProto = [].__proto__; - - if (!clone){ - clone = Object.assign(Array.isArray(obj) ? [] : {}, obj); - } - - for(var i in obj) { - let subject = obj[i], - match, copy; - - if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){ - match = list.findIndex((item) => { - return item.subject === subject; - }); - - if(match > -1){ - clone[i] = list[match].copy; - }else { - copy = Object.assign(Array.isArray(subject) ? [] : {}, subject); - - list.unshift({subject, copy}); - - clone[i] = this.deepClone(subject, copy, list); - } - } - } - - return clone; - } - } - - class OptionsList { - constructor(table, msgType, defaults = {}){ - this.table = table; - this.msgType = msgType; - this.registeredDefaults = Object.assign({}, defaults); - } - - register(option, value){ - this.registeredDefaults[option] = value; - } - - generate(defaultOptions, userOptions = {}){ - var output = Object.assign({}, this.registeredDefaults), - warn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true; - - Object.assign(output, defaultOptions); - - for (let key in userOptions){ - if(!output.hasOwnProperty(key)){ - if(warn){ - console.warn("Invalid " + this.msgType + " option:", key); - } - - output[key] = userOptions.key; - } - } - - - for (let key in output){ - if(key in userOptions){ - output[key] = userOptions[key]; - }else { - if(Array.isArray(output[key])){ - output[key] = Object.assign([], output[key]); - }else if(typeof output[key] === "object" && output[key] !== null){ - output[key] = Object.assign({}, output[key]); - }else if (typeof output[key] === "undefined"){ - delete output[key]; - } - } - } - - return output; - } - } - - class Renderer extends CoreFeature{ - constructor(table){ - super(table); - - this.elementVertical = table.rowManager.element; - this.elementHorizontal = table.columnManager.element; - this.tableElement = table.rowManager.tableElement; - - this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it) - } - - - /////////////////////////////////// - /////// Internal Bindings ///////// - /////////////////////////////////// - - initialize(){ - //initialize core functionality - } - - clearRows(){ - //clear down existing rows layout - } - - clearColumns(){ - //clear down existing columns layout - } - - - reinitializeColumnWidths(columns){ - //resize columns to fit data - } - - - renderRows(){ - //render rows from a clean slate - } - - renderColumns(){ - //render columns from a clean slate - } - - rerenderRows(callback){ - // rerender rows and keep position - if(callback){ - callback(); - } - } - - rerenderColumns(update, blockRedraw){ - //rerender columns - } - - renderRowCells(row){ - //render the cells in a row - } - - rerenderRowCells(row, force){ - //rerender the cells in a row - } - - scrollColumns(left, dir){ - //handle horizontal scrolling - } - - scrollRows(top, dir){ - //handle vertical scrolling - } - - resize(){ - //container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION) - } - - scrollToRow(row){ - //scroll to a specific row - } - - scrollToRowNearestTop(row){ - //determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom - } - - visibleRows(includingBuffer){ - //return the visible rows - return []; - } - - /////////////////////////////////// - //////// Helper Functions ///////// - /////////////////////////////////// - - rows(){ - return this.table.rowManager.getDisplayRows(); - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - /////////////////////////////////// - /////// External Triggers ///////// - /////// (DO NOT OVERRIDE) ///////// - /////////////////////////////////// - - clear(){ - //clear down existing layout - this.clearRows(); - this.clearColumns(); - } - - render(){ - //render from a clean slate - this.renderRows(); - this.renderColumns(); - } - - rerender(callback){ - // rerender and keep position - this.rerenderRows(); - this.rerenderColumns(); - } - - scrollToRowPosition(row, position, ifVisible){ - var rowIndex = this.rows().indexOf(row), - rowEl = row.getElement(), - offset = 0; - - return new Promise((resolve, reject) => { - if(rowIndex > -1){ - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToRowIfVisible; - } - - //check row visibility - if(!ifVisible){ - if(Helpers.elVisible(rowEl)){ - offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top; - - if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){ - resolve(); - return false; - } - } - } - - if(typeof position === "undefined"){ - position = this.table.options.scrollToRowPosition; - } - - if(position === "nearest"){ - position = this.scrollToRowNearestTop(row) ? "top" : "bottom"; - } - - //scroll to row - this.scrollToRow(row); - - //align to correct position - switch(position){ - case "middle": - case "center": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2); - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2); - } - - break; - - case "bottom": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight; - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight; - } - - break; - - case "top": - this.elementVertical.scrollTop = rowEl.offsetTop; - break; - } - - resolve(); - - }else { - console.warn("Scroll Error - Row not visible"); - reject("Scroll Error - Row not visible"); - } - }); - } - } - - class BasicHorizontal extends Renderer{ - constructor(table){ - super(table); - } - - renderRowCells(row, inFragment) { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - if(!inFragment){ - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - reinitializeColumnWidths(columns){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - } - } - - class VirtualDomHorizontal extends Renderer{ - constructor(table){ - super(table); - - this.leftCol = 0; - this.rightCol = 0; - this.scrollLeft = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - - this.fitDataColAvg = 0; - - this.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen - - this.visibleRows = null; - - this.initialized = false; - this.isFitData = false; - - this.columns = []; - } - - initialize(){ - this.compatibilityCheck(); - this.layoutCheck(); - this.vertScrollListen(); - } - - compatibilityCheck(){ - if(this.options("layout") == "fitDataTable"){ - console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"); - } - - if(this.options("responsiveLayout")){ - console.warn("Horizontal Virtual DOM is not compatible with responsive columns"); - } - - if(this.options("rtl")){ - console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"); - } - } - - layoutCheck(){ - this.isFitData = this.options("layout").startsWith('fitData'); - } - - vertScrollListen(){ - this.subscribe("scroll-vertical", this.clearVisRowCache.bind(this)); - this.subscribe("data-refreshed", this.clearVisRowCache.bind(this)); - } - - clearVisRowCache(){ - this.visibleRows = null; - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - renderColumns(row, force){ - this.dataChange(); - } - - - scrollColumns(left, dir){ - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer)); - } - } - - calcWindowBuffer(){ - var buffer = this.elementVertical.clientWidth; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if(column.visible){ - var width = column.getWidth(); - - if(width > buffer){ - buffer = width; - } - } - }); - - this.windowBuffer = buffer * 2; - } - - rerenderColumns(update, blockRedraw){ - var old = { - cols:this.columns, - leftCol:this.leftCol, - rightCol:this.rightCol, - }, - colPos = 0; - - if(update && !this.initialized){ - return; - } - - this.clear(); - - this.calcWindowBuffer(); - - this.scrollLeft = this.elementVertical.scrollLeft; - - this.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer; - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - this.table.columnManager.columnsByIndex.forEach((column) => { - var config = {}, - width; - - if(column.visible){ - if(!column.modules.frozen){ - width = column.getWidth(); - - config.leftPos = colPos; - config.rightPos = colPos + width; - - config.width = width; - - if (this.isFitData) { - config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true; - } - - if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){ - //column is visible - - if(this.leftCol == -1){ - this.leftCol = this.columns.length; - this.vDomPadLeft = colPos; - } - - this.rightCol = this.columns.length; - }else { - // column is hidden - if(this.leftCol !== -1){ - this.vDomPadRight += width; - } - } - - this.columns.push(column); - - column.modules.vdomHoz = config; - - colPos += width; - } - } - }); - - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - - this.initialized = true; - - if(!blockRedraw){ - if(!update || this.reinitChanged(old)){ - this.reinitializeRows(); - } - } - - this.elementVertical.scrollLeft = this.scrollLeft; - } - - renderRowCells(row){ - if(this.initialized){ - this.initializeRow(row); - }else { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - rerenderRowCells(row, force){ - this.reinitializeRow(row, force); - } - - reinitializeColumnWidths(columns){ - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.columns[i].reinitializeWidth(); - } - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - deinitialize(){ - this.initialized = false; - } - - clear(){ - this.columns = []; - - this.leftCol = -1; - this.rightCol = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - } - - dataChange(){ - var change = false, - row, rowEl; - - if(this.isFitData){ - this.table.columnManager.columnsByIndex.forEach((column) => { - if(!column.definition.width && column.visible){ - change = true; - } - }); - - if(change && this.table.rowManager.getDisplayRows().length){ - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - row = this.chain("rows-sample", [1], [], () => { - return this.table.rowManager.getDisplayRows(); - })[0]; - - if(row){ - rowEl = row.getElement(); - - row.generateCells(); - - this.tableElement.appendChild(rowEl); - - for(let colEnd = 0; colEnd < row.cells.length; colEnd++){ - let cell = row.cells[colEnd]; - rowEl.appendChild(cell.getElement()); - - cell.column.reinitializeWidth(); - } - - rowEl.parentNode.removeChild(rowEl); - - this.rerenderColumns(false, true); - } - } - }else { - if(this.options("layout") === "fitColumns"){ - this.layoutRefresh(); - this.rerenderColumns(false, true); - } - } - } - - reinitChanged(old){ - var match = true; - - if(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){ - return true; - } - - old.cols.forEach((col, i) => { - if(col !== this.columns[i]){ - match = false; - } - }); - - return !match; - } - - reinitializeRows(){ - var visibleRows = this.getVisibleRows(), - otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - visibleRows.forEach((row) => { - this.reinitializeRow(row, true); - }); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - } - - getVisibleRows(){ - if (!this.visibleRows){ - this.visibleRows = this.table.rowManager.getVisibleRows(); - } - - return this.visibleRows; - } - - scroll(diff){ - this.vDomScrollPosLeft += diff; - this.vDomScrollPosRight += diff; - - if(Math.abs(diff) > (this.windowBuffer / 2)){ - this.rerenderColumns(); - }else { - if(diff > 0){ - //scroll right - this.addColRight(); - this.removeColLeft(); - }else { - //scroll left - this.addColLeft(); - this.removeColRight(); - } - } - } - - colPositionAdjust (start, end, diff){ - for(let i = start; i < end; i++){ - let column = this.columns[i]; - - column.modules.vdomHoz.leftPos += diff; - column.modules.vdomHoz.rightPos += diff; - } - } - - addColRight(){ - var changes = false, - working = true; - - while(working){ - - let column = this.columns[this.rightCol + 1]; - - if(column){ - if(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling); - cell.cellRendered(); - } - }); - - this.fitDataColActualWidthCheck(column); - - this.rightCol++; // Don't move this below the >= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - - if(this.rightCol >= (this.columns.length - 1)){ - this.vDomPadRight = 0; - }else { - this.vDomPadRight -= column.getWidth(); - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - addColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol - 1]; - - if(column){ - if(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement()); - cell.cellRendered(); - } - }); - - this.leftCol--; // don't move this below the <= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - - if(this.leftCol <= 0){ // replicating logic in addColRight - this.vDomPadLeft = 0; - }else { - this.vDomPadLeft -= column.getWidth(); - } - - let diff = this.fitDataColActualWidthCheck(column); - - if(diff){ - this.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff; - this.vDomPadRight -= diff; - } - - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - removeColRight(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.rightCol]; - - if(column){ - if(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColRight", ex.message); - } - } - }); - - this.vDomPadRight += column.getWidth(); - this.rightCol --; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - removeColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol]; - - if(column){ - if(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColLeft", ex.message); - } - } - }); - - this.vDomPadLeft += column.getWidth(); - this.leftCol ++; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - fitDataColActualWidthCheck(column){ - var newWidth, widthDiff; - - if(column.modules.vdomHoz.fitDataCheck){ - column.reinitializeWidth(); - - newWidth = column.getWidth(); - widthDiff = newWidth - column.modules.vdomHoz.width; - - if(widthDiff){ - column.modules.vdomHoz.rightPos += widthDiff; - column.modules.vdomHoz.width = newWidth; - this.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff); - } - - column.modules.vdomHoz.fitDataCheck = false; - } - - return widthDiff; - } - - initializeRow(row){ - if(row.type !== "group"){ - row.modules.vdomHoz = { - leftCol:this.leftCol, - rightCol:this.rightCol, - }; - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.leftColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.appendCell(row, this.columns[i]); - } - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.rightColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - } - } - - appendCell(row, column){ - if(column && column.visible){ - let cell = row.getCell(column); - - row.getElement().appendChild(cell.getElement()); - cell.cellRendered(); - } - } - - reinitializeRow(row, force){ - if(row.type !== "group"){ - if(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){ - - var rowEl = row.getElement(); - while(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild); - - this.initializeRow(row); - } - } - } - } - - class ColumnManager extends CoreFeature { - - constructor (table){ - super(table); - - this.blockHozScrollEvent = false; - this.headersElement = null; - this.contentsElement = null; - this.element = null ; //containing element - this.columns = []; // column definition object - this.columnsByIndex = []; //columns by index - this.columnsByField = {}; //columns by field - this.scrollLeft = 0; - this.optionsList = new OptionsList(this.table, "column definition", defaultColumnOptions); - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockUpdate = null; //store latest redraw update only status - - this.renderer = null; - } - - ////////////// Setup Functions ///////////////// - - initialize(){ - this.initializeRenderer(); - - this.headersElement = this.createHeadersElement(); - this.contentsElement = this.createHeaderContentsElement(); - this.element = this.createHeaderElement(); - - this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild); - this.element.insertBefore(this.contentsElement, this.element.firstChild); - - this.initializeScrollWheelWatcher(); - - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this)); - } - - padVerticalScrollbar(width){ - if(this.table.rtl){ - this.headersElement.style.marginLeft = width + "px"; - }else { - this.headersElement.style.marginRight = width + "px"; - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomHorizontal, - "basic": BasicHorizontal, - }; - - if(typeof this.table.options.renderHorizontal === "string"){ - renderClass = renderers[this.table.options.renderHorizontal]; - }else { - renderClass = this.table.options.renderHorizontal; - } - - if(renderClass){ - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - }else { - console.error("Unable to find matching renderer:", this.table.options.renderHorizontal); - } - } - - - createHeadersElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-headers"); - el.setAttribute("role", "row"); - - return el; - } - - createHeaderContentsElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header-contents"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - createHeaderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header"); - el.setAttribute("role", "rowgroup"); - - if(!this.table.options.headerVisible){ - el.classList.add("tabulator-header-hidden"); - } - - return el; - } - - //return containing element - getElement(){ - return this.element; - } - - //return containing contents element - getContentsElement(){ - return this.contentsElement; - } - - - //return header containing element - getHeadersElement(){ - return this.headersElement; - } - - //scroll horizontally to match table body - scrollHorizontal(left){ - this.contentsElement.scrollLeft = left; - - this.scrollLeft = left; - - this.renderer.scrollColumns(left); - } - - initializeScrollWheelWatcher(){ - this.contentsElement.addEventListener("wheel", (e) => { - var left; - - if(e.deltaX){ - left = this.contentsElement.scrollLeft + e.deltaX; - - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - } - - ///////////// Column Setup Functions ///////////// - generateColumnsFromRowData(data){ - var cols = [], - definitions = this.table.options.autoColumnsDefinitions, - row, sorter; - - if(data && data.length){ - - row = data[0]; - - for(var key in row){ - let col = { - field:key, - title:key, - }; - - let value = row[key]; - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - case "object": - if(Array.isArray(value)){ - sorter = "array"; - }else { - sorter = "string"; - } - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - }else { - sorter = "string"; - } - } - break; - } - - col.sorter = sorter; - - cols.push(col); - } - - if(definitions){ - - switch(typeof definitions){ - case "function": - this.table.options.columns = definitions.call(this.table, cols); - break; - - case "object": - if(Array.isArray(definitions)){ - cols.forEach((col) => { - var match = definitions.find((def) => { - return def.field === col.field; - }); - - if(match){ - Object.assign(col, match); - } - }); - - }else { - cols.forEach((col) => { - if(definitions[col.field]){ - Object.assign(col, definitions[col.field]); - } - }); - } - - this.table.options.columns = cols; - break; - } - }else { - this.table.options.columns = cols; - } - - this.setColumns(this.table.options.columns); - } - } - - setColumns(cols, row){ - while(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild); - - this.columns = []; - this.columnsByIndex = []; - this.columnsByField = {}; - - this.dispatch("columns-loading"); - - cols.forEach((def, i) => { - this._addColumn(def); - }); - - this._reIndexColumns(); - - this.dispatch("columns-loaded"); - - this.rerenderColumns(false, true); - - this.redraw(true); - } - - _addColumn(definition, before, nextToColumn){ - var column = new Column(definition, this), - colEl = column.getElement(), - index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn; - - if(nextToColumn && index > -1){ - var topColumn = nextToColumn.getTopColumn(); - var parentIndex = this.columns.indexOf(topColumn); - var nextEl = topColumn.getElement(); - - if(before){ - this.columns.splice(parentIndex, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl); - }else { - this.columns.splice(parentIndex + 1, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling); - } - }else { - if(before){ - this.columns.unshift(column); - this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild); - }else { - this.columns.push(column); - this.headersElement.appendChild(column.getElement()); - } - } - - column.columnRendered(); - - return column; - } - - registerColumnField(col){ - if(col.definition.field){ - this.columnsByField[col.definition.field] = col; - } - } - - registerColumnPosition(col){ - this.columnsByIndex.push(col); - } - - _reIndexColumns(){ - this.columnsByIndex = []; - - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - } - - //ensure column headers take up the correct amount of space in column groups - verticalAlignHeaders(){ - var minHeight = 0; - - if(!this.redrawBlock){ - - this.headersElement.style.height=""; - - this.columns.forEach((column) => { - column.clearVerticalAlign(); - }); - - this.columns.forEach((column) => { - var height = column.getHeight(); - - if(height > minHeight){ - minHeight = height; - } - }); - - this.headersElement.style.height = minHeight + "px"; - - this.columns.forEach((column) => { - column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight); - }); - - this.table.rowManager.adjustTableSize(); - } - } - - //////////////// Column Details ///////////////// - findColumn(subject){ - var columns; - - if(typeof subject == "object"){ - - if(subject instanceof Column){ - //subject is column element - return subject; - }else if(subject instanceof ColumnComponent){ - //subject is public column component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - - columns = []; - - this.columns.forEach((column) => { - columns.push(column); - columns = columns.concat(column.getColumns(true)); - }); - - //subject is a HTML element of the column header - let match = columns.find((column) => { - return column.element === subject; - }); - - return match || false; - } - - }else { - //subject should be treated as the field name of the column - return this.columnsByField[subject] || false; - } - - //catch all for any other type of input - return false; - } - - getColumnByField(field){ - return this.columnsByField[field]; - } - - getColumnsByFieldRoot(root){ - var matches = []; - - Object.keys(this.columnsByField).forEach((field) => { - var fieldRoot = field.split(".")[0]; - if(fieldRoot === root){ - matches.push(this.columnsByField[field]); - } - }); - - return matches; - } - - getColumnByIndex(index){ - return this.columnsByIndex[index]; - } - - getFirstVisibleColumn(){ - var index = this.columnsByIndex.findIndex((col) => { - return col.visible; - }); - - return index > -1 ? this.columnsByIndex[index] : false; - } - - getColumns(){ - return this.columns; - } - - findColumnIndex(column){ - return this.columnsByIndex.findIndex((col) => { - return column === col; - }); - } - - //return all columns that are not groups - getRealColumns(){ - return this.columnsByIndex; - } - - //traverse across columns and call action - traverse(callback){ - this.columnsByIndex.forEach((column,i) =>{ - callback(column, i); - }); - } - - //get definitions of actual columns - getDefinitions(active){ - var output = []; - - this.columnsByIndex.forEach((column) => { - if(!active || (active && column.visible)){ - output.push(column.getDefinition()); - } - }); - - return output; - } - - //get full nested definition tree - getDefinitionTree(){ - var output = []; - - this.columns.forEach((column) => { - output.push(column.getDefinition(true)); - }); - - return output; - } - - getComponents(structured){ - var output = [], - columns = structured ? this.columns : this.columnsByIndex; - - columns.forEach((column) => { - output.push(column.getComponent()); - }); - - return output; - } - - getWidth(){ - var width = 0; - - this.columnsByIndex.forEach((column) => { - if(column.visible){ - width += column.getWidth(); - } - }); - - return width; - } - - moveColumn(from, to, after){ - to.element.parentNode.insertBefore(from.element, to.element); - - if(after){ - to.element.parentNode.insertBefore(to.element, from.element); - } - - this.moveColumnActual(from, to, after); - - this.verticalAlignHeaders(); - - this.table.rowManager.reinitialize(); - } - - moveColumnActual(from, to, after){ - if(from.parent.isGroup){ - this._moveColumnInArray(from.parent.columns, from, to, after); - }else { - this._moveColumnInArray(this.columns, from, to, after); - } - - this._moveColumnInArray(this.columnsByIndex, from, to, after, true); - - this.rerenderColumns(true); - - this.dispatch("column-moved", from, to, after); - - if(this.subscribedExternal("columnMoved")){ - this.dispatchExternal("columnMoved", from.getComponent(), this.table.columnManager.getComponents()); - } - } - - _moveColumnInArray(columns, from, to, after, updateRows){ - var fromIndex = columns.indexOf(from), - toIndex, rows = []; - - if (fromIndex > -1) { - - columns.splice(fromIndex, 1); - - toIndex = columns.indexOf(to); - - if (toIndex > -1) { - - if(after){ - toIndex = toIndex+1; - } - - }else { - toIndex = fromIndex; - } - - columns.splice(toIndex, 0, from); - - if(updateRows){ - - rows = this.chain("column-moving-rows", [from, to, after], null, []) || []; - - rows = rows.concat(this.table.rowManager.rows); - - rows.forEach(function(row){ - if(row.cells.length){ - var cell = row.cells.splice(fromIndex, 1)[0]; - row.cells.splice(toIndex, 0, cell); - } - }); - - } - } - } - - scrollToColumn(column, position, ifVisible){ - var left = 0, - offset = column.getLeftOffset(), - adjust = 0, - colEl = column.getElement(); - - - return new Promise((resolve, reject) => { - - if(typeof position === "undefined"){ - position = this.table.options.scrollToColumnPosition; - } - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToColumnIfVisible; - } - - if(column.visible){ - - //align to correct position - switch(position){ - case "middle": - case "center": - adjust = -this.element.clientWidth / 2; - break; - - case "right": - adjust = colEl.clientWidth - this.headersElement.clientWidth; - break; - } - - //check column visibility - if(!ifVisible){ - if(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){ - return false; - } - } - - //calculate scroll position - left = offset + adjust; - - left = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0); - - this.table.rowManager.scrollHorizontal(left); - this.scrollHorizontal(left); - - resolve(); - }else { - console.warn("Scroll Error - Column not visible"); - reject("Scroll Error - Column not visible"); - } - - }); - } - - //////////////// Cell Management ///////////////// - generateCells(row){ - var cells = []; - - this.columnsByIndex.forEach((column) => { - cells.push(column.generateCell(row)); - }); - - return cells; - } - - //////////////// Column Management ///////////////// - getFlexBaseWidth(){ - var totalWidth = this.table.element.clientWidth, //table element width - fixedWidth = 0; - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - this.columnsByIndex.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width || 0; - - minWidth = parseInt(column.minWidth); - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width) ; - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - } - }); - - return fixedWidth; - } - - addColumn(definition, before, nextToColumn){ - return new Promise((resolve, reject) => { - var column = this._addColumn(definition, before, nextToColumn); - - this._reIndexColumns(); - - this.dispatch("column-add", definition, before, nextToColumn); - - if(this.layoutMode() != "fitColumns"){ - column.reinitializeWidth(); - } - - this.redraw(true); - - this.table.rowManager.reinitialize(); - - this.rerenderColumns(); - - resolve(column); - }); - } - - //remove column from system - deregisterColumn(column){ - var field = column.getField(), - index; - - //remove from field list - if(field){ - delete this.columnsByField[field]; - } - - //remove from index list - index = this.columnsByIndex.indexOf(column); - - if(index > -1){ - this.columnsByIndex.splice(index, 1); - } - - //remove from column list - index = this.columns.indexOf(column); - - if(index > -1){ - this.columns.splice(index, 1); - } - - this.verticalAlignHeaders(); - - this.redraw(); - } - - rerenderColumns(update, silent){ - if(!this.redrawBlock){ - this.renderer.rerenderColumns(update, silent); - }else { - if(update === false || (update === true && this.redrawBlockUpdate === null)){ - this.redrawBlockUpdate = update; - } - } - } - - blockRedraw(){ - this.redrawBlock = true; - this.redrawBlockUpdate = null; - } - - restoreRedraw(){ - this.redrawBlock = false; - this.verticalAlignHeaders(); - this.renderer.rerenderColumns(this.redrawBlockUpdate); - - } - - //redraw columns - redraw(force){ - if(Helpers.elVisible(this.element)){ - this.verticalAlignHeaders(); - } - - if(force){ - this.table.rowManager.resetScroll(); - this.table.rowManager.reinitialize(); - } - - if(!this.confirm("table-redrawing", force)){ - this.layoutRefresh(force); - } - - this.dispatch("table-redraw", force); - - this.table.footerManager.redraw(); - } - } - - //public row object - class RowComponent { - - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - getIndex(){ - return this._row.getData("data")[this._row.table.options.index]; - } - - getPosition(){ - return this._row.getPosition(); - } - - watchPosition(callback){ - return this._row.watchPosition(callback); - } - - delete(){ - return this._row.delete(); - } - - scrollTo(position, ifVisible){ - return this._row.table.rowManager.scrollToRow(this._row, position, ifVisible); - } - - move(to, after){ - this._row.moveToRow(to, after); - } - - update(data){ - return this._row.updateData(data); - } - - normalizeHeight(){ - this._row.normalizeHeight(true); - } - - _getSelf(){ - return this._row; - } - - reformat(){ - return this._row.reinitialize(); - } - - getTable(){ - return this._row.table; - } - - getNextRow(){ - var row = this._row.nextRow(); - return row ? row.getComponent() : row; - } - - getPrevRow(){ - var row = this._row.prevRow(); - return row ? row.getComponent() : row; - } - } - - class Row extends CoreFeature{ - constructor (data, parent, type = "row"){ - super(parent.table); - - this.parent = parent; - this.data = {}; - this.type = type; //type of element - this.element = false; - this.modules = {}; //hold module variables; - this.cells = []; - this.height = 0; //hold element height - this.heightStyled = ""; //hold element height pre-styled to improve render efficiency - this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //hold elements outer height - this.initialized = false; //element has been rendered - this.heightInitialized = false; //element has resized cells to fit - this.position = 0; //store position of element in row list - this.positionWatchers = []; - - this.component = null; - - this.created = false; - - this.setData(data); - } - - create(){ - if(!this.created){ - this.created = true; - this.generateElement(); - } - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.setAttribute("role", "row"); - - this.element = el; - } - - getElement(){ - this.create(); - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - generateElement(){ - this.createElement(); - this.dispatch("row-init", this); - } - - generateCells(){ - this.cells = this.table.columnManager.generateCells(this); - } - - //functions to setup on first render - initialize(force, inFragment){ - this.create(); - - if(!this.initialized || force){ - - this.deleteCells(); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.dispatch("row-layout-before", this); - - this.generateCells(); - - this.initialized = true; - - this.table.columnManager.renderer.renderRowCells(this, inFragment); - - if(force){ - this.normalizeHeight(); - } - - this.dispatch("row-layout", this); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - - this.dispatch("row-layout-after", this); - }else { - this.table.columnManager.renderer.rerenderRowCells(this, inFragment); - } - } - - rendered(){ - this.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - - reinitializeHeight(){ - this.heightInitialized = false; - - if(this.element && this.element.offsetParent !== null){ - this.normalizeHeight(true); - } - } - - deinitialize(){ - this.initialized = false; - } - - deinitializeHeight(){ - this.heightInitialized = false; - } - - reinitialize(children){ - this.initialized = false; - this.heightInitialized = false; - - if(!this.manualHeight){ - this.height = 0; - this.heightStyled = ""; - } - - if(this.element && this.element.offsetParent !== null){ - this.initialize(true); - } - - this.dispatch("row-relayout", this); - } - - //get heights when doing bulk row style calcs in virtual DOM - calcHeight(force){ - var maxHeight = 0, - minHeight; - - if(this.table.options.rowHeight){ - this.height = this.table.options.rowHeight; - }else { - minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0; - - this.cells.forEach(function(cell){ - var height = cell.getHeight(); - if(height > maxHeight){ - maxHeight = height; - } - }); - - if(force){ - this.height = Math.max(maxHeight, minHeight); - }else { - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); - } - } - - this.heightStyled = this.height ? this.height + "px" : ""; - this.outerHeight = this.element.offsetHeight; - } - - //set of cells - setCellHeight(){ - this.cells.forEach(function(cell){ - cell.setHeight(); - }); - - this.heightInitialized = true; - } - - clearCellHeight(){ - this.cells.forEach(function(cell){ - cell.clearHeight(); - }); - } - - //normalize the height of elements in the row - normalizeHeight(force){ - if(force && !this.table.options.rowHeight){ - this.clearCellHeight(); - } - - this.calcHeight(force); - - this.setCellHeight(); - } - - //set height of rows - setHeight(height, force){ - if(this.height != height || force){ - - this.manualHeight = true; - - this.height = height; - this.heightStyled = height ? height + "px" : ""; - - this.setCellHeight(); - - // this.outerHeight = this.element.outerHeight(); - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - //return rows outer Width - getWidth(){ - return this.element.offsetWidth; - } - - //////////////// Cell Management ///////////////// - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Data Management ///////////////// - setData(data){ - this.data = this.chain("row-data-init-before", [this, data], undefined, data); - - this.dispatch("row-data-init-after", this); - } - - //update the rows data - updateData(updatedData){ - var visible = this.element && Helpers.elVisible(this.element), - tempData = {}, - newRowData; - - return new Promise((resolve, reject) => { - - if(typeof updatedData === "string"){ - updatedData = JSON.parse(updatedData); - } - - this.dispatch("row-data-save-before", this); - - if(this.subscribed("row-data-changing")){ - tempData = Object.assign(tempData, this.data); - tempData = Object.assign(tempData, updatedData); - } - - newRowData = this.chain("row-data-changing", [this, tempData, updatedData], null, updatedData); - - //set data - for (let attrname in newRowData) { - this.data[attrname] = newRowData[attrname]; - } - - this.dispatch("row-data-save-after", this); - - //update affected cells only - for (let attrname in updatedData) { - - let columns = this.table.columnManager.getColumnsByFieldRoot(attrname); - - columns.forEach((column) => { - let cell = this.getCell(column.getField()); - - if(cell){ - let value = column.getFieldValue(newRowData); - if(cell.getValue() !== value){ - cell.setValueProcessData(value); - - if(visible){ - cell.cellRendered(); - } - } - } - }); - } - - //Partial reinitialization if visible - if(visible){ - this.normalizeHeight(true); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - }else { - this.initialized = false; - this.height = 0; - this.heightStyled = ""; - } - - this.dispatch("row-data-changed", this, visible, updatedData); - - //this.reinitialize(); - - this.dispatchExternal("rowUpdated", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - resolve(); - }); - } - - getData(transform){ - if(transform){ - return this.chain("row-data-retrieve", [this, transform], null, this.data); - } - - return this.data; - } - - getCell(column){ - var match = false; - - column = this.table.columnManager.findColumn(column); - - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - match = this.cells.find(function(cell){ - return cell.column === column; - }); - - return match; - } - - getCellIndex(findCell){ - return this.cells.findIndex(function(cell){ - return cell === findCell; - }); - } - - findCell(subject){ - return this.cells.find((cell) => { - return cell.element === subject; - }); - } - - getCells(){ - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - return this.cells; - } - - nextRow(){ - var row = this.table.rowManager.nextDisplayRow(this, true); - return row || false; - } - - prevRow(){ - var row = this.table.rowManager.prevDisplayRow(this, true); - return row || false; - } - - moveToRow(to, before){ - var toRow = this.table.rowManager.findRow(to); - - if(toRow){ - this.table.rowManager.moveRowActual(this, toRow, !before); - this.table.rowManager.refreshActiveData("display", false, true); - }else { - console.warn("Move Error - No matching row found:", to); - } - } - - ///////////////////// Actions ///////////////////// - delete(){ - this.dispatch("row-delete", this); - - this.deleteActual(); - - return Promise.resolve(); - } - - deleteActual(blockRedraw){ - this.detachModules(); - - this.table.rowManager.deleteRow(this, blockRedraw); - - this.deleteCells(); - - this.initialized = false; - this.heightInitialized = false; - this.element = false; - - this.dispatch("row-deleted", this); - } - - detachModules(){ - this.dispatch("row-deleting", this); - } - - deleteCells(){ - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - } - - wipe(){ - this.detachModules(); - this.deleteCells(); - - if(this.element){ - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - this.element = false; - this.modules = {}; - } - - isDisplayed(){ - return this.table.rowManager.getDisplayRows().includes(this); - } - - getPosition(){ - return this.isDisplayed() ? this.position : false; - } - - setPosition(position){ - if(position != this.position){ - this.position = position; - - this.positionWatchers.forEach((callback) => { - callback(this.position); - }); - } - } - - watchPosition(callback){ - this.positionWatchers.push(callback); - - callback(this.position); - } - - getGroup(){ - return this.modules.group || false; - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new RowComponent(this); - } - - return this.component; - } - } - - class BasicVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - } - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.scrollTop = 0; - element.scrollLeft = 0; - - element.style.minWidth = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - } - - renderRows() { - var element = this.tableElement, - onlyGroupHeaders = true, - tableFrag = document.createDocumentFragment(), - rows = this.rows(); - - rows.forEach((row, index) => { - this.styleRow(row, index); - row.initialize(false, true); - - if (row.type !== "group") { - onlyGroupHeaders = false; - } - - tableFrag.appendChild(row.getElement()); - }); - - element.appendChild(tableFrag); - - rows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - rows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - - - rerenderRows(callback){ - this.clearRows(); - - if(callback){ - callback(); - } - - this.renderRows(); - } - - scrollToRowNearestTop(row){ - var rowTop = Helpers.elOffset(row.getElement()).top; - - return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop)); - } - - scrollToRow(row){ - var rowEl = row.getElement(); - - this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; - } - - visibleRows(includingBuffer){ - return this.rows(); - } - - } - - class VirtualDomVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomRowHeight = 20; //approximation of row heights for padding - - this.vDomTop = 0; //hold position for first rendered row in the virtual DOM - this.vDomBottom = 0; //hold position for last rendered row in the virtual DOM - - this.vDomScrollPosTop = 0; //last scroll position of the vDom top; - this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom; - - this.vDomTopPad = 0; //hold value of padding for top of virtual DOM - this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM - - this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go - - this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling - - this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows) - this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin - - this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed - this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.style.paddingTop = ""; - element.style.paddingBottom = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - - this.elementVertical.scrollTop = 0; - this.elementVertical.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomTop = 0; - this.vDomBottom = 0; - this.vDomTopPad = 0; - this.vDomBottomPad = 0; - this.vDomScrollPosTop = 0; - this.vDomScrollPosBottom = 0; - } - - renderRows(){ - this._virtualRenderFill(); - } - - rerenderRows(callback){ - var scrollTop = this.elementVertical.scrollTop; - var topRow = false; - var topOffset = false; - - var left = this.table.rowManager.scrollLeft; - - var rows = this.rows(); - - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - - if(rows[i]){ - var diff = scrollTop - rows[i].getElement().offsetTop; - - if(topOffset === false || Math.abs(diff) < topOffset){ - topOffset = diff; - topRow = i; - }else { - break; - } - } - } - - rows.forEach((row) => { - row.deinitializeHeight(); - }); - - if(callback){ - callback(); - } - - if(this.rows().length){ - this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0); - }else { - this.clear(); - this.table.rowManager.tableEmpty(); - } - - this.scrollColumns(left); - } - - scrollColumns(left){ - this.table.rowManager.scrollHorizontal(left); - } - - scrollRows(top, dir){ - var topDiff = top - this.vDomScrollPosTop; - var bottomDiff = top - this.vDomScrollPosBottom; - var margin = this.vDomWindowBuffer * 2; - var rows = this.rows(); - - this.scrollTop = top; - - if(-topDiff > margin || bottomDiff > margin){ - //if big scroll redraw table; - var left = this.table.rowManager.scrollLeft; - this._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length)); - this.scrollColumns(left); - }else { - - if(dir){ - //scrolling up - if(topDiff < 0){ - this._addTopRow(rows, -topDiff); - } - - if(bottomDiff < 0){ - //hide bottom row if needed - if(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){ - this._removeBottomRow(rows, -bottomDiff); - }else { - this.vDomScrollPosBottom = this.scrollTop; - } - } - }else { - - if(bottomDiff >= 0){ - this._addBottomRow(rows, bottomDiff); - } - - //scrolling down - if(topDiff >= 0){ - //hide top row if needed - if(this.scrollTop > this.vDomWindowBuffer){ - this._removeTopRow(rows, topDiff); - }else { - this.vDomScrollPosTop = this.scrollTop; - } - } - } - } - } - - resize(){ - this.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight; - } - - scrollToRowNearestTop(row){ - var rowIndex = this.rows().indexOf(row); - - return !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex)); - } - - scrollToRow(row){ - var index = this.rows().indexOf(row); - - if(index > -1){ - this._virtualRenderFill(index, true); - } - } - - visibleRows(includingBuffer){ - var topEdge = this.elementVertical.scrollTop, - bottomEdge = this.elementVertical.clientHeight + topEdge, - topFound = false, - topRow = 0, - bottomRow = 0, - rows = this.rows(); - - if(includingBuffer){ - topRow = this.vDomTop; - bottomRow = this.vDomBottom; - }else { - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - if(rows[i]){ - if(!topFound){ - if((topEdge - rows[i].getElement().offsetTop) >= 0){ - topRow = i; - }else { - topFound = true; - - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - }else { - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - } - } - } - - return rows.slice(topRow, bottomRow + 1); - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - //full virtual render - _virtualRenderFill(position, forceMove, offset) { - var element = this.tableElement, - holder = this.elementVertical, - topPad = 0, - rowsHeight = 0, - rowHeight = 0, - heightOccupied = 0, - topPadHeight = 0, - i = 0, - rows = this.rows(), - rowsCount = rows.length, - index = 0, - row, - rowFragment, - renderedRows = [], - totalRowsRendered = 0, - rowsToRender = 0, - fixedHeight = this.table.rowManager.fixedHeight, - containerHeight = this.elementVertical.clientHeight, - avgRowHeight = this.table.options.rowHeight, - resized = true; - - position = position || 0; - - offset = offset || 0; - - if(!position){ - this.clear(); - }else { - while(element.firstChild) element.removeChild(element.firstChild); - - //check if position is too close to bottom of table - heightOccupied = (rowsCount - position + 1) * this.vDomRowHeight; - - if(heightOccupied < containerHeight){ - position -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight); - if(position < 0){ - position = 0; - } - } - - //calculate initial pad - topPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position); - position -= topPad; - } - - if(rowsCount && Helpers.elVisible(this.elementVertical)){ - this.vDomTop = position; - this.vDomBottom = position -1; - - if(fixedHeight || this.table.options.maxHeight) { - if(avgRowHeight) { - rowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight); - } - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender)); - } - else { - rowsToRender = rowsCount; - } - - while(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) { - renderedRows = []; - rowFragment = document.createDocumentFragment(); - - i = 0; - - while ((i < rowsToRender) && this.vDomBottom < rowsCount -1) { - index = this.vDomBottom + 1, - row = rows[index]; - - this.styleRow(row, index); - - row.initialize(false, true); - if(!row.heightInitialized && !this.table.options.rowHeight){ - row.clearCellHeight(); - } - - rowFragment.appendChild(row.getElement()); - renderedRows.push(row); - this.vDomBottom ++; - i++; - } - - if(!renderedRows.length){ - break; - } - - element.appendChild(rowFragment); - - // NOTE: The next 3 loops are separate on purpose - // This is to batch up the dom writes and reads which drastically improves performance - - renderedRows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - renderedRows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - renderedRows.forEach((row) => { - rowHeight = row.getHeight(); - - if(totalRowsRendered < topPad){ - topPadHeight += rowHeight; - }else { - rowsHeight += rowHeight; - } - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - totalRowsRendered++; - }); - - resized = this.table.rowManager.adjustTableSize(); - containerHeight = this.elementVertical.clientHeight; - if(resized && (fixedHeight || this.table.options.maxHeight)) - { - avgRowHeight = rowsHeight / totalRowsRendered; - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight))); - } - } - - if(!position){ - this.vDomTopPad = 0; - //adjust row height to match average of rendered elements - this.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered); - this.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1); - - this.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight; - }else { - this.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset; - this.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0); - } - - element.style.paddingTop = this.vDomTopPad+"px"; - element.style.paddingBottom = this.vDomBottomPad+"px"; - - if(forceMove){ - this.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0); - } - - this.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight); - - //adjust for horizontal scrollbar if present (and not at top of table) - if(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){ - this.scrollTop += this.elementVertical.offsetHeight - containerHeight; - } - - this.vDomScrollPosTop = this.scrollTop; - this.vDomScrollPosBottom = this.scrollTop; - - holder.scrollTop = this.scrollTop; - - this.dispatch("render-virtual-fill"); - } - } - - _addTopRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomTop -1, - i = 0, - working = true; - - while(working){ - if(this.vDomTop){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.insertBefore(row.getElement(), table.firstChild); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomTop--; - index--; - i++; - - }else { - working = false; - } - - }else { - working = false; - } - - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomTopPad -= paddingAdjust; - - if(this.vDomTopPad < 0){ - this.vDomTopPad = index * this.vDomRowHeight; - } - - if(index < 1){ - this.vDomTopPad = 0; - } - - table.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop -= paddingAdjust; - } - } - - _removeTopRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomTop], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomTop++; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomTopPad += paddingAdjust; - this.tableElement.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer; - } - } - - _addBottomRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomBottom + 1, - i = 0, - working = true; - - while(working){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.appendChild(row.getElement()); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomBottom++; - index++; - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomBottomPad -= paddingAdjust; - - if(this.vDomBottomPad < 0 || index == rows.length -1){ - this.vDomBottomPad = 0; - } - - table.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom += paddingAdjust; - } - } - - _removeBottomRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomBottom], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomBottom --; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomBottomPad += paddingAdjust; - - if(this.vDomBottomPad < 0){ - this.vDomBottomPad = 0; - } - - this.tableElement.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom -= paddingAdjust; - } - } - - _quickNormalizeRowHeight(rows){ - for(let row of rows){ - row.calcHeight(); - } - - for(let row of rows){ - row.setCellHeight(); - } - } - } - - class RowManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.element = this.createHolderElement(); //containing element - this.tableElement = this.createTableElement(); //table element - this.heightFixer = this.createTableElement(); //table element - this.placeholder = null; //placeholder element - this.placeholderContents = null; //placeholder element - - this.firstRender = false; //handle first render - this.renderMode = "virtual"; //current rendering mode - this.fixedHeight = false; //current rendering mode - - this.rows = []; //hold row data objects - this.activeRowsPipeline = []; //hold calculation of active rows - this.activeRows = []; //rows currently available to on display in the table - this.activeRowsCount = 0; //count of active rows - - this.displayRows = []; //rows currently on display in the table - this.displayRowsCount = 0; //count of display rows - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed - this.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed - - this.dataPipeline = []; //hold data pipeline tasks - this.displayPipeline = []; //hold data display pipeline tasks - - this.scrollbarWidth = 0; - - this.renderer = null; - } - - //////////////// Setup Functions ///////////////// - - createHolderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-tableholder"); - el.setAttribute("tabindex", 0); - // el.setAttribute("role", "rowgroup"); - - return el; - } - - createTableElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-table"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - initializePlaceholder(){ - var placeholder = this.table.options.placeholder; - - if(typeof placeholder === "function"){ - placeholder = placeholder.call(this.table); - } - - placeholder = this.chain("placeholder", [placeholder], placeholder, placeholder) || placeholder; - - //configure placeholder element - if(placeholder){ - let el = document.createElement("div"); - el.classList.add("tabulator-placeholder"); - - if(typeof placeholder == "string"){ - let contents = document.createElement("div"); - contents.classList.add("tabulator-placeholder-contents"); - contents.innerHTML = placeholder; - - el.appendChild(contents); - - this.placeholderContents = contents; - - }else if(typeof HTMLElement !== "undefined" && placeholder instanceof HTMLElement){ - - el.appendChild(placeholder); - this.placeholderContents = placeholder; - }else { - console.warn("Invalid placeholder provided, must be string or HTML Element", placeholder); - - this.el = null; - } - - this.placeholder = el; - } - } - - //return containing element - getElement(){ - return this.element; - } - - //return table element - getTableElement(){ - return this.tableElement; - } - - initialize(){ - this.initializePlaceholder(); - this.initializeRenderer(); - - //initialize manager - this.element.appendChild(this.tableElement); - - this.firstRender = true; - - //scroll header along with table body - this.element.addEventListener("scroll", () => { - var left = this.element.scrollLeft, - leftDir = this.scrollLeft > left, - top = this.element.scrollTop, - topDir = this.scrollTop > top; - - //handle horizontal scrolling - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.dispatch("scroll-horizontal", left, leftDir); - this.dispatchExternal("scrollHorizontal", left, leftDir); - - this._positionPlaceholder(); - } - - //handle vertical scrolling - if(this.scrollTop != top){ - this.scrollTop = top; - - this.renderer.scrollRows(top, topDir); - - this.dispatch("scroll-vertical", top, topDir); - this.dispatchExternal("scrollVertical", top, topDir); - } - }); - } - - ////////////////// Row Manipulation ////////////////// - findRow(subject){ - if(typeof subject == "object"){ - if(subject instanceof Row){ - //subject is row element - return subject; - }else if(subject instanceof RowComponent){ - //subject is public row component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - //subject is a HTML element of the row - let match = this.rows.find((row) => { - return row.getElement() === subject; - }); - - return match || false; - }else if(subject === null){ - return false; - } - }else if(typeof subject == "undefined"){ - return false; - }else { - //subject should be treated as the index of the row - let match = this.rows.find((row) => { - return row.data[this.table.options.index] == subject; - }); - - return match || false; - } - - //catch all for any other type of input - return false; - } - - getRowFromDataObject(data){ - var match = this.rows.find((row) => { - return row.data === data; - }); - - return match || false; - } - - getRowFromPosition(position){ - return this.getDisplayRows().find((row) => { - return row.getPosition() === position && row.isDisplayed(); - }); - } - - scrollToRow(row, position, ifVisible){ - return this.renderer.scrollToRowPosition(row, position, ifVisible); - } - - ////////////////// Data Handling ////////////////// - setData(data, renderInPosition, columnsChanged){ - return new Promise((resolve, reject)=>{ - if(renderInPosition && this.getDisplayRows().length){ - if(this.table.options.pagination){ - this._setDataActual(data, true); - }else { - this.reRenderInPosition(() => { - this._setDataActual(data); - }); - } - }else { - if(this.table.options.autoColumns && columnsChanged && this.table.initialized){ - this.table.columnManager.generateColumnsFromRowData(data); - } - this.resetScroll(); - - this._setDataActual(data); - } - - resolve(); - }); - } - - _setDataActual(data, renderInPosition){ - this.dispatchExternal("dataProcessing", data); - - this._wipeElements(); - - if(Array.isArray(data)){ - this.dispatch("data-processing", data); - - data.forEach((def, i) => { - if(def && typeof def === "object"){ - var row = new Row(def, this); - this.rows.push(row); - }else { - console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def); - } - }); - - this.refreshActiveData(false, false, renderInPosition); - - this.dispatch("data-processed", data); - this.dispatchExternal("dataProcessed", data); - }else { - console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data, "\nData: ", data); - } - } - - _wipeElements(){ - this.dispatch("rows-wipe"); - - this.destroy(); - - this.adjustTableSize(); - - this.dispatch("rows-wiped"); - } - - destroy(){ - this.rows.forEach((row) => { - row.wipe(); - }); - - this.rows = []; - this.activeRows = []; - this.activeRowsPipeline = []; - this.activeRowsCount = 0; - this.displayRows = []; - this.displayRowsCount = 0; - } - - deleteRow(row, blockRedraw){ - var allIndex = this.rows.indexOf(row), - activeIndex = this.activeRows.indexOf(row); - - if(activeIndex > -1){ - this.activeRows.splice(activeIndex, 1); - } - - if(allIndex > -1){ - this.rows.splice(allIndex, 1); - } - - this.setActiveRows(this.activeRows); - - this.displayRowIterator((rows) => { - var displayIndex = rows.indexOf(row); - - if(displayIndex > -1){ - rows.splice(displayIndex, 1); - } - }); - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - this.regenerateRowPositions(); - - this.dispatchExternal("rowDeleted", row.getComponent()); - - if(!this.displayRowsCount){ - this.tableEmpty(); - } - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.getData()); - } - } - - addRow(data, pos, index, blockRedraw){ - var row = this.addRowActual(data, pos, index, blockRedraw); - return row; - } - - //add multiple rows - addRows(data, pos, index, refreshDisplayOnly){ - var rows = []; - - return new Promise((resolve, reject) => { - pos = this.findAddRowPos(pos); - - if(!Array.isArray(data)){ - data = [data]; - } - - if((typeof index == "undefined" && pos) || (typeof index !== "undefined" && !pos)){ - data.reverse(); - } - - data.forEach((item, i) => { - var row = this.addRow(item, pos, index, true); - rows.push(row); - this.dispatch("row-added", row, item, pos, index); - }); - - this.refreshActiveData(refreshDisplayOnly ? "displayPipeline" : false, false, true); - - this.regenerateRowPositions(); - - if(rows.length){ - this._clearPlaceholder(); - } - - resolve(rows); - }); - } - - findAddRowPos(pos){ - if(typeof pos === "undefined"){ - pos = this.table.options.addRowPos; - } - - if(pos === "pos"){ - pos = true; - } - - if(pos === "bottom"){ - pos = false; - } - - return pos; - } - - addRowActual(data, pos, index, blockRedraw){ - var row = data instanceof Row ? data : new Row(data || {}, this), - top = this.findAddRowPos(pos), - allIndex = -1, - activeIndex, chainResult; - - if(!index){ - chainResult = this.chain("row-adding-position", [row, top], null, {index, top}); - - index = chainResult.index; - top = chainResult.top; - } - - if(typeof index !== "undefined"){ - index = this.findRow(index); - } - - index = this.chain("row-adding-index", [row, index, top], null, index); - - if(index){ - allIndex = this.rows.indexOf(index); - } - - if(index && allIndex > -1){ - activeIndex = this.activeRows.indexOf(index); - - this.displayRowIterator(function(rows){ - var displayIndex = rows.indexOf(index); - - if(displayIndex > -1){ - rows.splice((top ? displayIndex : displayIndex + 1), 0, row); - } - }); - - if(activeIndex > -1){ - this.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row); - } - - this.rows.splice((top ? allIndex : allIndex + 1), 0, row); - - }else { - - if(top){ - - this.displayRowIterator(function(rows){ - rows.unshift(row); - }); - - this.activeRows.unshift(row); - this.rows.unshift(row); - }else { - this.displayRowIterator(function(rows){ - rows.push(row); - }); - - this.activeRows.push(row); - this.rows.push(row); - } - } - - this.setActiveRows(this.activeRows); - - this.dispatchExternal("rowAdded", row.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - return row; - } - - moveRow(from, to, after){ - this.dispatch("row-move", from, to, after); - - this.moveRowActual(from, to, after); - - this.regenerateRowPositions(); - - this.dispatch("row-moved", from, to, after); - this.dispatchExternal("rowMoved", from.getComponent()); - } - - moveRowActual(from, to, after){ - this.moveRowInArray(this.rows, from, to, after); - this.moveRowInArray(this.activeRows, from, to, after); - - this.displayRowIterator((rows) => { - this.moveRowInArray(rows, from, to, after); - }); - - this.dispatch("row-moving", from, to, after); - } - - moveRowInArray(rows, from, to, after){ - var fromIndex, toIndex, start, end; - - if(from !== to){ - - fromIndex = rows.indexOf(from); - - if (fromIndex > -1) { - - rows.splice(fromIndex, 1); - - toIndex = rows.indexOf(to); - - if (toIndex > -1) { - - if(after){ - rows.splice(toIndex+1, 0, from); - }else { - rows.splice(toIndex, 0, from); - } - - }else { - rows.splice(fromIndex, 0, from); - } - } - - //restyle rows - if(rows === this.getDisplayRows()){ - - start = fromIndex < toIndex ? fromIndex : toIndex; - end = toIndex > fromIndex ? toIndex : fromIndex +1; - - for(let i = start; i <= end; i++){ - if(rows[i]){ - this.styleRow(rows[i], i); - } - } - } - } - } - - clearData(){ - this.setData([]); - } - - getRowIndex(row){ - return this.findRowIndex(row, this.rows); - } - - getDisplayRowIndex(row){ - var index = this.getDisplayRows().indexOf(row); - return index > -1 ? index : false; - } - - nextDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - nextRow = false; - - - if(index !== false && index < this.displayRowsCount -1){ - nextRow = this.getDisplayRows()[index+1]; - } - - if(nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")){ - return this.nextDisplayRow(nextRow, rowOnly); - } - - return nextRow; - } - - prevDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - prevRow = false; - - if(index){ - prevRow = this.getDisplayRows()[index-1]; - } - - if(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")){ - return this.prevDisplayRow(prevRow, rowOnly); - } - - return prevRow; - } - - findRowIndex(row, list){ - var rowIndex; - - row = this.findRow(row); - - if(row){ - rowIndex = list.indexOf(row); - - if(rowIndex > -1){ - return rowIndex; - } - } - - return false; - } - - getData(active, transform){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - if(row.type == "row"){ - output.push(row.getData(transform || "data")); - } - }); - - return output; - } - - getComponents(active){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - return output; - } - - getDataCount(active){ - var rows = this.getRows(active); - - return rows.length; - } - - scrollHorizontal(left){ - this.scrollLeft = left; - this.element.scrollLeft = left; - - this.dispatch("scroll-horizontal", left); - } - - registerDataPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.dataPipeline.push({handler, priority}); - this.dataPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Data pipeline handlers must have a priority in order to be registered"); - } - } - - registerDisplayPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.displayPipeline.push({handler, priority}); - this.displayPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Display pipeline handlers must have a priority in order to be registered"); - } - } - - //set active data set - refreshActiveData(handler, skipStage, renderInPosition){ - var table = this.table, - stage = "", - index = 0, - cascadeOrder = ["all", "dataPipeline", "display", "displayPipeline", "end"]; - - if(!this.table.destroyed){ - if(typeof handler === "function"){ - index = this.dataPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "dataPipeline"; - - if(skipStage){ - if(index == this.dataPipeline.length - 1){ - stage = "display"; - }else { - index++; - } - } - }else { - index = this.displayPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "displayPipeline"; - - if(skipStage){ - if(index == this.displayPipeline.length - 1){ - stage = "end"; - }else { - index++; - } - } - }else { - console.error("Unable to refresh data, invalid handler provided", handler); - return; - } - } - }else { - stage = handler || "all"; - index = 0; - } - - if(this.redrawBlock){ - if(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){ - this.redrawBlockRestoreConfig = { - handler: handler, - skipStage: skipStage, - renderInPosition: renderInPosition, - stage:stage, - index:index, - }; - } - - return; - }else { - if(Helpers.elVisible(this.element)){ - if(renderInPosition){ - this.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition)); - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - - if(!handler){ - this.table.columnManager.renderer.renderColumns(); - } - - this.renderTable(); - - if(table.options.layoutColumnsOnNewData){ - this.table.columnManager.redraw(true); - } - } - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - } - - this.dispatch("data-refreshed"); - } - } - } - - refreshPipelines(handler, stage, index, renderInPosition){ - this.dispatch("data-refreshing"); - - if(!handler){ - this.activeRowsPipeline[0] = this.rows.slice(0); - } - - //cascade through data refresh stages - switch(stage){ - case "all": - //handle case where all data needs refreshing - - case "dataPipeline": - - for(let i = index; i < this.dataPipeline.length; i++){ - let result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0)); - - this.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0); - } - - this.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]); - - case "display": - index = 0; - this.resetDisplayRows(); - - case "displayPipeline": - for(let i = index; i < this.displayPipeline.length; i++){ - let result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition); - - this.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i); - } - - case "end": - //case to handle scenario when trying to skip past end stage - this.regenerateRowPositions(); - } - - if(this.getDisplayRows().length){ - this._clearPlaceholder(); - } - } - - //regenerate row positions - regenerateRowPositions(){ - var rows = this.getDisplayRows(); - var index = 1; - - rows.forEach((row) => { - if (row.type === "row"){ - row.setPosition(index); - index++; - } - }); - } - - setActiveRows(activeRows){ - this.activeRows = this.activeRows = Object.assign([], activeRows); - this.activeRowsCount = this.activeRows.length; - } - - //reset display rows array - resetDisplayRows(){ - this.displayRows = []; - - this.displayRows.push(this.activeRows.slice(0)); - - this.displayRowsCount = this.displayRows[0].length; - } - - //set display row pipeline data - setDisplayRows(displayRows, index){ - this.displayRows[index] = displayRows; - - if(index == this.displayRows.length -1){ - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - } - - getDisplayRows(index){ - if(typeof index == "undefined"){ - return this.displayRows.length ? this.displayRows[this.displayRows.length -1] : []; - }else { - return this.displayRows[index] || []; - } - } - - getVisibleRows(chain, viewable){ - var rows = Object.assign([], this.renderer.visibleRows(!viewable)); - - if(chain){ - rows = this.chain("rows-visible", [viewable], rows, rows); - } - - return rows; - } - - //repeat action across display rows - displayRowIterator(callback){ - this.activeRowsPipeline.forEach(callback); - this.displayRows.forEach(callback); - - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - - //return only actual rows (not group headers etc) - getRows(type){ - var rows = []; - - switch(type){ - case "active": - rows = this.activeRows; - break; - - case "display": - rows = this.table.rowManager.getDisplayRows(); - break; - - case "visible": - rows = this.getVisibleRows(false, true); - break; - - default: - rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows; - } - - return rows; - } - - ///////////////// Table Rendering ///////////////// - //trigger rerender of table in current position - reRenderInPosition(callback){ - if(this.redrawBlock){ - if(callback){ - callback(); - }else { - this.redrawBlockRenderInPosition = true; - } - }else { - this.dispatchExternal("renderStarted"); - - this.renderer.rerenderRows(callback); - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - } - - scrollBarCheck(){ - var scrollbarWidth = 0; - - //adjust for vertical scrollbar moving table when present - if(this.element.scrollHeight > this.element.clientHeight){ - scrollbarWidth = this.element.offsetWidth - this.element.clientWidth; - } - - if(scrollbarWidth !== this.scrollbarWidth){ - this.scrollbarWidth = scrollbarWidth; - this.dispatch("scrollbar-vertical", scrollbarWidth); - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomVertical, - "basic": BasicVertical, - }; - - if(typeof this.table.options.renderVertical === "string"){ - renderClass = renderers[this.table.options.renderVertical]; - }else { - renderClass = this.table.options.renderVertical; - } - - if(renderClass){ - this.renderMode = this.table.options.renderVertical; - - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - - if((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){ - this.fixedHeight = true; - }else { - this.fixedHeight = false; - } - }else { - console.error("Unable to find matching renderer:", this.table.options.renderVertical); - } - } - - getRenderMode(){ - return this.renderMode; - } - - renderTable(){ - this.dispatchExternal("renderStarted"); - - this.element.scrollTop = 0; - - this._clearTable(); - - if(this.displayRowsCount){ - this.renderer.renderRows(); - - if(this.firstRender){ - this.firstRender = false; - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.layoutRefresh(true); - } - }else { - this.renderEmptyScroll(); - } - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.dispatch("table-layout"); - - if(!this.displayRowsCount){ - this._showPlaceholder(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - - //show scrollbars on empty table div - renderEmptyScroll(){ - if(this.placeholder){ - this.tableElement.style.display = "none"; - }else { - this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px"; - // this.tableElement.style.minHeight = "1px"; - // this.tableElement.style.visibility = "hidden"; - } - } - - _clearTable(){ - this._clearPlaceholder(); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.renderer.clearRows(); - } - - tableEmpty(){ - this.renderEmptyScroll(); - this._showPlaceholder(); - } - - _showPlaceholder(){ - if(this.placeholder){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - this.initializePlaceholder(); - - this.placeholder.setAttribute("tabulator-render-mode", this.renderMode); - - this.getElement().appendChild(this.placeholder); - this._positionPlaceholder(); - - this.adjustTableSize(); - } - } - - _clearPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - // clear empty table placeholder min - this.tableElement.style.minWidth = ""; - this.tableElement.style.display = ""; - } - - _positionPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.style.width = this.table.columnManager.getWidth() + "px"; - this.placeholderContents.style.width = this.table.rowManager.element.clientWidth + "px"; - this.placeholderContents.style.marginLeft = this.scrollLeft + "px"; - } - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - //normalize height of active rows - normalizeHeight(){ - this.activeRows.forEach(function(row){ - row.normalizeHeight(); - }); - } - - //adjust the height of the table holder to fit in the Tabulator element - adjustTableSize(){ - let initialHeight = this.element.clientHeight, minHeight; - let resized = false; - - if(this.renderer.verticalFillMode === "fill"){ - let otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0)); - - if(this.fixedHeight){ - minHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + "px"; - - const height = "calc(100% - " + otherHeight + "px)"; - this.element.style.minHeight = minHeight || "calc(100% - " + otherHeight + "px)"; - this.element.style.height = height; - this.element.style.maxHeight = height; - } else { - this.element.style.height = ""; - this.element.style.height = - this.table.element.clientHeight - otherHeight + "px"; - this.element.scrollTop = this.scrollTop; - } - - this.renderer.resize(); - - //check if the table has changed size when dealing with variable height tables - if(!this.fixedHeight && initialHeight != this.element.clientHeight){ - resized = true; - if(this.subscribed("table-resize")){ - this.dispatch("table-resize"); - }else { - this.redraw(); - } - } - - this.scrollBarCheck(); - } - - this._positionPlaceholder(); - return resized; - } - - //reinitialize all rows - reinitialize(){ - this.rows.forEach(function(row){ - row.reinitialize(true); - }); - } - - //prevent table from being redrawn - blockRedraw (){ - this.redrawBlock = true; - this.redrawBlockRestoreConfig = false; - } - - //restore table redrawing - restoreRedraw (){ - this.redrawBlock = false; - - if(this.redrawBlockRestoreConfig){ - this.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition); - - this.redrawBlockRestoreConfig = false; - }else { - if(this.redrawBlockRenderInPosition){ - this.reRenderInPosition(); - } - } - - this.redrawBlockRenderInPosition = false; - } - - //redraw table - redraw (force){ - const resized = this.adjustTableSize(); - this.table.tableWidth = this.table.element.clientWidth; - - if(!force){ - if(resized) { - this.reRenderInPosition(); - } - this.scrollHorizontal(this.scrollLeft); - }else { - this.renderTable(); - } - } - - resetScroll(){ - this.element.scrollLeft = 0; - this.element.scrollTop = 0; - - if(this.table.browser === "ie"){ - var event = document.createEvent("Event"); - event.initEvent("scroll", false, true); - this.element.dispatchEvent(event); - }else { - this.element.dispatchEvent(new Event('scroll')); - } - } - } - - class FooterManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.active = false; - this.element = this.createElement(); //containing element - this.containerElement = this.createContainerElement(); //containing element - this.external = false; - } - - initialize(){ - this.initializeElement(); - } - - createElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer"); - - return el; - } - - - createContainerElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer-contents"); - - this.element.appendChild(el); - - return el; - } - - initializeElement(){ - if(this.table.options.footerElement){ - - switch(typeof this.table.options.footerElement){ - case "string": - if(this.table.options.footerElement[0] === "<"){ - this.containerElement.innerHTML = this.table.options.footerElement; - }else { - this.external = true; - this.containerElement = document.querySelector(this.table.options.footerElement); - } - break; - - default: - this.element = this.table.options.footerElement; - break; - } - } - } - - getElement(){ - return this.element; - } - - append(element){ - this.activate(); - - this.containerElement.appendChild(element); - this.table.rowManager.adjustTableSize(); - } - - prepend(element){ - this.activate(); - - this.element.insertBefore(element, this.element.firstChild); - this.table.rowManager.adjustTableSize(); - } - - remove(element){ - element.parentNode.removeChild(element); - this.deactivate(); - } - - deactivate(force){ - if(!this.element.firstChild || force){ - if(!this.external){ - this.element.parentNode.removeChild(this.element); - } - this.active = false; - } - } - - activate(){ - if(!this.active){ - this.active = true; - if(!this.external){ - this.table.element.appendChild(this.getElement()); - this.table.element.style.display = ''; - } - } - } - - redraw(){ - this.dispatch("footer-redraw"); - } - } - - class InteractionManager extends CoreFeature { - - constructor (table){ - super(table); - - this.el = null; - - this.abortClasses = ["tabulator-headers", "tabulator-table"]; - - this.previousTargets = {}; - - this.listeners = [ - "click", - "dblclick", - "contextmenu", - "mouseenter", - "mouseleave", - "mouseover", - "mouseout", - "mousemove", - "mouseup", - "mousedown", - "touchstart", - "touchend", - ]; - - this.componentMap = { - "tabulator-cell":"cell", - "tabulator-row":"row", - "tabulator-group":"group", - "tabulator-col":"column", - }; - - this.pseudoTrackers = { - "row":{ - subscriber:null, - target:null, - }, - "cell":{ - subscriber:null, - target:null, - }, - "group":{ - subscriber:null, - target:null, - }, - "column":{ - subscriber:null, - target:null, - }, - }; - - this.pseudoTracking = false; - } - - initialize(){ - this.el = this.table.element; - - this.buildListenerMap(); - this.bindSubscriptionWatchers(); - } - - buildListenerMap(){ - var listenerMap = {}; - - this.listeners.forEach((listener) => { - listenerMap[listener] = { - handler:null, - components:[], - }; - }); - - this.listeners = listenerMap; - } - - bindPseudoEvents(){ - Object.keys(this.pseudoTrackers).forEach((key) => { - this.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key); - this.subscribe(key + "-mouseover", this.pseudoTrackers[key].subscriber); - }); - - this.pseudoTracking = true; - } - - pseudoMouseEnter(key, e, target){ - if(this.pseudoTrackers[key].target !== target){ - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); - } - - this.pseudoMouseLeave(key, e); - - this.pseudoTrackers[key].target = target; - - this.dispatch(key + "-mouseenter", e, target); - } - } - - pseudoMouseLeave(key, e){ - var leaveList = Object.keys(this.pseudoTrackers), - linkedKeys = { - "row":["cell"], - "cell":["row"], - }; - - leaveList = leaveList.filter((item) => { - var links = linkedKeys[key]; - return item !== key && (!links || (links && !links.includes(item))); - }); - - - leaveList.forEach((key) => { - var target = this.pseudoTrackers[key].target; - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); - - this.pseudoTrackers[key].target = null; - } - }); - } - - - bindSubscriptionWatchers(){ - var listeners = Object.keys(this.listeners), - components = Object.values(this.componentMap); - - for(let comp of components){ - for(let listener of listeners){ - let key = comp + "-" + listener; - - this.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener)); - } - } - - this.subscribe("table-destroy", this.clearWatchers.bind(this)); - } - - subscriptionChanged(component, key, added){ - var listener = this.listeners[key].components, - index = listener.indexOf(component), - changed = false; - - if(added){ - if(index === -1){ - listener.push(component); - changed = true; - } - }else { - if(!this.subscribed(component + "-" + key)){ - if(index > -1){ - listener.splice(index, 1); - changed = true; - } - } - } - - if((key === "mouseenter" || key === "mouseleave") && !this.pseudoTracking){ - this.bindPseudoEvents(); - } - - if(changed){ - this.updateEventListeners(); - } - } - - updateEventListeners(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.components.length){ - if(!listener.handler){ - listener.handler = this.track.bind(this, key); - this.el.addEventListener(key, listener.handler); - // this.el.addEventListener(key, listener.handler, {passive: true}) - } - }else { - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - track(type, e){ - var path = (e.composedPath && e.composedPath()) || e.path; - - var targets = this.findTargets(path); - targets = this.bindComponents(type, targets); - - this.triggerEvents(type, e, targets); - - if(this.pseudoTracking && (type == "mouseover" || type == "mouseleave") && !Object.keys(targets).length){ - this.pseudoMouseLeave("none", e); - } - } - - findTargets(path){ - var targets = {}; - - let componentMap = Object.keys(this.componentMap); - - for (let el of path) { - let classList = el.classList ? [...el.classList] : []; - - let abort = classList.filter((item) => { - return this.abortClasses.includes(item); - }); - - if(abort.length){ - break; - } - - let elTargets = classList.filter((item) => { - return componentMap.includes(item); - }); - - for (let target of elTargets) { - if(!targets[this.componentMap[target]]){ - targets[this.componentMap[target]] = el; - } - } - } - - if(targets.group && targets.group === targets.row){ - delete targets.row; - } - - return targets; - } - - bindComponents(type, targets){ - //ensure row component is looked up before cell - var keys = Object.keys(targets).reverse(), - listener = this.listeners[type], - matches = {}, - targetMatches = {}; - - for(let key of keys){ - let component, - target = targets[key], - previousTarget = this.previousTargets[key]; - - if(previousTarget && previousTarget.target === target){ - component = previousTarget.component; - }else { - switch(key){ - case "row": - case "group": - if(listener.components.includes("row") || listener.components.includes("cell") || listener.components.includes("group")){ - let rows = this.table.rowManager.getVisibleRows(true); - - component = rows.find((row) => { - return row.getElement() === target; - }); - - if(targets["row"] && targets["row"].parentNode && targets["row"].parentNode.closest(".tabulator-row")){ - targets[key] = false; - } - } - break; - - case "column": - if(listener.components.includes("column")){ - component = this.table.columnManager.findColumn(target); - } - break; - - case "cell": - if(listener.components.includes("cell")){ - if(matches["row"] instanceof Row){ - component = matches["row"].findCell(target); - }else { - if(targets["row"]){ - console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"); - } - } - } - break; - } - } - - if(component){ - matches[key] = component; - targetMatches[key] = { - target:target, - component:component, - }; - } - } - - this.previousTargets = targetMatches; - - return matches; - } - - triggerEvents(type, e, targets){ - var listener = this.listeners[type]; - - for(let key in targets){ - if(targets[key] && listener.components.includes(key)){ - this.dispatch(key + "-" + type, e, targets[key]); - } - } - } - - clearWatchers(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - class ComponentFunctionBinder{ - - constructor(table){ - this.table = table; - - this.bindings = {}; - } - - bind(type, funcName, handler){ - if(!this.bindings[type]){ - this.bindings[type] = {}; - } - - if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, handler); - }else { - this.bindings[type][funcName] = handler; - } - } - - handle(type, component, name){ - if(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){ - return this.bindings[type][name].bind(null, component); - }else { - if(name !== "then" && typeof name === "string" && !name.startsWith("_")){ - if(this.table.options.debugInvalidComponentFuncs){ - console.error("The " + type + " component does not have a " + name + " function, have you checked that you have the correct Tabulator module installed?"); - } - } - } - } - } - - class DataLoader extends CoreFeature{ - constructor(table){ - super(table); - - this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request - this.loading = false; - } - - initialize(){} - - load(data, params, config, replace, silent, columnsChanged){ - var requestNo = ++this.requestOrder; - - if(this.table.destroyed){ - return Promise.resolve(); - } - - this.dispatchExternal("dataLoading", data); - - //parse json data to array - if (data && (data.indexOf("{") == 0 || data.indexOf("[") == 0)){ - data = JSON.parse(data); - } - - if(this.confirm("data-loading", [data, params, config, silent])){ - this.loading = true; - - if(!silent){ - this.alertLoader(); - } - - //get params for request - params = this.chain("data-params", [data, config, silent], params || {}, params || {}); - - params = this.mapParams(params, this.table.options.dataSendParams); - - var result = this.chain("data-load", [data, params, config, silent], false, Promise.resolve([])); - - return result.then((response) => { - if(!this.table.destroyed){ - if(!Array.isArray(response) && typeof response == "object"){ - response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams)); - } - - var rowData = this.chain("data-loaded", response, null, response); - - if(requestNo == this.requestOrder){ - this.clearAlert(); - - if(rowData !== false){ - this.dispatchExternal("dataLoaded", rowData); - this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - } - }else { - console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made"); - } - }else { - console.warn("Data Load Response Blocked - Table has been destroyed"); - } - }).catch((error) => { - console.error("Data Load Error: ", error); - this.dispatchExternal("dataLoadError", error); - - if(!silent){ - this.alertError(); - } - - setTimeout(() => { - this.clearAlert(); - }, this.table.options.dataLoaderErrorTimeout); - }) - .finally(() => { - this.loading = false; - }); - }else { - this.dispatchExternal("dataLoaded", data); - - if(!data){ - data = []; - } - - this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - return Promise.resolve(); - } - } - - mapParams(params, map){ - var output = {}; - - for(let key in params){ - output[map.hasOwnProperty(key) ? map[key] : key] = params[key]; - } - - return output; - } - - objectInvert(obj){ - var output = {}; - - for(let key in obj){ - output[obj[key]] = key; - } - - return output; - } - - blockActiveLoad(){ - this.requestOrder++; - } - - alertLoader(){ - var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; - - if(shouldLoad){ - this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); - } - } - - alertError(){ - this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); - } - - clearAlert(){ - this.table.alertManager.clear(); - } - } - - class ExternalEventBus { - - constructor(table, optionsList, debug){ - this.table = table; - this.events = {}; - this.optionsList = optionsList || {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push(callback); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - }else { - delete this.events[key]; - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(), - result; - - if(this.events[key]){ - this.events[key].forEach((callback, i) => { - let callResult = callback.apply(this.table, args); - - if(!i){ - result = callResult; - } - }); - } - - return result; - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "ExternalEvent:" + args[0]; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - } - - class InternalEventBus { - - constructor(debug){ - this.events = {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this); - this.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback, priority = 10000){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push({callback, priority}); - - this.events[key].sort((a, b) => { - return a.priority - b.priority; - }); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item.callback === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _chain(key, args, initialValue, fallback){ - var value = initialValue; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - value = subscriber.callback.apply(this, args.concat([value])); - }); - - return value; - }else { - return typeof fallback === "function" ? fallback() : fallback; - } - } - - _confirm(key, args){ - var confirmed = false; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - if(subscriber.callback.apply(this, args)){ - confirmed = true; - } - }); - } - - return confirmed; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(); - - if(this.events[key]){ - this.events[key].forEach((subscriber) => { - subscriber.callback.apply(this, args); - }); - } - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - - _debugChain(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._chain(...arguments); - } - - _debugConfirm(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._confirm(...arguments); - } - } - - class DeprecationAdvisor extends CoreFeature{ - - constructor(table){ - super(table); - } - - _warnUser(){ - if(this.options("debugDeprecation")){ - console.warn(...arguments); - } - } - - check(oldOption, newOption){ - var msg = ""; - - if(typeof this.options(oldOption) !== "undefined"){ - msg = "Deprecated Setup Option - Use of the %c" + oldOption + "%c option is now deprecated"; - - if(newOption){ - msg = msg + ", Please use the %c" + newOption + "%c option instead"; - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - }else { - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;'); - } - - return false; - }else { - return true; - } - } - - checkMsg(oldOption, msg){ - if(typeof this.options(oldOption) !== "undefined"){ - this._warnUser("%cDeprecated Setup Option - Use of the %c" + oldOption + " %c option is now deprecated, " + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - return false; - }else { - return true; - } - } - - msg(msg){ - this._warnUser(msg); - } - } - - class TableRegistry { - - static register(table){ - TableRegistry.tables.push(table); - } - - static deregister(table){ - var index = TableRegistry.tables.indexOf(table); - - if(index > -1){ - TableRegistry.tables.splice(index, 1); - } - } - - static lookupTable(query, silent){ - var results = [], - matches, match; - - if(typeof query === "string"){ - matches = document.querySelectorAll(query); - - if(matches.length){ - for(var i = 0; i < matches.length; i++){ - match = TableRegistry.matchElement(matches[i]); - - if(match){ - results.push(match); - } - } - } - - }else if((typeof HTMLElement !== "undefined" && query instanceof HTMLElement) || query instanceof Tabulator){ - match = TableRegistry.matchElement(query); - - if(match){ - results.push(match); - } - }else if(Array.isArray(query)){ - query.forEach(function(item){ - results = results.concat(TableRegistry.lookupTable(item)); - }); - }else { - if(!silent){ - console.warn("Table Connection Error - Invalid Selector", query); - } - } - - return results; - } - - static matchElement(element){ - return TableRegistry.tables.find(function(table){ - return element instanceof Tabulator ? table === element : table.element === element; - }); - } - } - - TableRegistry.tables = []; - - class Popup extends CoreFeature{ - constructor(table, element, parent){ - super(table); - - this.element = element; - this.container = this._lookupContainer(); - - this.parent = parent; - - this.reversedX = false; - this.childPopup = null; - this.blurable = false; - this.blurCallback = null; - this.blurEventsBound = false; - this.renderedCallback = null; - - this.visible = false; - this.hideable = true; - - this.element.classList.add("tabulator-popup-container"); - - this.blurEvent = this.hide.bind(this, false); - this.escEvent = this._escapeCheck.bind(this); - - this.destroyBinding = this.tableDestroyed.bind(this); - this.destroyed = false; - } - - tableDestroyed(){ - this.destroyed = true; - this.hide(true); - } - - _lookupContainer(){ - var container = this.table.options.popupContainer; - - if(typeof container === "string"){ - container = document.querySelector(container); - - if(!container){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.popupContainer , "(defaulting to document body)"); - } - }else if (container === true){ - container = this.table.element; - } - - if(container && !this._checkContainerIsParent(container)){ - container = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.popupContainer , "(defaulting to document body)"); - } - - if(!container){ - container = document.body; - } - - return container; - } - - _checkContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else { - return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false; - } - } - - renderCallback(callback){ - this.renderedCallback = callback; - } - - containerEventCoords(e){ - var touch = !(e instanceof MouseEvent); - - var x = touch ? e.touches[0].pageX : e.pageX; - var y = touch ? e.touches[0].pageY : e.pageY; - - if(this.container !== document.body){ - let parentOffset = Helpers.elOffset(this.container); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - return {x, y}; - } - - elementPositionCoords(element, position = "right"){ - var offset = Helpers.elOffset(element), - containerOffset, x, y; - - if(this.container !== document.body){ - containerOffset = Helpers.elOffset(this.container); - - offset.left -= containerOffset.left; - offset.top -= containerOffset.top; - } - - switch(position){ - case "right": - x = offset.left + element.offsetWidth; - y = offset.top - 1; - break; - - case "bottom": - x = offset.left; - y = offset.top + element.offsetHeight; - break; - - case "left": - x = offset.left; - y = offset.top - 1; - break; - - case "top": - x = offset.left; - y = offset.top; - break; - - case "center": - x = offset.left + (element.offsetWidth / 2); - y = offset.top + (element.offsetHeight / 2); - break; - - } - - return {x, y, offset}; - } - - show(origin, position){ - var x, y, parentEl, parentOffset, coords; - - if(this.destroyed || this.table.destroyed){ - return this; - } - - if(origin instanceof HTMLElement){ - parentEl = origin; - coords = this.elementPositionCoords(origin, position); - - parentOffset = coords.offset; - x = coords.x; - y = coords.y; - - }else if(typeof origin === "number"){ - parentOffset = {top:0, left:0}; - x = origin; - y = position; - }else { - coords = this.containerEventCoords(origin); - - x = coords.x; - y = coords.y; - - this.reversedX = false; - } - - this.element.style.top = y + "px"; - this.element.style.left = x + "px"; - - this.container.appendChild(this.element); - - if(typeof this.renderedCallback === "function"){ - this.renderedCallback(); - } - - this._fitToScreen(x, y, parentEl, parentOffset, position); - - this.visible = true; - - this.subscribe("table-destroy", this.destroyBinding); - - this.element.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - return this; - } - - _fitToScreen(x, y, parentEl, parentOffset, position){ - var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop; - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){ - this.element.style.left = ""; - - if(parentEl){ - this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px"; - }else { - this.element.style.right = (this.container.offsetWidth - x) + "px"; - } - - this.reversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) { - if(parentEl){ - switch(position){ - case "bottom": - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px"; - break; - - default: - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - } - - }else { - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + "px"; - } - } - } - - isVisible(){ - return this.visible; - } - - hideOnBlur(callback){ - this.blurable = true; - - if(this.visible){ - setTimeout(() => { - if(this.visible){ - this.table.rowManager.element.addEventListener("scroll", this.blurEvent); - this.subscribe("cell-editing", this.blurEvent); - document.body.addEventListener("click", this.blurEvent); - document.body.addEventListener("contextmenu", this.blurEvent); - document.body.addEventListener("mousedown", this.blurEvent); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - - this.blurEventsBound = true; - } - }, 100); - - this.blurCallback = callback; - } - - return this; - } - - _escapeCheck(e){ - if(e.keyCode == 27){ - this.hide(); - } - } - - blockHide(){ - this.hideable = false; - } - - restoreHide(){ - this.hideable = true; - } - - hide(silent = false){ - if(this.visible && this.hideable){ - if(this.blurable && this.blurEventsBound){ - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - document.body.removeEventListener("mousedown", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - this.unsubscribe("cell-editing", this.blurEvent); - - this.blurEventsBound = false; - } - - if(this.childPopup){ - this.childPopup.hide(); - } - - if(this.parent){ - this.parent.childPopup = null; - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.visible = false; - - if(this.blurCallback && !silent){ - this.blurCallback(); - } - - this.unsubscribe("table-destroy", this.destroyBinding); - } - - return this; - } - - child(element){ - if(this.childPopup){ - this.childPopup.hide(); - } - - this.childPopup = new Popup(this.table, element, this); - - return this.childPopup; - } - } - - class Module extends CoreFeature{ - - constructor(table, name){ - super(table); - - this._handler = null; - } - - initialize(){ - // setup module when table is initialized, to be overridden in module - } - - - /////////////////////////////////// - ////// Options Registration /////// - /////////////////////////////////// - - registerTableOption(key, value){ - this.table.optionsList.register(key, value); - } - - registerColumnOption(key, value){ - this.table.columnManager.optionsList.register(key, value); - } - - /////////////////////////////////// - /// Public Function Registration /// - /////////////////////////////////// - - registerTableFunction(name, func){ - if(typeof this.table[name] === "undefined"){ - this.table[name] = (...args) => { - this.table.initGuard(name); - - return func(...args); - }; - }else { - console.warn("Unable to bind table function, name already in use", name); - } - } - - registerComponentFunction(component, func, handler){ - return this.table.componentFunctionBinder.bind(component, func, handler); - } - - /////////////////////////////////// - ////////// Data Pipeline ////////// - /////////////////////////////////// - - registerDataHandler(handler, priority){ - this.table.rowManager.registerDataPipelineHandler(handler, priority); - this._handler = handler; - } - - registerDisplayHandler(handler, priority){ - this.table.rowManager.registerDisplayPipelineHandler(handler, priority); - this._handler = handler; - } - - displayRows(adjust){ - var index = this.table.rowManager.displayRows.length - 1, - lookupIndex; - - if(this._handler){ - lookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => { - return item.handler === this._handler; - }); - - if(lookupIndex > -1){ - index = lookupIndex; - } - } - - if(adjust){ - index = index + adjust; - } - - if(this._handler){ - if(index > -1){ - return this.table.rowManager.getDisplayRows(index); - }else { - return this.activeRows(); - } - } - } - - activeRows(){ - return this.table.rowManager.activeRows; - } - - refreshData(renderInPosition, handler){ - if(!handler){ - handler = this._handler; - } - - if(handler){ - this.table.rowManager.refreshActiveData(handler, false, renderInPosition); - } - } - - /////////////////////////////////// - //////// Footer Management //////// - /////////////////////////////////// - - footerAppend(element){ - return this.table.footerManager.append(element); - } - - footerPrepend(element){ - return this.table.footerManager.prepend(element); - } - - footerRemove(element){ - return this.table.footerManager.remove(element); - } - - /////////////////////////////////// - //////// Popups Management //////// - /////////////////////////////////// - - popup(menuEl, menuContainer){ - return new Popup(this.table, menuEl, menuContainer); - } - - /////////////////////////////////// - //////// Alert Management //////// - /////////////////////////////////// - - alert(content, type){ - return this.table.alertManager.alert(content, type); - } - - clearAlert(){ - return this.table.alertManager.clear(); - } - - } - - //resize columns to fit data they contain - function fitData(columns, forced){ - if(forced){ - this.table.columnManager.renderer.reinitializeColumnWidths(columns); - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } - - //resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable - function fitDataGeneral(columns, forced){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } - - //resize columns to fit data the contain and stretch last column to fill table - function fitDataStretch(columns, forced){ - var colsWidth = 0, - tableWidth = this.table.rowManager.element.clientWidth, - gap = 0, - lastCol = false; - - columns.forEach((column, i) => { - if(!column.widthFixed){ - column.reinitializeWidth(); - } - - if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){ - lastCol = column; - } - - if(column.visible){ - colsWidth += column.getWidth(); - } - }); - - if(lastCol){ - gap = tableWidth - colsWidth + lastCol.getWidth(); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - lastCol.setWidth(0); - this.table.modules.responsiveLayout.update(); - } - - if(gap > 0){ - lastCol.setWidth(gap); - }else { - lastCol.reinitializeWidth(); - } - }else { - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } - } - - //resize columns to fit - function fitColumns(columns, forced){ - var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width - var fixedWidth = 0; //total width of columns with a defined width - var flexWidth = 0; //total width available to flexible columns - var flexGrowUnits = 0; //total number of widthGrow blocks across all columns - var flexColWidth = 0; //desired width of flexible columns - var flexColumns = []; //array of flexible width columns - var fixedShrinkColumns = []; //array of fixed width columns that can shrink - var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns - var overflowWidth = 0; //horizontal overflow width - var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps - - function calcWidth(width){ - var colWidth; - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width); - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - return colWidth; - } - - //ensure columns resize to take up the correct amount of space - function scaleColumns(columns, freeSpace, colWidth, shrinkCols){ - var oversizeCols = [], - oversizeSpace = 0, - remainingSpace = 0, - nextColWidth = 0, - remainingFlexGrowUnits = flexGrowUnits, - gap = 0, - changeUnits = 0, - undersizeCols = []; - - function calcGrow(col){ - return (colWidth * (col.column.definition.widthGrow || 1)); - } - - function calcShrink(col){ - return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0))); - } - - columns.forEach(function(col, i){ - var width = shrinkCols ? calcShrink(col) : calcGrow(col); - if(col.column.minWidth >= width){ - oversizeCols.push(col); - }else { - if(col.column.maxWidth && col.column.maxWidth < width){ - col.width = col.column.maxWidth; - freeSpace -= col.column.maxWidth; - - remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - - if(remainingFlexGrowUnits){ - colWidth = Math.floor(freeSpace/remainingFlexGrowUnits); - } - }else { - undersizeCols.push(col); - changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - } - } - }); - - if(oversizeCols.length){ - oversizeCols.forEach(function(col){ - oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth; - col.width = col.column.minWidth; - }); - - remainingSpace = freeSpace - oversizeSpace; - - nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace; - - gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols); - }else { - gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace; - - undersizeCols.forEach(function(column){ - column.width = shrinkCols ? calcShrink(column) : calcGrow(column); - }); - } - - return gap; - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - columns.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width; - minWidth = parseInt(column.minWidth); - - if(width){ - - colWidth = calcWidth(width); - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - if(column.definition.widthShrink){ - fixedShrinkColumns.push({ - column:column, - width:colWidth > minWidth ? colWidth : minWidth - }); - flexShrinkUnits += column.definition.widthShrink; - } - - }else { - flexColumns.push({ - column:column, - width:0, - }); - flexGrowUnits += column.definition.widthGrow || 1; - } - } - }); - - //calculate available space - flexWidth = totalWidth - fixedWidth; - - //calculate correct column size - flexColWidth = Math.floor(flexWidth / flexGrowUnits); - - //generate column widths - gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false); - - //increase width of last column to account for rounding errors - if(flexColumns.length && gapFill > 0){ - flexColumns[flexColumns.length-1].width += gapFill; - } - - //calculate space for columns to be shrunk into - flexColumns.forEach(function(col){ - flexWidth -= col.width; - }); - - overflowWidth = Math.abs(gapFill) + flexWidth; - - //shrink oversize columns if there is no available space - if(overflowWidth > 0 && flexShrinkUnits){ - gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true); - } - - //decrease width of last column to account for rounding errors - if(gapFill && fixedShrinkColumns.length){ - fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill; - } - - flexColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - - fixedShrinkColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - } - - var defaultModes = { - fitData:fitData, - fitDataFill:fitDataGeneral, - fitDataTable:fitDataGeneral, - fitDataStretch:fitDataStretch, - fitColumns:fitColumns , - }; - - class Layout extends Module{ - - constructor(table){ - super(table, "layout"); - - this.mode = null; - - this.registerTableOption("layout", "fitData"); //layout type - this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData - - this.registerColumnOption("widthGrow"); - this.registerColumnOption("widthShrink"); - } - - //initialize layout system - initialize(){ - var layout = this.table.options.layout; - - if(Layout.modes[layout]){ - this.mode = layout; - }else { - console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout); - this.mode = 'fitData'; - } - - this.table.element.setAttribute("tabulator-layout", this.mode); - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - initializeColumn(column){ - if(column.definition.widthGrow){ - column.definition.widthGrow = Number(column.definition.widthGrow); - } - if(column.definition.widthShrink){ - column.definition.widthShrink = Number(column.definition.widthShrink); - } - } - - getMode(){ - return this.mode; - } - - //trigger table layout - layout(dataChanged){ - this.dispatch("layout-refreshing"); - Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged); - this.dispatch("layout-refreshed"); - } - } - - Layout.moduleName = "layout"; - - //load defaults - Layout.modes = defaultModes; - - var defaultLangs = { - "default":{ //hold default locale text - "groups":{ - "item":"item", - "items":"items", - }, - "columns":{ - }, - "data":{ - "loading":"Loading", - "error":"Error", - }, - "pagination":{ - "page_size":"Page Size", - "page_title":"Show Page", - "first":"First", - "first_title":"First Page", - "last":"Last", - "last_title":"Last Page", - "prev":"Prev", - "prev_title":"Prev Page", - "next":"Next", - "next_title":"Next Page", - "all":"All", - "counter":{ - "showing": "Showing", - "of": "of", - "rows": "rows", - "pages": "pages", - } - }, - "headerFilters":{ - "default":"filter column...", - "columns":{} - } - }, - }; - - class Localize extends Module{ - - constructor(table){ - super(table); - - this.locale = "default"; //current locale - this.lang = false; //current language - this.bindings = {}; //update events to call when locale is changed - this.langList = {}; - - this.registerTableOption("locale", false); //current system language - this.registerTableOption("langs", {}); - } - - initialize(){ - this.langList = Helpers.deepClone(Localize.langs); - - if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){ - this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder); - } - - for(let locale in this.table.options.langs){ - this.installLang(locale, this.table.options.langs[locale]); - } - - this.setLocale(this.table.options.locale); - - this.registerTableFunction("setLocale", this.setLocale.bind(this)); - this.registerTableFunction("getLocale", this.getLocale.bind(this)); - this.registerTableFunction("getLang", this.getLang.bind(this)); - } - - //set header placeholder - setHeaderFilterPlaceholder(placeholder){ - this.langList.default.headerFilters.default = placeholder; - } - - //setup a lang description object - installLang(locale, lang){ - if(this.langList[locale]){ - this._setLangProp(this.langList[locale], lang); - }else { - this.langList[locale] = lang; - } - } - - _setLangProp(lang, values){ - for(let key in values){ - if(lang[key] && typeof lang[key] == "object"){ - this._setLangProp(lang[key], values[key]); - }else { - lang[key] = values[key]; - } - } - } - - //set current locale - setLocale(desiredLocale){ - desiredLocale = desiredLocale || "default"; - - //fill in any matching language values - function traverseLang(trans, path){ - for(var prop in trans){ - if(typeof trans[prop] == "object"){ - if(!path[prop]){ - path[prop] = {}; - } - traverseLang(trans[prop], path[prop]); - }else { - path[prop] = trans[prop]; - } - } - } - - //determining correct locale to load - if(desiredLocale === true && navigator.language){ - //get local from system - desiredLocale = navigator.language.toLowerCase(); - } - - if(desiredLocale){ - //if locale is not set, check for matching top level locale else use default - if(!this.langList[desiredLocale]){ - let prefix = desiredLocale.split("-")[0]; - - if(this.langList[prefix]){ - console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix); - desiredLocale = prefix; - }else { - console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale); - desiredLocale = "default"; - } - } - } - - this.locale = desiredLocale; - - //load default lang template - this.lang = Helpers.deepClone(this.langList.default || {}); - - if(desiredLocale != "default"){ - traverseLang(this.langList[desiredLocale], this.lang); - } - - this.dispatchExternal("localized", this.locale, this.lang); - - this._executeBindings(); - } - - //get current locale - getLocale(locale){ - return this.locale; - } - - //get lang object for given local or current if none provided - getLang(locale){ - return locale ? this.langList[locale] : this.lang; - } - - //get text for current locale - getText(path, value){ - var fillPath = value ? path + "|" + value : path, - pathArray = fillPath.split("|"), - text = this._getLangElement(pathArray, this.locale); - - // if(text === false){ - // console.warn("Localization Error - Matching localized text not found for given path: ", path); - // } - - return text || ""; - } - - //traverse langs object and find localized copy - _getLangElement(path, locale){ - var root = this.lang; - - path.forEach(function(level){ - var rootPath; - - if(root){ - rootPath = root[level]; - - if(typeof rootPath != "undefined"){ - root = rootPath; - }else { - root = false; - } - } - }); - - return root; - } - - //set update binding - bind(path, callback){ - if(!this.bindings[path]){ - this.bindings[path] = []; - } - - this.bindings[path].push(callback); - - callback(this.getText(path), this.lang); - } - - //iterate through bindings and trigger updates - _executeBindings(){ - for(let path in this.bindings){ - this.bindings[path].forEach((binding) => { - binding(this.getText(path), this.lang); - }); - } - } - } - - Localize.moduleName = "localize"; - - //load defaults - Localize.langs = defaultLangs; - - class Comms extends Module{ - - constructor(table){ - super(table); - } - - initialize(){ - this.registerTableFunction("tableComms", this.receive.bind(this)); - } - - getConnections(selectors){ - var connections = [], - connection; - - connection = TableRegistry.lookupTable(selectors); - - connection.forEach((con) =>{ - if(this.table !== con){ - connections.push(con); - } - }); - - return connections; - } - - send(selectors, module, action, data){ - var connections = this.getConnections(selectors); - - connections.forEach((connection) => { - connection.tableComms(this.table.element, module, action, data); - }); - - if(!connections.length && selectors){ - console.warn("Table Connection Error - No tables matching selector found", selectors); - } - } - - receive(table, module, action, data){ - if(this.table.modExists(module)){ - return this.table.modules[module].commsReceived(table, action, data); - }else { - console.warn("Inter-table Comms Error - no such module:", module); - } - } - } - - Comms.moduleName = "comms"; - - var coreModules = /*#__PURE__*/Object.freeze({ - __proto__: null, - LayoutModule: Layout, - LocalizeModule: Localize, - CommsModule: Comms - }); - - class ModuleBinder { - - constructor(tabulator, modules){ - this.bindStaticFunctionality(tabulator); - this.bindModules(tabulator, coreModules, true); - - if(modules){ - this.bindModules(tabulator, modules); - } - } - - bindStaticFunctionality(tabulator){ - tabulator.moduleBindings = {}; - - tabulator.extendModule = function(name, property, values){ - if(tabulator.moduleBindings[name]){ - var source = tabulator.moduleBindings[name][property]; - - if(source){ - if(typeof values == "object"){ - for(let key in values){ - source[key] = values[key]; - } - }else { - console.warn("Module Error - Invalid value type, it must be an object"); - } - }else { - console.warn("Module Error - property does not exist:", property); - } - }else { - console.warn("Module Error - module does not exist:", name); - } - }; - - tabulator.registerModule = function(modules){ - if(!Array.isArray(modules)){ - modules = [modules]; - } - - modules.forEach((mod) => { - tabulator.registerModuleBinding(mod); - }); - }; - - tabulator.registerModuleBinding = function(mod){ - tabulator.moduleBindings[mod.moduleName] = mod; - }; - - tabulator.findTable = function(query){ - var results = TableRegistry.lookupTable(query, true); - return Array.isArray(results) && !results.length ? false : results; - }; - - //ensure that module are bound to instantiated function - tabulator.prototype.bindModules = function(){ - var orderedStartMods = [], - orderedEndMods = [], - unOrderedMods = []; - - this.modules = {}; - - for(var name in tabulator.moduleBindings){ - let mod = tabulator.moduleBindings[name]; - let module = new mod(this); - - this.modules[name] = module; - - if(mod.prototype.moduleCore){ - this.modulesCore.push(module); - }else { - if(mod.moduleInitOrder){ - if(mod.moduleInitOrder < 0){ - orderedStartMods.push(module); - }else { - orderedEndMods.push(module); - } - - }else { - unOrderedMods.push(module); - } - } - } - - orderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - orderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods)); - }; - } - - bindModules(tabulator, modules, core){ - var mods = Object.values(modules); - - if(core){ - mods.forEach((mod) => { - mod.prototype.moduleCore = true; - }); - } - - tabulator.registerModule(mods); - } - } - - class Alert extends CoreFeature{ - constructor(table){ - super(table); - - this.element = this._createAlertElement(); - this.msgElement = this._createMsgElement(); - this.type = null; - - this.element.appendChild(this.msgElement); - } - - _createAlertElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert"); - return el; - } - - _createMsgElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert-msg"); - el.setAttribute("role", "alert"); - return el; - } - - _typeClass(){ - return "tabulator-alert-state-" + this.type; - } - - alert(content, type = "msg"){ - if(content){ - this.clear(); - - this.type = type; - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.add(this._typeClass()); - - if(typeof content === "function"){ - content = content(); - } - - if(content instanceof HTMLElement){ - this.msgElement.appendChild(content); - }else { - this.msgElement.innerHTML = content; - } - - this.table.element.appendChild(this.element); - } - } - - clear(){ - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.msgElement.classList.remove(this._typeClass()); - } - } - - class Tabulator { - - constructor(element, options){ - - this.options = {}; - - this.columnManager = null; // hold Column Manager - this.rowManager = null; //hold Row Manager - this.footerManager = null; //holder Footer Manager - this.alertManager = null; //hold Alert Manager - this.vdomHoz = null; //holder horizontal virtual dom - this.externalEvents = null; //handle external event messaging - this.eventBus = null; //handle internal event messaging - this.interactionMonitor = false; //track user interaction - this.browser = ""; //hold current browser type - this.browserSlow = false; //handle reduced functionality for slower browsers - this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance - this.rtl = false; //check if the table is in RTL mode - this.originalElement = null; //hold original table element if it has been replaced - - this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions - this.dataLoader = false; //bind component functions - - this.modules = {}; //hold all modules bound to this table - this.modulesCore = []; //hold core modules bound to this table (for initialization purposes) - this.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes) - - this.deprecationAdvisor = new DeprecationAdvisor(this); - this.optionsList = new OptionsList(this, "table constructor"); - - this.initialized = false; - this.destroyed = false; - - if(this.initializeElement(element)){ - - this.initializeCoreSystems(options); - - //delay table creation to allow event bindings immediately after the constructor - setTimeout(() => { - this._create(); - }); - } - - TableRegistry.register(this); //register table for inter-device communication - } - - initializeElement(element){ - if(typeof HTMLElement !== "undefined" && element instanceof HTMLElement){ - this.element = element; - return true; - }else if(typeof element === "string"){ - this.element = document.querySelector(element); - - if(this.element){ - return true; - }else { - console.error("Tabulator Creation Error - no element found matching selector: ", element); - return false; - } - }else { - console.error("Tabulator Creation Error - Invalid element provided:", element); - return false; - } - } - - initializeCoreSystems(options){ - this.columnManager = new ColumnManager(this); - this.rowManager = new RowManager(this); - this.footerManager = new FooterManager(this); - this.dataLoader = new DataLoader(this); - this.alertManager = new Alert(this); - - this.bindModules(); - - this.options = this.optionsList.generate(Tabulator.defaultOptions, options); - - this._clearObjectPointers(); - - this._mapDeprecatedFunctionality(); - - this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal); - this.eventBus = new InternalEventBus(this.options.debugEventsInternal); - - this.interactionMonitor = new InteractionManager(this); - - this.dataLoader.initialize(); - // this.columnManager.initialize(); - // this.rowManager.initialize(); - this.footerManager.initialize(); - } - - //convert deprecated functionality to new functions - _mapDeprecatedFunctionality(){ - //all previously deprecated functionality removed in the 5.0 release - } - - _clearSelection(){ - - this.element.classList.add("tabulator-block-select"); - - if (window.getSelection) { - if (window.getSelection().empty) { // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { // IE? - document.selection.empty(); - } - - this.element.classList.remove("tabulator-block-select"); - } - - //create table - _create(){ - this.externalEvents.dispatch("tableBuilding"); - this.eventBus.dispatch("table-building"); - - this._rtlCheck(); - - this._buildElement(); - - this._initializeTable(); - - this._loadInitialData(); - - this.initialized = true; - - this.externalEvents.dispatch("tableBuilt"); - } - - _rtlCheck(){ - var style = window.getComputedStyle(this.element); - - switch(this.options.textDirection){ - case"auto": - if(style.direction !== "rtl"){ - break; - } - - case "rtl": - this.element.classList.add("tabulator-rtl"); - this.rtl = true; - break; - - case "ltr": - this.element.classList.add("tabulator-ltr"); - - default: - this.rtl = false; - } - } - - //clear pointers to objects in default config object - _clearObjectPointers(){ - this.options.columns = this.options.columns.slice(0); - - if(Array.isArray(this.options.data) && !this.options.reactiveData){ - this.options.data = this.options.data.slice(0); - } - } - - //build tabulator element - _buildElement(){ - var element = this.element, - options = this.options, - newElement; - - if(element.tagName === "TABLE"){ - this.originalElement = this.element; - newElement = document.createElement("div"); - - //transfer attributes to new element - var attributes = element.attributes; - - // loop through attributes and apply them on div - for(var i in attributes){ - if(typeof attributes[i] == "object"){ - newElement.setAttribute(attributes[i].name, attributes[i].value); - } - } - - // replace table with div element - element.parentNode.replaceChild(newElement, element); - - this.element = element = newElement; - } - - element.classList.add("tabulator"); - element.setAttribute("role", "grid"); - - //empty element - while(element.firstChild) element.removeChild(element.firstChild); - - //set table height - if(options.height){ - options.height = isNaN(options.height) ? options.height : options.height + "px"; - element.style.height = options.height; - } - - //set table min height - if(options.minHeight !== false){ - options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px"; - element.style.minHeight = options.minHeight; - } - - //set table maxHeight - if(options.maxHeight !== false){ - options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px"; - element.style.maxHeight = options.maxHeight; - } - } - - //initialize core systems and modules - _initializeTable(){ - var element = this.element, - options = this.options; - - this.interactionMonitor.initialize(); - - this.columnManager.initialize(); - this.rowManager.initialize(); - - this._detectBrowser(); - - //initialize core modules - this.modulesCore.forEach((mod) => { - mod.initialize(); - }); - - //build table elements - element.appendChild(this.columnManager.getElement()); - element.appendChild(this.rowManager.getElement()); - - if(options.footerElement){ - this.footerManager.activate(); - } - - if(options.autoColumns && options.data){ - - this.columnManager.generateColumnsFromRowData(this.options.data); - } - - //initialize regular modules - this.modulesRegular.forEach((mod) => { - mod.initialize(); - }); - - this.columnManager.setColumns(options.columns); - - this.eventBus.dispatch("table-built"); - } - - _loadInitialData(){ - this.dataLoader.load(this.options.data); - } - - //deconstructor - destroy(){ - var element = this.element; - - this.destroyed = true; - - TableRegistry.deregister(this); //deregister table from inter-device communication - - this.eventBus.dispatch("table-destroy"); - - //clear row data - this.rowManager.destroy(); - - //clear DOM - while(element.firstChild) element.removeChild(element.firstChild); - element.classList.remove("tabulator"); - - this.externalEvents.dispatch("tableDestroyed"); - } - - _detectBrowser(){ - var ua = navigator.userAgent||navigator.vendor||window.opera; - - if(ua.indexOf("Trident") > -1){ - this.browser = "ie"; - this.browserSlow = true; - }else if(ua.indexOf("Edge") > -1){ - this.browser = "edge"; - this.browserSlow = true; - }else if(ua.indexOf("Firefox") > -1){ - this.browser = "firefox"; - this.browserSlow = false; - }else if(ua.indexOf("Mac OS") > -1){ - this.browser = "safari"; - this.browserSlow = false; - }else { - this.browser = "other"; - this.browserSlow = false; - } - - this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4)); - } - - initGuard(func, msg){ - var stack, line; - - if(this.options.debugInitialization && !this.initialized){ - if(!func){ - stack = new Error().stack.split("\n"); - - line = stack[0] == "Error" ? stack[2] : stack[1]; - - if(line[0] == " "){ - func = line.trim().split(" ")[1].split(".")[1]; - }else { - func = line.trim().split("@")[0]; - } - } - - console.warn("Table Not Initialized - Calling the " + func + " function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function." + (msg ? " " + msg : "")); - } - - return this.initialized; - } - - ////////////////// Data Handling ////////////////// - //block table redrawing - blockRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-blocking"); - - this.rowManager.blockRedraw(); - this.columnManager.blockRedraw(); - - this.eventBus.dispatch("redraw-blocked"); - } - - //restore table redrawing - restoreRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-restoring"); - - this.rowManager.restoreRedraw(); - this.columnManager.restoreRedraw(); - - this.eventBus.dispatch("redraw-restored"); - } - - //load data - setData(data, params, config){ - this.initGuard(false, "To set initial data please use the 'data' property in the table constructor."); - - return this.dataLoader.load(data, params, config, false); - } - - //clear data - clearData(){ - this.initGuard(); - - this.dataLoader.blockActiveLoad(); - this.rowManager.clearData(); - } - - //get table data array - getData(active){ - return this.rowManager.getData(active); - } - - //get table data array count - getDataCount(active){ - return this.rowManager.getDataCount(active); - } - - //replace data, keeping table in position with same sort - replaceData(data, params, config){ - this.initGuard(); - - return this.dataLoader.load(data, params, config, true, true); - } - - //update table data - updateData(data){ - var responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }) - .catch((e) => { - reject("Update Error - Unable to update row", item, e); - }); - }else { - reject("Update Error - Unable to find row", item); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - addData(data, pos, index){ - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - this.rowManager.addRows(data, pos, index) - .then((rows) => { - var output = []; - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - resolve(output); - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //update table data - updateOrAddData(data){ - var rows = [], - responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - responses++; - - if(row){ - row.updateData(item) - .then(()=>{ - responses--; - rows.push(row.getComponent()); - - if(!responses){ - resolve(rows); - } - }); - }else { - this.rowManager.addRows(item) - .then((newRows)=>{ - responses--; - rows.push(newRows[0].getComponent()); - - if(!responses){ - resolve(rows); - } - }); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //get row object - getRow(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", index); - return false; - } - } - - //get row object - getRowFromPosition(position){ - var row = this.rowManager.getRowFromPosition(position); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", position); - return false; - } - } - - //delete row from table - deleteRow(index){ - var foundRows = []; - - this.initGuard(); - - if(!Array.isArray(index)){ - index = [index]; - } - - //find matching rows - for(let item of index){ - let row = this.rowManager.findRow(item, true); - - if(row){ - foundRows.push(row); - }else { - console.error("Delete Error - No matching row found:", item); - return Promise.reject("Delete Error - No matching row found"); - } - } - - //sort rows into correct order to ensure smooth delete from table - foundRows.sort((a, b) => { - return this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1; - }); - - //delete rows - foundRows.forEach((row) =>{ - row.delete(); - }); - - this.rowManager.reRenderInPosition(); - - return Promise.resolve(); - } - - //add row to table - addRow(data, pos, index){ - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index, true) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - - //update a row if it exists otherwise create it - updateOrAddRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return row.getComponent(); - }); - }else { - return this.rowManager.addRows(data) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - } - - //update row data - updateRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return Promise.resolve(row.getComponent()); - }); - }else { - console.warn("Update Error - No matching row found:", index); - return Promise.reject("Update Error - No matching row found"); - } - } - - //scroll to row in DOM - scrollToRow(index, position, ifVisible){ - var row = this.rowManager.findRow(index); - - if(row){ - return this.rowManager.scrollToRow(row, position, ifVisible); - }else { - console.warn("Scroll Error - No matching row found:", index); - return Promise.reject("Scroll Error - No matching row found"); - } - } - - moveRow(from, to, after){ - var fromRow = this.rowManager.findRow(from); - - this.initGuard(); - - if(fromRow){ - fromRow.moveToRow(to, after); - }else { - console.warn("Move Error - No matching row found:", from); - } - } - - getRows(active){ - return this.rowManager.getComponents(active); - } - - //get position of row in table - getRowPosition(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getPosition(); - }else { - console.warn("Position Error - No matching row found:", index); - return false; - } - } - - /////////////// Column Functions /////////////// - setColumns(definition){ - this.initGuard(false, "To set initial columns please use the 'columns' property in the table constructor"); - - this.columnManager.setColumns(definition); - } - - getColumns(structured){ - return this.columnManager.getComponents(structured); - } - - getColumn(field){ - var column = this.columnManager.findColumn(field); - - if(column){ - return column.getComponent(); - }else { - console.warn("Find Error - No matching column found:", field); - return false; - } - } - - getColumnDefinitions(){ - return this.columnManager.getDefinitionTree(); - } - - showColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.show(); - }else { - console.warn("Column Show Error - No matching column found:", field); - return false; - } - } - - hideColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.hide(); - }else { - console.warn("Column Hide Error - No matching column found:", field); - return false; - } - } - - toggleColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - if(column.visible){ - column.hide(); - }else { - column.show(); - } - }else { - console.warn("Column Visibility Toggle Error - No matching column found:", field); - return false; - } - } - - addColumn(definition, before, field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - return this.columnManager.addColumn(definition, before, column) - .then((column) => { - return column.getComponent(); - }); - } - - deleteColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.delete(); - }else { - console.warn("Column Delete Error - No matching column found:", field); - return Promise.reject(); - } - } - - updateColumnDefinition(field, definition){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.updateDefinition(definition); - }else { - console.warn("Column Update Error - No matching column found:", field); - return Promise.reject(); - } - } - - moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from), - toColumn = this.columnManager.findColumn(to); - - this.initGuard(); - - if(fromColumn){ - if(toColumn){ - this.columnManager.moveColumn(fromColumn, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - }else { - console.warn("Move Error - No matching column found:", from); - } - } - - //scroll to column in DOM - scrollToColumn(field, position, ifVisible){ - return new Promise((resolve, reject) => { - var column = this.columnManager.findColumn(field); - - if(column){ - return this.columnManager.scrollToColumn(column, position, ifVisible); - }else { - console.warn("Scroll Error - No matching column found:", field); - return Promise.reject("Scroll Error - No matching column found"); - } - }); - } - - //////////// General Public Functions //////////// - //redraw list without updating data - redraw(force){ - this.initGuard(); - - this.columnManager.redraw(force); - this.rowManager.redraw(force); - } - - setHeight(height){ - this.options.height = isNaN(height) ? height : height + "px"; - this.element.style.height = this.options.height; - this.rowManager.initializeRenderer(); - this.rowManager.redraw(); - } - - //////////////////// Event Bus /////////////////// - - on(key, callback){ - this.externalEvents.subscribe(key, callback); - } - - off(key, callback){ - this.externalEvents.unsubscribe(key, callback); - } - - dispatchEvent(){ - var args = Array.from(arguments); - args.shift(); - - this.externalEvents.dispatch(...arguments); - } - - //////////////////// Alerts /////////////////// - - alert(contents, type){ - this.initGuard(); - - this.alertManager.alert(contents, type); - } - - clearAlert(){ - this.initGuard(); - - this.alertManager.clear(); - } - - ////////////// Extension Management ////////////// - modExists(plugin, required){ - if(this.modules[plugin]){ - return true; - }else { - if(required){ - console.error("Tabulator Module Not Installed: " + plugin); - } - return false; - } - } - - module(key){ - var mod = this.modules[key]; - - if(!mod){ - console.error("Tabulator module not installed: " + key); - } - - return mod; - } - } - - //default setup options - Tabulator.defaultOptions = defaultOptions; - - //bind modules and static functionality - new ModuleBinder(Tabulator); - - var defaultAccessors = {}; - - class Accessor extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types - - this.registerColumnOption("accessor"); - this.registerColumnOption("accessorParams"); - this.registerColumnOption("accessorData"); - this.registerColumnOption("accessorDataParams"); - this.registerColumnOption("accessorDownload"); - this.registerColumnOption("accessorDownloadParams"); - this.registerColumnOption("accessorClipboard"); - this.registerColumnOption("accessorClipboardParams"); - this.registerColumnOption("accessorPrint"); - this.registerColumnOption("accessorPrintParams"); - this.registerColumnOption("accessorHtmlOutput"); - this.registerColumnOption("accessorHtmlOutputParams"); - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-retrieve", this.transformRow.bind(this)); - } - - //initialize column accessor - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - accessor; - - if(column.definition[key]){ - accessor = this.lookupAccessor(column.definition[key]); - - if(accessor){ - match = true; - - config[key] = { - accessor:accessor, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.accessor = config; - } - } - - lookupAccessor(value){ - var accessor = false; - - //set column accessor - switch(typeof value){ - case "string": - if(Accessor.accessors[value]){ - accessor = Accessor.accessors[value]; - }else { - console.warn("Accessor Error - No such accessor found, ignoring: ", value); - } - break; - - case "function": - accessor = value; - break; - } - - return accessor; - } - - //apply accessor to row - transformRow(row, type){ - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - rowComponent = row.getComponent(); - - //clone data object with deep copy to isolate internal data from returned result - var data = Helpers.deepClone(row.data || {}); - - this.table.columnManager.traverse(function(column){ - var value, accessor, params, colComponent; - - if(column.modules.accessor){ - - accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false; - - if(accessor){ - value = column.getFieldValue(data); - - if(value != "undefined"){ - colComponent = column.getComponent(); - params = typeof accessor.params === "function" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params; - column.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent)); - } - } - } - }); - - return data; - } - } - - //load defaults - Accessor.moduleName = "accessor"; - Accessor.accessors = defaultAccessors; - - var defaultConfig = { - method: "GET", - }; - - function generateParamsList(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; - } - - function serializeParams(params){ - var output = generateParamsList(params), - encoded = []; - - output.forEach(function(item){ - encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value)); - }); - - return encoded.join("&"); - } - - function urlBuilder(url, config, params){ - if(url){ - if(params && Object.keys(params).length){ - if(!config.method || config.method.toLowerCase() == "get"){ - config.method = "get"; - - url += (url.includes("?") ? "&" : "?") + serializeParams(params); - } - } - } - - return url; - } - - function defaultLoaderPromise(url, config, params){ - var contentType; - - return new Promise((resolve, reject) => { - //set url - url = this.urlGenerator.call(this.table, url, config, params); - - //set body content if not GET request - if(config.method.toUpperCase() != "GET"){ - contentType = typeof this.table.options.ajaxContentType === "object" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType]; - if(contentType){ - - for(var key in contentType.headers){ - if(!config.headers){ - config.headers = {}; - } - - if(typeof config.headers[key] === "undefined"){ - config.headers[key] = contentType.headers[key]; - } - } - - config.body = contentType.body.call(this, url, config, params); - - }else { - console.warn("Ajax Error - Invalid ajaxContentType value:", this.table.options.ajaxContentType); - } - } - - if(url){ - //configure headers - if(typeof config.headers === "undefined"){ - config.headers = {}; - } - - if(typeof config.headers.Accept === "undefined"){ - config.headers.Accept = "application/json"; - } - - if(typeof config.headers["X-Requested-With"] === "undefined"){ - config.headers["X-Requested-With"] = "XMLHttpRequest"; - } - - if(typeof config.mode === "undefined"){ - config.mode = "cors"; - } - - if(config.mode == "cors"){ - if(typeof config.headers["Origin"] === "undefined"){ - config.headers["Origin"] = window.location.origin; - } - - if(typeof config.credentials === "undefined"){ - config.credentials = 'same-origin'; - } - }else { - if(typeof config.credentials === "undefined"){ - config.credentials = 'include'; - } - } - - //send request - fetch(url, config) - .then((response)=>{ - if(response.ok) { - response.json() - .then((data)=>{ - resolve(data); - }).catch((error)=>{ - reject(error); - console.warn("Ajax Load Error - Invalid JSON returned", error); - }); - }else { - console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText); - reject(response); - } - }) - .catch((error)=>{ - console.error("Ajax Load Error - Connection Error: ", error); - reject(error); - }); - }else { - console.warn("Ajax Load Error - No URL Set"); - resolve([]); - } - }); - } - - function generateParamsList$1(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; - } - - var defaultContentTypeFormatters = { - "json":{ - headers:{ - 'Content-Type': 'application/json', - }, - body:function(url, config, params){ - return JSON.stringify(params); - }, - }, - "form":{ - headers:{ - }, - body:function(url, config, params){ - - var output = generateParamsList$1(params), - form = new FormData(); - - output.forEach(function(item){ - form.append(item.key, item.value); - }); - - return form; - }, - }, - }; - - class Ajax extends Module{ - - constructor(table){ - super(table); - - this.config = {}; //hold config object for ajax request - this.url = ""; //request URL - this.urlGenerator = false; - this.params = false; //request parameters - - this.loaderPromise = false; - - this.registerTableOption("ajaxURL", false); //url for ajax loading - this.registerTableOption("ajaxURLGenerator", false); - this.registerTableOption("ajaxParams", {}); //params for ajax loading - this.registerTableOption("ajaxConfig", "get"); //ajax request type - this.registerTableOption("ajaxContentType", "form"); //ajax request type - this.registerTableOption("ajaxRequestFunc", false); //promise function - - this.registerTableOption("ajaxRequesting", function(){}); - this.registerTableOption("ajaxResponse", false); - - this.contentTypeFormatters = Ajax.contentTypeFormatters; - } - - //initialize setup options - initialize(){ - this.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise; - this.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator; - - if(this.table.options.ajaxURL){ - this.setUrl(this.table.options.ajaxURL); - } - - - this.setDefaultConfig(this.table.options.ajaxConfig); - - this.registerTableFunction("getAjaxUrl", this.getUrl.bind(this)); - - this.subscribe("data-loading", this.requestDataCheck.bind(this)); - this.subscribe("data-params", this.requestParams.bind(this)); - this.subscribe("data-load", this.requestData.bind(this)); - } - - requestParams(data, config, silent, params){ - var ajaxParams = this.table.options.ajaxParams; - - if(ajaxParams){ - if(typeof ajaxParams === "function"){ - ajaxParams = ajaxParams.call(this.table); - } - - params = Object.assign(params, ajaxParams); - } - - return params; - } - - requestDataCheck(data, params, config, silent){ - return !!((!data && this.url) || typeof data === "string"); - } - - requestData(url, params, config, silent, previousData){ - var ajaxConfig; - - if(!previousData && this.requestDataCheck(url)){ - if(url){ - this.setUrl(url); - } - - ajaxConfig = this.generateConfig(config); - - return this.sendRequest(this.url, params, ajaxConfig); - }else { - return previousData; - } - } - - setDefaultConfig(config = {}){ - this.config = Object.assign({}, Ajax.defaultConfig); - - if(typeof config == "string"){ - this.config.method = config; - }else { - Object.assign(this.config, config); - } - } - - //load config object - generateConfig(config = {}){ - var ajaxConfig = Object.assign({}, this.config); - - if(typeof config == "string"){ - ajaxConfig.method = config; - }else { - Object.assign(ajaxConfig, config); - } - - return ajaxConfig; - } - - //set request url - setUrl(url){ - this.url = url; - } - - //get request url - getUrl(){ - return this.url; - } - - //send ajax request - sendRequest(url, params, config){ - if(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){ - return this.loaderPromise(url, config, params) - .then((data)=>{ - if(this.table.options.ajaxResponse){ - data = this.table.options.ajaxResponse.call(this.table, url, params, data); - } - - return data; - }); - }else { - return Promise.reject(); - } - } - } - - Ajax.moduleName = "ajax"; - - //load defaults - Ajax.defaultConfig = defaultConfig; - Ajax.defaultURLGenerator = urlBuilder; - Ajax.defaultLoaderPromise = defaultLoaderPromise; - Ajax.contentTypeFormatters = defaultContentTypeFormatters; - - var defaultPasteActions = { - replace:function(rows){ - return this.table.setData(rows); - }, - update:function(rows){ - return this.table.updateOrAddData(rows); - }, - insert:function(rows){ - return this.table.addData(rows); - }, - }; - - var defaultPasteParsers = { - table:function(clipboard){ - var data = [], - headerFindSuccess = true, - columns = this.table.columnManager.columns, - columnMap = [], - rows = []; - - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length && !(data.length === 1 && data[0].length < 2)){ - - //check if headers are present by title - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - //check if column headers are present by field - if(!headerFindSuccess){ - headerFindSuccess = true; - columnMap = []; - - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.field && value.trim() && column.field.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - if(!headerFindSuccess){ - columnMap = this.table.columnManager.columnsByIndex; - } - } - - //remove header row if found - if(headerFindSuccess){ - data.shift(); - } - - data.forEach(function(item){ - var row = {}; - - item.forEach(function(value, i){ - if(columnMap[i]){ - row[columnMap[i].field] = value; - } - }); - - rows.push(row); - }); - - return rows; - }else { - return false; - } - } - }; - - class Clipboard extends Module{ - - constructor(table){ - super(table); - - this.mode = true; - this.pasteParser = function(){}; - this.pasteAction = function(){}; - this.customSelection = false; - this.rowRange = false; - this.blocked = true; //block copy actions not originating from this command - - this.registerTableOption("clipboard", false); //enable clipboard - this.registerTableOption("clipboardCopyStyled", true); //formatted table data - this.registerTableOption("clipboardCopyConfig", false); //clipboard config - this.registerTableOption("clipboardCopyFormatter", false); //DEPRECATED - REMOVE in 5.0 - this.registerTableOption("clipboardCopyRowRange", "active"); //restrict clipboard to visible rows only - this.registerTableOption("clipboardPasteParser", "table"); //convert pasted clipboard data to rows - this.registerTableOption("clipboardPasteAction", "insert"); //how to insert pasted data into the table - - this.registerColumnOption("clipboard"); - this.registerColumnOption("titleClipboard"); - } - - initialize(){ - this.mode = this.table.options.clipboard; - - this.rowRange = this.table.options.clipboardCopyRowRange; - - if(this.mode === true || this.mode === "copy"){ - this.table.element.addEventListener("copy", (e) => { - var plain, html, list; - - if(!this.blocked){ - e.preventDefault(); - - if(this.customSelection){ - plain = this.customSelection; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - } - }else { - - list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, "clipboard"); - - html = this.table.modules.export.generateHTMLTable(list); - plain = html ? this.generatePlainContent(list) : ""; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - html = this.table.options.clipboardCopyFormatter("html", html); - } - } - - if (window.clipboardData && window.clipboardData.setData) { - window.clipboardData.setData('Text', plain); - } else if (e.clipboardData && e.clipboardData.setData) { - e.clipboardData.setData('text/plain', plain); - if(html){ - e.clipboardData.setData('text/html', html); - } - } else if (e.originalEvent && e.originalEvent.clipboardData.setData) { - e.originalEvent.clipboardData.setData('text/plain', plain); - if(html){ - e.originalEvent.clipboardData.setData('text/html', html); - } - } - - this.dispatchExternal("clipboardCopied", plain, html); - - this.reset(); - } - }); - } - - if(this.mode === true || this.mode === "paste"){ - this.table.element.addEventListener("paste", (e) => { - this.paste(e); - }); - } - - this.setPasteParser(this.table.options.clipboardPasteParser); - this.setPasteAction(this.table.options.clipboardPasteAction); - - this.registerTableFunction("copyToClipboard", this.copy.bind(this)); - } - - reset(){ - this.blocked = true; - this.customSelection = false; - } - - generatePlainContent (list) { - var output = []; - - list.forEach((row) => { - var rowData = []; - - row.columns.forEach((col) => { - var value = ""; - - if(col){ - - if(row.type === "group"){ - col.value = col.component.getKey(); - } - - if(col.value === null){ - value = ""; - }else { - switch(typeof col.value){ - case "object": - value = JSON.stringify(col.value); - break; - - case "undefined": - value = ""; - break; - - default: - value = col.value; - } - } - } - - rowData.push(value); - }); - - output.push(rowData.join("\t")); - }); - - return output.join("\n"); - } - - copy (range, internal) { - var sel, textRange; - this.blocked = false; - this.customSelection = false; - - if (this.mode === true || this.mode === "copy") { - - this.rowRange = range || this.table.options.clipboardCopyRowRange; - - if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { - range = document.createRange(); - range.selectNodeContents(this.table.element); - sel = window.getSelection(); - - if (sel.toString() && internal) { - this.customSelection = sel.toString(); - } - - sel.removeAllRanges(); - sel.addRange(range); - } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") { - textRange = document.body.createTextRange(); - textRange.moveToElementText(this.table.element); - textRange.select(); - } - - document.execCommand('copy'); - - if (sel) { - sel.removeAllRanges(); - } - } - } - - //PASTE EVENT HANDLING - setPasteAction(action){ - - switch(typeof action){ - case "string": - this.pasteAction = Clipboard.pasteActions[action]; - - if(!this.pasteAction){ - console.warn("Clipboard Error - No such paste action found:", action); - } - break; - - case "function": - this.pasteAction = action; - break; - } - } - - setPasteParser(parser){ - switch(typeof parser){ - case "string": - this.pasteParser = Clipboard.pasteParsers[parser]; - - if(!this.pasteParser){ - console.warn("Clipboard Error - No such paste parser found:", parser); - } - break; - - case "function": - this.pasteParser = parser; - break; - } - } - - paste(e){ - var data, rowData, rows; - - if(this.checkPaseOrigin(e)){ - - data = this.getPasteData(e); - - rowData = this.pasteParser.call(this, data); - - if(rowData){ - e.preventDefault(); - - if(this.table.modExists("mutator")){ - rowData = this.mutateData(rowData); - } - - rows = this.pasteAction.call(this, rowData); - - this.dispatchExternal("clipboardPasted", data, rowData, rows); - }else { - this.dispatchExternal("clipboardPasteError", data); - } - } - } - - mutateData(data){ - var output = []; - - if(Array.isArray(data)){ - data.forEach((row) => { - output.push(this.table.modules.mutator.transformRow(row, "clipboard")); - }); - }else { - output = data; - } - - return output; - } - - - checkPaseOrigin(e){ - var valid = true; - - if(e.target.tagName != "DIV" || this.table.modules.edit.currentCell){ - valid = false; - } - - return valid; - } - - getPasteData(e){ - var data; - - if (window.clipboardData && window.clipboardData.getData) { - data = window.clipboardData.getData('Text'); - } else if (e.clipboardData && e.clipboardData.getData) { - data = e.clipboardData.getData('text/plain'); - } else if (e.originalEvent && e.originalEvent.clipboardData.getData) { - data = e.originalEvent.clipboardData.getData('text/plain'); - } - - return data; - } - } - - Clipboard.moduleName = "clipboard"; - - //load defaults - Clipboard.pasteActions = defaultPasteActions; - Clipboard.pasteParsers = defaultPasteParsers; - - class CalcComponent{ - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getTable(){ - return this._row.table; - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - _getSelf(){ - return this._row; - } - } - - var defaultCalculations = { - "avg":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2; - - if(values.length){ - output = values.reduce(function(sum, value){ - return Number(sum) + Number(value); - }); - - output = output / values.length; - - output = precision !== false ? output.toFixed(precision) : output; - } - - return parseFloat(output).toString(); - }, - "max":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value > output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "min":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value < output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "sum":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - if(values.length){ - values.forEach(function(value){ - value = Number(value); - - output += !isNaN(value) ? Number(value) : 0; - }); - } - - return precision !== false ? output.toFixed(precision) : output; - }, - "concat":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - output = values.reduce(function(sum, value){ - return String(sum) + String(value); - }); - } - - return output; - }, - "count":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - values.forEach(function(value){ - if(value){ - output ++; - } - }); - } - - return output; - }, - "unique":function(values, data, calcParams){ - var unique = values.filter((value, index) => { - return (values || value === 0) && values.indexOf(value) === index; - }); - - return unique.length; - }, - }; - - class ColumnCalcs extends Module{ - - constructor(table){ - super(table); - - this.topCalcs = []; - this.botCalcs = []; - this.genColumn = false; - this.topElement = this.createElement(); - this.botElement = this.createElement(); - this.topRow = false; - this.botRow = false; - this.topInitialized = false; - this.botInitialized = false; - - this.blocked = false; - this.recalcAfterBlock = false; - - this.registerTableOption("columnCalcs", true); - - this.registerColumnOption("topCalc"); - this.registerColumnOption("topCalcParams"); - this.registerColumnOption("topCalcFormatter"); - this.registerColumnOption("topCalcFormatterParams"); - this.registerColumnOption("bottomCalc"); - this.registerColumnOption("bottomCalcParams"); - this.registerColumnOption("bottomCalcFormatter"); - this.registerColumnOption("bottomCalcFormatterParams"); - } - - createElement (){ - var el = document.createElement("div"); - el.classList.add("tabulator-calcs-holder"); - return el; - } - - initialize(){ - this.genColumn = new Column({field:"value"}, this); - - this.subscribe("cell-value-changed", this.cellValueChanged.bind(this)); - this.subscribe("column-init", this.initializeColumnCheck.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("column-moved", this.recalcActiveRows.bind(this)); - this.subscribe("column-add", this.recalcActiveRows.bind(this)); - this.subscribe("data-refreshed", this.recalcActiveRowsRefresh.bind(this)); - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - - this.subscribe("redraw-blocked", this.blockRedraw.bind(this)); - this.subscribe("redraw-restored", this.restoreRedraw.bind(this)); - - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - - this.registerTableFunction("getCalcResults", this.getResults.bind(this)); - this.registerTableFunction("recalc", this.userRecalc.bind(this)); - - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - - tableRedraw(force){ - this.recalc(this.table.rowManager.activeRows); - - if(force){ - this.redraw(); - } - } - - blockRedraw(){ - this.blocked = true; - this.recalcAfterBlock = false; - } - - - restoreRedraw(){ - this.blocked = false; - - if(this.recalcAfterBlock){ - this.recalcAfterBlock = false; - this.recalcActiveRowsRefresh(); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - userRecalc(){ - this.recalc(this.table.rowManager.activeRows); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - blockCheck(){ - if(this.blocked){ - this.recalcAfterBlock = true; - } - - return this.blocked; - } - - visibleRows(viewable, rows){ - if(this.topRow){ - rows.unshift(this.topRow); - } - - if(this.botRow){ - rows.push(this.botRow); - } - - return rows; - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.recalcRowGroup(row); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRowsRefresh(){ - if(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){ - this.recalcAll(); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRows(){ - this.recalc(this.table.rowManager.activeRows); - } - - cellValueChanged(cell){ - if(cell.column.definition.topCalc || cell.column.definition.bottomCalc){ - if(this.table.options.groupBy){ - if(this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both"){ - this.recalcActiveRows(); - } - - if(this.table.options.columnCalcs != "table"){ - this.recalcRowGroup(cell.row); - } - }else { - this.recalcActiveRows(); - } - } - } - - initializeColumnCheck(column){ - if(column.definition.topCalc || column.definition.bottomCalc){ - this.initializeColumn(column); - } - } - - //initialize column calcs - initializeColumn(column){ - var def = column.definition; - - var config = { - topCalcParams:def.topCalcParams || {}, - botCalcParams:def.bottomCalcParams || {}, - }; - - if(def.topCalc){ - - switch(typeof def.topCalc){ - case "string": - if(ColumnCalcs.calculations[def.topCalc]){ - config.topCalc = ColumnCalcs.calculations[def.topCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc); - } - break; - - case "function": - config.topCalc = def.topCalc; - break; - - } - - if(config.topCalc){ - column.modules.columnCalcs = config; - this.topCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeTopRow(); - } - } - - } - - if(def.bottomCalc){ - switch(typeof def.bottomCalc){ - case "string": - if(ColumnCalcs.calculations[def.bottomCalc]){ - config.botCalc = ColumnCalcs.calculations[def.bottomCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc); - } - break; - - case "function": - config.botCalc = def.bottomCalc; - break; - - } - - if(config.botCalc){ - column.modules.columnCalcs = config; - this.botCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeBottomRow(); - } - } - } - - } - - //dummy functions to handle being mock column manager - registerColumnField(){} - - removeCalcs(){ - var changed = false; - - if(this.topInitialized){ - this.topInitialized = false; - this.topElement.parentNode.removeChild(this.topElement); - changed = true; - } - - if(this.botInitialized){ - this.botInitialized = false; - this.footerRemove(this.botElement); - changed = true; - } - - if(changed){ - this.table.rowManager.adjustTableSize(); - } - } - - reinitializeCalcs(){ - if(this.topCalcs.length){ - this.initializeTopRow(); - } - - if(this.botCalcs.length){ - this.initializeBottomRow(); - } - } - - initializeTopRow(){ - if(!this.topInitialized){ - this.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling); - this.topInitialized = true; - } - } - - initializeBottomRow(){ - if(!this.botInitialized){ - this.footerPrepend(this.botElement); - this.botInitialized = true; - } - } - - scrollHorizontal(left){ - if(this.botInitialized && this.botRow){ - this.botElement.scrollLeft = left; - } - } - - recalc(rows){ - var data, row; - - if(!this.blockCheck()){ - if(this.topInitialized || this.botInitialized){ - data = this.rowsToData(rows); - - if(this.topInitialized){ - if(this.topRow){ - this.topRow.deleteCells(); - } - - row = this.generateRow("top", data); - this.topRow = row; - while(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild); - this.topElement.appendChild(row.getElement()); - row.initialize(true); - } - - if(this.botInitialized){ - if(this.botRow){ - this.botRow.deleteCells(); - } - - row = this.generateRow("bottom", data); - this.botRow = row; - while(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild); - this.botElement.appendChild(row.getElement()); - row.initialize(true); - } - - this.table.rowManager.adjustTableSize(); - - //set resizable handles - if(this.table.modExists("frozenColumns")){ - this.table.modules.frozenColumns.layout(); - } - } - } - } - - recalcRowGroup(row){ - this.recalcGroup(this.table.modules.groupRows.getRowGroup(row)); - } - - recalcAll(){ - if(this.topCalcs.length || this.botCalcs.length){ - if(this.table.options.columnCalcs !== "group"){ - this.recalcActiveRows(); - } - - if(this.table.options.groupBy && this.table.options.columnCalcs !== "table"){ - - var groups = this.table.modules.groupRows.getChildGroups(); - - groups.forEach((group) => { - this.recalcGroup(group); - }); - } - } - } - - recalcGroup(group){ - var data, rowData; - - if(!this.blockCheck()){ - if(group){ - if(group.calcs){ - if(group.calcs.bottom){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("bottom", data); - - group.calcs.bottom.updateData(rowData); - group.calcs.bottom.reinitialize(); - } - - if(group.calcs.top){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("top", data); - - group.calcs.top.updateData(rowData); - group.calcs.top.reinitialize(); - } - } - } - } - } - - //generate top stats row - generateTopRow(rows){ - return this.generateRow("top", this.rowsToData(rows)); - } - //generate bottom stats row - generateBottomRow(rows){ - return this.generateRow("bottom", this.rowsToData(rows)); - } - - rowsToData(rows){ - var data = []; - - rows.forEach((row) => { - data.push(row.getData()); - - if(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){ - if(row.modules.dataTree && row.modules.dataTree.open){ - var children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row)); - data = data.concat(children); - } - } - }); - - return data; - } - - //generate stats row - generateRow(pos, data){ - var rowData = this.generateRowData(pos, data), - row; - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.disable(); - } - - row = new Row(rowData, this, "calc"); - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.enable(); - } - - row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos); - - row.component = false; - - row.getComponent = () => { - if(!row.component){ - row.component = new CalcComponent(row); - } - - return row.component; - }; - - row.generateCells = () => { - - var cells = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - - //set field name of mock column - this.genColumn.setField(column.getField()); - this.genColumn.hozAlign = column.hozAlign; - - if(column.definition[pos + "CalcFormatter"] && this.table.modExists("format")){ - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]), - params: column.definition[pos + "CalcFormatterParams"] || {}, - }; - }else { - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter("plaintext"), - params:{} - }; - } - - //ensure css class definition is replicated to calculation cell - this.genColumn.definition.cssClass = column.definition.cssClass; - - //generate cell and assign to correct column - var cell = new Cell(this.genColumn, row); - cell.getElement(); - cell.column = column; - cell.setWidth(); - - column.cells.push(cell); - cells.push(cell); - - if(!column.visible){ - cell.hide(); - } - }); - - row.cells = cells; - }; - - return row; - } - - //generate stats row - generateRowData(pos, data){ - var rowData = {}, - calcs = pos == "top" ? this.topCalcs : this.botCalcs, - type = pos == "top" ? "topCalc" : "botCalc", - params, paramKey; - - calcs.forEach(function(column){ - var values = []; - - if(column.modules.columnCalcs && column.modules.columnCalcs[type]){ - data.forEach(function(item){ - values.push(column.getFieldValue(item)); - }); - - paramKey = type + "Params"; - params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey]; - - column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params)); - } - }); - - return rowData; - } - - hasTopCalcs(){ - return !!(this.topCalcs.length); - } - - hasBottomCalcs(){ - return !!(this.botCalcs.length); - } - - //handle table redraw - redraw(){ - if(this.topRow){ - this.topRow.normalizeHeight(true); - } - if(this.botRow){ - this.botRow.normalizeHeight(true); - } - } - - //return the calculated - getResults(){ - var results = {}, - groups; - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - groups = this.table.modules.groupRows.getGroups(true); - - groups.forEach((group) => { - results[group.getKey()] = this.getGroupResults(group); - }); - }else { - results = { - top: this.topRow ? this.topRow.getData() : {}, - bottom: this.botRow ? this.botRow.getData() : {}, - }; - } - - return results; - } - - //get results from a group - getGroupResults(group){ - var groupObj = group._getSelf(), - subGroups = group.getSubGroups(), - subGroupResults = {}, - results = {}; - - subGroups.forEach((subgroup) => { - subGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup); - }); - - results = { - top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {}, - bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {}, - groups: subGroupResults, - }; - - return results; - } - - adjustForScrollbar(width){ - if(this.botRow){ - if(this.table.rtl){ - this.botElement.style.paddingLeft = width + "px"; - }else { - this.botElement.style.paddingRight = width + "px"; - } - } - } - } - - ColumnCalcs.moduleName = "columnCalcs"; - - //load defaults - ColumnCalcs.calculations = defaultCalculations; - - class DataTree extends Module{ - - constructor(table){ - super(table); - - this.indent = 10; - this.field = ""; - this.collapseEl = null; - this.expandEl = null; - this.branchEl = null; - this.elementField = false; - - this.startOpen = function(){}; - - this.registerTableOption("dataTree", false); //enable data tree - this.registerTableOption("dataTreeFilter", true); //filter child rows - this.registerTableOption("dataTreeSort", true); //sort child rows - this.registerTableOption("dataTreeElementColumn", false); - this.registerTableOption("dataTreeBranchElement", true);//show data tree branch element - this.registerTableOption("dataTreeChildIndent", 9); //data tree child indent in px - this.registerTableOption("dataTreeChildField", "_children");//data tre column field to look for child rows - this.registerTableOption("dataTreeCollapseElement", false);//data tree row collapse element - this.registerTableOption("dataTreeExpandElement", false);//data tree row expand element - this.registerTableOption("dataTreeStartExpanded", false); - this.registerTableOption("dataTreeChildColumnCalcs", false);//include visible data tree rows in column calculations - this.registerTableOption("dataTreeSelectPropagate", false);//selecting a parent row selects its children - - //register component functions - this.registerComponentFunction("row", "treeCollapse", this.collapseRow.bind(this)); - this.registerComponentFunction("row", "treeExpand", this.expandRow.bind(this)); - this.registerComponentFunction("row", "treeToggle", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "getTreeParent", this.getTreeParent.bind(this)); - this.registerComponentFunction("row", "getTreeChildren", this.getRowChildren.bind(this)); - this.registerComponentFunction("row", "addTreeChild", this.addTreeChildRow.bind(this)); - this.registerComponentFunction("row", "isTreeExpanded", this.isRowExpanded.bind(this)); - } - - initialize(){ - if(this.table.options.dataTree){ - var dummyEl = null, - options = this.table.options; - - this.field = options.dataTreeChildField; - this.indent = options.dataTreeChildIndent; - - if(this.options("movableRows")){ - console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"); - } - - if(options.dataTreeBranchElement){ - - if(options.dataTreeBranchElement === true){ - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch"); - }else { - if(typeof options.dataTreeBranchElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeBranchElement; - this.branchEl = dummyEl.firstChild; - }else { - this.branchEl = options.dataTreeBranchElement; - } - } - }else { - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch-empty"); - } - - if(options.dataTreeCollapseElement){ - if(typeof options.dataTreeCollapseElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeCollapseElement; - this.collapseEl = dummyEl.firstChild; - }else { - this.collapseEl = options.dataTreeCollapseElement; - } - }else { - this.collapseEl = document.createElement("div"); - this.collapseEl.classList.add("tabulator-data-tree-control"); - this.collapseEl.tabIndex = 0; - this.collapseEl.innerHTML = "
              "; - } - - if(options.dataTreeExpandElement){ - if(typeof options.dataTreeExpandElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeExpandElement; - this.expandEl = dummyEl.firstChild; - }else { - this.expandEl = options.dataTreeExpandElement; - } - }else { - this.expandEl = document.createElement("div"); - this.expandEl.classList.add("tabulator-data-tree-control"); - this.expandEl.tabIndex = 0; - this.expandEl.innerHTML = "
              "; - } - - - switch(typeof options.dataTreeStartExpanded){ - case "boolean": - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded; - }; - break; - - case "function": - this.startOpen = options.dataTreeStartExpanded; - break; - - default: - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded[index]; - }; - break; - } - - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("row-deleted", this.rowDelete.bind(this),0); - this.subscribe("row-data-changed", this.rowDataChanged.bind(this), 10); - this.subscribe("cell-value-updated", this.cellValueChanged.bind(this)); - this.subscribe("edit-cancelled", this.cellValueChanged.bind(this)); - this.subscribe("column-moving-rows", this.columnMoving.bind(this)); - this.subscribe("table-built", this.initializeElementField.bind(this)); - this.subscribe("table-redrawing", this.tableRedrawing.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 30); - } - } - - tableRedrawing(force){ - var rows; - - if(force){ - rows = this.table.rowManager.getRows(); - - rows.forEach((row) => { - this.reinitializeRowChildren(row); - }); - } - } - - initializeElementField(){ - var firstCol = this.table.columnManager.getFirstVisibleColumn(); - - this.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false); - } - - getRowChildren(row){ - return this.getTreeChildren(row, true); - } - - columnMoving(){ - var rows = []; - - this.table.rowManager.rows.forEach((row) => { - rows = rows.concat(this.getTreeChildren(row, false, true)); - }); - - return rows; - } - - rowDataChanged(row, visible, updatedData){ - if(this.redrawNeeded(updatedData)){ - this.initializeRow(row); - - if(visible){ - this.layoutRow(row); - this.refreshData(true); - } - } - } - - cellValueChanged(cell){ - var field = cell.column.getField(); - - if(field === this.elementField){ - this.layoutRow(cell.row); - } - } - - initializeRow(row){ - var childArray = row.getData()[this.field]; - var isArray = Array.isArray(childArray); - - var children = isArray || (!isArray && typeof childArray === "object" && childArray !== null); - - if(!children && row.modules.dataTree && row.modules.dataTree.branchEl){ - row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl); - } - - if(!children && row.modules.dataTree && row.modules.dataTree.controlEl){ - row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl); - } - - row.modules.dataTree = { - index: row.modules.dataTree ? row.modules.dataTree.index : 0, - open: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false, - controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false, - branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false, - parent: row.modules.dataTree ? row.modules.dataTree.parent : false, - children:children, - }; - } - - reinitializeRowChildren(row){ - var children = this.getTreeChildren(row, false, true); - - children.forEach(function(child){ - child.reinitialize(true); - }); - } - - layoutRow(row){ - var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0], - el = cell.getElement(), - config = row.modules.dataTree; - - if(config.branchEl){ - if(config.branchEl.parentNode){ - config.branchEl.parentNode.removeChild(config.branchEl); - } - config.branchEl = false; - } - - if(config.controlEl){ - if(config.controlEl.parentNode){ - config.controlEl.parentNode.removeChild(config.controlEl); - } - config.controlEl = false; - } - - this.generateControlElement(row, el); - - row.getElement().classList.add("tabulator-tree-level-" + config.index); - - if(config.index){ - if(this.branchEl){ - config.branchEl = this.branchEl.cloneNode(true); - el.insertBefore(config.branchEl, el.firstChild); - - if(this.table.rtl){ - config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px"; - }else { - config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px"; - } - }else { - - if(this.table.rtl){ - el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px"; - }else { - el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px"; - } - } - } - } - - generateControlElement(row, el){ - var config = row.modules.dataTree, - oldControl = config.controlEl; - - el = el || row.getCells()[0].getElement(); - - if(config.children !== false){ - - if(config.open){ - config.controlEl = this.collapseEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.collapseRow(row); - }); - }else { - config.controlEl = this.expandEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.expandRow(row); - }); - } - - config.controlEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - if(oldControl && oldControl.parentNode === el){ - oldControl.parentNode.replaceChild(config.controlEl,oldControl); - }else { - el.insertBefore(config.controlEl, el.firstChild); - } - } - } - - getRows(rows){ - var output = []; - - rows.forEach((row, i) => { - var config, children; - - output.push(row); - - if(row instanceof Row){ - - row.create(); - - config = row.modules.dataTree; - - if(!config.index && config.children !== false){ - children = this.getChildren(row); - - children.forEach((child) => { - child.create(); - output.push(child); - }); - } - } - }); - - return output; - } - - getChildren(row, allChildren){ - var config = row.modules.dataTree, - children = [], - output = []; - - if(config.children !== false && (config.open || allChildren)){ - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - if(this.table.modExists("sort") && this.table.options.dataTreeSort){ - this.table.modules.sort.sort(children); - } - - children.forEach((child) => { - output.push(child); - - var subChildren = this.getChildren(child); - - subChildren.forEach((sub) => { - output.push(sub); - }); - }); - } - - return output; - } - - generateChildren(row){ - var children = []; - - var childArray = row.getData()[this.field]; - - if(!Array.isArray(childArray)){ - childArray = [childArray]; - } - - childArray.forEach((childData) => { - var childRow = new Row(childData || {}, this.table.rowManager); - - childRow.create(); - - childRow.modules.dataTree.index = row.modules.dataTree.index + 1; - childRow.modules.dataTree.parent = row; - - if(childRow.modules.dataTree.children){ - childRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index); - } - children.push(childRow); - }); - - return children; - } - - expandRow(row, silent){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = true; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowExpanded", row.getComponent(), row.modules.dataTree.index); - } - } - - collapseRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = false; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowCollapsed", row.getComponent(), row.modules.dataTree.index); - } - } - - toggleRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - if(config.open){ - this.collapseRow(row); - }else { - this.expandRow(row); - } - } - } - - isRowExpanded(row){ - return row.modules.dataTree.open; - } - - getTreeParent(row){ - return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false; - } - - getTreeParentRoot(row){ - return row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row; - } - - getFilteredTreeChildren(row){ - var config = row.modules.dataTree, - output = [], children; - - if(config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(childRow); - } - }); - } - - return output; - } - - rowDelete(row){ - var parent = row.modules.dataTree.parent, - childIndex; - - if(parent){ - childIndex = this.findChildIndex(row, parent); - - if(childIndex !== false){ - parent.data[this.field].splice(childIndex, 1); - } - - if(!parent.data[this.field].length){ - delete parent.data[this.field]; - } - - this.initializeRow(parent); - this.layoutRow(parent); - } - - this.refreshData(true); - } - - addTreeChildRow(row, data, top, index){ - var childIndex = false; - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(!Array.isArray(row.data[this.field])){ - row.data[this.field] = []; - - row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index); - } - - if(typeof index !== "undefined"){ - childIndex = this.findChildIndex(index, row); - - if(childIndex !== false){ - row.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data); - } - } - - if(childIndex === false){ - if(top){ - row.data[this.field].unshift(data); - }else { - row.data[this.field].push(data); - } - } - - this.initializeRow(row); - this.layoutRow(row); - - this.refreshData(true); - } - - findChildIndex(subject, parent){ - var match = false; - - if(typeof subject == "object"){ - - if(subject instanceof Row){ - //subject is row element - match = subject.data; - }else if(subject instanceof RowComponent){ - //subject is public row component - match = subject._getSelf().data; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - if(parent.modules.dataTree){ - match = parent.modules.dataTree.children.find((childRow) => { - return childRow instanceof Row ? childRow.element === subject : false; - }); - - if(match){ - match = match.data; - } - } - }else if(subject === null){ - match = false; - } - - }else if(typeof subject == "undefined"){ - match = false; - }else { - //subject should be treated as the index of the row - match = parent.data[this.field].find((row) => { - return row.data[this.table.options.index] == subject; - }); - } - - if(match){ - - if(Array.isArray(parent.data[this.field])){ - match = parent.data[this.field].indexOf(match); - } - - if(match == -1){ - match = false; - } - } - - //catch all for any other type of input - - return match; - } - - getTreeChildren(row, component, recurse){ - var config = row.modules.dataTree, - output = []; - - if(config && config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - config.children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(component ? childRow.getComponent() : childRow); - - if(recurse){ - output = output.concat(this.getTreeChildren(childRow, component, recurse)); - } - } - }); - } - - return output; - } - - getChildField(){ - return this.field; - } - - redrawNeeded(data){ - return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false); - } - } - - DataTree.moduleName = "dataTree"; - - function csv(list, options = {}, setFileContents){ - var delimiter = options.delimiter ? options.delimiter : ",", - fileContents = [], - headers = []; - - list.forEach((row) => { - var item = []; - - switch(row.type){ - case "group": - console.warn("Download Warning - CSV downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - CSV downloader cannot process column calculations"); - break; - - case "header": - row.columns.forEach((col, i) => { - if(col && col.depth === 1){ - headers[i] = typeof col.value == "undefined" || col.value === null ? "" : ('"' + String(col.value).split('"').join('""') + '"'); - } - }); - break; - - case "row": - row.columns.forEach((col) => { - - if(col){ - - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - item.push('"' + String(col.value).split('"').join('""') + '"'); - } - }); - - fileContents.push(item.join(delimiter)); - break; - } - }); - - if(headers.length){ - fileContents.unshift(headers.join(delimiter)); - } - - fileContents = fileContents.join("\n"); - - if(options.bom){ - fileContents = "\ufeff" + fileContents; - } - - setFileContents(fileContents, "text/csv"); - } - - function json(list, options, setFileContents){ - var fileContents = []; - - list.forEach((row) => { - var item = {}; - - switch(row.type){ - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if(col){ - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(item); - break; - } - }); - - fileContents = JSON.stringify(fileContents, null, '\t'); - - setFileContents(fileContents, "application/json"); - } - - function pdf(list, options = {}, setFileContents){ - var header = [], - body = [], - autoTableParams = {}, - rowGroupStyles = options.rowGroupStyles || { - fontStyle: "bold", - fontSize: 12, - cellPadding: 6, - fillColor: 220, - }, - rowCalcStyles = options.rowCalcStyles || { - fontStyle: "bold", - fontSize: 10, - cellPadding: 4, - fillColor: 232, - }, - jsPDFParams = options.jsPDF || {}, - title = options.title ? options.title : ""; - - if(!jsPDFParams.orientation){ - jsPDFParams.orientation = options.orientation || "landscape"; - } - - if(!jsPDFParams.unit){ - jsPDFParams.unit = "pt"; - } - - //parse row list - list.forEach((row) => { - switch(row.type){ - case "header": - header.push(parseRow(row)); - break; - - case "group": - body.push(parseRow(row, rowGroupStyles)); - break; - - case "calc": - body.push(parseRow(row, rowCalcStyles)); - break; - - case "row": - body.push(parseRow(row)); - break; - } - }); - - function parseRow(row, styles){ - var rowData = []; - - row.columns.forEach((col) =>{ - var cell; - - if(col){ - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - cell = { - content:col.value, - colSpan:col.width, - rowSpan:col.height, - }; - - if(styles){ - cell.styles = styles; - } - - rowData.push(cell); - } - }); - - return rowData; - } - - - //configure PDF - var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables - - if(options.autoTable){ - if(typeof options.autoTable === "function"){ - autoTableParams = options.autoTable(doc) || {}; - }else { - autoTableParams = options.autoTable; - } - } - - if(title){ - autoTableParams.didDrawPage = function(data) { - doc.text(title, 40, 30); - }; - } - - autoTableParams.head = header; - autoTableParams.body = body; - - doc.autoTable(autoTableParams); - - if(options.documentProcessing){ - options.documentProcessing(doc); - } - - setFileContents(doc.output("arraybuffer"), "application/pdf"); - } - - function xlsx(list, options, setFileContents){ - var self = this, - sheetName = options.sheetName || "Sheet1", - workbook = XLSX.utils.book_new(), - tableFeatures = new CoreFeature(this), - compression = 'compress' in options ? options.compress : true, - writeOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression}, - output; - - writeOptions.type = 'binary'; - - workbook.SheetNames = []; - workbook.Sheets = {}; - - function generateSheet(){ - var rows = [], - merges = [], - worksheet = {}, - range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }}; - - //parse row list - list.forEach((row, i) => { - var rowData = []; - - row.columns.forEach(function(col, j){ - - if(col){ - rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value); - - if(col.width > 1 || col.height > -1){ - if(col.height > 1 || col.width > 1){ - merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}}); - } - } - }else { - rowData.push(""); - } - }); - - rows.push(rowData); - }); - - //convert rows to worksheet - XLSX.utils.sheet_add_aoa(worksheet, rows); - - worksheet['!ref'] = XLSX.utils.encode_range(range); - - if(merges.length){ - worksheet["!merges"] = merges; - } - - return worksheet; - } - - if(options.sheetOnly){ - setFileContents(generateSheet()); - return; - } - - if(options.sheets){ - for(var sheet in options.sheets){ - - if(options.sheets[sheet] === true){ - workbook.SheetNames.push(sheet); - workbook.Sheets[sheet] = generateSheet(); - }else { - - workbook.SheetNames.push(sheet); - - tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{ - type:"xlsx", - options:{sheetOnly:true}, - active:self.active, - intercept:function(data){ - workbook.Sheets[sheet] = data; - } - }); - } - } - }else { - workbook.SheetNames.push(sheetName); - workbook.Sheets[sheetName] = generateSheet(); - } - - if(options.documentProcessing){ - workbook = options.documentProcessing(workbook); - } - - //convert workbook to binary array - function s2ab(s) { - var buf = new ArrayBuffer(s.length); - var view = new Uint8Array(buf); - for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; - } - - output = XLSX.write(workbook, writeOptions); - - setFileContents(s2ab(output), "application/octet-stream"); - } - - function html(list, options, setFileContents){ - if(this.modExists("export", true)){ - setFileContents(this.modules.export.generateHTMLTable(list), "text/html"); - } - } - - function jsonLines (list, options, setFileContents) { - const fileContents = []; - - list.forEach((row) => { - const item = {}; - - switch (row.type) { - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if (col) { - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(JSON.stringify(item)); - break; - } - }); - - setFileContents(fileContents.join("\n"), "application/x-ndjson"); - } - - var defaultDownloaders = { - csv:csv, - json:json, - jsonLines:jsonLines, - pdf:pdf, - xlsx:xlsx, - html:html, - }; - - class Download extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("downloadEncoder", function(data, mimeType){ - return new Blob([data],{type:mimeType}); - }); //function to manipulate download data - this.registerTableOption("downloadReady", undefined); //warn of function deprecation - this.registerTableOption("downloadConfig", {}); //download config - this.registerTableOption("downloadRowRange", "active"); //restrict download to active rows only - - this.registerColumnOption("download"); - this.registerColumnOption("titleDownload"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.registerTableFunction("download", this.download.bind(this)); - this.registerTableFunction("downloadToTab", this.downloadToTab.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("downloadReady", "downloadEncoder"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - downloadToTab(type, filename, options, active){ - this.download(type, filename, options, active, true); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //trigger file download - download(type, filename, options, range, interceptCallback){ - var downloadFunc = false; - - function buildLink(data, mime){ - if(interceptCallback){ - if(interceptCallback === true){ - this.triggerDownload(data, mime, type, filename, true); - }else { - interceptCallback(data); - } - - }else { - this.triggerDownload(data, mime, type, filename); - } - } - - if(typeof type == "function"){ - downloadFunc = type; - }else { - if(Download.downloaders[type]){ - downloadFunc = Download.downloaders[type]; - }else { - console.warn("Download Error - No such download type found: ", type); - } - } - - if(downloadFunc){ - var list = this.generateExportList(range); - - downloadFunc.call(this.table, list , options || {}, buildLink.bind(this)); - } - } - - generateExportList(range){ - var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download"); - - //assign group header formatter - var groupHeader = this.table.options.groupHeaderDownload; - - if(groupHeader && !Array.isArray(groupHeader)){ - groupHeader = [groupHeader]; - } - - list.forEach((row) => { - var group; - - if(row.type === "group"){ - group = row.columns[0]; - - if(groupHeader && groupHeader[row.indent]){ - group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - }); - - return list; - } - - triggerDownload(data, mime, type, filename, newTab){ - var element = document.createElement('a'), - blob = this.table.options.downloadEncoder(data, mime); - - if(blob){ - if(newTab){ - window.open(window.URL.createObjectURL(blob)); - }else { - filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type); - - if(navigator.msSaveOrOpenBlob){ - navigator.msSaveOrOpenBlob(blob, filename); - }else { - element.setAttribute('href', window.URL.createObjectURL(blob)); - - //set file title - element.setAttribute('download', filename); - - //trigger download - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - - //remove temporary link element - document.body.removeChild(element); - } - } - - this.dispatchExternal("downloadComplete"); - } - } - - commsReceived(table, action, data){ - switch(action){ - case "intercept": - this.download(data.type, "", data.options, data.active, data.intercept); - break; - } - } - } - - Download.moduleName = "download"; - - //load defaults - Download.downloaders = defaultDownloaders; - - function maskInput(el, options){ - var mask = options.mask, - maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A", - maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9", - maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*"; - - function fillSymbols(index){ - var symbol = mask[index]; - if(typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){ - el.value = el.value + "" + symbol; - fillSymbols(index+1); - } - } - - el.addEventListener("keydown", (e) => { - var index = el.value.length, - char = e.key; - - if(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){ - if(index >= mask.length){ - e.preventDefault(); - e.stopPropagation(); - return false; - }else { - switch(mask[index]){ - case maskLetter: - if(char.toUpperCase() == char.toLowerCase()){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskNumber: - if(isNaN(char)){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskWildcard: - break; - - default: - if(char !== mask[index]){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - } - } - - return; - }); - - el.addEventListener("keyup", (e) => { - if(e.keyCode > 46){ - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - }); - - - if(!el.placeholder){ - el.placeholder = mask; - } - - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - - //input element - function input(cell, onRendered, success, cancel, editorParams){ - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", editorParams.search ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = typeof cellValue !== "undefined" ? cellValue : ""; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; - } - - //resizable text area element - function textarea(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "hybrid", - value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""), - input = document.createElement("textarea"), - scrollHeight = 0; - - //create and style input - input.style.display = "block"; - input.style.padding = "2px"; - input.style.height = "100%"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.whiteSpace = "pre-wrap"; - input.style.resize = "none"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - input.scrollHeight; - input.style.height = input.scrollHeight + "px"; - cell.getRow().normalizeHeight(); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - - setTimeout(function(){ - cell.getRow().normalizeHeight(); - },300); - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - input.addEventListener("keyup", function(){ - - input.style.height = ""; - - var heightNow = input.scrollHeight; - - input.style.height = heightNow + "px"; - - if(heightNow != scrollHeight){ - scrollHeight = heightNow; - cell.getRow().normalizeHeight(); - } - }); - - input.addEventListener("keydown", function(e){ - - switch(e.keyCode){ - - case 13: - if(e.shiftKey && editorParams.shiftEnterSubmit){ - onChange(); - } - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - - break; - - case 40: //down arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart !== input.value.length)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; - } - - //input element with type of number - function number(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - input = document.createElement("input"); - - input.setAttribute("type", "number"); - - if(typeof editorParams.max != "undefined"){ - input.setAttribute("max", editorParams.max); - } - - if(typeof editorParams.min != "undefined"){ - input.setAttribute("min", editorParams.min); - } - - if(typeof editorParams.step != "undefined"){ - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - var blurFunc = function(e){ - onChange(); - }; - - onRendered(function () { - if(cell.getType() === "cell"){ - //submit new value on blur - input.removeEventListener("blur", blurFunc); - - input.focus({preventScroll: true}); - input.style.height = "100%"; - - //submit new value on blur - input.addEventListener("blur", blurFunc); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value !== cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; - } - - //input element with type of number - function range(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", "range"); - - if (typeof editorParams.max != "undefined") { - input.setAttribute("max", editorParams.max); - } - - if (typeof editorParams.min != "undefined") { - input.setAttribute("min", editorParams.min); - } - - if (typeof editorParams.step != "undefined") { - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - onRendered(function () { - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value != cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e){ - onChange(); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - } - }); - - return input; - } - - //input element - function date(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - function convertDate(value){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - return newDatetime.toFormat("yyyy-MM-dd"); - } - - input.type = "date"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.max){ - input.setAttribute("max", inputFormat ? convertDate(editorParams.max) : editorParams.max); - } - - if(editorParams.min){ - input.setAttribute("min", inputFormat ? convertDate(editorParams.min) : editorParams.min); - } - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - cellValue = convertDate(cellValue); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDate; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDate = DT.fromFormat(String(value), "yyyy-MM-dd"); - - switch(inputFormat){ - case true: - value = luxDate; - break; - - case "iso": - value = luxDate.toISO(); - break; - - default: - value = luxDate.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; - } - - //input element - function time(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "time"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("hh:mm"); - - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() == "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxTime = DT.fromFormat(String(value), "hh:mm"); - - switch(inputFormat){ - case true: - value = luxTime; - break; - - case "iso": - value = luxTime.toISO(); - break; - - default: - value = luxTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; - } - - //input element - function datetime(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "datetime-local"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("yyyy-MM-dd") + "T" + newDatetime.toFormat("hh:mm"); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDateTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDateTime = DT.fromISO(String(value)); - - switch(inputFormat){ - case true: - value = luxDateTime; - break; - - case "iso": - value = luxDateTime.toISO(); - break; - - default: - value = luxDateTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; - } - - class Edit{ - constructor(editor, cell, onRendered, success, cancel, editorParams){ - this.edit = editor; - this.table = editor.table; - this.cell = cell; - this.params = this._initializeParams(editorParams); - - this.data = []; - this.displayItems = []; - this.currentItems = []; - this.focusedItem = null; - - this.input = this._createInputElement(); - this.listEl = this._createListElement(); - - this.initialValues = null; - - this.isFilter = cell.getType() === "header"; - - this.filterTimeout = null; - this.filtered = false; - this.typing = false; - - this.values = []; - this.popup = null; - - this.listIteration = 0; - - this.lastAction=""; - this.filterTerm=""; - - this.blurable = true; - - this.actions = { - success:success, - cancel:cancel - }; - - this._deprecatedOptionsCheck(); - this._initializeValue(); - - onRendered(this._onRendered.bind(this)); - } - - _deprecatedOptionsCheck(){ - if(this.params.listItemFormatter){ - this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.sortValuesList){ - this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchFunc){ - this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchingPlaceholder){ - this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options"); - } - } - - _initializeValue(){ - var initialValue = this.cell.getValue(); - - if(typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined"){ - initialValue = this.params.defaultValue; - } - - this.initialValues = this.params.multiselect ? initialValue : [initialValue]; - - if(this.isFilter){ - this.input.value = this.initialValues ? this.initialValues.join(",") : ""; - this.headerFilterInitialListGen(); - } - } - - _onRendered(){ - var cellEl = this.cell.getElement(); - - function clickStop(e){ - e.stopPropagation(); - } - - if(!this.isFilter){ - this.input.style.height = "100%"; - this.input.focus({preventScroll: true}); - } - - - cellEl.addEventListener("click", clickStop); - - setTimeout(() => { - cellEl.removeEventListener("click", clickStop); - }, 1000); - - this.input.addEventListener("mousedown", this._preventPopupBlur.bind(this)); - } - - _createListElement(){ - var listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-list"); - - listEl.addEventListener("mousedown", this._preventBlur.bind(this)); - listEl.addEventListener("keydown", this._inputKeyDown.bind(this)); - - return listEl; - } - - _setListWidth(){ - var element = this.isFilter ? this.input : this.cell.getElement(); - - this.listEl.style.minWidth = element.offsetWidth + "px"; - - if(this.params.maxWidth){ - if(this.params.maxWidth === true){ - this.listEl.style.maxWidth = element.offsetWidth + "px"; - }else if(typeof this.params.maxWidth === "number"){ - this.listEl.style.maxWidth = this.params.maxWidth + "px"; - }else { - this.listEl.style.maxWidth = this.params.maxWidth; - } - } - - } - - _createInputElement(){ - var attribs = this.params.elementAttributes; - var input = document.createElement("input"); - - input.setAttribute("type", this.params.clearable ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(!this.params.autocomplete){ - input.style.cursor = "default"; - input.style.caretColor = "transparent"; - // input.readOnly = (this.edit.currentCell != false); - } - - if(attribs && typeof attribs == "object"){ - for (let key in attribs){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + attribs["+" + key]); - }else { - input.setAttribute(key, attribs[key]); - } - } - } - - if(this.params.mask){ - maskInput(input, this.params); - } - - this._bindInputEvents(input); - - return input; - } - - _initializeParams(params){ - var valueKeys = ["values", "valuesURL", "valuesLookup"], - valueCheck; - - params = Object.assign({}, params); - - params.verticalNavigation = params.verticalNavigation || "editor"; - params.placeholderLoading = typeof params.placeholderLoading === "undefined" ? "Searching ..." : params.placeholderLoading; - params.placeholderEmpty = typeof params.placeholderEmpty === "undefined" ? "No Results Found" : params.placeholderEmpty; - params.filterDelay = typeof params.filterDelay === "undefined" ? 300 : params.filterDelay; - - params.emptyValue = Object.keys(params).includes("emptyValue") ? params.emptyValue : ""; - - valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length; - - if(!valueCheck){ - console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"); - }else if(valueCheck > 1){ - console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"); - } - - if(params.autocomplete){ - if(params.multiselect){ - params.multiselect = false; - console.warn("list editor config error - multiselect option is not available when autocomplete is enabled"); - } - }else { - if(params.freetext){ - params.freetext = false; - console.warn("list editor config error - freetext option is only available when autocomplete is enabled"); - } - - if(params.filterFunc){ - params.filterFunc = false; - console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled"); - } - - if(params.filterRemote){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled"); - } - - if(params.mask){ - params.mask = false; - console.warn("list editor config error - mask option is only available when autocomplete is enabled"); - } - - if(params.allowEmpty){ - params.allowEmpty = false; - console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled"); - } - - if(params.listOnEmpty){ - params.listOnEmpty = false; - console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"); - } - } - - if(params.filterRemote && !(typeof params.valuesLookup === "function" || params.valuesURL)){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source"); - } - return params; - } - ////////////////////////////////////// - ////////// Event Handling //////////// - ////////////////////////////////////// - - _bindInputEvents(input){ - input.addEventListener("focus", this._inputFocus.bind(this)); - input.addEventListener("click", this._inputClick.bind(this)); - input.addEventListener("blur", this._inputBlur.bind(this)); - input.addEventListener("keydown", this._inputKeyDown.bind(this)); - input.addEventListener("search", this._inputSearch.bind(this)); - - if(this.params.autocomplete){ - input.addEventListener("keyup", this._inputKeyUp.bind(this)); - } - } - - - _inputFocus(e){ - this.rebuildOptionsList(); - } - - _filter(){ - if(this.params.filterRemote){ - clearTimeout(this.filterTimeout); - - this.filterTimeout = setTimeout(() => { - this.rebuildOptionsList(); - }, this.params.filterDelay); - }else { - this._filterList(); - } - } - - _inputClick(e){ - e.stopPropagation(); - } - - _inputBlur(e){ - if(this.blurable){ - if(this.popup){ - this.popup.hide(); - }else { - this._resolveValue(true); - } - } - } - - _inputSearch(){ - this._clearChoices(); - } - - _inputKeyDown(e){ - switch(e.keyCode){ - - case 38: //up arrow - this._keyUp(e); - break; - - case 40: //down arrow - this._keyDown(e); - break; - - case 37: //left arrow - case 39: //right arrow - this._keySide(e); - break; - - case 13: //enter - this._keyEnter(); - break; - - case 27: //escape - this._keyEsc(); - break; - - case 36: //home - case 35: //end - this._keyHomeEnd(e); - break; - - case 9: //tab - this._keyTab(e); - break; - - default: - this._keySelectLetter(e); - } - } - - _inputKeyUp(e){ - switch(e.keyCode){ - case 38: //up arrow - case 37: //left arrow - case 39: //up arrow - case 40: //right arrow - case 13: //enter - case 27: //escape - break; - - default: - this._keyAutoCompLetter(e); - } - } - - _preventPopupBlur(){ - if(this.popup){ - this.popup.blockHide(); - } - - setTimeout(() =>{ - if(this.popup){ - this.popup.restoreHide(); - } - }, 10); - } - - _preventBlur(){ - this.blurable = false; - - setTimeout(() =>{ - this.blurable = true; - }, 10); - } - - ////////////////////////////////////// - //////// Keyboard Navigation ///////// - ////////////////////////////////////// - - _keyTab(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem, true); - } - } - } - - _keyUp(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - this._focusItem(this.displayItems[index - 1]); - } - } - } - - _keyDown(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index < this.displayItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < this.displayItems.length - 1){ - if(index == -1){ - this._focusItem(this.displayItems[0]); - }else { - this._focusItem(this.displayItems[index + 1]); - } - } - } - } - - _keySide(e){ - if(!this.params.autocomplete){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - } - } - - _keyEnter(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem); - } - } - } - - _keyEsc(e){ - this._cancel(); - } - - _keyHomeEnd(e){ - if(this.params.autocomplete){ - //prevent table navigation while using input element - e.stopImmediatePropagation(); - } - } - - _keySelectLetter(e){ - if(!this.params.autocomplete){ - // if(this.edit.currentCell === false){ - e.preventDefault(); - // } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - this._scrollToValue(e.keyCode); - } - } - } - - _keyAutoCompLetter(e){ - this._filter(); - this.lastAction = "typing"; - this.typing = true; - } - - - _scrollToValue(char){ - clearTimeout(this.filterTimeout); - - var character = String.fromCharCode(char).toLowerCase(); - this.filterTerm += character.toLowerCase(); - - var match = this.displayItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(this.filterTerm); - }); - - if(match){ - this._focusItem(match); - } - - this.filterTimeout = setTimeout(() => { - this.filterTerm = ""; - }, 800); - } - - _focusItem(item){ - this.lastAction = "focus"; - - if(this.focusedItem && this.focusedItem.element){ - this.focusedItem.element.classList.remove("focused"); - } - - this.focusedItem = item; - - if(item && item.element){ - item.element.classList.add("focused"); - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - ////////////////////////////////////// - /////// Data List Generation ///////// - ////////////////////////////////////// - headerFilterInitialListGen(){ - this._generateOptions(true); - } - - rebuildOptionsList(){ - this._generateOptions() - .then(this._sortOptions.bind(this)) - .then(this._buildList.bind(this)) - .then(this._showList.bind(this)) - .catch((e) => { - if(!Number.isInteger(e)){ - console.error("List generation error", e); - } - }); - } - - _filterList(){ - this._buildList(this._filterOptions()); - this._showList(); - } - - _generateOptions(silent){ - var values = []; - var iteration = ++ this.listIteration; - - this.filtered = false; - - if(this.params.values){ - values = this.params.values; - }else if (this.params.valuesURL){ - values = this._ajaxRequest(this.params.valuesURL, this.input.value); - }else { - if(typeof this.params.valuesLookup === "function"){ - values = this.params.valuesLookup(this.cell, this.input.value); - }else if(this.params.valuesLookup){ - values = this._uniqueColumnValues(this.params.valuesLookupField); - } - } - - if(values instanceof Promise){ - if(!silent){ - this._addPlaceholder(this.params.placeholderLoading); - } - - return values.then() - .then((responseValues) => { - if(this.listIteration === iteration){ - return this._parseList(responseValues); - }else { - return Promise.reject(iteration); - } - }); - }else { - return Promise.resolve(this._parseList(values)); - } - } - - _addPlaceholder(contents){ - var placeholder = document.createElement("div"); - - if(typeof contents === "function"){ - contents = contents(this.cell.getComponent(), this.listEl); - } - - if(contents){ - this._clearList(); - - if(contents instanceof HTMLElement){ - placeholder = contents; - }else { - placeholder.classList.add("tabulator-edit-list-placeholder"); - placeholder.innerHTML = contents; - } - - this.listEl.appendChild(placeholder); - - this._showList(); - } - } - - _ajaxRequest(url, term){ - var params = this.params.filterRemote ? {term:term} : {}; - url = urlBuilder(url, {}, params); - - return fetch(url) - .then((response)=>{ - if(response.ok) { - return response.json() - .catch((error)=>{ - console.warn("List Ajax Load Error - Invalid JSON returned", error); - return Promise.reject(error); - }); - }else { - console.error("List Ajax Load Error - Connection Error: " + response.status, response.statusText); - return Promise.reject(response); - } - }) - .catch((error)=>{ - console.error("List Ajax Load Error - Connection Error: ", error); - return Promise.reject(error); - }); - } - - _uniqueColumnValues(field){ - var output = {}, - data = this.table.getData(this.params.valuesLookup), - column; - - if(field){ - column = this.table.columnManager.getColumnByField(field); - }else { - column = this.cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach((row) => { - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - }else { - console.warn("unable to find matching column to create select lookup list:", field); - output = []; - } - - return Object.keys(output); - } - - - _parseList(inputValues){ - var data = []; - - if(!Array.isArray(inputValues)){ - inputValues = Object.entries(inputValues).map(([key, value]) => { - return { - label:value, - value:key, - }; - }); - } - - inputValues.forEach((value) => { - if(typeof value !== "object"){ - value = { - label:value, - value:value, - }; - } - - this._parseListItem(value, data, 0); - }); - - if(!this.currentItems.length && this.params.freetext){ - this.input.value = this.initialValues; - this.typing = true; - this.lastAction = "typing"; - } - - this.data = data; - - return data; - } - - _parseListItem(option, data, level){ - var item = {}; - - if(option.options){ - item = this._parseListGroup(option, level + 1); - }else { - item = { - label:option.label, - value:option.value, - itemParams:option.itemParams, - elementAttributes: option.elementAttributes, - element:false, - selected:false, - visible:true, - level:level, - original:option, - }; - - if(this.initialValues && this.initialValues.indexOf(option.value) > -1){ - this._chooseItem(item, true); - } - } - - data.push(item); - } - - _parseListGroup(option, level){ - var item = { - label:option.label, - group:true, - itemParams:option.itemParams, - elementAttributes:option.elementAttributes, - element:false, - visible:true, - level:level, - options:[], - original:option, - }; - - option.options.forEach((child) => { - this._parseListItem(child, item.options, level); - }); - - return item; - } - - _sortOptions(options){ - var sorter; - - if(this.params.sort){ - sorter = typeof this.params.sort === "function" ? this.params.sort : this._defaultSortFunction.bind(this); - - this._sortGroup(sorter, options); - } - - return options; - } - - _sortGroup(sorter, options){ - options.sort((a,b) => { - return sorter(a.label, b.label, a.value, b.value, a.original, b.original); - }); - - options.forEach((option) => { - if(option.group){ - this._sortGroup(sorter, option.options); - } - }); - } - - _defaultSortFunction(as, bs){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var emptyAlign = 0; - - if(this.params.sort === "desc"){ - [as, bs] = [bs, as]; - } - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - return emptyAlign; - } - - _filterOptions(){ - var filterFunc = this.params.filterFunc || this._defaultFilterFunc, - term = this.input.value; - - if(term){ - this.filtered = true; - - this.data.forEach((item) => { - this._filterItem(filterFunc, term, item); - }); - }else { - this.filtered = false; - } - - return this.data; - } - - _filterItem(func, term, item){ - var matches = false; - - if(!item.group){ - item.visible = func(term, item.label, item.value, item.original); - }else { - item.options.forEach((option) => { - if(this._filterItem(func, term, option)){ - matches = true; - } - }); - - item.visible = matches; - } - - return item.visible; - } - - _defaultFilterFunc(term, label, value, item){ - term = String(term).toLowerCase(); - - if(label !== null && typeof label !== "undefined"){ - if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){ - return true; - } - } - - return false; - } - - ////////////////////////////////////// - /////////// Display List ///////////// - ////////////////////////////////////// - - _clearList(){ - while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild); - - this.displayItems = []; - } - - _buildList(data){ - this._clearList(); - - data.forEach((option) => { - this._buildItem(option); - }); - - if(!this.displayItems.length){ - this._addPlaceholder(this.params.placeholderEmpty); - } - } - - _buildItem(item){ - var el = item.element, - contents; - - if(!this.filtered || item.visible){ - - if(!el){ - el = document.createElement("div"); - el.tabIndex = 0; - - contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label; - - if(contents instanceof HTMLElement){ - el.appendChild(contents); - }else { - el.innerHTML = contents; - } - - if(item.group){ - el.classList.add("tabulator-edit-list-group"); - }else { - el.classList.add("tabulator-edit-list-item"); - } - - el.classList.add("tabulator-edit-list-group-level-" + item.level); - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes["+" + key]); - }else { - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - - if(item.group){ - el.addEventListener("click", this._groupClick.bind(this, item)); - }else { - el.addEventListener("click", this._itemClick.bind(this, item)); - } - - el.addEventListener("mousedown", this._preventBlur.bind(this)); - - item.element = el; - } - - this._styleItem(item); - - this.listEl.appendChild(el); - - if(item.group){ - item.options.forEach((option) => { - this._buildItem(option); - }); - }else { - this.displayItems.push(item); - } - } - } - - _showList(){ - var startVis = this.popup && this.popup.isVisible(); - - if(this.input.parentNode){ - if(this.params.autocomplete && this.input.value === "" && !this.params.listOnEmpty){ - if(this.popup){ - this.popup.hide(true); - } - return; - } - - this._setListWidth(); - - if(!this.popup){ - this.popup = this.edit.popup(this.listEl); - } - - this.popup.show(this.cell.getElement(), "bottom"); - - if(!startVis){ - setTimeout(() => { - this.popup.hideOnBlur(this._resolveValue.bind(this, true)); - }, 10); - } - } - } - - _styleItem(item){ - if(item && item.element){ - if(item.selected){ - item.element.classList.add("active"); - }else { - item.element.classList.remove("active"); - } - } - } - - ////////////////////////////////////// - ///////// User Interaction /////////// - ////////////////////////////////////// - - _itemClick(item, e){ - e.stopPropagation(); - - this._chooseItem(item); - } - - _groupClick(item, e){ - e.stopPropagation(); - } - - - ////////////////////////////////////// - ////// Current Item Management /////// - ////////////////////////////////////// - - _cancel(){ - this.popup.hide(true); - this.actions.cancel(); - } - - _clearChoices(){ - this.typing = true; - - this.currentItems.forEach((item) => { - item.selected = false; - this._styleItem(item); - }); - - this.currentItems = []; - - this.focusedItem = null; - } - - _chooseItem(item, silent){ - var index; - - this.typing = false; - - if(this.params.multiselect){ - index = this.currentItems.indexOf(item); - - if(index > -1){ - this.currentItems.splice(index, 1); - item.selected = false; - }else { - this.currentItems.push(item); - item.selected = true; - } - - this.input.value = this.currentItems.map(item => item.label).join(","); - - this._styleItem(item); - - }else { - this.currentItems = [item]; - item.selected = true; - - this.input.value = item.label; - - this._styleItem(item); - - if(!silent){ - this._resolveValue(); - } - } - - this._focusItem(item); - } - - _resolveValue(blur){ - var output, initialValue; - - if(this.popup){ - this.popup.hide(true); - } - - if(this.params.multiselect){ - output = this.currentItems.map(item => item.value); - }else { - if(blur && this.params.autocomplete && this.typing){ - if(this.params.freetext || (this.params.allowEmpty && this.input.value === "")){ - output = this.input.value; - }else { - this.actions.cancel(); - return; - } - }else { - if(this.currentItems[0]){ - output = this.currentItems[0].value; - }else { - initialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues; - - if(initialValue === null || typeof initialValue === "undefined" || initialValue === ""){ - output = initialValue; - }else { - output = this.params.emptyValue; - } - } - - } - } - - if(output === ""){ - output = this.params.emptyValue; - } - - this.actions.success(output); - - if(this.isFilter){ - this.initialValues = output && !Array.isArray(output) ? [output] : output; - this.currentItems = []; - } - } - - } - - function select(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The select editor has been deprecated, please use the new list editor"); - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; - } - - function list(cell, onRendered, success, cancel, editorParams){ - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; - } - - function autocomplete(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - - editorParams.autocomplete = true; - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; - } - - //star rating - function star(cell, onRendered, success, cancel, editorParams){ - var self = this, - element = cell.getElement(), - value = cell.getValue(), - maxStars = element.getElementsByTagName("svg").length || 5, - size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14, - stars = [], - starsHolder = document.createElement("div"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"); - - - //change star type - function starChange(val){ - stars.forEach(function(star, i){ - if(i < val){ - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-active"); - }else { - star.classList.replace("tabulator-star-inactive", "tabulator-star-active"); - } - - star.innerHTML = ''; - }else { - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-inactive"); - }else { - star.classList.replace("tabulator-star-active", "tabulator-star-inactive"); - } - - star.innerHTML = ''; - } - }); - } - - //build stars - function buildStar(i){ - - var starHolder = document.createElement("span"); - var nextStar = star.cloneNode(true); - - stars.push(nextStar); - - starHolder.addEventListener("mouseenter", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - starChange(i); - }); - - starHolder.addEventListener("mousemove", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - }); - - starHolder.addEventListener("click", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - success(i); - element.blur(); - }); - - starHolder.appendChild(nextStar); - starsHolder.appendChild(starHolder); - - } - - //handle keyboard navigation value change - function changeValue(val){ - value = val; - starChange(val); - } - - //style cell - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - //style holding element - starsHolder.style.verticalAlign = "middle"; - starsHolder.style.display = "inline-block"; - starsHolder.style.padding = "4px"; - - //style star - star.setAttribute("width", size); - star.setAttribute("height", size); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - starsHolder.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //create correct number of stars - for(var i=1;i<= maxStars;i++){ - buildStar(i); - } - - //ensure value does not exceed number of stars - value = Math.min(parseInt(value), maxStars); - - // set initial styling of stars - starChange(value); - - starsHolder.addEventListener("mousemove", function(e){ - starChange(0); - }); - - starsHolder.addEventListener("click", function(e){ - success(0); - }); - - element.addEventListener("blur", function(e){ - cancel(); - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - changeValue(value + 1); - break; - - case 37: //left arrow - changeValue(value - 1); - break; - - case 13: //enter - success(value); - break; - - case 27: //escape - cancel(); - break; - } - }); - - return starsHolder; - } - - //draggable progress bar - function progress(cell, onRendered, success, cancel, editorParams){ - var element = cell.getElement(), - max = typeof editorParams.max === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max")) || 100) : editorParams.max, - min = typeof editorParams.min === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min")) || 0) : editorParams.min, - percent = (max - min) / 100, - value = cell.getValue() || 0, - handle = document.createElement("div"), - bar = document.createElement("div"), - mouseDrag, mouseDragWidth; - - //set new value - function updateValue(){ - var style = window.getComputedStyle(element, null); - - var calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue("padding-left")) - parseInt(style.getPropertyValue("padding-right")))/100))) + min; - success(calcVal); - element.setAttribute("aria-valuenow", calcVal); - element.setAttribute("aria-label", value); - } - - //style handle - handle.style.position = "absolute"; - handle.style.right = "0"; - handle.style.top = "0"; - handle.style.bottom = "0"; - handle.style.width = "5px"; - handle.classList.add("tabulator-progress-handle"); - - //style bar - bar.style.display = "inline-block"; - bar.style.position = "relative"; - // bar.style.top = "8px"; - // bar.style.bottom = "8px"; - // bar.style.left = "4px"; - // bar.style.marginRight = "4px"; - bar.style.height = "100%"; - bar.style.backgroundColor = "#488CE9"; - bar.style.maxWidth = "100%"; - bar.style.minWidth = "0%"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - bar.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //style cell - element.style.padding = "4px 4px"; - - //make sure value is in range - value = Math.min(parseFloat(value), max); - value = Math.max(parseFloat(value), min); - - //workout percentage - value = Math.round((value - min) / percent); - // bar.style.right = value + "%"; - bar.style.width = value + "%"; - - element.setAttribute("aria-valuemin", min); - element.setAttribute("aria-valuemax", max); - - bar.appendChild(handle); - - handle.addEventListener("mousedown", function(e){ - mouseDrag = e.screenX; - mouseDragWidth = bar.offsetWidth; - }); - - handle.addEventListener("mouseover", function(){ - handle.style.cursor = "ew-resize"; - }); - - element.addEventListener("mousemove", function(e){ - if(mouseDrag){ - bar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + "px"; - } - }); - - element.addEventListener("mouseup", function(e){ - if(mouseDrag){ - e.stopPropagation(); - e.stopImmediatePropagation(); - - mouseDrag = false; - mouseDragWidth = false; - - updateValue(); - } - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth + element.clientWidth/100) + "px"; - break; - - case 37: //left arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth - element.clientWidth/100) + "px"; - break; - - case 9: //tab - case 13: //enter - updateValue(); - break; - - case 27: //escape - cancel(); - break; - - } - }); - - element.addEventListener("blur", function(){ - cancel(); - }); - - return bar; - } - - //checkbox - function tickCross(cell, onRendered, success, cancel, editorParams){ - var value = cell.getValue(), - input = document.createElement("input"), - tristate = editorParams.tristate, - indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false, - trueValueSet = Object.keys(editorParams).includes("trueValue"), - falseValueSet = Object.keys(editorParams).includes("falseValue"); - - input.setAttribute("type", "checkbox"); - input.style.marginTop = "5px"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - if(tristate && (typeof value === "undefined" || value === indetermValue || value === "")){ - indetermState = true; - input.indeterminate = true; - } - - if(this.table.browser != "firefox" && this.table.browser != "safari"){ //prevent blur issue on mac firefox - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - } - }); - } - - input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); - - function setValue(blur){ - var checkedValue = input.checked; - - if(trueValueSet && checkedValue){ - checkedValue = editorParams.trueValue; - }else if(falseValueSet && !checkedValue){ - checkedValue = editorParams.falseValue; - } - - if(tristate){ - if(!blur){ - if(input.checked && !indetermState){ - input.checked = false; - input.indeterminate = true; - indetermState = true; - return indetermValue; - }else { - indetermState = false; - return checkedValue; - } - }else { - if(indetermState){ - return indetermValue; - }else { - return checkedValue; - } - } - }else { - return checkedValue; - } - } - - //submit new value on blur - input.addEventListener("change", function(e){ - success(setValue()); - }); - - input.addEventListener("blur", function(e){ - success(setValue(true)); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - if(e.keyCode == 13){ - success(setValue()); - } - if(e.keyCode == 27){ - cancel(); - } - }); - - return input; - } - - var defaultEditors = { - input:input, - textarea:textarea, - number:number, - range:range, - date:date, - time:time, - datetime:datetime, - select:select, - list:list, - autocomplete:autocomplete, - star:star, - progress:progress, - tickCross:tickCross, - }; - - class Edit$1 extends Module{ - - constructor(table){ - super(table); - - this.currentCell = false; //hold currently editing cell - this.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening - this.recursionBlock = false; //prevent focus recursion - this.invalidEdit = false; - this.editedCells = []; - - this.editors = Edit$1.editors; - - this.registerColumnOption("editable"); - this.registerColumnOption("editor"); - this.registerColumnOption("editorParams"); - - this.registerColumnOption("cellEditing"); - this.registerColumnOption("cellEdited"); - this.registerColumnOption("cellEditCancelled"); - - this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this)); - this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this)); - this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this)); - this.registerTableFunction("navigateNext", this.navigateNext.bind(this)); - this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this)); - this.registerTableFunction("navigateRight", this.navigateRight.bind(this)); - this.registerTableFunction("navigateUp", this.navigateUp.bind(this)); - this.registerTableFunction("navigateDown", this.navigateDown.bind(this)); - - this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this)); - this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this)); - this.registerComponentFunction("cell", "edit", this.editCell.bind(this)); - this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this)); - - this.registerComponentFunction("cell", "navigatePrev", this.navigatePrev.bind(this)); - this.registerComponentFunction("cell", "navigateNext", this.navigateNext.bind(this)); - this.registerComponentFunction("cell", "navigateLeft", this.navigateLeft.bind(this)); - this.registerComponentFunction("cell", "navigateRight", this.navigateRight.bind(this)); - this.registerComponentFunction("cell", "navigateUp", this.navigateUp.bind(this)); - this.registerComponentFunction("cell", "navigateDown", this.navigateDown.bind(this)); - } - - initialize(){ - this.subscribe("cell-init", this.bindEditor.bind(this)); - this.subscribe("cell-delete", this.clearEdited.bind(this)); - this.subscribe("cell-value-changed", this.updateCellClass.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - this.subscribe("column-delete", this.columnDeleteCheck.bind(this)); - this.subscribe("row-deleting", this.rowDeleteCheck.bind(this)); - this.subscribe("row-layout", this.rowEditableCheck.bind(this)); - this.subscribe("data-refreshing", this.cancelEdit.bind(this)); - - this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined)); - this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this)); - this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined)); - this.subscribe("keybinding-nav-right", this.navigateRight.bind(this, undefined)); - this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined)); - this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined)); - } - - - /////////////////////////////////// - ////// Keybinding Functions /////// - /////////////////////////////////// - - keybindingNavigateNext(e){ - var cell = this.currentCell, - newRow = this.options("tabEndNewRow"); - - if(cell){ - if(!this.navigateNext(cell, e)){ - if(newRow){ - cell.getElement().firstChild.blur(); - - if(newRow === true){ - newRow = this.table.addRow({}); - }else { - if(typeof newRow == "function"){ - newRow = this.table.addRow(newRow(cell.row.getComponent())); - }else { - newRow = this.table.addRow(Object.assign({}, newRow)); - } - } - - newRow.then(() => { - setTimeout(() => { - cell.getComponent().navigateNext(); - }); - }); - } - } - } - } - - /////////////////////////////////// - ///////// Cell Functions ////////// - /////////////////////////////////// - - cellIsEdited(cell){ - return !! cell.modules.edit && cell.modules.edit.edited; - } - - cellCancelEdit(cell){ - if(cell === this.currentCell){ - this.table.modules.edit.cancelEdit(); - }else { - console.warn("Cancel Editor Error - This cell is not currently being edited "); - } - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - updateCellClass(cell){ - if(this.allowEdit(cell)) { - cell.getElement().classList.add("tabulator-editable"); - } - else { - cell.getElement().classList.remove("tabulator-editable"); - } - } - - clearCellEdited(cells){ - if(!cells){ - cells = this.table.modules.edit.getEditedCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.table.modules.edit.clearEdited(cell._getSelf()); - }); - } - - navigatePrev(cell = this.currentCell, e){ - var nextCell, prevRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateLeft(); - - if(nextCell){ - return true; - }else { - prevRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(prevRow){ - nextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateNext(cell = this.currentCell, e){ - var nextCell, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateRight(); - - if(nextCell){ - return true; - }else { - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextCell = this.findNextEditableCell(nextRow, -1); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateLeft(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findPrevEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateRight(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findNextEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateUp(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - navigateDown(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - findNextEditableCell(row, index){ - var nextCell = false; - - if(index < row.cells.length-1){ - for(var i = index+1; i < row.cells.length; i++){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - nextCell = cell; - break; - } - } - } - } - - return nextCell; - } - - findPrevEditableCell(row, index){ - var prevCell = false; - - if(index > 0){ - for(var i = index-1; i >= 0; i--){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - prevCell = cell; - break; - } - } - } - } - - return prevCell; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.editor !== "undefined"){ - this.initializeColumn(column); - } - } - - columnDeleteCheck(column){ - if(this.currentCell && this.currentCell.column === column){ - this.cancelEdit(); - } - } - - rowDeleteCheck(row){ - if(this.currentCell && this.currentCell.row === row){ - this.cancelEdit(); - } - } - - rowEditableCheck(row){ - row.getCells().forEach((cell) => { - if(cell.column.modules.edit && typeof cell.column.modules.edit.check === "function"){ - this.updateCellClass(cell); - } - }); - } - - //initialize column editor - initializeColumn(column){ - var config = { - editor:false, - blocked:false, - check:column.definition.editable, - params:column.definition.editorParams || {} - }; - - //set column editor - switch(typeof column.definition.editor){ - case "string": - if(this.editors[column.definition.editor]){ - config.editor = this.editors[column.definition.editor]; - }else { - console.warn("Editor Error - No such editor found: ", column.definition.editor); - } - break; - - case "function": - config.editor = column.definition.editor; - break; - - case "boolean": - if(column.definition.editor === true){ - if(typeof column.definition.formatter !== "function"){ - if(this.editors[column.definition.formatter]){ - config.editor = this.editors[column.definition.formatter]; - }else { - config.editor = this.editors["input"]; - } - }else { - console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter); - } - } - break; - } - - if(config.editor){ - column.modules.edit = config; - } - } - - getCurrentCell(){ - return this.currentCell ? this.currentCell.getComponent() : false; - } - - clearEditor(cancel){ - var cell = this.currentCell, - cellEl; - - this.invalidEdit = false; - - if(cell){ - this.currentCell = false; - - cellEl = cell.getElement(); - - this.dispatch("edit-editor-clear", cell, cancel); - - cellEl.classList.remove("tabulator-editing"); - - while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild); - - cell.row.getElement().classList.remove("tabulator-editing"); - - cell.table.element.classList.remove("tabulator-editing"); - } - } - - cancelEdit(){ - if(this.currentCell){ - var cell = this.currentCell; - var component = this.currentCell.getComponent(); - - this.clearEditor(true); - cell.setValueActual(cell.getValue()); - cell.cellRendered(); - - if(cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight){ - cell.row.normalizeHeight(true); - } - - if(cell.column.definition.cellEditCancelled){ - cell.column.definition.cellEditCancelled.call(this.table, component); - } - - this.dispatch("edit-cancelled", cell); - this.dispatchExternal("cellEditCancelled", component); - } - } - - //return a formatted value for a cell - bindEditor(cell){ - if(cell.column.modules.edit){ - var self = this, - element = cell.getElement(true); - - this.updateCellClass(cell); - element.setAttribute("tabindex", 0); - - element.addEventListener("click", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - } - }); - - element.addEventListener("mousedown", function(e){ - if (e.button === 2) { - e.preventDefault(); - }else { - self.mouseClick = true; - } - }); - - element.addEventListener("focus", function(e){ - if(!self.recursionBlock){ - self.edit(cell, e, false); - } - }); - } - } - - focusCellNoEvent(cell, block){ - this.recursionBlock = true; - - if(!(block && this.table.browser === "ie")){ - cell.getElement().focus({preventScroll: true}); - } - - this.recursionBlock = false; - } - - editCell(cell, forceEdit){ - this.focusCellNoEvent(cell); - this.edit(cell, false, forceEdit); - } - - focusScrollAdjust(cell){ - if(this.table.rowManager.getRenderMode() == "virtual"){ - var topEdge = this.table.rowManager.element.scrollTop, - bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop, - rowEl = cell.row.getElement(); - - if(rowEl.offsetTop < topEdge){ - this.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop); - }else { - if(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){ - this.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge); - } - } - - var leftEdge = this.table.rowManager.element.scrollLeft, - rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft, - cellEl = cell.getElement(); - - if(this.table.modExists("frozenColumns")){ - leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0); - rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0); - } - - if(this.table.options.renderHorizontal === "virtual"){ - leftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - rightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - } - - if(cellEl.offsetLeft < leftEdge){ - this.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft); - }else { - if(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){ - this.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge); - } - } - } - } - - allowEdit(cell) { - var check = cell.column.modules.edit ? true : false; - - if(cell.column.modules.edit){ - switch(typeof cell.column.modules.edit.check){ - case "function": - if(cell.row.initialized){ - check = cell.column.modules.edit.check(cell.getComponent()); - } - break; - - case "string": - check = !!cell.row.data[cell.column.modules.edit.check]; - break; - - case "boolean": - check = cell.column.modules.edit.check; - break; - } - } - - return check; - } - - edit(cell, e, forceEdit){ - var self = this, - allowEdit = true, - rendered = function(){}, - element = cell.getElement(), - cellEditor, component, params; - - //prevent editing if another cell is refusing to leave focus (eg. validation fail) - - if(this.currentCell){ - if(!this.invalidEdit && this.currentCell !== cell){ - this.cancelEdit(); - } - return; - } - - //handle successful value change - function success(value){ - if(self.currentCell === cell){ - var valid = self.chain("edit-success", [cell, value], true, true); - - if(valid === true || self.table.options.validationMode === "highlight"){ - self.clearEditor(); - - - if(!cell.modules.edit){ - cell.modules.edit = {}; - } - - cell.modules.edit.edited = true; - - if(self.editedCells.indexOf(cell) == -1){ - self.editedCells.push(cell); - } - - cell.setValue(value, true); - - return valid === true; - }else { - self.invalidEdit = true; - self.focusCellNoEvent(cell, true); - rendered(); - return false; - } - } - } - - //handle aborted edit - function cancel(){ - if(self.currentCell === cell){ - self.cancelEdit(); - } - } - - function onRendered(callback){ - rendered = callback; - } - - if(!cell.column.modules.edit.blocked){ - if(e){ - e.stopPropagation(); - } - - allowEdit = this.allowEdit(cell); - - if(allowEdit || forceEdit){ - - self.cancelEdit(); - - self.currentCell = cell; - - this.focusScrollAdjust(cell); - - component = cell.getComponent(); - - if(this.mouseClick){ - this.mouseClick = false; - - if(cell.column.definition.cellClick){ - cell.column.definition.cellClick.call(this.table, e, component); - } - } - - if(cell.column.definition.cellEditing){ - cell.column.definition.cellEditing.call(this.table, component); - } - - this.dispatch("cell-editing", cell); - this.dispatchExternal("cellEditing", component); - - params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params; - - cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params); - - //if editor returned, add to DOM, if false, abort edit - if(this.currentCell && cellEditor !== false){ - if(cellEditor instanceof Node){ - element.classList.add("tabulator-editing"); - cell.row.getElement().classList.add("tabulator-editing"); - cell.table.element.classList.add("tabulator-editing"); - while(element.firstChild) element.removeChild(element.firstChild); - element.appendChild(cellEditor); - - //trigger onRendered Callback - rendered(); - - //prevent editing from triggering rowClick event - var children = element.children; - - for (var i = 0; i < children.length; i++) { - children[i].addEventListener("click", function(e){ - e.stopPropagation(); - }); - } - }else { - console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor); - element.blur(); - return false; - } - }else { - element.blur(); - return false; - } - - return true; - }else { - this.mouseClick = false; - element.blur(); - return false; - } - }else { - this.mouseClick = false; - element.blur(); - return false; - } - } - - getEditedCells(){ - var output = []; - - this.editedCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearEdited(cell){ - var editIndex; - - if(cell.modules.edit && cell.modules.edit.edited){ - cell.modules.edit.edited = false; - - this.dispatch("edit-edited-clear", cell); - } - - editIndex = this.editedCells.indexOf(cell); - - if(editIndex > -1){ - this.editedCells.splice(editIndex, 1); - } - } - } - - Edit$1.moduleName = "edit"; - - //load defaults - Edit$1.editors = defaultEditors; - - class ExportRow{ - constructor(type, columns, component, indent){ - this.type = type; - this.columns = columns; - this.component = component || false; - this.indent = indent || 0; - } - } - - class ExportColumn{ - constructor(value, component, width, height, depth){ - this.value = value; - this.component = component || false; - this.width = width; - this.height = height; - this.depth = depth; - } - } - - class Export extends Module{ - - constructor(table){ - super(table); - - this.config = {}; - this.cloneTableStyle = true; - this.colVisProp = ""; - - this.registerTableOption("htmlOutputConfig", false); //html output config - - this.registerColumnOption("htmlOutput"); - this.registerColumnOption("titleHtmlOutput"); - } - - initialize(){ - this.registerTableFunction("getHtml", this.getHtml.bind(this)); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - generateExportList(config, style, range, colVisProp){ - this.cloneTableStyle = style; - this.config = config || {}; - this.colVisProp = colVisProp; - - var headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : []; - var body = this.bodyToExportRows(this.rowLookup(range)); - - return headers.concat(body); - } - - generateTable(config, style, range, colVisProp){ - var list = this.generateExportList(config, style, range, colVisProp); - - return this.generateTableElement(list); - } - - rowLookup(range){ - var rows = []; - - if(typeof range == "function"){ - range.call(this.table).forEach((row) =>{ - row = this.table.rowManager.findRow(row); - - if(row){ - rows.push(row); - } - }); - }else { - switch(range){ - case true: - case "visible": - rows = this.table.rowManager.getVisibleRows(false, true); - break; - - case "all": - rows = this.table.rowManager.rows; - break; - - case "selected": - rows = this.table.modules.selectRow.selectedRows; - break; - - case "active": - default: - if(this.table.options.pagination){ - rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2); - }else { - rows = this.table.rowManager.getDisplayRows(); - } - } - } - - return Object.assign([], rows); - } - - generateColumnGroupHeaders(){ - var output = []; - - var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex; - - columns.forEach((column) => { - var colData = this.processColumnGroup(column); - - if(colData){ - output.push(colData); - } - }); - - return output; - } - - processColumnGroup(column){ - var subGroups = column.columns, - maxDepth = 0, - title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title; - - var groupData = { - title:title, - column:column, - depth:1, - }; - - if(subGroups.length){ - groupData.subGroups = []; - groupData.width = 0; - - subGroups.forEach((subGroup) => { - var subGroupData = this.processColumnGroup(subGroup); - - if(subGroupData){ - groupData.width += subGroupData.width; - groupData.subGroups.push(subGroupData); - - if(subGroupData.depth > maxDepth){ - maxDepth = subGroupData.depth; - } - } - }); - - groupData.depth += maxDepth; - - if(!groupData.width){ - return false; - } - }else { - if(this.columnVisCheck(column)){ - groupData.width = 1; - }else { - return false; - } - } - - return groupData; - } - - columnVisCheck(column){ - var visProp = column.definition[this.colVisProp]; - - if(typeof visProp === "function"){ - visProp = visProp.call(this.table, column.getComponent()); - } - - return visProp !== false && (column.visible || (!column.visible && visProp)); - } - - headersToExportRows(columns){ - var headers = [], - headerDepth = 0, - exportRows = []; - - function parseColumnGroup(column, level){ - - var depth = headerDepth - level; - - if(typeof headers[level] === "undefined"){ - headers[level] = []; - } - - column.height = column.subGroups ? 1 : (depth - column.depth) + 1; - - headers[level].push(column); - - if(column.height > 1){ - for(let i = 1; i < column.height; i ++){ - - if(typeof headers[level + i] === "undefined"){ - headers[level + i] = []; - } - - headers[level + i].push(false); - } - } - - if(column.width > 1){ - for(let i = 1; i < column.width; i ++){ - headers[level].push(false); - } - } - - if(column.subGroups){ - column.subGroups.forEach(function(subGroup){ - parseColumnGroup(subGroup, level+1); - }); - } - } - - //calculate maximum header depth - columns.forEach(function(column){ - if(column.depth > headerDepth){ - headerDepth = column.depth; - } - }); - - columns.forEach(function(column){ - parseColumnGroup(column,0); - }); - - headers.forEach((header) => { - var columns = []; - - header.forEach((col) => { - if(col){ - let title = typeof col.title === "undefined" ? "" : col.title; - columns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth)); - }else { - columns.push(null); - } - }); - - exportRows.push(new ExportRow("header", columns)); - }); - - return exportRows; - } - - bodyToExportRows(rows){ - - var columns = []; - var exportRows = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if (this.columnVisCheck(column)) { - columns.push(column.getComponent()); - } - }); - - if(this.config.columnCalcs !== false && this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized){ - rows.unshift(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized){ - rows.push(this.table.modules.columnCalcs.botRow); - } - } - - rows = rows.filter((row) => { - switch(row.type){ - case "group": - return this.config.rowGroups !== false; - - case "calc": - return this.config.columnCalcs !== false; - - case "row": - return !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent); - } - - return true; - }); - - rows.forEach((row, i) => { - var rowData = row.getData(this.colVisProp); - var exportCols = []; - var indent = 0; - - switch(row.type){ - case "group": - indent = row.level; - exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1)); - break; - - case "calc" : - case "row" : - columns.forEach((col) => { - exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1)); - }); - - if(this.table.options.dataTree && this.config.dataTree !== false){ - indent = row.modules.dataTree.index; - } - break; - } - - exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent)); - }); - - return exportRows; - } - - generateTableElement(list){ - var table = document.createElement("table"), - headerEl = document.createElement("thead"), - bodyEl = document.createElement("tbody"), - styles = this.lookupTableStyles(), - rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))], - setup = {}; - - setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter; - - if(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists("columnCalcs")){ - setup.treeElementField = this.table.modules.dataTree.elementField; - } - - //assign group header formatter - setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))]; - - if(setup.groupHeader && !Array.isArray(setup.groupHeader)){ - setup.groupHeader = [setup.groupHeader]; - } - - table.classList.add("tabulator-print-table"); - - this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - - - if(list.length > 1000){ - console.warn("It may take a long time to render an HTML table with more than 1000 rows"); - } - - list.forEach((row, i) => { - let rowEl; - - switch(row.type){ - case "header": - headerEl.appendChild(this.generateHeaderElement(row, setup, styles)); - break; - - case "group": - bodyEl.appendChild(this.generateGroupElement(row, setup, styles)); - break; - - case "calc": - bodyEl.appendChild(this.generateCalcElement(row, setup, styles)); - break; - - case "row": - rowEl = this.generateRowElement(row, setup, styles); - - this.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - bodyEl.appendChild(rowEl); - break; - } - }); - - if(headerEl.innerHTML){ - table.appendChild(headerEl); - } - - table.appendChild(bodyEl); - - - this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]); - return table; - } - - lookupTableStyles(){ - var styles = {}; - - //lookup row styles - if(this.cloneTableStyle && window.getComputedStyle){ - styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"); - styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"); - styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs"); - styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"); - styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0]; - - if(styles.firstRow){ - styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell"); - styles.firstCell = styles.styleCells[0]; - styles.lastCell = styles.styleCells[styles.styleCells.length - 1]; - } - } - - return styles; - } - - generateHeaderElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - row.columns.forEach((column) => { - if(column){ - var cellEl = document.createElement("th"); - var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : []; - - cellEl.colSpan = column.width; - cellEl.rowSpan = column.height; - - cellEl.innerHTML = column.value; - - if(this.cloneTableStyle){ - cellEl.style.boxSizing = "border-box"; - } - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - this.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - this.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - if(column.component._column.visible){ - this.mapElementStyles(column.component.getElement(), cellEl, ["width"]); - }else { - if(column.component._column.definition.width){ - cellEl.style.width = column.component._column.definition.width + "px"; - } - } - - if(column.component._column.parent){ - this.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]); - } - - rowEl.appendChild(cellEl); - } - }); - - return rowEl; - } - - generateGroupElement(row, setup, styles){ - - var rowEl = document.createElement("tr"), - cellEl = document.createElement("td"), - group = row.columns[0]; - - rowEl.classList.add("tabulator-print-table-row"); - - if(setup.groupHeader && setup.groupHeader[row.indent]){ - group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - }else { - if(setup.groupHeader !== false){ - group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - - cellEl.colSpan = group.width; - cellEl.innerHTML = group.value; - - rowEl.classList.add("tabulator-print-table-group"); - rowEl.classList.add("tabulator-group-level-" + row.indent); - - if(group.component.isVisible()){ - rowEl.classList.add("tabulator-group-visible"); - } - - this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - rowEl.appendChild(cellEl); - - return rowEl; - } - - generateCalcElement(row, setup, styles){ - var rowEl = this.generateRowElement(row, setup, styles); - - rowEl.classList.add("tabulator-print-table-calcs"); - this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - - return rowEl; - } - - generateRowElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - rowEl.classList.add("tabulator-print-table-row"); - - row.columns.forEach((col, i) => { - if(col){ - var cellEl = document.createElement("td"), - column = col.component._column, - index = this.table.columnManager.findColumnIndex(column), - value = col.value, - cellStyle; - - var cellWrapper = { - modules:{}, - getValue:function(){ - return value; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return cellEl; - }, - getType:function(){ - return "cell"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getData:function(){ - return row.component.getData(); - }, - getRow:function(){ - return row.component; - }, - getComponent:function(){ - return cellWrapper; - }, - column:column, - }; - - var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : []; - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - if(this.table.modExists("format") && this.config.formatCells !== false){ - value = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp); - }else { - switch(typeof value){ - case "object": - value = value !== null ? JSON.stringify(value) : ""; - break; - - case "undefined": - value = ""; - break; - } - } - - if(value instanceof Node){ - cellEl.appendChild(value); - }else { - cellEl.innerHTML = value; - } - - cellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell; - - if(cellStyle){ - this.mapElementStyles(cellStyle, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]); - - if(column.definition.align){ - cellEl.style.textAlign = column.definition.align; - } - } - - if(this.table.options.dataTree && this.config.dataTree !== false){ - if((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){ - if(row.component._row.modules.dataTree.controlEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild); - } - if(row.component._row.modules.dataTree.branchEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild); - } - } - } - - rowEl.appendChild(cellEl); - - if(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){ - cellWrapper.modules.format.renderedCallback(); - } - } - }); - - if(setup.rowFormatter && row.type === "row" && this.config.formatCells !== false){ - let formatComponent = Object.assign(row.component); - - formatComponent.getElement = function(){return rowEl;}; - - setup.rowFormatter(row.component); - } - - return rowEl; - } - - generateHTMLTable(list){ - var holder = document.createElement("div"); - - holder.appendChild(this.generateTableElement(list)); - - return holder.innerHTML; - } - - getHtml(visible, style, config, colVisProp){ - var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"); - - return this.generateHTMLTable(list); - } - - mapElementStyles(from, to, props){ - if(this.cloneTableStyle && from && to){ - - var lookup = { - "background-color" : "backgroundColor", - "color" : "fontColor", - "width" : "width", - "font-weight" : "fontWeight", - "font-family" : "fontFamily", - "font-size" : "fontSize", - "text-align" : "textAlign", - "border-top" : "borderTop", - "border-left" : "borderLeft", - "border-right" : "borderRight", - "border-bottom" : "borderBottom", - "padding-top" : "paddingTop", - "padding-left" : "paddingLeft", - "padding-right" : "paddingRight", - "padding-bottom" : "paddingBottom", - }; - - if(window.getComputedStyle){ - var fromStyle = window.getComputedStyle(from); - - props.forEach(function(prop){ - if(!to.style[lookup[prop]]){ - to.style[lookup[prop]] = fromStyle.getPropertyValue(prop); - } - }); - } - } - } - } - - Export.moduleName = "export"; - - var defaultFilters = { - - //equal to - "=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal == filterVal ? true : false; - }, - - //less than - "<":function(filterVal, rowVal, rowData, filterParams){ - return rowVal < filterVal ? true : false; - }, - - //less than or equal to - "<=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal <= filterVal ? true : false; - }, - - //greater than - ">":function(filterVal, rowVal, rowData, filterParams){ - return rowVal > filterVal ? true : false; - }, - - //greater than or equal to - ">=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal >= filterVal ? true : false; - }, - - //not equal to - "!=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal != filterVal ? true : false; - }, - - "regex":function(filterVal, rowVal, rowData, filterParams){ - - if(typeof filterVal == "string"){ - filterVal = new RegExp(filterVal); - } - - return filterVal.test(rowVal); - }, - - //contains the string - "like":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1; - } - else { - return false; - } - } - }, - - //contains the keywords - "keywords":function(filterVal, rowVal, rowData, filterParams){ - var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator), - value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(), - matches = []; - - keywords.forEach((keyword) =>{ - if(value.includes(keyword)){ - matches.push(true); - } - }); - - return filterParams.matchAll ? matches.length === keywords.length : !!matches.length; - }, - - //starts with the string - "starts":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //ends with the string - "ends":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //in array - "in":function(filterVal, rowVal, rowData, filterParams){ - if(Array.isArray(filterVal)){ - return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true; - }else { - console.warn("Filter Error - filter value is not an array:", filterVal); - return false; - } - }, - }; - - class Filter extends Module{ - - constructor(table){ - super(table); - - this.filterList = []; //hold filter list - this.headerFilters = {}; //hold column filters - this.headerFilterColumns = []; //hold columns that use header filters - - this.prevHeaderFilterChangeCheck = ""; - this.prevHeaderFilterChangeCheck = "{}"; - - this.changed = false; //has filtering changed since last render - this.tableInitialized = false; - - this.registerTableOption("filterMode", "local"); //local or remote filtering - - this.registerTableOption("initialFilter", false); //initial filtering criteria - this.registerTableOption("initialHeaderFilter", false); //initial header filtering criteria - this.registerTableOption("headerFilterLiveFilterDelay", 300); //delay before updating column after user types in header filter - this.registerTableOption("placeholderHeaderFilter", false); //placeholder when header filter is empty - - this.registerColumnOption("headerFilter"); - this.registerColumnOption("headerFilterPlaceholder"); - this.registerColumnOption("headerFilterParams"); - this.registerColumnOption("headerFilterEmptyCheck"); - this.registerColumnOption("headerFilterFunc"); - this.registerColumnOption("headerFilterFuncParams"); - this.registerColumnOption("headerFilterLiveFilter"); - - this.registerTableFunction("searchRows", this.searchRows.bind(this)); - this.registerTableFunction("searchData", this.searchData.bind(this)); - - this.registerTableFunction("setFilter", this.userSetFilter.bind(this)); - this.registerTableFunction("refreshFilter", this.userRefreshFilter.bind(this)); - this.registerTableFunction("addFilter", this.userAddFilter.bind(this)); - this.registerTableFunction("getFilters", this.getFilters.bind(this)); - this.registerTableFunction("setHeaderFilterFocus", this.userSetHeaderFilterFocus.bind(this)); - this.registerTableFunction("getHeaderFilterValue", this.userGetHeaderFilterValue.bind(this)); - this.registerTableFunction("setHeaderFilterValue", this.userSetHeaderFilterValue.bind(this)); - this.registerTableFunction("getHeaderFilters", this.getHeaderFilters.bind(this)); - this.registerTableFunction("removeFilter", this.userRemoveFilter.bind(this)); - this.registerTableFunction("clearFilter", this.userClearFilter.bind(this)); - this.registerTableFunction("clearHeaderFilter", this.userClearHeaderFilter.bind(this)); - - this.registerComponentFunction("column", "headerFilterFocus", this.setHeaderFilterFocus.bind(this)); - this.registerComponentFunction("column", "reloadHeaderFilter", this.reloadHeaderFilter.bind(this)); - this.registerComponentFunction("column", "getHeaderFilterValue", this.getHeaderFilterValue.bind(this)); - this.registerComponentFunction("column", "setHeaderFilterValue", this.setHeaderFilterValue.bind(this)); - } - - initialize(){ - this.subscribe("column-init", this.initializeColumnHeaderFilter.bind(this)); - this.subscribe("column-width-fit-before", this.hideHeaderFilterElements.bind(this)); - this.subscribe("column-width-fit-after", this.showHeaderFilterElements.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.subscribe("placeholder", this.generatePlaceholder.bind(this)); - - if(this.table.options.filterMode === "remote"){ - this.subscribe("data-params", this.remoteFilterParams.bind(this)); - } - - this.registerDataHandler(this.filter.bind(this), 10); - } - - tableBuilt(){ - if(this.table.options.initialFilter){ - this.setFilter(this.table.options.initialFilter); - } - - if(this.table.options.initialHeaderFilter){ - this.table.options.initialHeaderFilter.forEach((item) => { - - var column = this.table.columnManager.findColumn(item.field); - - if(column){ - this.setHeaderFilterValue(column, item.value); - }else { - console.warn("Column Filter Error - No matching column found:", item.field); - return false; - } - }); - } - - this.tableInitialized = true; - } - - remoteFilterParams(data, config, silent, params){ - params.filter = this.getFilters(true, true); - return params; - } - - generatePlaceholder(text){ - if(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){ - return this.table.options.placeholderHeaderFilter; - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - //set standard filters - userSetFilter(field, type, value, params){ - this.setFilter(field, type, value, params); - this.refreshFilter(); - } - - //set standard filters - userRefreshFilter(){ - this.refreshFilter(); - } - - //add filter to array - userAddFilter(field, type, value, params){ - this.addFilter(field, type, value, params); - this.refreshFilter(); - } - - userSetHeaderFilterFocus(field){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterFocus(column); - }else { - console.warn("Column Filter Focus Error - No matching column found:", field); - return false; - } - } - - userGetHeaderFilterValue(field) { - var column = this.table.columnManager.findColumn(field); - - if(column){ - return this.getHeaderFilterValue(column); - }else { - console.warn("Column Filter Error - No matching column found:", field); - } - } - - userSetHeaderFilterValue(field, value){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterValue(column, value); - }else { - console.warn("Column Filter Error - No matching column found:", field); - return false; - } - } - - //remove filter from array - userRemoveFilter(field, type, value){ - this.removeFilter(field, type, value); - this.refreshFilter(); - } - - //clear filters - userClearFilter(all){ - this.clearFilter(all); - this.refreshFilter(); - } - - //clear header filters - userClearHeaderFilter(){ - this.clearHeaderFilter(); - this.refreshFilter(); - } - - - //search for specific row components - searchRows(field, type, value){ - return this.search("rows", field, type, value); - } - - //search for specific data - searchData(field, type, value){ - return this.search("data", field, type, value); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnHeaderFilter(column){ - var def = column.definition; - - if(def.headerFilter){ - this.initializeColumn(column); - } - } - - //initialize column header filter - initializeColumn(column, value){ - var self = this, - field = column.getField(); - - //handle successfully value change - function success(value){ - var filterType = (column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text") || column.modules.filter.tagType == "textarea" ? "partial" : "match", - type = "", - filterChangeCheck = "", - filterFunc; - - if(typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value){ - - column.modules.filter.prevSuccess = value; - - if(!column.modules.filter.emptyFunc(value)){ - column.modules.filter.value = value; - - switch(typeof column.definition.headerFilterFunc){ - case "string": - if(Filter.filters[column.definition.headerFilterFunc]){ - type = column.definition.headerFilterFunc; - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params); - }; - }else { - console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc); - } - break; - - case "function": - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return column.definition.headerFilterFunc(value, fieldVal, data, params); - }; - - type = filterFunc; - break; - } - - if(!filterFunc){ - switch(filterType){ - case "partial": - filterFunc = function(data){ - var colVal = column.getFieldValue(data); - - if(typeof colVal !== 'undefined' && colVal !== null){ - return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1; - }else { - return false; - } - }; - type = "like"; - break; - - default: - filterFunc = function(data){ - return column.getFieldValue(data) == value; - }; - type = "="; - } - } - - self.headerFilters[field] = {value:value, func:filterFunc, type:type}; - }else { - delete self.headerFilters[field]; - } - - column.modules.filter.value = value; - - filterChangeCheck = JSON.stringify(self.headerFilters); - - if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ - self.prevHeaderFilterChangeCheck = filterChangeCheck; - - self.trackChanges(); - self.refreshFilter(); - } - } - - return true; - } - - column.modules.filter = { - success:success, - attrType:false, - tagType:false, - emptyFunc:false, - }; - - this.generateHeaderFilterElement(column); - } - - generateHeaderFilterElement(column, initialValue, reinitialize){ - var self = this, - success = column.modules.filter.success, - field = column.getField(), - filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback; - - column.modules.filter.value = initialValue; - - //handle aborted edit - function cancel(){} - - function onRendered(callback){ - onRenderedCallback = callback; - } - - if(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){ - column.contentElement.removeChild(column.modules.filter.headerElement.parentNode); - } - - if(field){ - - //set empty value function - column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){ - return !value && value !== 0; - }; - - filterElement = document.createElement("div"); - filterElement.classList.add("tabulator-header-filter"); - - //set column editor - switch(typeof column.definition.headerFilter){ - case "string": - if(self.table.modules.edit.editors[column.definition.headerFilter]){ - editor = self.table.modules.edit.editors[column.definition.headerFilter]; - - if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor); - } - break; - - case "function": - editor = column.definition.headerFilter; - break; - - case "boolean": - if(column.modules.edit && column.modules.edit.editor){ - editor = column.modules.edit.editor; - }else { - if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){ - editor = self.table.modules.edit.editors[column.definition.formatter]; - - if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - editor = self.table.modules.edit.editors["input"]; - } - } - break; - } - - if(editor){ - - cellWrapper = { - getValue:function(){ - return typeof initialValue !== "undefined" ? initialValue : ""; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return filterElement; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - getType:() => { - return "header"; - }, - getRow:function(){ - return { - normalizeHeight:function(){ - - } - }; - } - }; - - params = column.definition.headerFilterParams || {}; - - params = typeof params === "function" ? params.call(self.table, cellWrapper) : params; - - editorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params); - - if(!editorElement){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false"); - return; - } - - if(!(editorElement instanceof Node)){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement); - return; - } - - //set Placeholder Text - self.langBind("headerFilters|columns|" + column.definition.field, function(value){ - editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : (column.definition.headerFilterPlaceholder || self.langText("headerFilters|default"))); - }); - - //focus on element on click - editorElement.addEventListener("click", function(e){ - e.stopPropagation(); - editorElement.focus(); - }); - - editorElement.addEventListener("focus", (e) => { - var left = this.table.columnManager.contentsElement.scrollLeft; - - var headerPos = this.table.rowManager.element.scrollLeft; - - if(left !== headerPos){ - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - - //live update filters as user types - typingTimer = false; - - searchTrigger = function(e){ - if(typingTimer){ - clearTimeout(typingTimer); - } - - typingTimer = setTimeout(function(){ - success(editorElement.value); - },self.table.options.headerFilterLiveFilterDelay); - }; - - column.modules.filter.headerElement = editorElement; - column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "" ; - column.modules.filter.tagType = editorElement.tagName.toLowerCase(); - - if(column.definition.headerFilterLiveFilter !== false){ - - if ( - !( - column.definition.headerFilter === 'autocomplete' || - column.definition.headerFilter === 'tickCross' || - ((column.definition.editor === 'autocomplete' || - column.definition.editor === 'tickCross') && - column.definition.headerFilter === true) - ) - ) { - editorElement.addEventListener("keyup", searchTrigger); - editorElement.addEventListener("search", searchTrigger); - - - //update number filtered columns on change - if(column.modules.filter.attrType == "number"){ - editorElement.addEventListener("change", function(e){ - success(editorElement.value); - }); - } - - //change text inputs to search inputs to allow for clearing of field - if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){ - editorElement.setAttribute("type", "search"); - // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click - } - - } - - //prevent input and select elements from propagating click to column sorters etc - if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){ - editorElement.addEventListener("mousedown",function(e){ - e.stopPropagation(); - }); - } - } - - filterElement.appendChild(editorElement); - - column.contentElement.appendChild(filterElement); - - if(!reinitialize){ - self.headerFilterColumns.push(column); - } - - if(onRenderedCallback){ - onRenderedCallback(); - } - } - }else { - console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title); - } - } - - //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode) - hideHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = 'none'; - } - }); - } - - //show all header filter elements (used to ensure correct column widths in "fitData" layout mode) - showHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = ''; - } - }); - } - - //programmatically set focus of header filter - setHeaderFilterFocus(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.focus(); - }else { - console.warn("Column Filter Focus Error - No header filter set on column:", column.getField()); - } - } - - //programmatically get value of header filter - getHeaderFilterValue(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.value; - } else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - - //programmatically set value of header filter - setHeaderFilterValue(column, value){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, value, true); - column.modules.filter.success(value); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - reloadHeaderFilter(column){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, column.modules.filter.value, true); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - refreshFilter(){ - if(this.tableInitialized){ - if(this.table.options.filterMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the filters has changed since last use - trackChanges(){ - this.changed = true; - this.dispatch("filter-changed"); - } - - //check if the filters has changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //set standard filters - setFilter(field, type, value, params){ - this.filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - this.addFilter(field); - } - - //add filter to array - addFilter(field, type, value, params){ - var changed = false; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - this.filterList.push(filter); - changed = true; - } - }); - - if(changed){ - this.trackChanges(); - } - } - - findFilter(filter){ - var column; - - if(Array.isArray(filter)){ - return this.findSubFilters(filter); - } - - var filterFunc = false; - - if(typeof filter.field == "function"){ - filterFunc = function(data){ - return filter.field(data, filter.type || {});// pass params to custom filter function - }; - }else { - - if(Filter.filters[filter.type]){ - - column = this.table.columnManager.getColumnByField(filter.field); - - if(column){ - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {}); - }; - }else { - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {}); - }; - } - - - }else { - console.warn("Filter Error - No such filter type found, ignoring: ", filter.type); - } - } - - filter.func = filterFunc; - - return filter.func ? filter : false; - } - - findSubFilters(filters){ - var output = []; - - filters.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - output.push(filter); - } - }); - - return output.length ? output : false; - } - - //get all filters - getFilters(all, ajax){ - var output = []; - - if(all){ - output = this.getHeaderFilters(); - } - - if(ajax){ - output.forEach(function(item){ - if(typeof item.type == "function"){ - item.type = "function"; - } - }); - } - - output = output.concat(this.filtersToArray(this.filterList, ajax)); - - return output; - } - - //filter to Object - filtersToArray(filterList, ajax){ - var output = []; - - filterList.forEach((filter) => { - var item; - - if(Array.isArray(filter)){ - output.push(this.filtersToArray(filter, ajax)); - }else { - item = {field:filter.field, type:filter.type, value:filter.value}; - - if(ajax){ - if(typeof item.type == "function"){ - item.type = "function"; - } - } - - output.push(item); - } - }); - - return output; - } - - //get all filters - getHeaderFilters(){ - var output = []; - - for(var key in this.headerFilters){ - output.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value}); - } - - return output; - } - - //remove filter from array - removeFilter(field, type, value){ - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - var index = -1; - - if(typeof filter.field == "object"){ - index = this.filterList.findIndex((element) => { - return filter === element; - }); - }else { - index = this.filterList.findIndex((element) => { - return filter.field === element.field && filter.type === element.type && filter.value === element.value; - }); - } - - if(index > -1){ - this.filterList.splice(index, 1); - }else { - console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type); - } - }); - - this.trackChanges(); - } - - //clear filters - clearFilter(all){ - this.filterList = []; - - if(all){ - this.clearHeaderFilter(); - } - - this.trackChanges(); - } - - //clear header filters - clearHeaderFilter(){ - this.headerFilters = {}; - this.prevHeaderFilterChangeCheck = "{}"; - - this.headerFilterColumns.forEach((column) => { - if(typeof column.modules.filter.value !== "undefined"){ - delete column.modules.filter.value; - } - column.modules.filter.prevSuccess = undefined; - this.reloadHeaderFilter(column); - }); - - this.trackChanges(); - } - - //search data and return matching rows - search (searchType, field, type, value){ - var activeRows = [], - filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - filterList.push(filter); - } - }); - - this.table.rowManager.rows.forEach((row) => { - var match = true; - - filterList.forEach((filter) => { - if(!this.filterRecurse(filter, row.getData())){ - match = false; - } - }); - - if(match){ - activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent()); - } - - }); - - return activeRows; - } - - //filter row array - filter(rowList, filters){ - var activeRows = [], - activeRowComponents = []; - - if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters(true)); - } - - if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ - - rowList.forEach((row) => { - if(this.filterRow(row)){ - activeRows.push(row); - } - }); - - }else { - activeRows = rowList.slice(0); - } - - if(this.subscribedExternal("dataFiltered")){ - - activeRows.forEach((row) => { - activeRowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); - } - - return activeRows; - } - - //filter individual row - filterRow(row, filters){ - var match = true, - data = row.getData(); - - this.filterList.forEach((filter) => { - if(!this.filterRecurse(filter, data)){ - match = false; - } - }); - - - for(var field in this.headerFilters){ - if(!this.headerFilters[field].func(data)){ - match = false; - } - } - - return match; - } - - filterRecurse(filter, data){ - var match = false; - - if(Array.isArray(filter)){ - filter.forEach((subFilter) => { - if(this.filterRecurse(subFilter, data)){ - match = true; - } - }); - }else { - match = filter.func(data); - } - - return match; - } - } - - Filter.moduleName = "filter"; - - //load defaults - Filter.filters = defaultFilters; - - function plaintext(cell, formatterParams, onRendered){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - function html$1(cell, formatterParams, onRendered){ - return cell.getValue(); - } - - function textarea$1(cell, formatterParams, onRendered){ - cell.getElement().style.whiteSpace = "pre-wrap"; - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - function money(cell, formatterParams, onRendered){ - var floatVal = parseFloat(cell.getValue()), - sign = "", - number, integer, decimal, rgx, value; - - var decimalSym = formatterParams.decimal || "."; - var thousandSym = formatterParams.thousand || ","; - var negativeSign = formatterParams.negativeSign || "-"; - var symbol = formatterParams.symbol || ""; - var after = !!formatterParams.symbolAfter; - var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2; - - if(isNaN(floatVal)){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - if(floatVal < 0){ - floatVal = Math.abs(floatVal); - sign = negativeSign; - } - - number = precision !== false ? floatVal.toFixed(precision) : floatVal; - number = String(number).split("."); - - integer = number[0]; - decimal = number.length > 1 ? decimalSym + number[1] : ""; - - if (formatterParams.thousand !== false) { - rgx = /(\d+)(\d{3})/; - - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); - } - } - - value = integer + decimal; - - if(sign === true){ - value = "(" + value + ")"; - return after ? value + symbol : symbol + value; - }else { - return after ? sign + value + symbol : sign + symbol + value; - } - } - - function link(cell, formatterParams, onRendered){ - var value = cell.getValue(), - urlPrefix = formatterParams.urlPrefix || "", - download = formatterParams.download, - label = value, - el = document.createElement("a"), - data; - - function labelTraverse(path, data){ - var item = path.shift(), - value = data[item]; - - if(path.length && typeof value === "object"){ - return labelTraverse(path, value); - } - - return value; - } - - if(formatterParams.labelField){ - data = cell.getData(); - label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); - } - - if(formatterParams.label){ - switch(typeof formatterParams.label){ - case "string": - label = formatterParams.label; - break; - - case "function": - label = formatterParams.label(cell); - break; - } - } - - if(label){ - if(formatterParams.urlField){ - data = cell.getData(); - value = data[formatterParams.urlField]; - } - - if(formatterParams.url){ - switch(typeof formatterParams.url){ - case "string": - value = formatterParams.url; - break; - - case "function": - value = formatterParams.url(cell); - break; - } - } - - el.setAttribute("href", urlPrefix + value); - - if(formatterParams.target){ - el.setAttribute("target", formatterParams.target); - } - - if(formatterParams.download){ - - if(typeof download == "function"){ - download = download(cell); - }else { - download = download === true ? "" : download; - } - - el.setAttribute("download", download); - } - - el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label)); - - return el; - }else { - return " "; - } - } - - function image(cell, formatterParams, onRendered){ - var el = document.createElement("img"), - src = cell.getValue(); - - if(formatterParams.urlPrefix){ - src = formatterParams.urlPrefix + cell.getValue(); - } - - if(formatterParams.urlSuffix){ - src = src + formatterParams.urlSuffix; - } - - el.setAttribute("src", src); - - switch(typeof formatterParams.height){ - case "number": - el.style.height = formatterParams.height + "px"; - break; - - case "string": - el.style.height = formatterParams.height; - break; - } - - switch(typeof formatterParams.width){ - case "number": - el.style.width = formatterParams.width + "px"; - break; - - case "string": - el.style.width = formatterParams.width; - break; - } - - el.addEventListener("load", function(){ - cell.getRow().normalizeHeight(); - }); - - return el; - } - - function tickCross$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - empty = formatterParams.allowEmpty, - truthy = formatterParams.allowTruthy, - trueValueSet = Object.keys(formatterParams).includes("trueValue"), - tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '', - cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : ''; - - if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){ - element.setAttribute("aria-checked", true); - return tick || ""; - }else { - if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){ - element.setAttribute("aria-checked", "mixed"); - return ""; - }else { - element.setAttribute("aria-checked", false); - return cross || ""; - } - } - } - - function datetime$1(cell, formatterParams, onRendered){ - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var outputFormat = formatterParams.outputFormat || "dd/MM/yyyy HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if(newDatetime.isValid){ - if(formatterParams.timezone){ - newDatetime = newDatetime.setZone(formatterParams.timezone); - } - - return newDatetime.toFormat(outputFormat); - }else { - if(invalid === true || !value){ - return value; - }else if(typeof invalid === "function"){ - return invalid(value); - }else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetime' formatter is dependant on luxon.js"); - } - } - - function datetimediff (cell, formatterParams, onRendered) { - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false; - var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : "days"; - var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false; - var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : DT.now(); - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if (newDatetime.isValid){ - if(humanize){ - return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); - }else { - return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); - } - } else { - - if (invalid === true) { - return value; - } else if (typeof invalid === "function") { - return invalid(value); - } else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js"); - } - } - - function lookup (cell, formatterParams, onRendered) { - var value = cell.getValue(); - - if (typeof formatterParams[value] === "undefined") { - console.warn('Missing display value for ' + value); - return value; - } - - return formatterParams[value]; - } - - function star$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5, - stars = document.createElement("span"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"), - starActive = '', - starInactive = ''; - - //style stars holder - stars.style.verticalAlign = "middle"; - - //style star - star.setAttribute("width", "14"); - star.setAttribute("height", "14"); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - value = value && !isNaN(value) ? parseInt(value) : 0; - - value = Math.max(0, Math.min(value, maxStars)); - - for(var i=1;i<= maxStars;i++){ - var nextStar = star.cloneNode(true); - nextStar.innerHTML = i <= value ? starActive : starInactive; - - stars.appendChild(nextStar); - } - - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - element.setAttribute("aria-label", value); - - return stars; - } - - function traffic(cell, formatterParams, onRendered){ - var value = this.sanitizeHTML(cell.getValue()) || 0, - el = document.createElement("span"), - max = formatterParams && formatterParams.max ? formatterParams.max : 100, - min = formatterParams && formatterParams.min ? formatterParams.min : 0, - colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"], - color = "#666666", - percent, percentValue; - - if(isNaN(value) || typeof cell.getValue() === "undefined"){ - return; - } - - el.classList.add("tabulator-traffic-light"); - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set color - switch(typeof colors){ - case "string": - color = colors; - break; - case "function": - color = colors(value); - break; - case "object": - if(Array.isArray(colors)){ - var unit = 100 / colors.length; - var index = Math.floor(percentValue / unit); - - index = Math.min(index, colors.length - 1); - index = Math.max(index, 0); - color = colors[index]; - break; - } - } - - el.style.backgroundColor = color; - - return el; - } - - function progress$1(cell, formatterParams = {}, onRendered){ //progress bar - var value = this.sanitizeHTML(cell.getValue()) || 0, - element = cell.getElement(), - max = formatterParams.max ? formatterParams.max : 100, - min = formatterParams.min ? formatterParams.min : 0, - legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center", - percent, percentValue, color, legend, legendColor; - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set bar color - switch(typeof formatterParams.color){ - case "string": - color = formatterParams.color; - break; - case "function": - color = formatterParams.color(value); - break; - case "object": - if(Array.isArray(formatterParams.color)){ - let unit = 100 / formatterParams.color.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.color.length - 1); - index = Math.max(index, 0); - color = formatterParams.color[index]; - break; - } - default: - color = "#2DC214"; - } - - //generate legend - switch(typeof formatterParams.legend){ - case "string": - legend = formatterParams.legend; - break; - case "function": - legend = formatterParams.legend(value); - break; - case "boolean": - legend = value; - break; - default: - legend = false; - } - - //set legend color - switch(typeof formatterParams.legendColor){ - case "string": - legendColor = formatterParams.legendColor; - break; - case "function": - legendColor = formatterParams.legendColor(value); - break; - case "object": - if(Array.isArray(formatterParams.legendColor)){ - let unit = 100 / formatterParams.legendColor.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.legendColor.length - 1); - index = Math.max(index, 0); - legendColor = formatterParams.legendColor[index]; - } - break; - default: - legendColor = "#000"; - } - - element.style.minWidth = "30px"; - element.style.position = "relative"; - - element.setAttribute("aria-label", percentValue); - - var barEl = document.createElement("div"); - barEl.style.display = "inline-block"; - barEl.style.width = percentValue + "%"; - barEl.style.backgroundColor = color; - barEl.style.height = "100%"; - - barEl.setAttribute('data-max', max); - barEl.setAttribute('data-min', min); - - var barContainer = document.createElement("div"); - barContainer.style.position = "relative"; - barContainer.style.width = "100%"; - barContainer.style.height = "100%"; - - if(legend){ - var legendEl = document.createElement("div"); - legendEl.style.position = "absolute"; - legendEl.style.top = 0; - legendEl.style.left = 0; - legendEl.style.textAlign = legendAlign; - legendEl.style.width = "100%"; - legendEl.style.color = legendColor; - legendEl.innerHTML = legend; - } - - onRendered(function(){ - - //handle custom element needed if formatter is to be included in printed/downloaded output - if(!(cell instanceof CellComponent)){ - var holderEl = document.createElement("div"); - holderEl.style.position = "absolute"; - holderEl.style.top = "4px"; - holderEl.style.bottom = "4px"; - holderEl.style.left = "4px"; - holderEl.style.right = "4px"; - - element.appendChild(holderEl); - - element = holderEl; - } - - element.appendChild(barContainer); - barContainer.appendChild(barEl); - - if(legend){ - barContainer.appendChild(legendEl); - } - }); - - return ""; - } - - function color(cell, formatterParams, onRendered){ - cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue()); - return ""; - } - - function buttonTick(cell, formatterParams, onRendered){ - return ''; - } - - function buttonCross(cell, formatterParams, onRendered){ - return ''; - } - - function rownum(cell, formatterParams, onRendered){ - var content = document.createElement("span"); - var row = cell.getRow(); - - row.watchPosition((position) => { - content.innerText = position; - }); - - return content; - } - - function handle(cell, formatterParams, onRendered){ - cell.getElement().classList.add("tabulator-row-handle"); - return "
              "; - } - - function responsiveCollapse(cell, formatterParams, onRendered){ - var el = document.createElement("div"), - config = cell.getRow()._row.modules.responsiveLayout; - - el.classList.add("tabulator-responsive-collapse-toggle"); - - el.innerHTML = ` - - - - - - -`; - - cell.getElement().classList.add("tabulator-row-handle"); - - function toggleList(isOpen){ - var collapseEl = config.element; - - config.open = isOpen; - - if(collapseEl){ - - if(config.open){ - el.classList.add("open"); - collapseEl.style.display = ''; - }else { - el.classList.remove("open"); - collapseEl.style.display = 'none'; - } - } - } - - el.addEventListener("click", function(e){ - e.stopImmediatePropagation(); - toggleList(!config.open); - cell.getTable().rowManager.adjustTableSize(); - }); - - toggleList(config.open); - - return el; - } - - function rowSelection(cell, formatterParams, onRendered){ - var checkbox = document.createElement("input"); - var blocked = false; - - checkbox.type = 'checkbox'; - - checkbox.setAttribute("aria-label", "Select Row"); - - if(this.table.modExists("selectRow", true)){ - - checkbox.addEventListener("click", (e) => { - e.stopPropagation(); - }); - - if(typeof cell.getRow == 'function'){ - var row = cell.getRow(); - - if(row instanceof RowComponent){ - - checkbox.addEventListener("change", (e) => { - if(this.table.options.selectableRangeMode === "click"){ - if(!blocked){ - row.toggleSelect(); - }else { - blocked = false; - } - }else { - row.toggleSelect(); - } - }); - - if(this.table.options.selectableRangeMode === "click"){ - checkbox.addEventListener("click", (e) => { - blocked = true; - this.table.modules.selectRow.handleComplexRowClick(row._row, e); - }); - } - - checkbox.checked = row.isSelected && row.isSelected(); - this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox); - }else { - checkbox = ""; - } - }else { - checkbox.addEventListener("change", (e) => { - if(this.table.modules.selectRow.selectedRows.length){ - this.table.deselectRow(); - }else { - this.table.selectRow(formatterParams.rowRange); - } - }); - - this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox); - } - } - - return checkbox; - } - - var defaultFormatters = { - plaintext:plaintext, - html:html$1, - textarea:textarea$1, - money:money, - link:link, - image:image, - tickCross:tickCross$1, - datetime:datetime$1, - datetimediff:datetimediff, - lookup:lookup, - star:star$1, - traffic:traffic, - progress:progress$1, - color:color, - buttonTick:buttonTick, - buttonCross:buttonCross, - rownum:rownum, - handle:handle, - responsiveCollapse:responsiveCollapse, - rowSelection:rowSelection, - }; - - class Format extends Module{ - - constructor(table){ - super(table); - - this.registerColumnOption("formatter"); - this.registerColumnOption("formatterParams"); - - this.registerColumnOption("formatterPrint"); - this.registerColumnOption("formatterPrintParams"); - this.registerColumnOption("formatterClipboard"); - this.registerColumnOption("formatterClipboardParams"); - this.registerColumnOption("formatterHtmlOutput"); - this.registerColumnOption("formatterHtmlOutputParams"); - this.registerColumnOption("titleFormatter"); - this.registerColumnOption("titleFormatterParams"); - } - - initialize(){ - this.subscribe("cell-format", this.formatValue.bind(this)); - this.subscribe("cell-rendered", this.cellRendered.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-format", this.formatHeader.bind(this)); - } - - //initialize column formatter - initializeColumn(column){ - column.modules.format = this.lookupFormatter(column, ""); - - if(typeof column.definition.formatterPrint !== "undefined"){ - column.modules.format.print = this.lookupFormatter(column, "Print"); - } - - if(typeof column.definition.formatterClipboard !== "undefined"){ - column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard"); - } - - if(typeof column.definition.formatterHtmlOutput !== "undefined"){ - column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput"); - } - } - - lookupFormatter(column, type){ - var config = {params:column.definition["formatter" + type + "Params"] || {}}, - formatter = column.definition["formatter" + type]; - - //set column formatter - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - config.formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - config.formatter = Format.formatters.plaintext; - } - break; - - case "function": - config.formatter = formatter; - break; - - default: - config.formatter = Format.formatters.plaintext; - break; - } - - return config; - } - - cellRendered(cell){ - if(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){ - cell.modules.format.renderedCallback(); - cell.modules.format.rendered = true; - } - } - - //return a formatted value for a column header - formatHeader(column, title, el){ - var formatter, params, onRendered, mockCell; - - if(column.definition.titleFormatter){ - formatter = this.getFormatter(column.definition.titleFormatter); - - onRendered = (callback) => { - column.titleFormatterRendered = callback; - }; - - mockCell = { - getValue:function(){ - return title; - }, - getElement:function(){ - return el; - }, - getType:function(){ - return "header"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - } - }; - - params = column.definition.titleFormatterParams || {}; - - params = typeof params === "function" ? params() : params; - - return formatter.call(this, mockCell, params, onRendered); - }else { - return title; - } - } - - - //return a formatted value for a cell - formatValue(cell){ - var component = cell.getComponent(), - params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return cell.column.modules.format.formatter.call(this, component, params, onRendered); - } - - formatExportValue(cell, type){ - var formatter = cell.column.modules.format[type], - params; - - if(formatter){ - params = typeof formatter.params === "function" ? formatter.params(cell.getComponent()) : formatter.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return formatter.formatter.call(this, cell.getComponent(), params, onRendered); - - }else { - return this.formatValue(cell); - } - } - - sanitizeHTML(value){ - if(value){ - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/', - '`': '`', - '=': '=' - }; - - return String(value).replace(/[&<>"'`=/]/g, function (s) { - return entityMap[s]; - }); - }else { - return value; - } - } - - emptyToSpace(value){ - return value === null || typeof value === "undefined" || value === "" ? " " : value; - } - - //get formatter for cell - getFormatter(formatter){ - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - formatter = Format.formatters.plaintext; - } - break; - - case "function": - //Custom formatter Function, do nothing - break; - - default: - formatter = Format.formatters.plaintext; - break; - } - - return formatter; - } - } - - Format.moduleName = "format"; - - //load defaults - Format.formatters = defaultFormatters; - - class FrozenColumns extends Module{ - - constructor(table){ - super(table); - - this.leftColumns = []; - this.rightColumns = []; - this.initializationMode = "left"; - this.active = false; - this.blocked = true; - - this.registerColumnOption("frozen"); - } - - //reset initial state - reset(){ - this.initializationMode = "left"; - this.leftColumns = []; - this.rightColumns = []; - this.active = false; - } - - initialize(){ - this.subscribe("cell-layout", this.layoutCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-width", this.layout.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("table-layout", this.layout.bind(this)); - this.subscribe("columns-loading", this.reset.bind(this)); - - this.subscribe("column-add", this.reinitializeColumns.bind(this)); - this.subscribe("column-delete", this.reinitializeColumns.bind(this)); - - this.subscribe("table-redraw", this.layout.bind(this)); - this.subscribe("layout-refreshing", this.blockLayout.bind(this)); - this.subscribe("layout-refreshed", this.unblockLayout.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - } - - blockLayout(){ - this.blocked = true; - } - - unblockLayout(){ - this.blocked = false; - } - - layoutCell(cell){ - this.layoutElement(cell.element, cell.column); - } - - reinitializeColumns(){ - this.reset(); - - this.table.columnManager.columnsByIndex.forEach((column) => { - this.initializeColumn(column); - }); - } - - //initialize specific column - initializeColumn(column){ - var config = {margin:0, edge:false}; - - if(!column.isGroup){ - - if(this.frozenCheck(column)){ - - config.position = this.initializationMode; - - if(this.initializationMode == "left"){ - this.leftColumns.push(column); - }else { - this.rightColumns.unshift(column); - } - - this.active = true; - - column.modules.frozen = config; - }else { - this.initializationMode = "right"; - } - } - } - - frozenCheck(column){ - if(column.parent.isGroup && column.definition.frozen){ - console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"); - } - - if(column.parent.isGroup){ - return this.frozenCheck(column.parent); - }else { - return column.definition.frozen; - } - } - - //layout calculation rows - layoutCalcRows(){ - if(this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){ - this.layoutRow(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){ - this.layoutRow(this.table.modules.columnCalcs.botRow); - } - - if(this.table.modExists("groupRows")){ - this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()); - } - } - } - - layoutGroupCalcs(groups){ - groups.forEach((group) => { - if(group.calcs.top){ - this.layoutRow(group.calcs.top); - } - - if(group.calcs.bottom){ - this.layoutRow(group.calcs.bottom); - } - - if(group.groupList && group.groupList.length){ - this.layoutGroupCalcs(group.groupList); - } - }); - } - - //calculate column positions and layout headers - layoutColumnPosition(allCells){ - var leftParents = []; - - var leftMargin = 0; - var rightMargin = 0; - - this.leftColumns.forEach((column, i) => { - column.modules.frozen.marginValue = leftMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - leftMargin += column.getWidth(); - } - - if(i == this.leftColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - var parentEl = this.getColGroupParentElement(column); - if(!leftParents.includes(parentEl)){ - this.layoutElement(parentEl, column); - leftParents.push(parentEl); - } - - if(column.modules.frozen.edge){ - parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position); - } - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - - this.rightColumns.forEach((column, i) => { - - column.modules.frozen.marginValue = rightMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - rightMargin += column.getWidth(); - } - - if(i == this.rightColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - this.layoutElement(this.getColGroupParentElement(column), column); - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - } - - getColGroupParentElement(column){ - return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement(); - } - - //layout columns appropriately - layout(){ - if(this.active && !this.blocked){ - - //calculate left columns - this.layoutColumnPosition(); - - this.reinitializeRows(); - - this.layoutCalcRows(); - } - } - - reinitializeRows(){ - var visibleRows = this.table.rowManager.getVisibleRows(true); - var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - - visibleRows.forEach((row) =>{ - if(row.type === "row"){ - this.layoutRow(row); - } - }); - } - - layoutRow(row){ - if(this.table.options.layout === "fitDataFill" && this.rightColumns.length){ - this.table.rowManager.getTableElement().style.minWidth = "calc(100% - " + this.rightMargin + ")"; - } - - this.leftColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - - this.rightColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - } - - layoutElement(element, column){ - var position; - - if(column.modules.frozen && element){ - element.style.position = "sticky"; - - if(this.table.rtl){ - position = column.modules.frozen.position === "left" ? "right" : "left"; - }else { - position = column.modules.frozen.position; - } - - element.style[position] = column.modules.frozen.margin; - - element.classList.add("tabulator-frozen"); - - if(column.modules.frozen.edge){ - element.classList.add("tabulator-frozen-" + column.modules.frozen.position); - } - } - } - - adjustForScrollbar(width){ - if(this.rightColumns.length){ - this.table.columnManager.getContentsElement().style.width = "calc(100% - " + width + "px)"; - } - } - - _calcSpace(columns, index){ - var width = 0; - - for (let i = 0; i < index; i++){ - if(columns[i].visible){ - width += columns[i].getWidth(); - } - } - - return width; - } - } - - FrozenColumns.moduleName = "frozenColumns"; - - class FrozenRows extends Module{ - - constructor(table){ - super(table); - - this.topElement = document.createElement("div"); - this.rows = []; - - //register component functions - this.registerComponentFunction("row", "freeze", this.freezeRow.bind(this)); - this.registerComponentFunction("row", "unfreeze", this.unfreezeRow.bind(this)); - this.registerComponentFunction("row", "isFrozen", this.isRowFrozen.bind(this)); - - //register table options - this.registerTableOption("frozenRowsField", "id"); //field to choose frozen rows by - this.registerTableOption("frozenRows", false); //holder for frozen row identifiers - } - - initialize(){ - this.rows = []; - - this.topElement.classList.add("tabulator-frozen-rows-holder"); - - // this.table.columnManager.element.append(this.topElement); - this.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling); - - this.subscribe("row-deleting", this.detachRow.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 10); - - if(this.table.options.frozenRows){ - this.subscribe("data-processed", this.initializeRows.bind(this)); - this.subscribe("row-added", this.initializeRow.bind(this)); - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - } - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - initializeRows(){ - this.table.rowManager.getRows().forEach((row) => { - this.initializeRow(row); - }); - } - - initializeRow(row){ - var frozenRows = this.table.options.frozenRows, - rowType = typeof frozenRows; - - if(rowType === "number"){ - if(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){ - this.freezeRow(row); - } - }else if(rowType === "function"){ - if(frozenRows.call(this.table, row.getComponent())){ - this.freezeRow(row); - } - }else if(Array.isArray(frozenRows)){ - if(frozenRows.includes(row.data[this.options("frozenRowsField")])){ - this.freezeRow(row); - } - } - } - - isRowFrozen(row){ - var index = this.rows.indexOf(row); - return index > -1; - } - - isFrozen(){ - return !!this.rows.length; - } - - visibleRows(viewable, rows){ - this.rows.forEach((row) => { - rows.push(row); - }); - - return rows; - } - - //filter frozen rows out of display data - getRows(rows){ - var output = rows.slice(0); - - this.rows.forEach(function(row){ - var index = output.indexOf(row); - - if(index > -1){ - output.splice(index, 1); - } - }); - - return output; - } - - freezeRow(row){ - if(!row.modules.frozen){ - row.modules.frozen = true; - this.topElement.appendChild(row.getElement()); - row.initialize(); - row.normalizeHeight(); - - this.rows.push(row); - - this.refreshData(false, "display"); - - this.table.rowManager.adjustTableSize(); - - this.styleRows(); - - }else { - console.warn("Freeze Error - Row is already frozen"); - } - } - - unfreezeRow(row){ - if(row.modules.frozen){ - - row.modules.frozen = false; - - this.detachRow(row); - - this.table.rowManager.adjustTableSize(); - - this.refreshData(false, "display"); - - if(this.rows.length){ - this.styleRows(); - } - - }else { - console.warn("Freeze Error - Row is already unfrozen"); - } - } - - detachRow(row){ - var index = this.rows.indexOf(row); - - if(index > -1){ - var rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - - this.rows.splice(index, 1); - } - } - - styleRows(row){ - this.rows.forEach((row, i) => { - this.table.rowManager.styleRow(row, i); - }); - } - } - - FrozenRows.moduleName = "frozenRows"; - - //public group object - class GroupComponent { - constructor (group){ - this._group = group; - this.type = "GroupComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._group.groupManager.table.componentFunctionBinder.handle("group", target._group, name); - } - } - }); - } - - getKey(){ - return this._group.key; - } - - getField(){ - return this._group.field; - } - - getElement(){ - return this._group.element; - } - - getRows(){ - return this._group.getRows(true); - } - - getSubGroups(){ - return this._group.getSubGroups(true); - } - - getParentGroup(){ - return this._group.parent ? this._group.parent.getComponent() : false; - } - - isVisible(){ - return this._group.visible; - } - - show(){ - this._group.show(); - } - - hide(){ - this._group.hide(); - } - - toggle(){ - this._group.toggleVisibility(); - } - - scrollTo(position, ifVisible){ - return this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible); - } - - _getSelf(){ - return this._group; - } - - getTable(){ - return this._group.groupManager.table; - } - } - - //Group functions - class Group{ - - constructor(groupManager, parent, level, key, field, generator, oldGroup){ - this.groupManager = groupManager; - this.parent = parent; - this.key = key; - this.level = level; - this.field = field; - this.hasSubGroups = level < (groupManager.groupIDLookups.length - 1); - this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow; - this.type = "group"; //type of element - this.old = oldGroup; - this.rows = []; - this.groups = []; - this.groupList = []; - this.generator = generator; - this.element = false; - this.elementContents = false; - this.height = 0; - this.outerHeight = 0; - this.initialized = false; - this.calcs = {}; - this.initialized = false; - this.modules = {}; - this.arrowElement = false; - - this.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0]); - - this.component = null; - - this.createElements(); - this.addBindings(); - - this.createValueGroups(); - } - - wipe(elementsOnly){ - if(!elementsOnly){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - }else { - this.rows.forEach((row) => { - if(row.modules){ - delete row.modules.group; - } - }); - } - } - - this.element = false; - this.arrowElement = false; - this.elementContents = false; - } - - createElements(){ - var arrow = document.createElement("div"); - arrow.classList.add("tabulator-arrow"); - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-row"); - this.element.classList.add("tabulator-group"); - this.element.classList.add("tabulator-group-level-" + this.level); - this.element.setAttribute("role", "rowgroup"); - - this.arrowElement = document.createElement("div"); - this.arrowElement.classList.add("tabulator-group-toggle"); - this.arrowElement.appendChild(arrow); - - //setup movable rows - if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){ - this.groupManager.table.modules.moveRow.initializeGroupHeader(this); - } - } - - createValueGroups(){ - var level = this.level + 1; - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - this.groupManager.allowedValues[level].forEach((value) => { - this._createGroup(value, level); - }); - } - } - - addBindings(){ - var toggleElement; - - if(this.groupManager.table.options.groupToggleElement){ - toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element; - - toggleElement.addEventListener("click", (e) => { - if(this.groupManager.table.options.groupToggleElement === "arrow"){ - e.stopPropagation(); - e.stopImmediatePropagation(); - } - - //allow click event to propagate before toggling visibility - setTimeout(() => { - this.toggleVisibility(); - }); - }); - } - } - - _createGroup(groupID, level){ - var groupKey = level + "_" + groupID; - var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - _addRowToGroup(row){ - - var level = this.level + 1; - - if(this.hasSubGroups){ - var groupID = this.groupManager.groupIDLookups[level].func(row.getData()), - groupKey = level + "_" + groupID; - - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - }else { - if(!this.groups[groupKey]){ - this._createGroup(groupID, level); - } - - this.groups[groupKey].addRow(row); - } - } - } - - _addRow(row){ - this.rows.push(row); - row.modules.group = this; - } - - insertRow(row, to, after){ - var data = this.conformRowData({}); - - row.updateData(data); - - var toIndex = this.rows.indexOf(to); - - if(toIndex > -1){ - if(after){ - this.rows.splice(toIndex+1, 0, row); - }else { - this.rows.splice(toIndex, 0, row); - } - }else { - if(after){ - this.rows.push(row); - }else { - this.rows.unshift(row); - } - } - - row.modules.group = this; - - // this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - - this.groupManager.updateGroupRows(true); - } - - scrollHeader(left){ - if(this.arrowElement){ - this.arrowElement.style.marginLeft = left; - - this.groupList.forEach(function(child){ - child.scrollHeader(left); - }); - } - } - - getRowIndex(row){} - - //update row data to match grouping constraints - conformRowData(data){ - if(this.field){ - data[this.field] = this.key; - }else { - console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"); - } - - if(this.parent){ - data = this.parent.conformRowData(data); - } - - return data; - } - - removeRow(row){ - var index = this.rows.indexOf(row); - var el = row.getElement(); - - if(index > -1){ - this.rows.splice(index, 1); - } - - if(!this.groupManager.table.options.groupValues && !this.rows.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - - this.groupManager.updateGroupRows(true); - - }else { - - if(el.parentNode){ - el.parentNode.removeChild(el); - } - - if(!this.groupManager.blockRedraw){ - this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - } - - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - - if(!this.groupList.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - } - } - } - - getHeadersAndRows(){ - var output = []; - - output.push(this); - - this._visSet(); - - - if(this.calcs.top){ - this.calcs.top.detachElement(); - this.calcs.top.deleteCells(); - } - - if(this.calcs.bottom){ - this.calcs.bottom.detachElement(); - this.calcs.bottom.deleteCells(); - } - - - - if(this.visible){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - output = output.concat(group.getHeadersAndRows()); - }); - - }else { - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - - output = output.concat(this.rows); - - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - }else { - if(!this.groupList.length && this.groupManager.table.options.columnCalcs != "table"){ - - if(this.groupManager.table.modExists("columnCalcs")){ - if(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - } - - if(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - } - } - - } - - return output; - } - - getData(visible, transform){ - var output = []; - - this._visSet(); - - if(!visible || (visible && this.visible)){ - this.rows.forEach((row) => { - output.push(row.getData(transform || "data")); - }); - } - - return output; - } - - getRowCount(){ - var count = 0; - - if(this.groupList.length){ - this.groupList.forEach((group) => { - count += group.getRowCount(); - }); - }else { - count = this.rows.length; - } - return count; - } - - - toggleVisibility(){ - if(this.visible){ - this.hide(); - }else { - this.show(); - } - } - - hide(){ - this.visible = false; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.remove("tabulator-group-visible"); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - row.detachElement(); - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - rowEl.parentNode.removeChild(rowEl); - }); - } - - this.groupManager.updateGroupRows(true); - - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), false); - } - - show(){ - this.visible = true; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.add("tabulator-group-visible"); - - var prev = this.generateElement(); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - } - - this.groupManager.updateGroupRows(true); - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), true); - } - - _visSet(){ - var data = []; - - if(typeof this.visible == "function"){ - - this.rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent()); - } - } - - getRowGroup(row){ - var match = false; - if(this.groupList.length){ - this.groupList.forEach(function(group){ - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - }else { - if(this.rows.find(function(item){ - return item === row; - })){ - match = this; - } - } - - return match; - } - - getSubGroups(component){ - var output = []; - - this.groupList.forEach(function(child){ - output.push(component ? child.getComponent() : child); - }); - - return output; - } - - getRows(component, includeChildren){ - var output = []; - - if(includeChildren && this.groupList.length){ - this.groupList.forEach((group) => { - output = output.concat(group.getRows(component, includeChildren)); - }); - }else { - this.rows.forEach(function(row){ - output.push(component ? row.getComponent() : row); - }); - } - - return output; - } - - generateGroupHeaderContents(){ - var data = []; - - var rows = this.getRows(false, true); - - rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent()); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(typeof this.elementContents === "string"){ - this.element.innerHTML = this.elementContents; - }else { - this.element.appendChild(this.elementContents); - } - - this.element.insertBefore(this.arrowElement, this.element.firstChild); - } - - getPath(path = []) { - path.unshift(this.key); - if(this.parent) { - this.parent.getPath(path); - } - return path; - } - - ////////////// Standard Row Functions ////////////// - - getElement(){ - return this.elementContents ? this.element : this.generateElement(); - } - - generateElement(){ - this.addBindings = false; - - this._visSet(); - - if(this.visible){ - this.element.classList.add("tabulator-group-visible"); - }else { - this.element.classList.remove("tabulator-group-visible"); - } - - for(var i = 0; i < this.element.childNodes.length; ++i){ - this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]); - } - - this.generateGroupHeaderContents(); - - // this.addBindings(); - - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - //normalize the height of elements in the row - normalizeHeight(){ - this.setHeight(this.element.clientHeight); - } - - initialize(force){ - if(!this.initialized || force){ - this.normalizeHeight(); - this.initialized = true; - } - } - - reinitialize(){ - this.initialized = false; - this.height = 0; - - if(Helpers.elVisible(this.element)){ - this.initialize(true); - } - } - - setHeight(height){ - if(this.height != height){ - this.height = height; - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - getGroup(){ - return this; - } - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - deinitializeHeight(){} - - rendered(){} - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new GroupComponent(this); - } - - return this.component; - } - } - - class GroupRows extends Module{ - - constructor(table){ - super(table); - - this.groupIDLookups = false; //enable table grouping and set field to group by - this.startOpen = [function(){return false;}]; //starting state of group - this.headerGenerator = [function(){return "";}]; - this.groupList = []; //ordered list of groups - this.allowedValues = false; - this.groups = {}; //hold row groups - - this.displayHandler = this.getRows.bind(this); - - this.blockRedraw = false; - - //register table options - this.registerTableOption("groupBy", false); //enable table grouping and set field to group by - this.registerTableOption("groupStartOpen", true); //starting state of group - this.registerTableOption("groupValues", false); - this.registerTableOption("groupUpdateOnCellEdit", false); - this.registerTableOption("groupHeader", false); //header generation function - this.registerTableOption("groupHeaderPrint", null); - this.registerTableOption("groupHeaderClipboard", null); - this.registerTableOption("groupHeaderHtmlOutput", null); - this.registerTableOption("groupHeaderDownload", null); - this.registerTableOption("groupToggleElement", "arrow"); - this.registerTableOption("groupClosedShowCalcs", false); - - //register table functions - this.registerTableFunction("setGroupBy", this.setGroupBy.bind(this)); - this.registerTableFunction("setGroupValues", this.setGroupValues.bind(this)); - this.registerTableFunction("setGroupStartOpen", this.setGroupStartOpen.bind(this)); - this.registerTableFunction("setGroupHeader", this.setGroupHeader.bind(this)); - this.registerTableFunction("getGroups", this.userGetGroups.bind(this)); - this.registerTableFunction("getGroupedData", this.userGetGroupedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "getGroup", this.rowGetGroup.bind(this)); - } - - //initialize group configuration - initialize(){ - this.subscribe("table-destroy", this._blockRedrawing.bind(this)); - this.subscribe("rows-wipe", this._blockRedrawing.bind(this)); - this.subscribe("rows-wiped", this._restore_redrawing.bind(this)); - - if(this.table.options.groupBy){ - if(this.table.options.groupUpdateOnCellEdit){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0); - } - - this.subscribe("table-built", this.configureGroupSetup.bind(this)); - - this.subscribe("row-deleting", this.rowDeleting.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this)); - this.subscribe("rows-wipe", this.wipe.bind(this)); - this.subscribe("rows-added", this.rowsUpdated.bind(this)); - this.subscribe("row-moving", this.rowMoving.bind(this)); - this.subscribe("row-adding-index", this.rowAddingIndex.bind(this)); - - this.subscribe("rows-sample", this.rowSample.bind(this)); - - this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this)); - - this.registerDisplayHandler(this.displayHandler, 20); - - this.initialized = true; - } - } - - _blockRedrawing(){ - this.blockRedraw = true; - } - - _restore_redrawing(){ - this.blockRedraw = false; - } - - configureGroupSetup(){ - if(this.table.options.groupBy){ - var groupBy = this.table.options.groupBy, - startOpen = this.table.options.groupStartOpen, - groupHeader = this.table.options.groupHeader; - - this.allowedValues = this.table.options.groupValues; - - if(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){ - console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"); - } - - this.headerGenerator = [function(){return "";}]; - this.startOpen = [function(){return false;}]; //starting state of group - - this.langBind("groups|item", (langValue, lang) => { - this.headerGenerator[0] = (value, count, data) => { //header layout function - return (typeof value === "undefined" ? "" : value) + "(" + count + " " + ((count === 1) ? langValue : lang.groups.items) + ")"; - }; - }); - - this.groupIDLookups = []; - - if(groupBy){ - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){ - this.table.modules.columnCalcs.removeCalcs(); - } - }else { - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group"){ - - var cols = this.table.columnManager.getRealColumns(); - - cols.forEach((col) => { - if(col.definition.topCalc){ - this.table.modules.columnCalcs.initializeTopRow(); - } - - if(col.definition.bottomCalc){ - this.table.modules.columnCalcs.initializeBottomRow(); - } - }); - } - } - - if(!Array.isArray(groupBy)){ - groupBy = [groupBy]; - } - - groupBy.forEach((group, i) => { - var lookupFunc, column; - - if(typeof group == "function"){ - lookupFunc = group; - }else { - column = this.table.columnManager.getColumnByField(group); - - if(column){ - lookupFunc = function(data){ - return column.getFieldValue(data); - }; - }else { - lookupFunc = function(data){ - return data[group]; - }; - } - } - - this.groupIDLookups.push({ - field: typeof group === "function" ? false : group, - func:lookupFunc, - values:this.allowedValues ? this.allowedValues[i] : false, - }); - }); - - if(startOpen){ - if(!Array.isArray(startOpen)){ - startOpen = [startOpen]; - } - - startOpen.forEach((level) => { - }); - - this.startOpen = startOpen; - } - - if(groupHeader){ - this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader]; - } - }else { - this.groupList = []; - this.groups = {}; - } - } - - rowSample(rows, prevValue){ - if(this.table.options.groupBy){ - var group = this.getGroups(false)[0]; - - prevValue.push(group.getRows(false)[0]); - } - - return prevValue; - } - - virtualRenderFill(){ - var el = this.table.rowManager.tableElement; - var rows = this.table.rowManager.getVisibleRows(); - - if(this.table.options.groupBy){ - rows = rows.filter((row) => { - return row.type !== "group"; - }); - - el.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + "px" : ""; - }else { - return rows; - } - } - - rowAddingIndex(row, index, top){ - if(this.table.options.groupBy){ - this.assignRowToGroup(row); - - var groupRows = row.modules.group.rows; - - if(groupRows.length > 1){ - if(!index || (index && groupRows.indexOf(index) == -1)){ - if(top){ - if(groupRows[0] !== row){ - index = groupRows[0]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - }else { - if(groupRows[groupRows.length -1] !== row){ - index = groupRows[groupRows.length -1]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - }else { - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - - return index; - } - } - - trackChanges(){ - this.dispatch("group-changed"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - setGroupBy(groups){ - this.table.options.groupBy = groups; - - if(!this.initialized){ - this.initialize(); - } - - this.configureGroupSetup(); - - if(!groups && this.table.modExists("columnCalcs") && this.table.options.columnCalcs === true){ - this.table.modules.columnCalcs.reinitializeCalcs(); - } - - this.refreshData(); - - this.trackChanges(); - } - - setGroupValues(groupValues){ - this.table.options.groupValues = groupValues; - this.configureGroupSetup(); - this.refreshData(); - - this.trackChanges(); - } - - setGroupStartOpen(values){ - this.table.options.groupStartOpen = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - setGroupHeader(values){ - this.table.options.groupHeader = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - userGetGroups(values){ - return this.getGroups(true); - } - - // get grouped table data in the same format as getData() - userGetGroupedData(){ - return this.table.options.groupBy ? this.getGroupedData() : this.getData(); - } - - - /////////////////////////////////////// - ///////// Component Functions ///////// - /////////////////////////////////////// - - rowGetGroup(row){ - return row.modules.group ? row.modules.group.getComponent() : false; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - rowMoving(from, to, after){ - if(this.table.options.groupBy){ - if(!after && to instanceof Group){ - to = this.table.rowManager.prevDisplayRow(from) || to; - } - - var toGroup = to instanceof Group ? to : to.modules.group; - var fromGroup = from instanceof Group ? from : from.modules.group; - - if(toGroup === fromGroup){ - this.table.rowManager.moveRowInArray(toGroup.rows, from, to, after); - }else { - if(fromGroup){ - fromGroup.removeRow(from); - } - - toGroup.insertRow(from, to, after); - } - } - } - - - rowDeleting(row){ - //remove from group - if(this.table.options.groupBy && row.modules.group){ - row.modules.group.removeRow(row); - } - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.updateGroupRows(true); - } - } - - cellUpdated(cell){ - if(this.table.options.groupBy){ - this.reassignRowToGroup(cell.row); - } - } - - //return appropriate rows with group headers - getRows(rows){ - if(this.table.options.groupBy && this.groupIDLookups.length){ - - this.dispatchExternal("dataGrouping"); - - this.generateGroups(rows); - - if(this.subscribedExternal("dataGrouped")){ - this.dispatchExternal("dataGrouped", this.getGroups(true)); - } - - return this.updateGroupRows(); - - }else { - return rows.slice(0); - } - } - - getGroups(component){ - var groupComponents = []; - - this.groupList.forEach(function(group){ - groupComponents.push(component ? group.getComponent() : group); - }); - - return groupComponents; - } - - getChildGroups(group){ - var groupComponents = []; - - if(!group){ - group = this; - } - - group.groupList.forEach((child) => { - if(child.groupList.length){ - groupComponents = groupComponents.concat(this.getChildGroups(child)); - }else { - groupComponents.push(child); - } - }); - - return groupComponents; - } - - wipe(){ - if(this.table.options.groupBy){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - - this.groupList = []; - this.groups = {}; - } - } - - pullGroupListData(groupList) { - var groupListData = []; - - groupList.forEach((group) => { - var groupHeader = {}; - groupHeader.level = 0; - groupHeader.rowCount = 0; - groupHeader.headerContent = ""; - var childData = []; - - if (group.hasSubGroups) { - childData = this.pullGroupListData(group.groupList); - - groupHeader.level = group.level; - groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers - groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group); - - groupListData.push(groupHeader); - groupListData = groupListData.concat(childData); - } - - else { - groupHeader.level = group.level; - groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group); - groupHeader.rowCount = group.getRows().length; - - groupListData.push(groupHeader); - - group.getRows().forEach((row) => { - groupListData.push(row.getData("data")); - }); - } - }); - - return groupListData; - } - - getGroupedData(){ - - return this.pullGroupListData(this.groupList); - } - - getRowGroup(row){ - var match = false; - - if(this.options("dataTree")){ - row = this.table.modules.dataTree.getTreeParentRoot(row); - } - - this.groupList.forEach((group) => { - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - - return match; - } - - countGroups(){ - return this.groupList.length; - } - - generateGroups(rows){ - var oldGroups = this.groups; - - this.groups = {}; - this.groupList = []; - - if(this.allowedValues && this.allowedValues[0]){ - this.allowedValues[0].forEach((value) => { - this.createGroup(value, 0, oldGroups); - }); - - rows.forEach((row) => { - this.assignRowToExistingGroup(row, oldGroups); - }); - }else { - rows.forEach((row) => { - this.assignRowToGroup(row, oldGroups); - }); - } - - Object.values(oldGroups).forEach((group) => { - group.wipe(true); - }); - } - - - createGroup(groupID, level, oldGroups){ - var groupKey = level + "_" + groupID, - group; - - oldGroups = oldGroups || []; - - group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - assignRowToExistingGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - groupKey = "0_" + groupID; - - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - } - - assignRowToGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - newGroupNeeded = !this.groups["0_" + groupID]; - - if(newGroupNeeded){ - this.createGroup(groupID, 0, oldGroups); - } - - this.groups["0_" + groupID].addRow(row); - - return !newGroupNeeded; - } - - reassignRowToGroup(row){ - if(row.type === "row"){ - var oldRowGroup = row.modules.group, - oldGroupPath = oldRowGroup.getPath(), - newGroupPath = this.getExpectedPath(row), - samePath; - - // figure out if new group path is the same as old group path - samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => { - return element === newGroupPath[index]; - }); - - // refresh if they new path and old path aren't the same (aka the row's groupings have changed) - if(!samePath) { - oldRowGroup.removeRow(row); - this.assignRowToGroup(row, this.groups); - this.refreshData(true); - } - } - } - - getExpectedPath(row) { - var groupPath = [], rowData = row.getData(); - - this.groupIDLookups.forEach((groupId) => { - groupPath.push(groupId.func(rowData)); - }); - - return groupPath; - } - - updateGroupRows(force){ - var output = []; - - if(!this.blockRedraw){ - this.groupList.forEach((group) => { - output = output.concat(group.getHeadersAndRows()); - }); - - if(force){ - this.refreshData(true); - } - } - - return output; - } - - scrollHeaders(left){ - if(this.table.options.groupBy){ - if(this.table.options.renderHorizontal === "virtual"){ - left -= this.table.columnManager.renderer.vDomPadLeft; - } - - left = left + "px"; - - this.groupList.forEach((group) => { - group.scrollHeader(left); - }); - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - } - } - - checkBasicModeGroupHeaderWidth(){ - var element = this.table.rowManager.tableElement, - onlyGroupHeaders = true; - - this.table.rowManager.getDisplayRows().forEach((row, index) =>{ - this.table.rowManager.styleRow(row, index); - element.appendChild(row.getElement()); - row.initialize(true); - - if(row.type !== "group"){ - onlyGroupHeaders = false; - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - - } - - GroupRows.moduleName = "groupRows"; - - var defaultUndoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.oldValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - action.component.deleteActual(); - }, - - rowDelete: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - }, - - rowMove: function(action){ - var after = (action.data.posFrom - action.data.posTo) > 0; - - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, - }; - - var defaultRedoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.newValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - }, - - rowDelete:function(action){ - action.component.deleteActual(); - }, - - rowMove: function(action){ - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, - }; - - class History extends Module{ - - constructor(table){ - super(table); - - this.history = []; - this.index = -1; - - this.registerTableOption("history", false); //enable edit history - } - - initialize(){ - if(this.table.options.history){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("cell-delete", this.clearComponentHistory.bind(this)); - this.subscribe("row-delete", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clear.bind(this)); - this.subscribe("row-added", this.rowAdded.bind(this)); - this.subscribe("row-move", this.rowMoved.bind(this)); - } - - this.registerTableFunction("undo", this.undo.bind(this)); - this.registerTableFunction("redo", this.redo.bind(this)); - this.registerTableFunction("getHistoryUndoSize", this.getHistoryUndoSize.bind(this)); - this.registerTableFunction("getHistoryRedoSize", this.getHistoryRedoSize.bind(this)); - this.registerTableFunction("clearHistory", this.clear.bind(this)); - } - - rowMoved(from, to, after){ - this.action("rowMove", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after}); - } - - rowAdded(row, data, pos, index){ - this.action("rowAdd", row, {data:data, pos:pos, index:index}); - } - - rowDeleted(row){ - var index, rows; - - if(this.table.options.groupBy){ - - rows = row.getComponent().getGroup()._getSelf().rows; - index = rows.indexOf(row); - - if(index){ - index = rows[index-1]; - } - }else { - index = row.table.rowManager.getRowIndex(row); - - if(index){ - index = row.table.rowManager.rows[index-1]; - } - } - - this.action("rowDelete", row, {data:row.getData(), pos:!index, index:index}); - } - - cellUpdated(cell){ - this.action("cellEdit", cell, {oldValue:cell.oldValue, newValue:cell.value}); - } - - clear(){ - this.history = []; - this.index = -1; - } - - action(type, component, data){ - this.history = this.history.slice(0, this.index + 1); - - this.history.push({ - type:type, - component:component, - data:data, - }); - - this.index ++; - } - - getHistoryUndoSize(){ - return this.index + 1; - } - - getHistoryRedoSize(){ - return this.history.length - (this.index + 1); - } - - clearComponentHistory(component){ - var index = this.history.findIndex(function(item){ - return item.component === component; - }); - - if(index > -1){ - this.history.splice(index, 1); - if(index <= this.index){ - this.index--; - } - - this.clearComponentHistory(component); - } - } - - undo(){ - if(this.index > -1){ - let action = this.history[this.index]; - - History.undoers[action.type].call(this, action); - - this.index--; - - this.dispatchExternal("historyUndo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn("History Undo Error - No more history to undo"); - return false; - } - } - - redo(){ - if(this.history.length-1 > this.index){ - - this.index++; - - let action = this.history[this.index]; - - History.redoers[action.type].call(this, action); - - this.dispatchExternal("historyRedo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn("History Redo Error - No more history to redo"); - return false; - } - } - - //rebind rows to new element after deletion - _rebindRow(oldRow, newRow){ - this.history.forEach(function(action){ - if(action.component instanceof Row){ - if(action.component === oldRow){ - action.component = newRow; - } - }else if(action.component instanceof Cell){ - if(action.component.row === oldRow){ - var field = action.component.column.getField(); - - if(field){ - action.component = newRow.getCell(field); - } - - } - } - }); - } - } - - History.moduleName = "history"; - - //load defaults - History.undoers = defaultUndoers; - History.redoers = defaultRedoers; - - class HtmlTableImport extends Module{ - - constructor(table){ - super(table); - - this.fieldIndex = []; - this.hasIndex = false; - } - - initialize(){ - this.tableElementCheck(); - } - - tableElementCheck(){ - if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - if(this.table.originalElement.childNodes.length){ - this.parseTable(); - }else { - console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."); - } - } - } - - parseTable(){ - var element = this.table.originalElement, - options = this.table.options, - headers = element.getElementsByTagName("th"), - rows = element.getElementsByTagName("tbody")[0], - data = []; - - this.hasIndex = false; - - this.dispatchExternal("htmlImporting"); - - rows = rows ? rows.getElementsByTagName("tr") : []; - - //check for Tabulator inline options - this._extractOptions(element, options); - - if(headers.length){ - this._extractHeaders(headers, rows); - }else { - this._generateBlankHeaders(headers, rows); - } - - //iterate through table rows and build data set - for(var index = 0; index < rows.length; index++){ - var row = rows[index], - cells = row.getElementsByTagName("td"), - item = {}; - - //create index if the don't exist in table - if(!this.hasIndex){ - item[options.index] = index; - } - - for(var i = 0; i < cells.length; i++){ - var cell = cells[i]; - if(typeof this.fieldIndex[i] !== "undefined"){ - item[this.fieldIndex[i]] = cell.innerHTML; - } - } - - //add row data to item - data.push(item); - } - - options.data = data; - - this.dispatchExternal("htmlImported"); - } - - //extract tabulator attribute options - _extractOptions(element, options, defaultOptions){ - var attributes = element.attributes; - var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options); - var optionsList = {}; - - optionsArr.forEach((item) => { - optionsList[item.toLowerCase()] = item; - }); - - for(var index in attributes){ - var attrib = attributes[index]; - var name; - - if(attrib && typeof attrib == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0){ - name = attrib.name.replace("tabulator-", ""); - - if(typeof optionsList[name] !== "undefined"){ - options[optionsList[name]] = this._attribValue(attrib.value); - } - } - } - } - - //get value of attribute - _attribValue(value){ - if(value === "true"){ - return true; - } - - if(value === "false"){ - return false; - } - - return value; - } - - //find column if it has already been defined - _findCol(title){ - var match = this.table.options.columns.find((column) => { - return column.title === title; - }); - - return match || false; - } - - //extract column from headers - _extractHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - exists = false, - col = this._findCol(header.textContent), - width; - - if(col){ - exists = true; - }else { - col = {title:header.textContent.trim()}; - } - - if(!col.field) { - col.field = header.textContent.trim().toLowerCase().replaceAll(" ", "_"); - } - - width = header.getAttribute("width"); - - if(width && !col.width) { - col.width = width; - } - - //check for Tabulator inline options - this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults); - - this.fieldIndex[index] = col.field; - - if(col.field == this.table.options.index){ - this.hasIndex = true; - } - - if(!exists){ - this.table.options.columns.push(col); - } - - } - } - - //generate blank headers - _generateBlankHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - col = {title:"", field:"col" + index}; - - this.fieldIndex[index] = col.field; - - var width = header.getAttribute("width"); - - if(width){ - col.width = width; - } - - this.table.options.columns.push(col); - } - } - } - - HtmlTableImport.moduleName = "htmlTableImport"; - - function csvImporter(input){ - var data = [], - row = 0, - col = 0, - inQuote = false; - - //Iterate over each character - for (let index = 0; index < input.length; index++) { - let char = input[index], - nextChar = input[index+1]; - - //Initialize empty row - if(!data[row]){ - data[row] = []; - } - - //Initialize empty column - if(!data[row][col]){ - data[row][col] = ""; - } - - //Handle quotation mark inside string - if (char == '"' && inQuote && nextChar == '"') { - data[row][col] += char; - index++; - continue; - } - - //Begin / End Quote - if (char == '"') { - inQuote = !inQuote; - continue; - } - - //Next column (if not in quote) - if (char == ',' && !inQuote) { - col++; - continue; - } - - //New row if new line and not in quote (CRLF) - if (char == '\r' && nextChar == '\n' && !inQuote) { - col = 0; - row++; - index++; - continue; - } - - //New row if new line and not in quote (CR or LF) - if ((char == '\r' || char == '\n') && !inQuote) { - col = 0; - row++; - continue; - } - - //Normal Character, append to column - data[row][col] += char; - } - - return data; - } - - function json$1(input){ - try { - return JSON.parse(input); - } catch(e) { - console.warn("JSON Import Error - File contents is invalid JSON", e); - return Promise.reject(); - } - } - - function arrayImporter(input){ - return input; - } - - var defaultImporters = { - csv:csvImporter, - json:json$1, - array:arrayImporter, - }; - - class Import extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("importFormat"); - this.registerTableOption("importReader", "text"); - } - - initialize(){ - this.registerTableFunction("import", this.importFromFile.bind(this)); - - if(this.table.options.importFormat){ - this.subscribe("data-loading", this.loadDataCheck.bind(this), 10); - this.subscribe("data-load", this.loadData.bind(this), 10); - } - } - - loadDataCheck(data){ - return this.table.options.importFormat && (typeof data === "string" || (Array.isArray(data) && data.length && Array.isArray(data))); - } - - loadData(data, params, config, silent, previousData){ - return this.importData(this.lookupImporter(), data) - .then(this.structureData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import data"); - return Promise.reject(err); - }); - } - - lookupImporter(importFormat){ - var importer; - - if(!importFormat){ - importFormat = this.table.options.importFormat; - } - - if(typeof importFormat === "string"){ - importer = Import.importers[importFormat]; - }else { - importer = importFormat; - } - - if(!importer){ - console.error("Import Error - Importer not found:", importFormat); - } - - return importer; - } - - importFromFile(importFormat, extension){ - var importer = this.lookupImporter(importFormat); - - if(importer){ - return this.pickFile(extension) - .then(this.importData.bind(this, importer)) - .then(this.structureData.bind(this)) - .then(this.setData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import file"); - return Promise.reject(err); - }); - } - } - - pickFile(extensions){ - return new Promise((resolve, reject) => { - var input = document.createElement("input"); - input.type = "file"; - input.accept = extensions; - - input.addEventListener("change", (e) => { - var file = input.files[0], - reader = new FileReader(); - - switch(this.table.options.importReader){ - case "buffer": - reader.readAsArrayBuffer(file); - break; - - case "binary": - reader.readAsBinaryString(file); - break; - - case "url": - reader.readAsDataURL(file); - break; - - case "text": - default: - reader.readAsText(file); - } - - reader.onload = (e) => { - resolve(reader.result); - }; - - reader.onerror = (e) => { - console.warn("File Load Error - Unable to read file"); - reject(); - }; - }); - - input.click(); - }); - } - - importData(importer, fileContents){ - var data = importer.call(this.table, fileContents); - - if(data instanceof Promise){ - return data; - }else { - return data ? Promise.resolve(data) : Promise.reject(); - } - } - - structureData(parsedData){ - var data = []; - - if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){ - if(this.table.options.autoColumns){ - data = this.structureArrayToObject(parsedData); - }else { - data = this.structureArrayToColumns(parsedData); - } - - return data; - }else { - return parsedData; - } - } - - structureArrayToObject(parsedData){ - var columns = parsedData.shift(); - - var data = parsedData.map((values) => { - var row = {}; - - columns.forEach((key, i) => { - row[key] = values[i]; - }); - - return row; - }); - - return data; - } - - structureArrayToColumns(parsedData){ - var data = [], - columns = this.table.getColumns(); - - //remove first row if it is the column names - if(columns[0] && parsedData[0][0]){ - if(columns[0].getDefinition().title === parsedData[0][0]){ - parsedData.shift(); - } - } - - //convert row arrays to objects - parsedData.forEach((rowData) => { - var row = {}; - - rowData.forEach((value, index) => { - var column = columns[index]; - - if(column){ - row[column.getField()] = value; - } - }); - - data.push(row); - }); - - return data; - } - - setData(data){ - return this.table.setData(data); - } - } - - Import.moduleName = "import"; - - //load defaults - Import.importers = defaultImporters; - - class Interaction extends Module{ - - constructor(table){ - super(table); - - this.eventMap = { - //row events - rowClick:"row-click", - rowDblClick:"row-dblclick", - rowContext:"row-contextmenu", - rowMouseEnter:"row-mouseenter", - rowMouseLeave:"row-mouseleave", - rowMouseOver:"row-mouseover", - rowMouseOut:"row-mouseout", - rowMouseMove:"row-mousemove", - rowMouseDown:"row-mousedown", - rowMouseUp:"row-mouseup", - rowTap:"row", - rowDblTap:"row", - rowTapHold:"row", - - //cell events - cellClick:"cell-click", - cellDblClick:"cell-dblclick", - cellContext:"cell-contextmenu", - cellMouseEnter:"cell-mouseenter", - cellMouseLeave:"cell-mouseleave", - cellMouseOver:"cell-mouseover", - cellMouseOut:"cell-mouseout", - cellMouseMove:"cell-mousemove", - cellMouseDown:"cell-mousedown", - cellMouseUp:"cell-mouseup", - cellTap:"cell", - cellDblTap:"cell", - cellTapHold:"cell", - - //column header events - headerClick:"column-click", - headerDblClick:"column-dblclick", - headerContext:"column-contextmenu", - headerMouseEnter:"column-mouseenter", - headerMouseLeave:"column-mouseleave", - headerMouseOver:"column-mouseover", - headerMouseOut:"column-mouseout", - headerMouseMove:"column-mousemove", - headerMouseDown:"column-mousedown", - headerMouseUp:"column-mouseup", - headerTap:"column", - headerDblTap:"column", - headerTapHold:"column", - - //group header - groupClick:"group-click", - groupDblClick:"group-dblclick", - groupContext:"group-contextmenu", - groupMouseEnter:"group-mouseenter", - groupMouseLeave:"group-mouseleave", - groupMouseOver:"group-mouseover", - groupMouseOut:"group-mouseout", - groupMouseMove:"group-mousemove", - groupMouseDown:"group-mousedown", - groupMouseUp:"group-mouseup", - groupTap:"group", - groupDblTap:"group", - groupTapHold:"group", - }; - - this.subscribers = {}; - - this.touchSubscribers = {}; - - this.columnSubscribers = {}; - - this.touchWatchers = { - row:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - cell:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - column:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - group:{ - tap:null, - tapDbl:null, - tapHold:null, - } - }; - - this.registerColumnOption("headerClick"); - this.registerColumnOption("headerDblClick"); - this.registerColumnOption("headerContext"); - this.registerColumnOption("headerMouseEnter"); - this.registerColumnOption("headerMouseLeave"); - this.registerColumnOption("headerMouseOver"); - this.registerColumnOption("headerMouseOut"); - this.registerColumnOption("headerMouseMove"); - this.registerColumnOption("headerMouseDown"); - this.registerColumnOption("headerMouseUp"); - this.registerColumnOption("headerTap"); - this.registerColumnOption("headerDblTap"); - this.registerColumnOption("headerTapHold"); - - this.registerColumnOption("cellClick"); - this.registerColumnOption("cellDblClick"); - this.registerColumnOption("cellContext"); - this.registerColumnOption("cellMouseEnter"); - this.registerColumnOption("cellMouseLeave"); - this.registerColumnOption("cellMouseOver"); - this.registerColumnOption("cellMouseOut"); - this.registerColumnOption("cellMouseMove"); - this.registerColumnOption("cellMouseDown"); - this.registerColumnOption("cellMouseUp"); - this.registerColumnOption("cellTap"); - this.registerColumnOption("cellDblTap"); - this.registerColumnOption("cellTapHold"); - - } - - initialize(){ - this.initializeExternalEvents(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("cell-dblclick", this.cellContentsSelectionFixer.bind(this)); - this.subscribe("scroll-horizontal", this.clearTouchWatchers.bind(this)); - this.subscribe("scroll-vertical", this.clearTouchWatchers.bind(this)); - } - - clearTouchWatchers(){ - var types = Object.values(this.touchWatchers); - - types.forEach((type) => { - for(let key in type){ - type[key] = null; - } - }); - } - - cellContentsSelectionFixer(e, cell){ - var range; - - if(this.table.modExists("edit")){ - if (this.table.modules.edit.currentCell === cell){ - return; //prevent instant selection of editor content - } - } - - e.preventDefault(); - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - initializeExternalEvents(){ - for(let key in this.eventMap){ - this.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key)); - } - } - - subscriptionChanged(key, added){ - if(added){ - if(!this.subscribers[key]){ - if(this.eventMap[key].includes("-")){ - this.subscribers[key] = this.handle.bind(this, key); - this.subscribe(this.eventMap[key], this.subscribers[key]); - }else { - this.subscribeTouchEvents(key); - } - } - }else { - if(this.eventMap[key].includes("-")){ - if(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){ - this.unsubscribe(this.eventMap[key], this.subscribers[key]); - delete this.subscribers[key]; - } - }else { - this.unsubscribeTouchEvents(key); - } - } - } - - - subscribeTouchEvents(key){ - var type = this.eventMap[key]; - - if(!this.touchSubscribers[type + "-touchstart"]){ - this.touchSubscribers[type + "-touchstart"] = this.handleTouch.bind(this, type, "start"); - this.touchSubscribers[type + "-touchend"] = this.handleTouch.bind(this, type, "end"); - - this.subscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.subscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - } - - this.subscribers[key] = true; - } - - unsubscribeTouchEvents(key){ - var noTouch = true, - type = this.eventMap[key]; - - if(this.subscribers[key] && !this.subscribedExternal(key)){ - delete this.subscribers[key]; - - for(let i in this.eventMap){ - if(this.eventMap[i] === type){ - if(this.subscribers[i]){ - noTouch = false; - } - } - } - - if(noTouch){ - this.unsubscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.unsubscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - - delete this.touchSubscribers[type + "-touchstart"]; - delete this.touchSubscribers[type + "-touchend"]; - } - } - } - - initializeColumn(column){ - var def = column.definition; - - for(let key in this.eventMap){ - if(def[key]){ - this.subscriptionChanged(key, true); - - if(!this.columnSubscribers[key]){ - this.columnSubscribers[key] = []; - } - - this.columnSubscribers[key].push(column); - } - } - } - - handle(action, e, component){ - this.dispatchEvent(action, e, component); - } - - handleTouch(type, action, e, component){ - var watchers = this.touchWatchers[type]; - - if(type === "column"){ - type = "header"; - } - - switch(action){ - case "start": - watchers.tap = true; - - clearTimeout(watchers.tapHold); - - watchers.tapHold = setTimeout(() => { - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - - watchers.tap = null; - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "TapHold", e, component); - }, 1000); - break; - - case "end": - if(watchers.tap){ - - watchers.tap = null; - this.dispatchEvent(type + "Tap", e, component); - } - - if(watchers.tapDbl){ - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "DblTap", e, component); - }else { - watchers.tapDbl = setTimeout(() => { - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - }, 300); - } - - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - break; - } - } - - dispatchEvent(action, e, component){ - var componentObj = component.getComponent(), - callback; - - if(this.columnSubscribers[action]){ - - if(component instanceof Cell){ - callback = component.column.definition[action]; - }else if(component instanceof Column){ - callback = component.definition[action]; - } - - if(callback){ - callback(e, componentObj); - } - } - - this.dispatchExternal(action, e, componentObj); - } - } - - Interaction.moduleName = "interaction"; - - var defaultBindings = { - navPrev:"shift + 9", - navNext:9, - navUp:38, - navDown:40, - scrollPageUp:33, - scrollPageDown:34, - scrollToStart:36, - scrollToEnd:35, - undo:["ctrl + 90", "meta + 90"], - redo:["ctrl + 89", "meta + 89"], - copyToClipboard:["ctrl + 67", "meta + 67"], - }; - - var defaultActions = { - keyBlock:function(e){ - e.stopPropagation(); - e.preventDefault(); - }, - scrollPageUp:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop - rowManager.element.clientHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos >= 0){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - } - - this.table.element.focus(); - }, - scrollPageDown:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop + rowManager.element.clientHeight, - scrollMax = rowManager.element.scrollHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos <= scrollMax){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - } - - this.table.element.focus(); - - }, - scrollToStart:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - - this.table.element.focus(); - }, - scrollToEnd:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - - this.table.element.focus(); - }, - navPrev:function(e){ - this.dispatch("keybinding-nav-prev", e); - }, - - navNext:function(e){ - this.dispatch("keybinding-nav-next", e); - }, - - navLeft:function(e){ - this.dispatch("keybinding-nav-left", e); - }, - - navRight:function(e){ - this.dispatch("keybinding-nav-right", e); - }, - - navUp:function(e){ - this.dispatch("keybinding-nav-up", e); - }, - - navDown:function(e){ - this.dispatch("keybinding-nav-down", e); - }, - - undo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.undo(); - } - } - }, - - redo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.redo(); - } - } - }, - - copyToClipboard:function(e){ - if(!this.table.modules.edit.currentCell){ - if(this.table.modExists("clipboard", true)){ - this.table.modules.clipboard.copy(false, true); - } - } - }, - }; - - class Keybindings extends Module{ - - constructor(table){ - super(table); - - this.watchKeys = null; - this.pressedKeys = null; - this.keyupBinding = false; - this.keydownBinding = false; - - this.registerTableOption("keybindings", {}); //array for keybindings - this.registerTableOption("tabEndNewRow", false); //create new row when tab to end of table - } - - initialize(){ - var bindings = this.table.options.keybindings, - mergedBindings = {}; - - this.watchKeys = {}; - this.pressedKeys = []; - - if(bindings !== false){ - Object.assign(mergedBindings, Keybindings.bindings); - Object.assign(mergedBindings, bindings); - - this.mapBindings(mergedBindings); - this.bindEvents(); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - - mapBindings(bindings){ - for(let key in bindings){ - if(Keybindings.actions[key]){ - if(bindings[key]){ - if(typeof bindings[key] !== "object"){ - bindings[key] = [bindings[key]]; - } - - bindings[key].forEach((binding) => { - var bindingList = Array.isArray(binding) ? binding : [binding]; - - bindingList.forEach((item) => { - this.mapBinding(key, item); - }); - }); - } - }else { - console.warn("Key Binding Error - no such action:", key); - } - } - } - - mapBinding(action, symbolsList){ - var binding = { - action: Keybindings.actions[action], - keys: [], - ctrl: false, - shift: false, - meta: false, - }; - - var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+"); - - symbols.forEach((symbol) => { - switch(symbol){ - case "ctrl": - binding.ctrl = true; - break; - - case "shift": - binding.shift = true; - break; - - case "meta": - binding.meta = true; - break; - - default: - symbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol); - binding.keys.push(symbol); - - if(!this.watchKeys[symbol]){ - this.watchKeys[symbol] = []; - } - - this.watchKeys[symbol].push(binding); - } - }); - } - - bindEvents(){ - var self = this; - - this.keyupBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - self.pressedKeys.push(code); - - bindings.forEach(function(binding){ - self.checkBinding(e, binding); - }); - } - }; - - this.keydownBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - var index = self.pressedKeys.indexOf(code); - - if(index > -1){ - self.pressedKeys.splice(index, 1); - } - } - }; - - this.table.element.addEventListener("keydown", this.keyupBinding); - - this.table.element.addEventListener("keyup", this.keydownBinding); - } - - clearBindings(){ - if(this.keyupBinding){ - this.table.element.removeEventListener("keydown", this.keyupBinding); - } - - if(this.keydownBinding){ - this.table.element.removeEventListener("keyup", this.keydownBinding); - } - } - - checkBinding(e, binding){ - var match = true; - - if(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){ - binding.keys.forEach((key) => { - var index = this.pressedKeys.indexOf(key); - - if(index == -1){ - match = false; - } - }); - - if(match){ - binding.action.call(this, e); - } - - return true; - } - - return false; - } - } - - Keybindings.moduleName = "keybindings"; - - //load defaults - Keybindings.bindings = defaultBindings; - Keybindings.actions = defaultActions; - - class Menu extends Module{ - - constructor(table){ - super(table); - - this.menuContainer = null; - this.nestedMenuBlock = false; - - this.currentComponent = null; - this.rootPopup = null; - - this.columnSubscribers = {}; - - this.registerTableOption("menuContainer", undefined); //deprecated - - this.registerTableOption("rowContextMenu", false); - this.registerTableOption("rowClickMenu", false); - this.registerTableOption("rowDblClickMenu", false); - this.registerTableOption("groupContextMenu", false); - this.registerTableOption("groupClickMenu", false); - this.registerTableOption("groupDblClickMenu", false); - - this.registerColumnOption("headerContextMenu"); - this.registerColumnOption("headerClickMenu"); - this.registerColumnOption("headerDblClickMenu"); - this.registerColumnOption("headerMenu"); - this.registerColumnOption("headerMenuIcon"); - this.registerColumnOption("contextMenu"); - this.registerColumnOption("clickMenu"); - this.registerColumnOption("dblClickMenu"); - - } - - initialize(){ - this.deprecatedOptionsCheck(); - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - if(!this.deprecationCheck("menuContainer", "popupContainer")){ - this.table.options.popupContainer = this.table.options.menuContainer; - } - } - - initializeRowWatchers(){ - if(this.table.options.rowContextMenu){ - this.subscribe("row-contextmenu", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - this.table.on("rowTapHold", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - } - - if(this.table.options.rowClickMenu){ - this.subscribe("row-click", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu)); - } - - if(this.table.options.rowDblClickMenu){ - this.subscribe("row-dblclick", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextMenu){ - this.subscribe("group-contextmenu", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - this.table.on("groupTapHold", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - } - - if(this.table.options.groupClickMenu){ - this.subscribe("group-click", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu)); - } - - if(this.table.options.groupDblClickMenu){ - this.subscribe("group-dblclick", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){ - this.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, "headerContextMenu"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextMenu); - this.table.on("headerTapHold", this.loadMenuTableColumnEvent.bind(this, "headerContextMenu")); - } - - if(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){ - this.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerClickMenu"); - this.subscribe("column-click", this.columnSubscribers.headerClickMenu); - } - - if(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){ - this.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerDblClickMenu"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickMenu); - } - - if(def.headerMenu){ - this.initializeColumnHeaderMenu(column); - } - - //handle cell events - if(def.contextMenu && !this.columnSubscribers.contextMenu){ - this.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, "contextMenu"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextMenu); - this.table.on("cellTapHold", this.loadMenuTableCellEvent.bind(this, "contextMenu")); - } - - if(def.clickMenu && !this.columnSubscribers.clickMenu){ - this.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, "clickMenu"); - this.subscribe("cell-click", this.columnSubscribers.clickMenu); - } - - if(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){ - this.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, "dblClickMenu"); - this.subscribe("cell-dblclick", this.columnSubscribers.dblClickMenu); - } - } - - initializeColumnHeaderMenu(column){ - var icon = column.definition.headerMenuIcon, - headerMenuEl; - - headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerMenuEl.appendChild(icon); - }else { - headerMenuEl.innerHTML = icon; - } - }else { - headerMenuEl.innerHTML = "⋮"; - } - - headerMenuEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadMenuEvent(column.definition.headerMenu, e, column); - }); - - column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild); - } - - loadMenuTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadMenuEvent(cell.column.definition[option], e, cell); - } - } - - loadMenuTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadMenuEvent(column.definition[option], e, column); - } - } - - loadMenuEvent(menu, e, component){ - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; - - this.loadMenu(e, component, menu); - } - - loadMenu(e, component, menu, parentEl, parentPopup){ - var touch = !(e instanceof MouseEvent), - menuEl = document.createElement("div"), - popup; - - menuEl.classList.add("tabulator-menu"); - - if(!touch){ - e.preventDefault(); - } - - //abort if no menu set - if(!menu || !menu.length){ - return; - } - - if(!parentEl){ - if(this.nestedMenuBlock){ - //abort if child menu already open - if(this.rootPopup){ - return; - } - }else { - this.nestedMenuBlock = setTimeout(() => { - this.nestedMenuBlock = false; - }, 100); - } - - if(this.rootPopup){ - this.rootPopup.hide(); - } - - this.rootPopup = popup = this.popup(menuEl); - - }else { - popup = parentPopup.child(menuEl); - } - - menu.forEach((item) => { - var itemEl = document.createElement("div"), - label = item.label, - disabled = item.disabled; - - if(item.separator){ - itemEl.classList.add("tabulator-menu-separator"); - }else { - itemEl.classList.add("tabulator-menu-item"); - - if(typeof label == "function"){ - label = label.call(this.table, component.getComponent()); - } - - if(label instanceof Node){ - itemEl.appendChild(label); - }else { - itemEl.innerHTML = label; - } - - if(typeof disabled == "function"){ - disabled = disabled.call(this.table, component.getComponent()); - } - - if(disabled){ - itemEl.classList.add("tabulator-menu-item-disabled"); - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - }); - }else { - if(item.menu && item.menu.length){ - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.loadMenu(e, component, item.menu, itemEl, popup); - }); - }else { - if(item.action){ - itemEl.addEventListener("click", (e) => { - item.action(e, component.getComponent()); - }); - } - } - } - - if(item.menu && item.menu.length){ - itemEl.classList.add("tabulator-menu-item-submenu"); - } - } - - menuEl.appendChild(itemEl); - }); - - menuEl.addEventListener("click", (e) => { - if(this.rootPopup){ - this.rootPopup.hide(); - } - }); - - popup.show(parentEl || e); - - if(popup === this.rootPopup){ - this.rootPopup.hideOnBlur(() => { - this.rootPopup = null; - - if(this.currentComponent){ - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; - } - }); - - this.currentComponent = component; - - this.dispatchExternal("menuOpened", component.getComponent()); - } - } - } - - Menu.moduleName = "menu"; - - class MoveColumns extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating column header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving column - this.toCol = false; //destination column - this.toColAfter = false; //position of moving column relative to the destination column - this.startX = 0; //starting position within header element - this.autoScrollMargin = 40; //auto scroll on edge when within margin - this.autoScrollStep = 5; //auto scroll distance in pixels - this.autoScrollTimeout = false; //auto scroll timeout - this.touchMove = false; - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - - this.registerTableOption("movableColumns", false); //enable movable columns - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.classList.add("tabulator-col-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableColumns){ - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - } - - initializeColumn(column){ - var self = this, - config = {}, - colEl; - - if(!column.modules.frozen && !column.isGroup){ - colEl = column.getElement(); - - config.mousemove = function(e){ - if(column.parent === self.moving.parent){ - if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){ - if(self.toCol !== column || !self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling); - self.moveColumn(column, true); - } - }else { - if(self.toCol !== column || self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl); - self.moveColumn(column, false); - } - } - } - }.bind(self); - - colEl.addEventListener("mousedown", function(e){ - self.touchMove = false; - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, column); - }, self.checkPeriod); - } - }); - - colEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - self.bindTouchEvents(column); - } - - column.modules.moveColumn = config; - } - - bindTouchEvents(column){ - var colEl = column.getElement(), - startXMove = false, //shifting center position of the cell - nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast; - - colEl.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextCol = column.nextColumn(); - nextColWidth = nextCol ? nextCol.getWidth()/2 : 0; - prevCol = column.prevColumn(); - prevColWidth = prevCol ? prevCol.getWidth()/2 : 0; - nextColWidthLast = 0; - prevColWidthLast = 0; - startXMove = false; - - this.startMove(e, column); - }, this.checkPeriod); - }, {passive: true}); - - colEl.addEventListener("touchmove", (e) => { - var diff, moveToCol; - - if(this.moving){ - this.moveHover(e); - - if(!startXMove){ - startXMove = e.touches[0].pageX; - } - - diff = e.touches[0].pageX - startXMove; - - if(diff > 0){ - if(nextCol && diff - nextColWidthLast > nextColWidth){ - moveToCol = nextCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling); - this.moveColumn(moveToCol, true); - } - } - }else { - if(prevCol && -diff - prevColWidthLast > prevColWidth){ - moveToCol = prevCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement()); - this.moveColumn(moveToCol, false); - } - } - } - - if(moveToCol){ - nextCol = moveToCol.nextColumn(); - nextColWidthLast = nextColWidth; - nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0; - prevCol = moveToCol.prevColumn(); - prevColWidthLast = prevColWidth; - prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0; - } - } - }, {passive: true}); - - colEl.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - } - }); - } - - startMove(e, column){ - var element = column.getElement(), - headerElement = this.table.columnManager.getContentsElement(), - headersElement = this.table.columnManager.getHeadersElement(); - - this.moving = column; - this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = column.getWidth() + "px"; - this.placeholderElement.style.height = column.getHeight() + "px"; - - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - headerElement.appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + "px"; - - if(!this.touchMove){ - this._bindMouseMove(); - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - } - - this.moveHover(e); - } - - _bindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - moveColumn(column, after){ - var movingCells = this.moving.getCells(); - - this.toCol = column; - this.toColAfter = after; - - if(after){ - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling); - } - }); - }else { - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl); - } - }); - } - } - - endMove(e){ - if(e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toCol){ - this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter); - } - - this.moving = false; - this.toCol = false; - this.toColAfter = false; - - if(!this.touchMove){ - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - } - } - } - - moveHover(e){ - var columnHolder = this.table.columnManager.getContentsElement(), - scrollLeft = columnHolder.scrollLeft, - xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft, - scrollPos; - - this.hoverElement.style.left = (xPos - this.startX) + "px"; - - if(xPos - scrollLeft < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.max(0,scrollLeft-5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - - if(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - } - } - - MoveColumns.moduleName = "moveColumn"; - - class MoveRows extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating row header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving row - this.toRow = false; //destination row - this.toRowAfter = false; //position of moving row relative to the destination row - this.hasHandle = false; //row has handle instead of fully movable row - this.startY = 0; //starting Y position within header element - this.startX = 0; //starting X position within header element - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - this.tableRowDropEvent = false; - - this.touchMove = false; - - this.connection = false; - this.connectionSelectorsTables = false; - this.connectionSelectorsElements = false; - this.connectionElements = []; - this.connections = []; - - this.connectedTable = false; - this.connectedRow = false; - - this.registerTableOption("movableRows", false); //enable movable rows - this.registerTableOption("movableRowsConnectedTables", false); //tables for movable rows to be connected to - this.registerTableOption("movableRowsConnectedElements", false); //other elements for movable rows to be connected to - this.registerTableOption("movableRowsSender", false); - this.registerTableOption("movableRowsReceiver", "insert"); - - this.registerColumnOption("rowHandle"); - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.classList.add("tabulator-row-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableRows){ - this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables; - this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements; - - this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements; - - this.subscribe("cell-init", this.initializeCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - } - } - - initializeGroupHeader(group){ - var self = this, - config = {}; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, group); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl; - - if(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){ - if(self.toRow !== group || !self.toRowAfter){ - rowEl = group.getElement(); - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(group, true); - } - }else { - if(self.toRow !== group || self.toRowAfter){ - rowEl = group.getElement(); - if(rowEl.previousSibling){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(group, false); - } - } - } - }.bind(self); - - group.modules.moveRow = config; - } - - initializeRow(row){ - var self = this, - config = {}, - rowEl; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, row); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl = row.getElement(); - - if(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){ - if(self.toRow !== row || !self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(row, true); - } - }else { - if(self.toRow !== row || self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(row, false); - } - } - }.bind(self); - - - if(!this.hasHandle){ - - rowEl = row.getElement(); - - rowEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, row); - }, self.checkPeriod); - } - }); - - rowEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(row, row.getElement()); - } - - row.modules.moveRow = config; - } - - initializeColumn(column){ - if(column.definition.rowHandle && this.table.options.movableRows !== false){ - this.hasHandle = true; - } - } - - initializeCell(cell){ - if(cell.column.definition.rowHandle && this.table.options.movableRows !== false){ - var self = this, - cellEl = cell.getElement(true); - - cellEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, cell.row); - }, self.checkPeriod); - } - }); - - cellEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(cell.row, cellEl); - } - } - - bindTouchEvents(row, element){ - var startYMove = false, //shifting center position of the cell - nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast; - - element.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextRow = row.nextRow(); - nextRowHeight = nextRow ? nextRow.getHeight()/2 : 0; - prevRow = row.prevRow(); - prevRowHeight = prevRow ? prevRow.getHeight()/2 : 0; - nextRowHeightLast = 0; - prevRowHeightLast = 0; - startYMove = false; - - this.startMove(e, row); - }, this.checkPeriod); - }, {passive: true}); - this.moving, this.toRow, this.toRowAfter; - element.addEventListener("touchmove", (e) => { - - var diff, moveToRow; - - if(this.moving){ - e.preventDefault(); - - this.moveHover(e); - - if(!startYMove){ - startYMove = e.touches[0].pageY; - } - - diff = e.touches[0].pageY - startYMove; - - if(diff > 0){ - if(nextRow && diff - nextRowHeightLast > nextRowHeight){ - moveToRow = nextRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling); - this.moveRow(moveToRow, true); - } - } - }else { - if(prevRow && -diff - prevRowHeightLast > prevRowHeight){ - moveToRow = prevRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement()); - this.moveRow(moveToRow, false); - } - } - } - - if(moveToRow){ - nextRow = moveToRow.nextRow(); - nextRowHeightLast = nextRowHeight; - nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0; - prevRow = moveToRow.prevRow(); - prevRowHeightLast = prevRowHeight; - prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0; - } - } - }); - - element.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - this.touchMove = false; - } - }); - } - - _bindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - startMove(e, row){ - var element = row.getElement(); - - this.setStartPosition(e, row); - - this.moving = row; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = row.getWidth() + "px"; - this.placeholderElement.style.height = row.getHeight() + "px"; - - if(!this.connection){ - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - }else { - this.table.element.classList.add("tabulator-movingrow-sending"); - this.connectToTables(row); - } - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - if(this.connection){ - document.body.appendChild(this.hoverElement); - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - this.hoverElement.style.width = this.table.element.clientWidth + "px"; - this.hoverElement.style.whiteSpace = "nowrap"; - this.hoverElement.style.overflow = "hidden"; - this.hoverElement.style.pointerEvents = "none"; - }else { - this.table.rowManager.getTableElement().appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - - this._bindMouseMove(); - } - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - - this.dispatchExternal("rowMoving", row.getComponent()); - - this.moveHover(e); - } - - setStartPosition(e, row){ - var pageX = this.touchMove ? e.touches[0].pageX : e.pageX, - pageY = this.touchMove ? e.touches[0].pageY : e.pageY, - element, position; - - element = row.getElement(); - if(this.connection){ - position = element.getBoundingClientRect(); - - this.startX = position.left - pageX + window.pageXOffset; - this.startY = position.top - pageY + window.pageYOffset; - }else { - this.startY = (pageY - element.getBoundingClientRect().top); - } - } - - endMove(e){ - if(!e || e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - if(!this.connection){ - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - } - - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toRow){ - this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter); - }else { - this.dispatchExternal("rowMoveCancelled", this.moving.getComponent()); - } - - this.moving = false; - this.toRow = false; - this.toRowAfter = false; - - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - - if(this.connection){ - this.table.element.classList.remove("tabulator-movingrow-sending"); - this.disconnectFromTables(); - } - } - } - - moveRow(row, after){ - this.toRow = row; - this.toRowAfter = after; - } - - moveHover(e){ - if(this.connection){ - this.moveHoverConnections.call(this, e); - }else { - this.moveHoverTable.call(this, e); - } - } - - moveHoverTable(e){ - var rowHolder = this.table.rowManager.getElement(), - scrollTop = rowHolder.scrollTop, - yPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop; - - this.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + "px"; - } - - moveHoverConnections(e){ - this.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + "px"; - this.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + "px"; - } - - elementRowDrop(e, element, row){ - this.dispatchExternal("movableRowsElementDrop", e, element, row ? row.getComponent() : false); - } - - //establish connection with other tables - connectToTables(row){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStart", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "connect", { - row:row, - }); - } - - if(this.connectionSelectorsElements){ - - this.connectionElements = []; - - if(!Array.isArray(this.connectionSelectorsElements)){ - this.connectionSelectorsElements = [this.connectionSelectorsElements]; - } - - this.connectionSelectorsElements.forEach((query) => { - if(typeof query === "string"){ - this.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query))); - }else { - this.connectionElements.push(query); - } - }); - - this.connectionElements.forEach((element) => { - var dropEvent = (e) => { - this.elementRowDrop(e, element, this.moving); - }; - - element.addEventListener("mouseup", dropEvent); - element.tabulatorElementDropEvent = dropEvent; - - element.classList.add("tabulator-movingrow-receiving"); - }); - } - } - - //disconnect from other tables - disconnectFromTables(){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStop", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "disconnect"); - } - - this.connectionElements.forEach((element) => { - element.classList.remove("tabulator-movingrow-receiving"); - element.removeEventListener("mouseup", element.tabulatorElementDropEvent); - delete element.tabulatorElementDropEvent; - }); - } - - //accept incomming connection - connect(table, row){ - if(!this.connectedTable){ - this.connectedTable = table; - this.connectedRow = row; - - this.table.element.classList.add("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) => { - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.tableRowDropEvent = this.tableRowDrop.bind(this); - - this.table.element.addEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStart", row, table); - - return true; - }else { - console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable); - return false; - } - } - - //close incoming connection - disconnect(table){ - if(table === this.connectedTable){ - this.connectedTable = false; - this.connectedRow = false; - - this.table.element.classList.remove("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.table.element.removeEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStop", table); - }else { - console.warn("Move Row Error - trying to disconnect from non connected table"); - } - } - - dropComplete(table, row, success){ - var sender = false; - - if(success){ - - switch(typeof this.table.options.movableRowsSender){ - case "string": - sender = this.senders[this.table.options.movableRowsSender]; - break; - - case "function": - sender = this.table.options.movableRowsSender; - break; - } - - if(sender){ - sender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table); - }else { - if(this.table.options.movableRowsSender){ - console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender); - } - } - - this.dispatchExternal("movableRowsSent", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - }else { - this.dispatchExternal("movableRowsSentFailed", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - } - - this.endMove(); - } - - tableRowDrop(e, row){ - var receiver = false, - success = false; - - e.stopImmediatePropagation(); - - switch(typeof this.table.options.movableRowsReceiver){ - case "string": - receiver = this.receivers[this.table.options.movableRowsReceiver]; - break; - - case "function": - receiver = this.table.options.movableRowsReceiver; - break; - } - - if(receiver){ - success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver); - } - - if(success){ - this.dispatchExternal("movableRowsReceived", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - this.dispatchExternal("movableRowsReceivedFailed", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - } - - this.commsSend(this.connectedTable, "moveRow", "dropcomplete", { - row:row, - success:success, - }); - } - - commsReceived(table, action, data){ - switch(action){ - case "connect": - return this.connect(table, data.row); - - case "disconnect": - return this.disconnect(table); - - case "dropcomplete": - return this.dropComplete(table, data.row, data.success); - } - } - } - - MoveRows.prototype.receivers = { - insert:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData(), undefined, toRow); - return true; - }, - - add:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData()); - return true; - }, - - update:function(fromRow, toRow, fromTable){ - if(toRow){ - toRow.update(fromRow.getData()); - return true; - } - - return false; - }, - - replace:function(fromRow, toRow, fromTable){ - if(toRow){ - this.table.addRow(fromRow.getData(), undefined, toRow); - toRow.delete(); - return true; - } - - return false; - }, - }; - - MoveRows.prototype.senders = { - delete:function(fromRow, toRow, toTable){ - fromRow.delete(); - } - }; - - MoveRows.moduleName = "moveRow"; - - var defaultMutators = {}; - - class Mutator extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of mutation types - this.enabled = true; - - this.registerColumnOption("mutator"); - this.registerColumnOption("mutatorParams"); - this.registerColumnOption("mutatorData"); - this.registerColumnOption("mutatorDataParams"); - this.registerColumnOption("mutatorEdit"); - this.registerColumnOption("mutatorEditParams"); - this.registerColumnOption("mutatorClipboard"); - this.registerColumnOption("mutatorClipboardParams"); - this.registerColumnOption("mutateLink"); - } - - initialize(){ - this.subscribe("cell-value-changing", this.transformCell.bind(this)); - this.subscribe("cell-value-changed", this.mutateLink.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-init-before", this.rowDataChanged.bind(this)); - this.subscribe("row-data-changing", this.rowDataChanged.bind(this)); - } - - rowDataChanged(row, tempData, updatedData){ - return this.transformRow(tempData, "data", updatedData); - } - - //initialize column mutator - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - mutator; - - if(column.definition[key]){ - mutator = this.lookupMutator(column.definition[key]); - - if(mutator){ - match = true; - - config[key] = { - mutator:mutator, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.mutate = config; - } - } - - lookupMutator(value){ - var mutator = false; - - //set column mutator - switch(typeof value){ - case "string": - if(Mutator.mutators[value]){ - mutator = Mutator.mutators[value]; - }else { - console.warn("Mutator Error - No such mutator found, ignoring: ", value); - } - break; - - case "function": - mutator = value; - break; - } - - return mutator; - } - - //apply mutator to row - transformRow(data, type, updatedData){ - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - value; - - if(this.enabled){ - - this.table.columnManager.traverse((column) => { - var mutator, params, component; - - if(column.modules.mutate){ - mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false; - - if(mutator){ - value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data); - - if((type == "data" && !updatedData)|| typeof value !== "undefined"){ - component = column.getComponent(); - params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params; - column.setFieldValue(data, mutator.mutator(value, data, type, params, component)); - } - } - } - }); - } - - return data; - } - - //apply mutator to new cell value - transformCell(cell, value){ - if(cell.column.modules.mutate){ - var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false, - tempData = {}; - - if(mutator){ - tempData = Object.assign(tempData, cell.row.getData()); - cell.column.setFieldValue(tempData, value); - return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent()); - } - } - - return value; - } - - mutateLink(cell){ - var links = cell.column.definition.mutateLink; - - if(links){ - if(!Array.isArray(links)){ - links = [links]; - } - - links.forEach((link) => { - var linkCell = cell.row.getCell(link); - - if(linkCell){ - linkCell.setValue(linkCell.getValue(), true, true); - } - }); - } - } - - enable(){ - this.enabled = true; - } - - disable(){ - this.enabled = false; - } - } - - Mutator.moduleName = "mutator"; - - //load defaults - Mutator.mutators = defaultMutators; - - function rows(pageSize, currentRow, currentPage, totalRows, totalPages){ - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|rows", (value) => { - rowsEl.innerHTML = value; - }); - - if(totalRows){ - valueEl.innerHTML = " " + currentRow + "-" + Math.min((currentRow + pageSize - 1), totalRows) + " "; - - totalEl.innerHTML = " " + totalRows + " "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - }else { - valueEl.innerHTML = " 0 "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(rowsEl); - } - - return el; - } - - function pages(pageSize, currentRow, currentPage, totalRows, totalPages){ - - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - valueEl.innerHTML = " " + currentPage + " "; - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - totalEl.innerHTML = " " + totalPages + " "; - - this.table.modules.localize.langBind("pagination|counter|pages", (value) => { - rowsEl.innerHTML = value; - }); - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - - return el; - } - - var defaultPageCounters = { - rows:rows, - pages:pages, - }; - - class Page extends Module{ - - constructor(table){ - super(table); - - this.mode = "local"; - this.progressiveLoad = false; - - this.element = null; - this.pageCounterElement = null; - this.pageCounter = null; - - this.size = 0; - this.page = 1; - this.count = 5; - this.max = 1; - - this.remoteRowCountEstimate = null; - - this.initialLoad = true; - this.dataChanging = false; //flag to check if data is being changed by this module - - this.pageSizes = []; - - this.registerTableOption("pagination", false); //set pagination type - this.registerTableOption("paginationMode", "local"); //local or remote pagination - this.registerTableOption("paginationSize", false); //set number of rows to a page - this.registerTableOption("paginationInitialPage", 1); //initial page to show on load - this.registerTableOption("paginationCounter", false); // set pagination counter - this.registerTableOption("paginationCounterElement", false); // set pagination counter - this.registerTableOption("paginationButtonCount", 5); // set count of page button - this.registerTableOption("paginationSizeSelector", false); //add pagination size selector element - this.registerTableOption("paginationElement", false); //element to hold pagination numbers - // this.registerTableOption("paginationDataSent", {}); //pagination data sent to the server - // this.registerTableOption("paginationDataReceived", {}); //pagination data received from the server - this.registerTableOption("paginationAddRow", "page"); //add rows on table or page - - this.registerTableOption("progressiveLoad", false); //progressive loading - this.registerTableOption("progressiveLoadDelay", 0); //delay between requests - this.registerTableOption("progressiveLoadScrollMargin", 0); //margin before scroll begins - - this.registerTableFunction("setMaxPage", this.setMaxPage.bind(this)); - this.registerTableFunction("setPage", this.setPage.bind(this)); - this.registerTableFunction("setPageToRow", this.userSetPageToRow.bind(this)); - this.registerTableFunction("setPageSize", this.userSetPageSize.bind(this)); - this.registerTableFunction("getPageSize", this.getPageSize.bind(this)); - this.registerTableFunction("previousPage", this.previousPage.bind(this)); - this.registerTableFunction("nextPage", this.nextPage.bind(this)); - this.registerTableFunction("getPage", this.getPage.bind(this)); - this.registerTableFunction("getPageMax", this.getPageMax.bind(this)); - - //register component functions - this.registerComponentFunction("row", "pageTo", this.setPageToRow.bind(this)); - } - - initialize(){ - if(this.table.options.pagination){ - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("footer-redraw", this.footerRedraw.bind(this)); - - if(this.table.options.paginationAddRow == "page"){ - this.subscribe("row-adding-position", this.rowAddingPosition.bind(this)); - } - - if(this.table.options.paginationMode === "remote"){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - } - - if(this.table.options.progressiveLoad){ - console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"); - } - - this.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40); - this.registerDisplayHandler(this.getRows.bind(this), 50); - - this.createElements(); - this.initializePageCounter(); - this.initializePaginator(); - }else if(this.table.options.progressiveLoad){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - - this.initializeProgressive(this.table.options.progressiveLoad); - - if(this.table.options.progressiveLoad === "scroll"){ - this.subscribe("scroll-vertical", this.scrollVertical.bind(this)); - } - } - } - - rowAddingPosition(row, top){ - var rowManager = this.table.rowManager, - displayRows = rowManager.getDisplayRows(), - index; - - if(top){ - if(displayRows.length){ - index = displayRows[0]; - }else { - if(rowManager.activeRows.length){ - index = rowManager.activeRows[rowManager.activeRows.length-1]; - top = false; - } - } - }else { - if(displayRows.length){ - index = displayRows[displayRows.length - 1]; - top = displayRows.length < this.size ? false : true; - } - } - - return {index, top}; - } - - calculatePageSizes(){ - var testElRow, testElCell; - - if(this.table.options.paginationSize){ - this.size = this.table.options.paginationSize; - }else { - testElRow = document.createElement("div"); - testElRow.classList.add("tabulator-row"); - testElRow.style.visibility = "hidden"; - - testElCell = document.createElement("div"); - testElCell.classList.add("tabulator-cell"); - testElCell.innerHTML = "Page Row Test"; - - testElRow.appendChild(testElCell); - - this.table.rowManager.getTableElement().appendChild(testElRow); - - this.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight); - - this.table.rowManager.getTableElement().removeChild(testElRow); - } - - this.dispatchExternal("pageSizeChanged", this.size); - - this.generatePageSizeSelectList(); - } - - initialLoadComplete(){ - this.initialLoad = false; - } - - remotePageParams(data, config, silent, params){ - if(!this.initialLoad){ - if((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){ - this.reset(true); - } - } - - //configure request params - params.page = this.page; - - //set page size if defined - if(this.size){ - params.size = this.size; - } - - return params; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetPageToRow(row){ - if(this.table.options.pagination){ - row = this.rowManager.findRow(row); - - if(row){ - return this.setPageToRow(row); - } - } - - return Promise.reject(); - } - - userSetPageSize(size){ - if(this.table.options.pagination){ - this.setPageSize(size); - return this.setPage(1); - }else { - return false; - } - } - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - scrollVertical(top, dir){ - var element, diff, margin; - if(!dir && !this.table.dataLoader.loading){ - element = this.table.rowManager.getElement(); - diff = element.scrollHeight - element.clientHeight - top; - margin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2); - - if(diff < margin){ - this.nextPage() - .catch(() => {}); //consume the exception thrown when on the last page - } - } - } - - restOnRenderBefore(rows, renderInPosition){ - if(!renderInPosition){ - if(this.mode === "local"){ - this.reset(); - } - } - - return rows; - } - - rowsUpdated(){ - this.refreshData(true, "all"); - } - - createElements(){ - var button; - - this.element = document.createElement("span"); - this.element.classList.add("tabulator-paginator"); - - this.pagesElement = document.createElement("span"); - this.pagesElement.classList.add("tabulator-pages"); - - button = document.createElement("button"); - button.classList.add("tabulator-page"); - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - button.setAttribute("aria-label", ""); - button.setAttribute("title", ""); - - this.firstBut = button.cloneNode(true); - this.firstBut.setAttribute("data-page", "first"); - - this.prevBut = button.cloneNode(true); - this.prevBut.setAttribute("data-page", "prev"); - - this.nextBut = button.cloneNode(true); - this.nextBut.setAttribute("data-page", "next"); - - this.lastBut = button.cloneNode(true); - this.lastBut.setAttribute("data-page", "last"); - - if(this.table.options.paginationSizeSelector){ - this.pageSizeSelect = document.createElement("select"); - this.pageSizeSelect.classList.add("tabulator-page-size"); - } - } - - generatePageSizeSelectList(){ - var pageSizes = []; - - if(this.pageSizeSelect){ - - if(Array.isArray(this.table.options.paginationSizeSelector)){ - pageSizes = this.table.options.paginationSizeSelector; - this.pageSizes = pageSizes; - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes.unshift(this.size); - } - }else { - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes = []; - - for (let i = 1; i < 5; i++){ - pageSizes.push(this.size * i); - } - - this.pageSizes = pageSizes; - }else { - pageSizes = this.pageSizes; - } - } - - while(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild); - - pageSizes.forEach((item) => { - var itemEl = document.createElement("option"); - itemEl.value = item; - - if(item === true){ - this.langBind("pagination|all", function(value){ - itemEl.innerHTML = value; - }); - }else { - itemEl.innerHTML = item; - } - - - - this.pageSizeSelect.appendChild(itemEl); - }); - - this.pageSizeSelect.value = this.size; - } - } - - initializePageCounter(){ - var counter = this.table.options.paginationCounter, - pageCounter = null; - - if(counter){ - if(typeof counter === "function"){ - pageCounter = counter; - }else { - pageCounter = Page.pageCounters[counter]; - } - - if(pageCounter){ - this.pageCounter = pageCounter; - - this.pageCounterElement = document.createElement("span"); - this.pageCounterElement.classList.add("tabulator-page-counter"); - }else { - console.warn("Pagination Error - No such page counter found: ", counter); - } - } - } - - //setup pagination - initializePaginator(hidden){ - var pageSelectLabel, paginationCounterHolder; - - if(!hidden){ - //build pagination element - - //bind localizations - this.langBind("pagination|first", (value) => { - this.firstBut.innerHTML = value; - }); - - this.langBind("pagination|first_title", (value) => { - this.firstBut.setAttribute("aria-label", value); - this.firstBut.setAttribute("title", value); - }); - - this.langBind("pagination|prev", (value) => { - this.prevBut.innerHTML = value; - }); - - this.langBind("pagination|prev_title", (value) => { - this.prevBut.setAttribute("aria-label", value); - this.prevBut.setAttribute("title", value); - }); - - this.langBind("pagination|next", (value) => { - this.nextBut.innerHTML = value; - }); - - this.langBind("pagination|next_title", (value) => { - this.nextBut.setAttribute("aria-label", value); - this.nextBut.setAttribute("title", value); - }); - - this.langBind("pagination|last", (value) => { - this.lastBut.innerHTML = value; - }); - - this.langBind("pagination|last_title", (value) => { - this.lastBut.setAttribute("aria-label", value); - this.lastBut.setAttribute("title", value); - }); - - //click bindings - this.firstBut.addEventListener("click", () => { - this.setPage(1); - }); - - this.prevBut.addEventListener("click", () => { - this.previousPage(); - }); - - this.nextBut.addEventListener("click", () => { - this.nextPage(); - }); - - this.lastBut.addEventListener("click", () => { - this.setPage(this.max); - }); - - if(this.table.options.paginationElement){ - this.element = this.table.options.paginationElement; - } - - if(this.pageSizeSelect){ - pageSelectLabel = document.createElement("label"); - - this.langBind("pagination|page_size", (value) => { - this.pageSizeSelect.setAttribute("aria-label", value); - this.pageSizeSelect.setAttribute("title", value); - pageSelectLabel.innerHTML = value; - }); - - this.element.appendChild(pageSelectLabel); - this.element.appendChild(this.pageSizeSelect); - - this.pageSizeSelect.addEventListener("change", (e) => { - this.setPageSize(this.pageSizeSelect.value == "true" ? true : this.pageSizeSelect.value); - this.setPage(1); - }); - } - - //append to DOM - this.element.appendChild(this.firstBut); - this.element.appendChild(this.prevBut); - this.element.appendChild(this.pagesElement); - this.element.appendChild(this.nextBut); - this.element.appendChild(this.lastBut); - - if(!this.table.options.paginationElement){ - if(this.table.options.paginationCounter){ - - if(this.table.options.paginationCounterElement){ - if(this.table.options.paginationCounterElement instanceof HTMLElement){ - this.table.options.paginationCounterElement.appendChild(this.pageCounterElement); - }else if(typeof this.table.options.paginationCounterElement === "string"){ - paginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement); - - if(paginationCounterHolder){ - paginationCounterHolder.appendChild(this.pageCounterElement); - }else { - console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:", this.table.options.paginationCounterElement); - } - } - }else { - this.footerAppend(this.pageCounterElement); - } - - } - - this.footerAppend(this.element); - } - - this.page = this.table.options.paginationInitialPage; - this.count = this.table.options.paginationButtonCount; - } - - //set default values - this.mode = this.table.options.paginationMode; - } - - initializeProgressive(mode){ - this.initializePaginator(true); - this.mode = "progressive_" + mode; - this.progressiveLoad = true; - } - - trackChanges(){ - this.dispatch("page-changed"); - } - - //calculate maximum page from number of rows - setMaxRows(rowCount){ - if(!rowCount){ - this.max = 1; - }else { - this.max = this.size === true ? 1 : Math.ceil(rowCount/this.size); - } - - if(this.page > this.max){ - this.page = this.max; - } - } - - //reset to first page without triggering action - reset(force){ - if(!this.initialLoad){ - if(this.mode == "local" || force){ - this.page = 1; - this.trackChanges(); - } - } - } - - //set the maximum page - setMaxPage(max){ - - max = parseInt(max); - - this.max = max || 1; - - if(this.page > this.max){ - this.page = this.max; - this.trigger(); - } - } - - //set current page number - setPage(page){ - switch(page){ - case "first": - return this.setPage(1); - - case "prev": - return this.previousPage(); - - case "next": - return this.nextPage(); - - case "last": - return this.setPage(this.max); - } - - page = parseInt(page); - - if((page > 0 && page <= this.max) || this.mode !== "local"){ - this.page = page; - - this.trackChanges(); - - return this.trigger(); - }else { - console.warn("Pagination Error - Requested page is out of range of 1 - " + this.max + ":", page); - return Promise.reject(); - } - } - - setPageToRow(row){ - var rows = this.displayRows(-1); - var index = rows.indexOf(row); - - if(index > -1){ - var page = this.size === true ? 1 : Math.ceil((index + 1) / this.size); - - return this.setPage(page); - }else { - console.warn("Pagination Error - Requested row is not visible"); - return Promise.reject(); - } - } - - setPageSize(size){ - if(size !== true){ - size = parseInt(size); - } - - if(size > 0){ - this.size = size; - this.dispatchExternal("pageSizeChanged", size); - } - - if(this.pageSizeSelect){ - // this.pageSizeSelect.value = size; - this.generatePageSizeSelectList(); - } - - this.trackChanges(); - } - - _setPageCounter(totalRows, size, currentRow){ - var content; - - if(this.pageCounter){ - - if(this.mode === "remote"){ - size = this.size; - currentRow = ((this.page - 1) * this.size) + 1; - totalRows = this.remoteRowCountEstimate; - } - - content = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max); - - switch(typeof content){ - case "object": - if(content instanceof Node){ - - //clear previous cell contents - while(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild); - - this.pageCounterElement.appendChild(content); - }else { - this.pageCounterElement.innerHTML = ""; - - if(content != null){ - console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:", content); - } - } - break; - case "undefined": - this.pageCounterElement.innerHTML = ""; - break; - default: - this.pageCounterElement.innerHTML = content; - } - } - } - - //setup the pagination buttons - _setPageButtons(){ - let leftSize = Math.floor((this.count-1) / 2); - let rightSize = Math.ceil((this.count-1) / 2); - let min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1); - let max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max); - - while(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild); - - if(this.page == 1){ - this.firstBut.disabled = true; - this.prevBut.disabled = true; - }else { - this.firstBut.disabled = false; - this.prevBut.disabled = false; - } - - if(this.page == this.max){ - this.lastBut.disabled = true; - this.nextBut.disabled = true; - }else { - this.lastBut.disabled = false; - this.nextBut.disabled = false; - } - - for(let i = min; i <= max; i++){ - if(i>0 && i <= this.max){ - this.pagesElement.appendChild(this._generatePageButton(i)); - } - } - - this.footerRedraw(); - } - - _generatePageButton(page){ - var button = document.createElement("button"); - - button.classList.add("tabulator-page"); - if(page == this.page){ - button.classList.add("active"); - } - - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - - this.langBind("pagination|page_title", (value) => { - button.setAttribute("aria-label", value + " " + page); - button.setAttribute("title", value + " " + page); - }); - - button.setAttribute("data-page", page); - button.textContent = page; - - button.addEventListener("click", (e) => { - this.setPage(page); - }); - - return button; - } - - //previous page - previousPage(){ - if(this.page > 1){ - this.page--; - - this.trackChanges(); - - return this.trigger(); - - }else { - console.warn("Pagination Error - Previous page would be less than page 1:", 0); - return Promise.reject(); - } - } - - //next page - nextPage(){ - if(this.page < this.max){ - this.page++; - - this.trackChanges(); - - return this.trigger(); - - }else { - if(!this.progressiveLoad){ - console.warn("Pagination Error - Next page would be greater than maximum page of " + this.max + ":", this.max + 1); - } - return Promise.reject(); - } - } - - //return current page number - getPage(){ - return this.page; - } - - //return max page number - getPageMax(){ - return this.max; - } - - getPageSize(size){ - return this.size; - } - - getMode(){ - return this.mode; - } - - //return appropriate rows for current page - getRows(data){ - var actualRowPageSize = 0, - output, start, end, actualStartRow; - - var actualRows = data.filter((row) => { - return row.type === "row"; - }); - - if(this.mode == "local"){ - output = []; - - this.setMaxRows(data.length); - - if(this.size === true){ - start = 0; - end = data.length; - }else { - start = this.size * (this.page - 1); - end = start + parseInt(this.size); - } - - this._setPageButtons(); - - for(let i = start; i < end; i++){ - let row = data[i]; - - if(row){ - output.push(row); - - if(row.type === "row"){ - if(!actualStartRow){ - actualStartRow = row; - } - - actualRowPageSize++; - } - } - } - - this._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0); - - return output; - }else { - this._setPageButtons(); - this._setPageCounter(actualRows.length); - - return data.slice(0); - } - } - - trigger(){ - var left; - - switch(this.mode){ - case "local": - left = this.table.rowManager.scrollLeft; - - this.refreshData(); - this.table.rowManager.scrollHorizontal(left); - - this.dispatchExternal("pageLoaded", this.getPage()); - - return Promise.resolve(); - - case "remote": - this.dataChanging = true; - return this.reloadData(null) - .finally(() => { - this.dataChanging = false; - }); - - case "progressive_load": - case "progressive_scroll": - return this.reloadData(null, true); - - default: - console.warn("Pagination Error - no such pagination mode:", this.mode); - return Promise.reject(); - } - } - - _parseRemoteData(data){ - var margin; - - if(typeof data.last_page === "undefined"){ - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").last_page || "last_page") + "' property"); - } - - if(data.data){ - this.max = parseInt(data.last_page) || 1; - - this.remoteRowCountEstimate = typeof data.last_row !== "undefined" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0)); - - if(this.progressiveLoad){ - switch(this.mode){ - case "progressive_load": - - if(this.page == 1){ - this.table.rowManager.setData(data.data, false, this.page == 1); - }else { - this.table.rowManager.addRows(data.data); - } - - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }, this.table.options.progressiveLoadDelay); - } - break; - - case "progressive_scroll": - data = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data); - - this.table.rowManager.setData(data, this.page !== 1, this.page == 1); - - margin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2); - - if(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){ - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }); - } - } - break; - } - - return false; - }else { - // left = this.table.rowManager.scrollLeft; - this.dispatchExternal("pageLoaded", this.getPage()); - // this.table.rowManager.scrollHorizontal(left); - // this.table.columnManager.scrollHorizontal(left); - } - - }else { - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").data || "data") + "' property"); - } - - return data.data; - } - - //handle the footer element being redrawn - footerRedraw(){ - var footer = this.table.footerManager.containerElement; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - }else { - this.pagesElement.style.display = ''; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - } - } - } - } - - Page.moduleName = "page"; - - //load defaults - Page.pageCounters = defaultPageCounters; - - // read persistance information from storage - var defaultReaders = { - local:function(id, type){ - var data = localStorage.getItem(id + "-" + type); - - return data ? JSON.parse(data) : false; - }, - cookie:function(id, type){ - var cookie = document.cookie, - key = id + "-" + type, - cookiePos = cookie.indexOf(key + "="), - end, data; - - //if cookie exists, decode and load column data into tabulator - if(cookiePos > -1){ - cookie = cookie.slice(cookiePos); - - end = cookie.indexOf(";"); - - if(end > -1){ - cookie = cookie.slice(0, end); - } - - data = cookie.replace(key + "=", ""); - } - - return data ? JSON.parse(data) : false; - } - }; - - //write persistence information to storage - var defaultWriters = { - local:function(id, type, data){ - localStorage.setItem(id + "-" + type, JSON.stringify(data)); - }, - cookie:function(id, type, data){ - var expireDate = new Date(); - - expireDate.setDate(expireDate.getDate() + 10000); - - document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString(); - } - }; - - class Persistence extends Module{ - - constructor(table){ - super(table); - - this.mode = ""; - this.id = ""; - // this.persistProps = ["field", "width", "visible"]; - this.defWatcherBlock = false; - this.config = {}; - this.readFunc = false; - this.writeFunc = false; - - this.registerTableOption("persistence", false); - this.registerTableOption("persistenceID", ""); //key for persistent storage - this.registerTableOption("persistenceMode", true); //mode for storing persistence information - this.registerTableOption("persistenceReaderFunc", false); //function for handling persistence data reading - this.registerTableOption("persistenceWriterFunc", false); //function for handling persistence data writing - } - - // Test for whether localStorage is available for use. - localStorageTest() { - var testKey = "_tabulator_test"; - - try { - window.localStorage.setItem( testKey, testKey); - window.localStorage.removeItem( testKey ); - return true; - } catch(e) { - return false; - } - } - - //setup parameters - initialize(){ - if(this.table.options.persistence){ - //determine persistent layout storage type - var mode = this.table.options.persistenceMode, - id = this.table.options.persistenceID, - retrievedData; - - this.mode = mode !== true ? mode : (this.localStorageTest() ? "local" : "cookie"); - - if(this.table.options.persistenceReaderFunc){ - if(typeof this.table.options.persistenceReaderFunc === "function"){ - this.readFunc = this.table.options.persistenceReaderFunc; - }else { - if(Persistence.readers[this.table.options.persistenceReaderFunc]){ - this.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc); - } - } - }else { - if(Persistence.readers[this.mode]){ - this.readFunc = Persistence.readers[this.mode]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.mode); - } - } - - if(this.table.options.persistenceWriterFunc){ - if(typeof this.table.options.persistenceWriterFunc === "function"){ - this.writeFunc = this.table.options.persistenceWriterFunc; - }else { - if(Persistence.writers[this.table.options.persistenceWriterFunc]){ - this.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc]; - }else { - console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc); - } - } - }else { - if(Persistence.writers[this.mode]){ - this.writeFunc = Persistence.writers[this.mode]; - }else { - console.warn("Persistence Write Error - invalid writer set", this.mode); - } - } - - //set storage tag - this.id = "tabulator-" + (id || (this.table.element.getAttribute("id") || "")); - - this.config = { - sort:this.table.options.persistence === true || this.table.options.persistence.sort, - filter:this.table.options.persistence === true || this.table.options.persistence.filter, - headerFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter, - group:this.table.options.persistence === true || this.table.options.persistence.group, - page:this.table.options.persistence === true || this.table.options.persistence.page, - columns:this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns, - }; - - //load pagination data if needed - if(this.config.page){ - retrievedData = this.retrieveData("page"); - - if(retrievedData){ - if(typeof retrievedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)){ - this.table.options.paginationSize = retrievedData.paginationSize; - } - - if(typeof retrievedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)){ - this.table.options.paginationInitialPage = retrievedData.paginationInitialPage; - } - } - } - - //load group data if needed - if(this.config.group){ - retrievedData = this.retrieveData("group"); - - if(retrievedData){ - if(typeof retrievedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)){ - this.table.options.groupBy = retrievedData.groupBy; - } - if(typeof retrievedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)){ - this.table.options.groupStartOpen = retrievedData.groupStartOpen; - } - if(typeof retrievedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)){ - this.table.options.groupHeader = retrievedData.groupHeader; - } - } - } - - if(this.config.columns){ - this.table.options.columns = this.load("columns", this.table.options.columns); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.save.bind(this, "columns")); - this.subscribe("column-hide", this.save.bind(this, "columns")); - this.subscribe("column-moved", this.save.bind(this, "columns")); - } - - this.subscribe("table-built", this.tableBuilt.bind(this), 0); - - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - - this.subscribe("filter-changed", this.eventSave.bind(this, "filter")); - this.subscribe("filter-changed", this.eventSave.bind(this, "headerFilter")); - this.subscribe("sort-changed", this.eventSave.bind(this, "sort")); - this.subscribe("group-changed", this.eventSave.bind(this, "group")); - this.subscribe("page-changed", this.eventSave.bind(this, "page")); - this.subscribe("column-resized", this.eventSave.bind(this, "columns")); - this.subscribe("column-width", this.eventSave.bind(this, "columns")); - this.subscribe("layout-refreshed", this.eventSave.bind(this, "columns")); - } - - this.registerTableFunction("getColumnLayout", this.getColumnLayout.bind(this)); - this.registerTableFunction("setColumnLayout", this.setColumnLayout.bind(this)); - } - - eventSave(type){ - if(this.config[type]){ - this.save(type); - } - } - - tableBuilt(){ - var sorters, filters, headerFilters; - - if(this.config.sort){ - sorters = this.load("sort"); - - if(!sorters === false){ - this.table.options.initialSort = sorters; - } - } - - if(this.config.filter){ - filters = this.load("filter"); - - if(!filters === false){ - this.table.options.initialFilter = filters; - } - } - if(this.config.headerFilter){ - headerFilters = this.load("headerFilter"); - - if(!headerFilters === false){ - this.table.options.initialHeaderFilter = headerFilters; - } - } - - } - - tableRedraw(force){ - if(force && this.config.columns){ - this.save("columns"); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - getColumnLayout(){ - return this.parseColumns(this.table.columnManager.getColumns()); - } - - setColumnLayout(layout){ - this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout)); - return true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumn(column){ - var def, keys; - - if(this.config.columns){ - this.defWatcherBlock = true; - - def = column.getDefinition(); - - keys = this.config.columns === true ? Object.keys(def) : this.config.columns; - - keys.forEach((key)=>{ - var props = Object.getOwnPropertyDescriptor(def, key); - var value = def[key]; - - if(props){ - Object.defineProperty(def, key, { - set: (newValue) => { - value = newValue; - - if(!this.defWatcherBlock){ - this.save("columns"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - if(props.get){ - props.get(); - } - return value; - } - }); - } - }); - - this.defWatcherBlock = false; - } - } - - //load saved definitions - load(type, current){ - var data = this.retrieveData(type); - - if(current){ - data = data ? this.mergeDefinition(current, data) : current; - } - - return data; - } - - //retrieve data from memory - retrieveData(type){ - return this.readFunc ? this.readFunc(this.id, type) : false; - } - - //merge old and new column definitions - mergeDefinition(oldCols, newCols){ - var output = []; - - newCols = newCols || []; - - newCols.forEach((column, to) => { - var from = this._findColumn(oldCols, column), - keys; - - if(from){ - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(from); - keys.push("width"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - if(key !== "columns" && typeof column[key] !== "undefined"){ - from[key] = column[key]; - } - }); - - if(from.columns){ - from.columns = this.mergeDefinition(from.columns, column.columns); - } - - output.push(from); - } - }); - - oldCols.forEach((column, i) => { - var from = this._findColumn(newCols, column); - - if (!from) { - if(output.length>i){ - output.splice(i, 0, column); - }else { - output.push(column); - } - } - }); - - return output; - } - - //find matching columns - _findColumn(columns, subject){ - var type = subject.columns ? "group" : (subject.field ? "field" : "object"); - - return columns.find(function(col){ - switch(type){ - case "group": - return col.title === subject.title && col.columns.length === subject.columns.length; - - case "field": - return col.field === subject.field; - - case "object": - return col === subject; - } - }); - } - - //save data - save(type){ - var data = {}; - - switch(type){ - case "columns": - data = this.parseColumns(this.table.columnManager.getColumns()); - break; - - case "filter": - data = this.table.modules.filter.getFilters(); - break; - - case "headerFilter": - data = this.table.modules.filter.getHeaderFilters(); - break; - - case "sort": - data = this.validateSorters(this.table.modules.sort.getSort()); - break; - - case "group": - data = this.getGroupConfig(); - break; - - case "page": - data = this.getPageConfig(); - break; - } - - if(this.writeFunc){ - this.writeFunc(this.id, type, data); - } - - } - - //ensure sorters contain no function data - validateSorters(data){ - data.forEach(function(item){ - item.column = item.field; - delete item.field; - }); - - return data; - } - - getGroupConfig(){ - var data = {}; - - if(this.config.group){ - if(this.config.group === true || this.config.group.groupBy){ - data.groupBy = this.table.options.groupBy; - } - - if(this.config.group === true || this.config.group.groupStartOpen){ - data.groupStartOpen = this.table.options.groupStartOpen; - } - - if(this.config.group === true || this.config.group.groupHeader){ - data.groupHeader = this.table.options.groupHeader; - } - } - - return data; - } - - getPageConfig(){ - var data = {}; - - if(this.config.page){ - if(this.config.page === true || this.config.page.size){ - data.paginationSize = this.table.modules.page.getPageSize(); - } - - if(this.config.page === true || this.config.page.page){ - data.paginationInitialPage = this.table.modules.page.getPage(); - } - } - - return data; - } - - - //parse columns for data to store - parseColumns(columns){ - var definitions = [], - excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; - - columns.forEach((column) => { - var defStore = {}, - colDef = column.getDefinition(), - keys; - - if(column.isGroup){ - defStore.title = colDef.title; - defStore.columns = this.parseColumns(column.getColumns()); - }else { - defStore.field = column.getField(); - - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(colDef); - keys.push("width"); - keys.push("visible"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - switch(key){ - case "width": - defStore.width = column.getWidth(); - break; - case "visible": - defStore.visible = column.visible; - break; - - default: - if(typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1){ - defStore[key] = colDef[key]; - } - } - }); - } - - definitions.push(defStore); - }); - - return definitions; - } - } - - Persistence.moduleName = "persistence"; - - Persistence.moduleInitOrder = -10; - - //load defaults - Persistence.readers = defaultReaders; - Persistence.writers = defaultWriters; - - class Popup$1 extends Module{ - - constructor(table){ - super(table); - - this.columnSubscribers = {}; - - this.registerTableOption("rowContextPopup", false); - this.registerTableOption("rowClickPopup", false); - this.registerTableOption("rowDblClickPopup", false); - this.registerTableOption("groupContextPopup", false); - this.registerTableOption("groupClickPopup", false); - this.registerTableOption("groupDblClickPopup", false); - - this.registerColumnOption("headerContextPopup"); - this.registerColumnOption("headerClickPopup"); - this.registerColumnOption("headerDblClickPopup"); - this.registerColumnOption("headerPopup"); - this.registerColumnOption("headerPopupIcon"); - this.registerColumnOption("contextPopup"); - this.registerColumnOption("clickPopup"); - this.registerColumnOption("dblClickPopup"); - - this.registerComponentFunction("cell", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("column", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("row", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("group", "popup", this._componentPopupCall.bind(this)); - - } - - initialize(){ - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - _componentPopupCall(component, contents, position){ - this.loadPopupEvent(contents, null, component, position); - } - - initializeRowWatchers(){ - if(this.table.options.rowContextPopup){ - this.subscribe("row-contextmenu", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - this.table.on("rowTapHold", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - } - - if(this.table.options.rowClickPopup){ - this.subscribe("row-click", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup)); - } - - if(this.table.options.rowDblClickPopup){ - this.subscribe("row-dblclick", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextPopup){ - this.subscribe("group-contextmenu", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - this.table.on("groupTapHold", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - } - - if(this.table.options.groupClickPopup){ - this.subscribe("group-click", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup)); - } - - if(this.table.options.groupDblClickPopup){ - this.subscribe("group-dblclick", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){ - this.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, "headerContextPopup"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextPopup); - this.table.on("headerTapHold", this.loadPopupTableColumnEvent.bind(this, "headerContextPopup")); - } - - if(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){ - this.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerClickPopup"); - this.subscribe("column-click", this.columnSubscribers.headerClickPopup); - - - }if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){ - this.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerDblClickPopup"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickPopup); - } - - if(def.headerPopup){ - this.initializeColumnHeaderPopup(column); - } - - //handle cell events - if(def.contextPopup && !this.columnSubscribers.contextPopup){ - this.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, "contextPopup"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextPopup); - this.table.on("cellTapHold", this.loadPopupTableCellEvent.bind(this, "contextPopup")); - } - - if(def.clickPopup && !this.columnSubscribers.clickPopup){ - this.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, "clickPopup"); - this.subscribe("cell-click", this.columnSubscribers.clickPopup); - } - - if(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){ - this.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, "dblClickPopup"); - this.subscribe("cell-click", this.columnSubscribers.dblClickPopup); - } - } - - initializeColumnHeaderPopup(column){ - var icon = column.definition.headerPopupIcon, - headerPopupEl; - - headerPopupEl = document.createElement("span"); - headerPopupEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerPopupEl.appendChild(icon); - }else { - headerPopupEl.innerHTML = icon; - } - }else { - headerPopupEl.innerHTML = "⋮"; - } - - headerPopupEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadPopupEvent(column.definition.headerPopup, e, column); - }); - - column.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild); - } - - loadPopupTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadPopupEvent(cell.column.definition[option], e, cell); - } - } - - loadPopupTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadPopupEvent(column.definition[option], e, column); - } - } - - loadPopupEvent(contents, e, component, position){ - var renderedCallback; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - contents = typeof contents == "function" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents; - - this.loadPopup(e, component, contents, renderedCallback, position); - } - - loadPopup(e, component, contents, renderedCallback, position){ - var touch = !(e instanceof MouseEvent), - contentsEl, popup; - - if(contents instanceof HTMLElement){ - contentsEl = contents; - }else { - contentsEl = document.createElement("div"); - contentsEl.innerHTML = contents; - } - - contentsEl.classList.add("tabulator-popup"); - - contentsEl.addEventListener("click", (e) =>{ - e.stopPropagation(); - }); - - if(!touch){ - e.preventDefault(); - } - - popup = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - popup.renderCallback(renderedCallback); - } - - if(e){ - popup.show(e); - }else { - popup.show(component.getElement(), position || "center"); - } - - - popup.hideOnBlur(() => { - this.dispatchExternal("popupClosed", component.getComponent()); - }); - - - - this.dispatchExternal("popupOpened", component.getComponent()); - } - } - - Popup$1.moduleName = "popup"; - - class Print extends Module{ - - constructor(table){ - super(table); - - this.element = false; - this.manualBlock = false; - this.beforeprintEventHandler = null; - this.afterprintEventHandler = null; - - this.registerTableOption("printAsHtml", false); //enable print as html - this.registerTableOption("printFormatter", false); //printing page formatter - this.registerTableOption("printHeader", false); //page header contents - this.registerTableOption("printFooter", false); //page footer contents - this.registerTableOption("printStyled", true); //enable print as html styling - this.registerTableOption("printRowRange", "visible"); //restrict print to visible rows only - this.registerTableOption("printConfig", {}); //print config options - - this.registerColumnOption("print"); - this.registerColumnOption("titlePrint"); - } - - initialize(){ - if(this.table.options.printAsHtml){ - this.beforeprintEventHandler = this.replaceTable.bind(this); - this.afterprintEventHandler = this.cleanup.bind(this); - - window.addEventListener("beforeprint", this.beforeprintEventHandler ); - window.addEventListener("afterprint", this.afterprintEventHandler); - this.subscribe("table-destroy", this.destroy.bind(this)); - } - - this.registerTableFunction("print", this.printFullscreen.bind(this)); - } - - destroy(){ - if(this.table.options.printAsHtml){ - window.removeEventListener( "beforeprint", this.beforeprintEventHandler ); - window.removeEventListener( "afterprint", this.afterprintEventHandler ); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - replaceTable(){ - if(!this.manualBlock){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-table"); - - this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print")); - - this.table.element.style.display = "none"; - - this.table.element.parentNode.insertBefore(this.element, this.table.element); - } - } - - cleanup(){ - document.body.classList.remove("tabulator-print-fullscreen-hide"); - - if(this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - this.table.element.style.display = ""; - } - } - - printFullscreen(visible, style, config){ - var scrollX = window.scrollX, - scrollY = window.scrollY, - headerEl = document.createElement("div"), - footerEl = document.createElement("div"), - tableEl = this.table.modules.export.generateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, "print"), - headerContent, footerContent; - - this.manualBlock = true; - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-fullscreen"); - - if(this.table.options.printHeader){ - headerEl.classList.add("tabulator-print-header"); - - headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader; - - if(typeof headerContent == "string"){ - headerEl.innerHTML = headerContent; - }else { - headerEl.appendChild(headerContent); - } - - this.element.appendChild(headerEl); - } - - this.element.appendChild(tableEl); - - if(this.table.options.printFooter){ - footerEl.classList.add("tabulator-print-footer"); - - footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter; - - - if(typeof footerContent == "string"){ - footerEl.innerHTML = footerContent; - }else { - footerEl.appendChild(footerContent); - } - - this.element.appendChild(footerEl); - } - - document.body.classList.add("tabulator-print-fullscreen-hide"); - document.body.appendChild(this.element); - - if(this.table.options.printFormatter){ - this.table.options.printFormatter(this.element, tableEl); - } - - window.print(); - - this.cleanup(); - - window.scrollTo(scrollX, scrollY); - - this.manualBlock = false; - } - } - - Print.moduleName = "print"; - - class ReactiveData extends Module{ - - constructor(table){ - super(table); - - this.data = false; - this.blocked = false; //block reactivity while performing update - this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with - this.currentVersion = 0; - - this.registerTableOption("reactiveData", false); //enable data reactivity - } - - initialize(){ - if(this.table.options.reactiveData){ - this.subscribe("cell-value-save-before", this.block.bind(this, "cellsave")); - this.subscribe("cell-value-save-after", this.unblock.bind(this, "cellsave")); - this.subscribe("row-data-save-before", this.block.bind(this, "rowsave")); - this.subscribe("row-data-save-after", this.unblock.bind(this, "rowsave")); - this.subscribe("row-data-init-after", this.watchRow.bind(this)); - this.subscribe("data-processing", this.watchData.bind(this)); - this.subscribe("table-destroy", this.unwatchData.bind(this)); - } - } - - watchData(data){ - var self = this, - version; - - this.currentVersion ++; - - version = this.currentVersion; - - this.unwatchData(); - - this.data = data; - - //override array push function - this.origFuncs.push = data.push; - - Object.defineProperty(this.data, "push", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-push"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, false); - }); - - result = self.origFuncs.push.apply(data, arguments); - - self.unblock("data-push"); - } - - return result; - } - }); - - //override array unshift function - this.origFuncs.unshift = data.unshift; - - Object.defineProperty(this.data, "unshift", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-unshift"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, true); - }); - - result = self.origFuncs.unshift.apply(data, arguments); - - self.unblock("data-unshift"); - } - - return result; - } - }); - - - //override array shift function - this.origFuncs.shift = data.shift; - - Object.defineProperty(this.data, "shift", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-shift"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[0]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.shift.call(data); - - self.unblock("data-shift"); - } - - return result; - } - }); - - //override array pop function - this.origFuncs.pop = data.pop; - - Object.defineProperty(this.data, "pop", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-pop"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.pop.call(data); - - self.unblock("data-pop"); - } - - return result; - } - }); - - - //override array splice function - this.origFuncs.splice = data.splice; - - Object.defineProperty(this.data, "splice", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - start = args[0] < 0 ? data.length + args[0] : args[0], - end = args[1], - newRows = args[2] ? args.slice(2) : false, - startRow, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-splice"); - //add new rows - if(newRows){ - startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false; - - if(startRow){ - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, startRow, true); - }); - }else { - newRows = newRows.slice().reverse(); - - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, false, true); - }); - } - } - - //delete removed rows - if(end !== 0){ - var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end); - - oldRows.forEach((rowData, i) => { - var row = self.table.rowManager.getRowFromDataObject(rowData); - - if(row){ - row.deleteActual(i !== oldRows.length - 1); - } - }); - } - - if(newRows || end !== 0){ - self.table.rowManager.reRenderInPosition(); - } - - result = self.origFuncs.splice.apply(data, arguments); - - self.unblock("data-splice"); - } - - return result ; - } - }); - } - - unwatchData(){ - if(this.data !== false){ - for(var key in this.origFuncs){ - Object.defineProperty(this.data, key, { - enumerable: true, - configurable:true, - writable:true, - value: this.origFuncs.key, - }); - } - } - } - - watchRow(row){ - var data = row.getData(); - - for(var key in data){ - this.watchKey(row, data, key); - } - - if(this.table.options.dataTree){ - this.watchTreeChildren(row); - } - } - - watchTreeChildren (row){ - var self = this, - childField = row.getData()[this.table.options.dataTreeChildField], - origFuncs = {}; - - if(childField){ - - origFuncs.push = childField.push; - - Object.defineProperty(childField, "push", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-push"); - - var result = origFuncs.push.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-push"); - } - - return result; - } - }); - - origFuncs.unshift = childField.unshift; - - Object.defineProperty(childField, "unshift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-unshift"); - - var result = origFuncs.unshift.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-unshift"); - } - - return result; - } - }); - - origFuncs.shift = childField.shift; - - Object.defineProperty(childField, "shift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-shift"); - - var result = origFuncs.shift.call(childField); - this.rebuildTree(row); - - self.unblock("tree-shift"); - } - - return result; - } - }); - - origFuncs.pop = childField.pop; - - Object.defineProperty(childField, "pop", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-pop"); - - var result = origFuncs.pop.call(childField); - this.rebuildTree(row); - - self.unblock("tree-pop"); - } - - return result; - } - }); - - origFuncs.splice = childField.splice; - - Object.defineProperty(childField, "splice", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-splice"); - - var result = origFuncs.splice.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-splice"); - } - - return result; - } - }); - } - } - - rebuildTree(row){ - this.table.modules.dataTree.initializeRow(row); - this.table.modules.dataTree.layoutRow(row); - this.table.rowManager.refreshActiveData("tree", false, true); - } - - watchKey(row, data, key){ - var self = this, - props = Object.getOwnPropertyDescriptor(data, key), - value = data[key], - version = this.currentVersion; - - Object.defineProperty(data, key, { - set: (newValue) => { - value = newValue; - if(!self.blocked && version === self.currentVersion){ - self.block("key"); - - var update = {}; - update[key] = newValue; - row.updateData(update); - - self.unblock("key"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - - if(props.get){ - props.get(); - } - - return value; - } - }); - } - - unwatchRow(row){ - var data = row.getData(); - - for(var key in data){ - Object.defineProperty(data, key, { - value:data[key], - }); - } - } - - block(key){ - if(!this.blocked){ - this.blocked = key; - } - } - - unblock(key){ - if(this.blocked === key){ - this.blocked = false; - } - } - } - - ReactiveData.moduleName = "reactiveData"; - - class ResizeColumns extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startX = false; - this.startWidth = false; - this.latestX = false; - this.handle = null; - this.initialNextColumn = null; - this.nextColumn = null; - - this.initialized = false; - this.registerColumnOption("resizable", true); - this.registerTableOption("resizableColumnFit", false); - } - - initialize(){ - this.subscribe("column-rendered", this.layoutColumnHeader.bind(this)); - } - - initializeEventWatchers(){ - if(!this.initialized){ - - this.subscribe("cell-rendered", this.layoutCellHandles.bind(this)); - this.subscribe("cell-delete", this.deInitializeComponent.bind(this)); - - this.subscribe("cell-height", this.resizeHandle.bind(this)); - this.subscribe("column-moved", this.columnLayoutUpdated.bind(this)); - - this.subscribe("column-hide", this.deInitializeColumn.bind(this)); - this.subscribe("column-show", this.columnLayoutUpdated.bind(this)); - this.subscribe("column-width", this.columnWidthUpdated.bind(this)); - - this.subscribe("column-delete", this.deInitializeComponent.bind(this)); - this.subscribe("column-height", this.resizeHandle.bind(this)); - - this.initialized = true; - } - } - - - layoutCellHandles(cell){ - if(cell.row.type === "row"){ - this.deInitializeComponent(cell); - this.initializeColumn("cell", cell, cell.column, cell.element); - } - } - - layoutColumnHeader(column){ - if(column.definition.resizable){ - this.initializeEventWatchers(); - this.deInitializeComponent(column); - this.initializeColumn("header", column, column, column.element); - } - } - - columnLayoutUpdated(column){ - var prev = column.prevColumn(); - - this.reinitializeColumn(column); - - if(prev){ - this.reinitializeColumn(prev); - } - } - - columnWidthUpdated(column){ - if(column.modules.frozen){ - if(this.table.modules.frozenColumns.leftColumns.includes(column)){ - this.table.modules.frozenColumns.leftColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - }else if(this.table.modules.frozenColumns.rightColumns.includes(column)){ - this.table.modules.frozenColumns.rightColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - } - } - } - - frozenColumnOffset(column){ - var offset = false; - - if(column.modules.frozen){ - offset = column.modules.frozen.marginValue; - - if(column.modules.frozen.position === "left"){ - offset += column.getWidth() - 3; - }else { - if(offset){ - offset -= 3; - } - } - } - - return offset !== false ? offset + "px" : false; - } - - reinitializeColumn(column){ - var frozenOffset = this.frozenColumnOffset(column); - - column.cells.forEach((cell) => { - if(cell.modules.resize && cell.modules.resize.handleEl){ - if(frozenOffset){ - cell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - cell.modules.resize.handleEl.style["z-index"] = 11; - } - - cell.element.after(cell.modules.resize.handleEl); - } - }); - - if(column.modules.resize && column.modules.resize.handleEl){ - if(frozenOffset){ - column.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - } - - column.element.after(column.modules.resize.handleEl); - } - } - - initializeColumn(type, component, column, element){ - var self = this, - variableHeight = false, - mode = column.definition.resizable, - config = {}, - nearestColumn = column.getLastColumn(); - - //set column resize mode - if(type === "header"){ - variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - config = {variableHeight:variableHeight}; - } - - if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - - var handle = document.createElement('span'); - handle.className = "tabulator-col-resize-handle"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startColumn = column; - self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); - self._mouseDown(e, nearestColumn, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - //resize column on double click - handle.addEventListener("dblclick", (e) => { - var oldWidth = nearestColumn.getWidth(); - - e.stopPropagation(); - nearestColumn.reinitializeWidth(true); - - if(oldWidth !== nearestColumn.getWidth()){ - self.dispatch("column-resized", nearestColumn); - self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); - } - }); - - if(column.modules.frozen){ - handle.style.position = "sticky"; - handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column); - } - - config.handleEl = handle; - - if(element.parentNode && column.visible){ - element.after(handle); - } - } - - component.modules.resize = config; - } - - deInitializeColumn(column){ - this.deInitializeComponent(column); - - column.cells.forEach((cell) => { - this.deInitializeComponent(cell); - }); - } - - deInitializeComponent(component){ - var handleEl; - - if(component.modules.resize){ - handleEl = component.modules.resize.handleEl; - - if(handleEl && handleEl.parentElement){ - handleEl.parentElement.removeChild(handleEl); - } - } - } - - resizeHandle(component, height){ - if(component.modules.resize && component.modules.resize.handleEl){ - component.modules.resize.handleEl.style.height = height; - } - } - - _checkResizability(column){ - return column.definition.resizable; - } - - _mouseDown(e, column, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - var x = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX, - startDiff = x - self.startX, - moveDiff = x - self.latestX, - blockedBefore, blockedAfter; - - self.latestX = x; - - if(self.table.rtl){ - startDiff = -startDiff; - moveDiff = -moveDiff; - } - - blockedBefore = column.width == column.minWidth || column.width == column.maxWidth; - - column.setWidth(self.startWidth + startDiff); - - blockedAfter = column.width == column.minWidth || column.width == column.maxWidth; - - if(moveDiff < 0){ - self.nextColumn = self.initialNextColumn; - } - - if(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){ - let colWidth = self.nextColumn.getWidth(); - - if(moveDiff > 0){ - if(colWidth <= self.nextColumn.minWidth){ - self.nextColumn = self.nextColumn.nextColumn(); - } - } - - if(self.nextColumn){ - self.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff); - } - } - - self.table.columnManager.rerenderColumns(true); - - if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - } - - function mouseUp(e){ - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = false; - } - - if(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - - document.body.removeEventListener("mouseup", mouseUp); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - if(self.startWidth !== column.getWidth()){ - self.table.columnManager.verticalAlignHeaders(); - - self.dispatch("column-resized", column); - self.table.externalEvents.dispatch("columnResized", column.getComponent()); - } - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = true; - } - - self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX; - self.latestX = self.startX; - self.startWidth = column.getWidth(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } - } - - ResizeColumns.moduleName = "resizeColumns"; - - class ResizeRows extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startY = false; - this.startHeight = false; - this.handle = null; - this.prevHandle = null; - - this.registerTableOption("resizableRows", false); //resizable rows - } - - initialize(){ - if(this.table.options.resizableRows){ - this.subscribe("row-layout-after", this.initializeRow.bind(this)); - } - } - - initializeRow(row){ - var self = this, - rowEl = row.getElement(); - - var handle = document.createElement('div'); - handle.className = "tabulator-row-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-row-resize-handle prev"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startRow = row; - self._mouseDown(e, row, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - prevHandle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var prevRow = self.table.rowManager.prevDisplayRow(row); - - if(prevRow){ - self.startRow = prevRow; - self._mouseDown(e, prevRow, prevHandle); - } - }; - - prevHandle.addEventListener("mousedown",prevHandleDown); - prevHandle.addEventListener("touchstart",prevHandleDown, {passive: true}); - - rowEl.appendChild(handle); - rowEl.appendChild(prevHandle); - } - - _mouseDown(e, row, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY)); - } - - function mouseUp(e){ - - // //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = false; - // } - - document.body.removeEventListener("mouseup", mouseMove); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - self.dispatchExternal("rowResized", row.getComponent()); - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = true; - // } - - self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY; - self.startHeight = row.getHeight(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } - } - - ResizeRows.moduleName = "resizeRows"; - - class ResizeTable extends Module{ - - constructor(table){ - super(table); - - this.binding = false; - this.visibilityObserver = false; - this.resizeObserver = false; - this.containerObserver = false; - - this.tableHeight = 0; - this.tableWidth = 0; - this.containerHeight = 0; - this.containerWidth = 0; - - this.autoResize = false; - - this.visible = false; - - this.initialized = false; - this.initialRedraw = false; - - this.registerTableOption("autoResize", true); //auto resize table - } - - initialize(){ - if(this.table.options.autoResize){ - var table = this.table, - tableStyle; - - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - if(typeof IntersectionObserver !== "undefined" && typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual"){ - - this.initializeVisibilityObserver(); - - this.autoResize = true; - - this.resizeObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){ - this.tableHeight = nodeHeight; - this.tableWidth = nodeWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - this.redrawTable(); - } - } - }); - - this.resizeObserver.observe(table.element); - - tableStyle = window.getComputedStyle(table.element); - - if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){ - - this.containerObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){ - this.containerHeight = nodeHeight; - this.containerWidth = nodeWidth; - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - } - - this.redrawTable(); - } - }); - - this.containerObserver.observe(this.table.element.parentNode); - } - - this.subscribe("table-resize", this.tableResized.bind(this)); - - }else { - this.binding = function(){ - if(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){ - table.columnManager.rerenderColumns(true); - table.redraw(); - } - }; - - window.addEventListener("resize", this.binding); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - } - - initializeVisibilityObserver(){ - this.visibilityObserver = new IntersectionObserver((entries) => { - this.visible = entries[0].isIntersecting; - - if(!this.initialized){ - this.initialized = true; - this.initialRedraw = !this.visible; - }else { - if(this.visible){ - this.redrawTable(this.initialRedraw); - this.initialRedraw = false; - } - } - }); - - this.visibilityObserver.observe(this.table.element); - } - - redrawTable(force){ - if(this.initialized && this.visible){ - this.table.columnManager.rerenderColumns(true); - this.table.redraw(force); - } - } - - tableResized(){ - this.table.rowManager.redraw(); - } - - clearBindings(){ - if(this.binding){ - window.removeEventListener("resize", this.binding); - } - - if(this.resizeObserver){ - this.resizeObserver.unobserve(this.table.element); - } - - if(this.visibilityObserver){ - this.visibilityObserver.unobserve(this.table.element); - } - - if(this.containerObserver){ - this.containerObserver.unobserve(this.table.element.parentNode); - } - } - } - - ResizeTable.moduleName = "resizeTable"; - - class ResponsiveLayout extends Module{ - - constructor(table){ - super(table); - - this.columns = []; - this.hiddenColumns = []; - this.mode = ""; - this.index = 0; - this.collapseFormatter = []; - this.collapseStartOpen = true; - this.collapseHandleColumn = false; - - this.registerTableOption("responsiveLayout", false); //responsive layout flags - this.registerTableOption("responsiveLayoutCollapseStartOpen", true); //start showing collapsed data - this.registerTableOption("responsiveLayoutCollapseUseFormatters", true); //responsive layout collapse formatter - this.registerTableOption("responsiveLayoutCollapseFormatter", false); //responsive layout collapse formatter - - this.registerColumnOption("responsive"); - } - - //generate responsive columns list - initialize(){ - if(this.table.options.responsiveLayout){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.updateColumnVisibility.bind(this)); - this.subscribe("column-hide", this.updateColumnVisibility.bind(this)); - this.subscribe("columns-loaded", this.initializeResponsivity.bind(this)); - this.subscribe("column-moved", this.initializeResponsivity.bind(this)); - this.subscribe("column-add", this.initializeResponsivity.bind(this)); - this.subscribe("column-delete", this.initializeResponsivity.bind(this)); - - this.subscribe("table-redrawing", this.tableRedraw.bind(this)); - - if(this.table.options.responsiveLayout === "collapse"){ - this.subscribe("row-data-changed", this.generateCollapsedRowContent.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout", this.layoutRow.bind(this)); - } - } - } - - tableRedraw(force){ - if(["fitColumns", "fitDataStretch"].indexOf(this.layoutMode()) === -1){ - if(!force){ - this.update(); - } - } - } - - initializeResponsivity(){ - var columns = []; - - this.mode = this.table.options.responsiveLayout; - this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData; - this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen; - this.hiddenColumns = []; - - //determine level of responsivity for each column - this.table.columnManager.columnsByIndex.forEach((column, i) => { - if(column.modules.responsive){ - if(column.modules.responsive.order && column.modules.responsive.visible){ - column.modules.responsive.index = i; - columns.push(column); - - if(!column.visible && this.mode === "collapse"){ - this.hiddenColumns.push(column); - } - } - } - }); - - //sort list by responsivity - columns = columns.reverse(); - columns = columns.sort((a, b) => { - var diff = b.modules.responsive.order - a.modules.responsive.order; - return diff || (b.modules.responsive.index - a.modules.responsive.index); - }); - - this.columns = columns; - - if(this.mode === "collapse"){ - this.generateCollapsedContent(); - } - - //assign collapse column - for (let col of this.table.columnManager.columnsByIndex){ - if(col.definition.formatter == "responsiveCollapse"){ - this.collapseHandleColumn = col; - break; - } - } - - if(this.collapseHandleColumn){ - if(this.hiddenColumns.length){ - this.collapseHandleColumn.show(); - }else { - this.collapseHandleColumn.hide(); - } - } - } - - //define layout information - initializeColumn(column){ - var def = column.getDefinition(); - - column.modules.responsive = {order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible:def.visible === false ? false : true}; - } - - initializeRow(row){ - var el; - - if(row.type !== "calc"){ - el = document.createElement("div"); - el.classList.add("tabulator-responsive-collapse"); - - row.modules.responsiveLayout = { - element:el, - open:this.collapseStartOpen, - }; - - if(!this.collapseStartOpen){ - el.style.display = 'none'; - } - } - } - - layoutRow(row){ - var rowEl = row.getElement(); - - if(row.modules.responsiveLayout){ - rowEl.appendChild(row.modules.responsiveLayout.element); - this.generateCollapsedRowContent(row); - } - } - - //update column visibility - updateColumnVisibility(column, responsiveToggle){ - if(!responsiveToggle && column.modules.responsive){ - column.modules.responsive.visible = column.visible; - this.initializeResponsivity(); - } - } - - hideColumn(column){ - var colCount = this.hiddenColumns.length; - - column.hide(false, true); - - if(this.mode === "collapse"){ - this.hiddenColumns.unshift(column); - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !colCount){ - this.collapseHandleColumn.show(); - } - } - } - - showColumn(column){ - var index; - - column.show(false, true); - //set column width to prevent calculation loops on uninitialized columns - column.setWidth(column.getWidth()); - - if(this.mode === "collapse"){ - index = this.hiddenColumns.indexOf(column); - - if(index > -1){ - this.hiddenColumns.splice(index, 1); - } - - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !this.hiddenColumns.length){ - this.collapseHandleColumn.hide(); - } - } - } - - //redraw columns to fit space - update(){ - var working = true; - - while(working){ - - let width = this.table.modules.layout.getMode() == "fitColumns" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth(); - - let diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width; - - if(diff < 0){ - //table is too wide - let column = this.columns[this.index]; - - if(column){ - this.hideColumn(column); - this.index ++; - }else { - working = false; - } - - }else { - - //table has spare space - let column = this.columns[this.index -1]; - - if(column){ - if(diff > 0){ - if(diff >= column.getWidth()){ - this.showColumn(column); - this.index --; - }else { - working = false; - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(!this.table.rowManager.activeRowsCount){ - this.table.rowManager.renderEmptyScroll(); - } - } - } - - generateCollapsedContent(){ - var rows = this.table.rowManager.getDisplayRows(); - - rows.forEach((row) => { - this.generateCollapsedRowContent(row); - }); - } - - generateCollapsedRowContent(row){ - var el, contents; - - if(row.modules.responsiveLayout){ - el = row.modules.responsiveLayout.element; - - while(el.firstChild) el.removeChild(el.firstChild); - - contents = this.collapseFormatter(this.generateCollapsedRowData(row)); - if(contents){ - el.appendChild(contents); - } - } - } - - generateCollapsedRowData(row){ - var data = row.getData(), - output = [], - mockCellComponent; - - this.hiddenColumns.forEach((column) => { - var value = column.getFieldValue(data); - - if(column.definition.title && column.field){ - if(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){ - - mockCellComponent = { - value:false, - data:{}, - getValue:function(){ - return value; - }, - getData:function(){ - return data; - }, - getType:function(){ - return "cell"; - }, - getElement:function(){ - return document.createElement("div"); - }, - getRow:function(){ - return row.getComponent(); - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - }; - - function onRendered(callback){ - callback(); - } - - output.push({ - field: column.field, - title: column.definition.title, - value: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered) - }); - }else { - output.push({ - field: column.field, - title: column.definition.title, - value: value - }); - } - } - }); - - return output; - } - - formatCollapsedData(data){ - var list = document.createElement("table"); - - data.forEach(function(item){ - var row = document.createElement("tr"); - var titleData = document.createElement("td"); - var valueData = document.createElement("td"); - var node_content; - - var titleHighlight = document.createElement("strong"); - titleData.appendChild(titleHighlight); - this.langBind("columns|" + item.field, function(text){ - titleHighlight.innerHTML = text || item.title; - }); - - if(item.value instanceof Node){ - node_content = document.createElement("div"); - node_content.appendChild(item.value); - valueData.appendChild(node_content); - }else { - valueData.innerHTML = item.value; - } - - row.appendChild(titleData); - row.appendChild(valueData); - list.appendChild(row); - }, this); - - return Object.keys(data).length ? list : ""; - } - } - - ResponsiveLayout.moduleName = "responsiveLayout"; - - class SelectRow extends Module{ - - constructor(table){ - super(table); - - this.selecting = false; //flag selecting in progress - this.lastClickedRow = false; //last clicked row - this.selectPrev = []; //hold previously selected element for drag drop selection - this.selectedRows = []; //hold selected rows - this.headerCheckboxElement = null; // hold header select element - - this.registerTableOption("selectable", "highlight"); //highlight rows on hover - this.registerTableOption("selectableRangeMode", "drag"); //highlight rows on hover - this.registerTableOption("selectableRollingSelection", true); //roll selection once maximum number of selectable rows is reached - this.registerTableOption("selectablePersistence", true); // maintain selection when table view is updated - this.registerTableOption("selectableCheck", function(data, row){return true;}); //check whether row is selectable - - this.registerTableFunction("selectRow", this.selectRows.bind(this)); - this.registerTableFunction("deselectRow", this.deselectRows.bind(this)); - this.registerTableFunction("toggleSelectRow", this.toggleRow.bind(this)); - this.registerTableFunction("getSelectedRows", this.getSelectedRows.bind(this)); - this.registerTableFunction("getSelectedData", this.getSelectedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "select", this.selectRows.bind(this)); - this.registerComponentFunction("row", "deselect", this.deselectRows.bind(this)); - this.registerComponentFunction("row", "toggleSelect", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "isSelected", this.isRowSelected.bind(this)); - } - - initialize(){ - if(this.table.options.selectable !== false){ - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-deleting", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clearSelectionData.bind(this)); - this.subscribe("rows-retrieve", this.rowRetrieve.bind(this)); - - if(this.table.options.selectable && !this.table.options.selectablePersistence){ - this.subscribe("data-refreshing", this.deselectRows.bind(this)); - } - } - } - - rowRetrieve(type, prevValue){ - return type === "selected" ? this.selectedRows : prevValue; - } - - rowDeleted(row){ - this._deselectRow(row, true); - } - - clearSelectionData(silent){ - var prevSelected = this.selectedRows.length; - - this.selecting = false; - this.lastClickedRow = false; - this.selectPrev = []; - this.selectedRows = []; - - if(prevSelected && silent !== true){ - this._rowSelectionChanged(); - } - } - - initializeRow(row){ - var self = this, - element = row.getElement(); - - // trigger end of row selection - var endSelect = function(){ - - setTimeout(function(){ - self.selecting = false; - }, 50); - - document.body.removeEventListener("mouseup", endSelect); - }; - - row.modules.select = {selected:false}; - - //set row selection class - if(self.checkRowSelectability(row)){ - element.classList.add("tabulator-selectable"); - element.classList.remove("tabulator-unselectable"); - - if(self.table.options.selectable && self.table.options.selectable != "highlight"){ - if(self.table.options.selectableRangeMode === "click"){ - element.addEventListener("click", this.handleComplexRowClick.bind(this, row)); - }else { - element.addEventListener("click", function(e){ - if(!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()){ - self.table._clearSelection(); - } - - if(!self.selecting){ - self.toggleRow(row); - } - }); - - element.addEventListener("mousedown", function(e){ - if(e.shiftKey){ - self.table._clearSelection(); - - self.selecting = true; - - self.selectPrev = []; - - document.body.addEventListener("mouseup", endSelect); - document.body.addEventListener("keyup", endSelect); - - self.toggleRow(row); - - return false; - } - }); - - element.addEventListener("mouseenter", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.toggleRow(row); - - if(self.selectPrev[1] == row){ - self.toggleRow(self.selectPrev[0]); - } - } - }); - - element.addEventListener("mouseout", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.selectPrev.unshift(row); - } - }); - } - } - - }else { - element.classList.add("tabulator-unselectable"); - element.classList.remove("tabulator-selectable"); - } - } - - handleComplexRowClick(row, e){ - if(e.shiftKey){ - this.table._clearSelection(); - this.lastClickedRow = this.lastClickedRow || row; - - var lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow); - var rowIdx = this.table.rowManager.getDisplayRowIndex(row); - - var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx; - var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx; - - var rows = this.table.rowManager.getDisplayRows().slice(0); - var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1); - - if(e.ctrlKey || e.metaKey){ - toggledRows.forEach((toggledRow)=>{ - if(toggledRow !== this.lastClickedRow){ - - if(this.table.options.selectable !== true && !this.isRowSelected(row)){ - if(this.selectedRows.length < this.table.options.selectable){ - this.toggleRow(toggledRow); - } - }else { - this.toggleRow(toggledRow); - } - } - }); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - - if(this.table.options.selectable !== true){ - if(toggledRows.length > this.table.options.selectable){ - toggledRows = toggledRows.slice(0, this.table.options.selectable); - } - } - - this.selectRows(toggledRows); - } - this.table._clearSelection(); - } - else if(e.ctrlKey || e.metaKey){ - this.toggleRow(row); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - this.selectRows(row); - this.lastClickedRow = row; - } - } - - checkRowSelectability(row){ - if(row && row.type === "row"){ - return this.table.options.selectableCheck.call(this.table, row.getComponent()); - } - - return false; - } - - //toggle row selection - toggleRow(row){ - if(this.checkRowSelectability(row)){ - if(row.modules.select && row.modules.select.selected){ - this._deselectRow(row); - }else { - this._selectRow(row); - } - } - } - - //select a number of rows - selectRows(rows){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = this.table.rowManager.rows; - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._selectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(false, changes); - } - }else { - if(rowMatch){ - this._selectRow(rowMatch, false, true); - } - } - } - - //select an individual row - _selectRow(rowInfo, silent, force){ - //handle max row count - if(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){ - if(this.selectedRows.length >= this.table.options.selectable){ - if(this.table.options.selectableRollingSelection){ - this._deselectRow(this.selectedRows[0]); - }else { - return false; - } - } - } - - var row = this.table.rowManager.findRow(rowInfo); - - if(row){ - if(this.selectedRows.indexOf(row) == -1){ - row.getElement().classList.add("tabulator-selected"); - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = true; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = true; - } - - this.selectedRows.push(row); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, true); - } - - this.dispatchExternal("rowSelected", row.getComponent()); - - this._rowSelectionChanged(silent, row); - - return row; - } - }else { - if(!silent){ - console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - isRowSelected(row){ - return this.selectedRows.indexOf(row) !== -1; - } - - //deselect a number of rows - deselectRows(rows, silent){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = Object.assign([], this.selectedRows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._deselectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(silent, [], changes); - } - }else { - if(rowMatch){ - this._deselectRow(rowMatch, silent, true); - } - } - } - - //deselect an individual row - _deselectRow(rowInfo, silent){ - var self = this, - row = self.table.rowManager.findRow(rowInfo), - index, element; - - if(row){ - index = self.selectedRows.findIndex(function(selectedRow){ - return selectedRow == row; - }); - - if(index > -1){ - - element = row.getElement(); - - if(element){ - element.classList.remove("tabulator-selected"); - } - - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = false; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = false; - } - self.selectedRows.splice(index, 1); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, false); - } - - this.dispatchExternal("rowDeselected", row.getComponent()); - - self._rowSelectionChanged(silent, undefined, row); - - return row; - } - }else { - if(!silent){ - console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - getSelectedData(){ - var data = []; - - this.selectedRows.forEach(function(row){ - data.push(row.getData()); - }); - - return data; - } - - getSelectedRows(){ - var rows = []; - - this.selectedRows.forEach(function(row){ - rows.push(row.getComponent()); - }); - - return rows; - } - - _rowSelectionChanged(silent, selected = [], deselected = []){ - if(this.headerCheckboxElement){ - if(this.selectedRows.length === 0){ - this.headerCheckboxElement.checked = false; - this.headerCheckboxElement.indeterminate = false; - } else if(this.table.rowManager.rows.length === this.selectedRows.length){ - this.headerCheckboxElement.checked = true; - this.headerCheckboxElement.indeterminate = false; - } else { - this.headerCheckboxElement.indeterminate = true; - this.headerCheckboxElement.checked = false; - } - } - - if(!silent){ - if(!Array.isArray(selected)){ - selected = [selected]; - } - - selected = selected.map(row => row.getComponent()); - - if(!Array.isArray(deselected)){ - deselected = [deselected]; - } - - deselected = deselected.map(row => row.getComponent()); - - this.dispatchExternal("rowSelectionChanged", this.getSelectedData(), this.getSelectedRows(), selected, deselected); - } - } - - registerRowSelectCheckbox (row, element) { - if(!row._row.modules.select){ - row._row.modules.select = {}; - } - - row._row.modules.select.checkboxEl = element; - } - - registerHeaderSelectCheckbox (element) { - this.headerCheckboxElement = element; - } - - childRowSelection(row, select){ - var children = this.table.modules.dataTree.getChildren(row, true); - - if(select){ - for(let child of children){ - this._selectRow(child, true); - } - }else { - for(let child of children){ - this._deselectRow(child, true); - } - } - } - } - - SelectRow.moduleName = "selectRow"; - - //sort numbers - function number$1(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var decimal = params.decimalSeparator; - var thousand = params.thousandSeparator; - var emptyAlign = 0; - - a = String(a); - b = String(b); - - if(thousand){ - a = a.split(thousand).join(""); - b = b.split(thousand).join(""); - } - - if(decimal){ - a = a.split(decimal).join("."); - b = b.split(decimal).join("."); - } - - a = parseFloat(a); - b = parseFloat(b); - - //handle non numeric values - if(isNaN(a)){ - emptyAlign = isNaN(b) ? 0 : -1; - }else if(isNaN(b)){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - //sort strings - function string(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - var locale; - - //handle empty values - if(!a){ - emptyAlign = !b ? 0 : -1; - }else if(!b){ - emptyAlign = 1; - }else { - //compare valid values - switch(typeof params.locale){ - case "boolean": - if(params.locale){ - locale = this.langLocale(); - } - break; - case "string": - locale = params.locale; - break; - } - - return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - //sort datetime - function datetime$2(a, b, aRow, bRow, column, dir, params){ - var DT = window.DateTime || luxon.DateTime; - var format = params.format || "dd/MM/yyyy HH:mm:ss", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - if(typeof DT != "undefined"){ - if(!DT.isDateTime(a)){ - if(format === "iso"){ - a = DT.fromISO(String(a)); - }else { - a = DT.fromFormat(String(a), format); - } - } - - if(!DT.isDateTime(b)){ - if(format === "iso"){ - b = DT.fromISO(String(b)); - }else { - b = DT.fromFormat(String(b), format); - } - } - - if(!a.isValid){ - emptyAlign = !b.isValid ? 0 : -1; - }else if(!b.isValid){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - - }else { - console.error("Sort Error - 'datetime' sorter is dependant on luxon.js"); - } - } - - //sort date - function date$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "dd/MM/yyyy"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); - } - - //sort times - function time$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "HH:mm"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); - } - - //sort booleans - function boolean(a, b, aRow, bRow, column, dir, params){ - var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0; - var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0; - - return el1 - el2; - } - - //sort if element contains any data - function array(a, b, aRow, bRow, column, dir, params){ - var type = params.type || "length", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - function calc(value){ - var result; - - switch(type){ - case "length": - result = value.length; - break; - - case "sum": - result = value.reduce(function(c, d){ - return c + d; - }); - break; - - case "max": - result = Math.max.apply(null, value) ; - break; - - case "min": - result = Math.min.apply(null, value) ; - break; - - case "avg": - result = value.reduce(function(c, d){ - return c + d; - }) / value.length; - break; - } - - return result; - } - - //handle non array values - if(!Array.isArray(a)){ - emptyAlign = !Array.isArray(b) ? 0 : -1; - }else if(!Array.isArray(b)){ - emptyAlign = 1; - }else { - return calc(b) - calc(a); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - //sort if element contains any data - function exists(a, b, aRow, bRow, column, dir, params){ - var el1 = typeof a == "undefined" ? 0 : 1; - var el2 = typeof b == "undefined" ? 0 : 1; - - return el1 - el2; - } - - //sort alpha numeric strings - function alphanum(as, bs, aRow, bRow, column, dir, params){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - var defaultSorters = { - number:number$1, - string:string, - date:date$1, - time:time$1, - datetime:datetime$2, - boolean:boolean, - array:array, - exists:exists, - alphanum:alphanum - }; - - class Sort extends Module{ - - constructor(table){ - super(table); - - this.sortList = []; //holder current sort - this.changed = false; //has the sort changed since last render - - this.registerTableOption("sortMode", "local"); //local or remote sorting - - this.registerTableOption("initialSort", false); //initial sorting criteria - this.registerTableOption("columnHeaderSortMulti", true); //multiple or single column sorting - this.registerTableOption("sortOrderReverse", false); //reverse internal sort ordering - this.registerTableOption("headerSortElement", "
              "); //header sort element - this.registerTableOption("headerSortClickElement", "header"); //element which triggers sort when clicked - - this.registerColumnOption("sorter"); - this.registerColumnOption("sorterParams"); - - this.registerColumnOption("headerSort", true); - this.registerColumnOption("headerSortStartingDir"); - this.registerColumnOption("headerSortTristate"); - - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.registerDataHandler(this.sort.bind(this), 20); - - this.registerTableFunction("setSort", this.userSetSort.bind(this)); - this.registerTableFunction("getSorters", this.getSort.bind(this)); - this.registerTableFunction("clearSort", this.clearSort.bind(this)); - - if(this.table.options.sortMode === "remote"){ - this.subscribe("data-params", this.remoteSortParams.bind(this)); - } - } - - tableBuilt(){ - if(this.table.options.initialSort){ - this.setSort(this.table.options.initialSort); - } - } - - remoteSortParams(data, config, silent, params){ - var sorters = this.getSort(); - - sorters.forEach((item) => { - delete item.column; - }); - - params.sort = sorters; - - return params; - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetSort(sortList, dir){ - this.setSort(sortList, dir); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - clearSort(){ - this.clear(); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //initialize column header for sorting - initializeColumn(column){ - var sorter = false, - colEl, - arrowEl; - - switch(typeof column.definition.sorter){ - case "string": - if(Sort.sorters[column.definition.sorter]){ - sorter = Sort.sorters[column.definition.sorter]; - }else { - console.warn("Sort Error - No such sorter found: ", column.definition.sorter); - } - break; - - case "function": - sorter = column.definition.sorter; - break; - } - - column.modules.sort = { - sorter:sorter, dir:"none", - params:column.definition.sorterParams || {}, - startingDir:column.definition.headerSortStartingDir || "asc", - tristate: column.definition.headerSortTristate, - }; - - if(column.definition.headerSort !== false){ - - colEl = column.getElement(); - - colEl.classList.add("tabulator-sortable"); - - arrowEl = document.createElement("div"); - arrowEl.classList.add("tabulator-col-sorter"); - - switch(this.table.options.headerSortClickElement){ - case "icon": - arrowEl.classList.add("tabulator-col-sorter-element"); - break; - case "header": - colEl.classList.add("tabulator-col-sorter-element"); - break; - default: - colEl.classList.add("tabulator-col-sorter-element"); - break; - } - - switch(this.table.options.headerSortElement){ - case "function": - //do nothing - break; - - case "object": - arrowEl.appendChild(this.table.options.headerSortElement); - break; - - default: - arrowEl.innerHTML = this.table.options.headerSortElement; - } - - //create sorter arrow - column.titleHolderElement.appendChild(arrowEl); - - column.modules.sort.element = arrowEl; - - this.setColumnHeaderSortIcon(column, "none"); - - //sort on click - (this.table.options.headerSortClickElement === "icon" ? arrowEl : colEl).addEventListener("click", (e) => { - var dir = "", - sorters=[], - match = false; - - if(column.modules.sort){ - if(column.modules.sort.tristate){ - if(column.modules.sort.dir == "none"){ - dir = column.modules.sort.startingDir; - }else { - if(column.modules.sort.dir == column.modules.sort.startingDir){ - dir = column.modules.sort.dir == "asc" ? "desc" : "asc"; - }else { - dir = "none"; - } - } - }else { - switch(column.modules.sort.dir){ - case "asc": - dir = "desc"; - break; - - case "desc": - dir = "asc"; - break; - - default: - dir = column.modules.sort.startingDir; - } - } - - if (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) { - sorters = this.getSort(); - - match = sorters.findIndex((sorter) => { - return sorter.field === column.getField(); - }); - - if(match > -1){ - sorters[match].dir = dir; - - match = sorters.splice(match, 1)[0]; - if(dir != "none"){ - sorters.push(match); - } - }else { - if(dir != "none"){ - sorters.push({column:column, dir:dir}); - } - } - - //add to existing sort - this.setSort(sorters); - }else { - if(dir == "none"){ - this.clear(); - }else { - //sort by column only - this.setSort(column, dir); - } - - } - - // this.table.rowManager.sorterRefresh(!this.sortList.length); - this.refreshSort(); - } - }); - } - } - - refreshSort(){ - if(this.table.options.sortMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the sorters have changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //return current sorters - getSort(){ - var self = this, - sorters = []; - - self.sortList.forEach(function(item){ - if(item.column){ - sorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir}); - } - }); - - return sorters; - } - - //change sort list and trigger sort - setSort(sortList, dir){ - var self = this, - newSortList = []; - - if(!Array.isArray(sortList)){ - sortList = [{column: sortList, dir:dir}]; - } - - sortList.forEach(function(item){ - var column; - - column = self.table.columnManager.findColumn(item.column); - - if(column){ - item.column = column; - newSortList.push(item); - self.changed = true; - }else { - console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column); - } - - }); - - self.sortList = newSortList; - - this.dispatch("sort-changed"); - } - - //clear sorters - clear(){ - this.setSort([]); - } - - //find appropriate sorter for column - findSorter(column){ - var row = this.table.rowManager.activeRows[0], - sorter = "string", - field, value; - - if(row){ - row = row.getData(); - field = column.getField(); - - if(field){ - - value = column.getFieldValue(row); - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - } - } - break; - } - } - } - - return Sort.sorters[sorter]; - } - - //work through sort list sorting data - sort(data){ - var self = this, - sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList, - sortListActual = [], - rowComponents = []; - - if(this.subscribedExternal("dataSorting")){ - this.dispatchExternal("dataSorting", self.getSort()); - } - - self.clearColumnHeaders(); - - if(this.table.options.sortMode !== "remote"){ - - //build list of valid sorters and trigger column specific callbacks before sort begins - sortList.forEach(function(item, i){ - var sortObj; - - if(item.column){ - sortObj = item.column.modules.sort; - - if(sortObj){ - - //if no sorter has been defined, take a guess - if(!sortObj.sorter){ - sortObj.sorter = self.findSorter(item.column); - } - - item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params; - - sortListActual.push(item); - } - - self.setColumnHeader(item.column, item.dir); - } - }); - - //sort data - if (sortListActual.length) { - self._sortItems(data, sortListActual); - } - - }else { - sortList.forEach(function(item, i){ - self.setColumnHeader(item.column, item.dir); - }); - } - - if(this.subscribedExternal("dataSorted")){ - data.forEach((row) => { - rowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataSorted", self.getSort(), rowComponents); - } - - return data; - } - - //clear sort arrows on columns - clearColumnHeaders(){ - this.table.columnManager.getRealColumns().forEach((column) => { - if(column.modules.sort){ - column.modules.sort.dir = "none"; - column.getElement().setAttribute("aria-sort", "none"); - this.setColumnHeaderSortIcon(column, "none"); - } - }); - } - - //set the column header sort direction - setColumnHeader(column, dir){ - column.modules.sort.dir = dir; - column.getElement().setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending"); - this.setColumnHeaderSortIcon(column, dir); - } - - setColumnHeaderSortIcon(column, dir){ - var sortEl = column.modules.sort.element, - arrowEl; - - if(column.definition.headerSort && typeof this.table.options.headerSortElement === "function"){ - while(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild); - - arrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir); - - if(typeof arrowEl === "object"){ - sortEl.appendChild(arrowEl); - }else { - sortEl.innerHTML = arrowEl; - } - } - } - - //sort each item in sort list - _sortItems(data, sortList){ - var sorterCount = sortList.length - 1; - - data.sort((a, b) => { - var result; - - for(var i = sorterCount; i>= 0; i--){ - let sortItem = sortList[i]; - - result = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params); - - if(result !== 0){ - break; - } - } - - return result; - }); - } - - //process individual rows for a sort function on active data - _sortRow(a, b, column, dir, params){ - var el1Comp, el2Comp; - - //switch elements depending on search direction - var el1 = dir == "asc" ? a : b; - var el2 = dir == "asc" ? b : a; - - a = column.getFieldValue(el1.getData()); - b = column.getFieldValue(el2.getData()); - - a = typeof a !== "undefined" ? a : ""; - b = typeof b !== "undefined" ? b : ""; - - el1Comp = el1.getComponent(); - el2Comp = el2.getComponent(); - - return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params); - } - } - - Sort.moduleName = "sort"; - - //load defaults - Sort.sorters = defaultSorters; - - class Tooltip extends Module{ - - constructor(table){ - super(table); - - this.tooltipSubscriber = null, - this.headerSubscriber = null, - - this.timeout = null; - this.popupInstance = null; - - this.registerTableOption("tooltipGenerationMode", undefined); //deprecated - this.registerTableOption("tooltipDelay", 300); - - this.registerColumnOption("tooltip"); - this.registerColumnOption("headerTooltip"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheckMsg("tooltipGenerationMode", "This option is no longer needed as tooltips are always generated on hover now"); - } - - initializeColumn(column){ - if(column.definition.headerTooltip && !this.headerSubscriber){ - this.headerSubscriber = true; - - this.subscribe("column-mousemove", this.mousemoveCheck.bind(this, "headerTooltip")); - this.subscribe("column-mouseout", this.mouseoutCheck.bind(this, "headerTooltip")); - } - - if(column.definition.tooltip && !this.tooltipSubscriber){ - this.tooltipSubscriber = true; - - this.subscribe("cell-mousemove", this.mousemoveCheck.bind(this, "tooltip")); - this.subscribe("cell-mouseout", this.mouseoutCheck.bind(this, "tooltip")); - } - } - - mousemoveCheck(action, e, component){ - var tooltip = action === "tooltip" ? component.column.definition.tooltip : component.definition.headerTooltip; - - if(tooltip){ - this.clearPopup(); - this.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay); - } - } - - mouseoutCheck(action, e, component){ - if(!this.popupInstance){ - this.clearPopup(); - } - } - - clearPopup(action, e, component){ - clearTimeout(this.timeout); - this.timeout = null; - - if(this.popupInstance){ - this.popupInstance.hide(); - } - } - - loadTooltip(e, component, tooltip){ - var contentsEl, renderedCallback, coords; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(typeof tooltip === "function"){ - tooltip = tooltip(e, component.getComponent(), onRendered); - } - - if(tooltip instanceof HTMLElement){ - contentsEl = tooltip; - }else { - contentsEl = document.createElement("div"); - - if(tooltip === true){ - if(component instanceof Cell){ - tooltip = component.value; - }else { - if(component.definition.field){ - this.langBind("columns|" + component.definition.field, (value) => { - contentsEl.innerHTML = tooltip = value || component.definition.title; - }); - }else { - tooltip = component.definition.title; - } - } - } - - contentsEl.innerHTML = tooltip; - } - - if(tooltip || tooltip === 0 || tooltip === false){ - contentsEl.classList.add("tabulator-tooltip"); - - contentsEl.addEventListener("mousemove", e => e.preventDefault()); - - this.popupInstance = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - this.popupInstance.renderCallback(renderedCallback); - } - - coords = this.popupInstance.containerEventCoords(e); - - this.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => { - this.dispatchExternal("TooltipClosed", component.getComponent()); - this.popupInstance = null; - }); - - this.dispatchExternal("TooltipOpened", component.getComponent()); - } - } - } - - Tooltip.moduleName = "tooltip"; - - var defaultValidators = { - //is integer - integer: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && Math.floor(value) === value; - }, - - //is float - float: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && value % 1 !== 0; - }, - - //must be a number - numeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return !isNaN(value); - }, - - //must be a string - string: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return isNaN(value); - }, - - //maximum value - max: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) <= parameters; - }, - - //minimum value - min: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) >= parameters; - }, - - //starts with value - starts: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().startsWith(String(parameters).toLowerCase()); - }, - - //ends with value - ends: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().endsWith(String(parameters).toLowerCase()); - }, - - - //minimum string length - minLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length >= parameters; - }, - - //maximum string length - maxLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length <= parameters; - }, - - //in provided value list - in: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - if(typeof parameters == "string"){ - parameters = parameters.split("|"); - } - - return parameters.indexOf(value) > -1; - }, - - //must match provided regex - regex: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var reg = new RegExp(parameters); - - return reg.test(value); - }, - - //value must be unique in this column - unique: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var unique = true; - - var cellData = cell.getData(); - var column = cell.getColumn()._getSelf(); - - this.table.rowManager.rows.forEach(function(row){ - var data = row.getData(); - - if(data !== cellData){ - if(value == column.getFieldValue(data)){ - unique = false; - } - } - }); - - return unique; - }, - - //must have a value - required:function(cell, value, parameters){ - return value !== "" && value !== null && typeof value !== "undefined"; - }, - }; - - class Validate extends Module{ - - constructor(table){ - super(table); - - this.invalidCells = []; - - this.registerTableOption("validationMode", "blocking"); - - this.registerColumnOption("validator"); - - this.registerTableFunction("getInvalidCells", this.getInvalidCells.bind(this)); - this.registerTableFunction("clearCellValidation", this.userClearCellValidation.bind(this)); - this.registerTableFunction("validate", this.userValidate.bind(this)); - - this.registerComponentFunction("cell", "isValid", this.cellIsValid.bind(this)); - this.registerComponentFunction("cell", "clearValidation", this.clearValidation.bind(this)); - this.registerComponentFunction("cell", "validate", this.cellValidate.bind(this)); - - this.registerComponentFunction("column", "validate", this.columnValidate.bind(this)); - this.registerComponentFunction("row", "validate", this.rowValidate.bind(this)); - } - - - initialize(){ - this.subscribe("cell-delete", this.clearValidation.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - - this.subscribe("edit-success", this.editValidate.bind(this)); - this.subscribe("edit-editor-clear", this.editorClear.bind(this)); - this.subscribe("edit-edited-clear", this.editedClear.bind(this)); - } - - /////////////////////////////////// - ///////// Event Handling ////////// - /////////////////////////////////// - - editValidate(cell, value, previousValue){ - var valid = this.table.options.validationMode !== "manual" ? this.validate(cell.column.modules.validate, cell, value) : true; - - // allow time for editor to make render changes then style cell - if(valid !== true){ - setTimeout(() => { - cell.getElement().classList.add("tabulator-validation-fail"); - this.dispatchExternal("validationFailed", cell.getComponent(), value, valid); - }); - } - - return valid; - } - - editorClear(cell, cancelled){ - if(cancelled){ - if(cell.column.modules.validate){ - this.cellValidate(cell); - } - } - - cell.getElement().classList.remove("tabulator-validation-fail"); - } - - editedClear(cell){ - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } - } - - /////////////////////////////////// - ////////// Cell Functions ///////// - /////////////////////////////////// - - cellIsValid(cell){ - return cell.modules.validate ? (cell.modules.validate.invalid || true) : true; - } - - cellValidate(cell){ - return this.validate(cell.column.modules.validate, cell, cell.getValue()); - } - - /////////////////////////////////// - ///////// Column Functions //////// - /////////////////////////////////// - - columnValidate(column){ - var invalid = []; - - column.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ////////// Row Functions ////////// - /////////////////////////////////// - - rowValidate(row){ - var invalid = []; - - row.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - userClearCellValidation(cells){ - if(!cells){ - cells = this.getInvalidCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.clearValidation(cell._getSelf()); - }); - } - - userValidate(cells){ - var output = []; - - //clear row data - this.table.rowManager.rows.forEach((row) => { - row = row.getComponent(); - - var valid = row.validate(); - - if(valid !== true){ - output = output.concat(valid); - } - }); - - return output.length ? output : true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.validator !== "undefined"){ - this.initializeColumn(column); - } - } - - //validate - initializeColumn(column){ - var self = this, - config = [], - validator; - - if(column.definition.validator){ - - if(Array.isArray(column.definition.validator)){ - column.definition.validator.forEach((item) => { - validator = self._extractValidator(item); - - if(validator){ - config.push(validator); - } - }); - - }else { - validator = this._extractValidator(column.definition.validator); - - if(validator){ - config.push(validator); - } - } - - column.modules.validate = config.length ? config : false; - } - } - - _extractValidator(value){ - var type, params, pos; - - switch(typeof value){ - case "string": - pos = value.indexOf(':'); - - if(pos > -1){ - type = value.substring(0,pos); - params = value.substring(pos+1); - }else { - type = value; - } - - return this._buildValidator(type, params); - - case "function": - return this._buildValidator(value); - - case "object": - return this._buildValidator(value.type, value.parameters); - } - } - - _buildValidator(type, params){ - - var func = typeof type == "function" ? type : Validate.validators[type]; - - if(!func){ - console.warn("Validator Setup Error - No matching validator found:", type); - return false; - }else { - return { - type:typeof type == "function" ? "function" : type, - func:func, - params:params, - }; - } - } - - validate(validators, cell, value){ - var self = this, - failedValidators = [], - invalidIndex = this.invalidCells.indexOf(cell); - - if(validators){ - validators.forEach((item) => { - if(!item.func.call(self, cell.getComponent(), value, item.params)){ - failedValidators.push({ - type:item.type, - parameters:item.params - }); - } - }); - } - - if(!cell.modules.validate){ - cell.modules.validate = {}; - } - - if(!failedValidators.length){ - cell.modules.validate.invalid = false; - cell.getElement().classList.remove("tabulator-validation-fail"); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - }else { - cell.modules.validate.invalid = failedValidators; - - if(this.table.options.validationMode !== "manual"){ - cell.getElement().classList.add("tabulator-validation-fail"); - } - - if(invalidIndex == -1){ - this.invalidCells.push(cell); - } - } - - return failedValidators.length ? failedValidators : true; - } - - getInvalidCells(){ - var output = []; - - this.invalidCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearValidation(cell){ - var invalidIndex; - - if(cell.modules.validate && cell.modules.validate.invalid){ - - cell.getElement().classList.remove("tabulator-validation-fail"); - cell.modules.validate.invalid = false; - - invalidIndex = this.invalidCells.indexOf(cell); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - } - } - } - - Validate.moduleName = "validate"; - - //load defaults - Validate.validators = defaultValidators; - - var modules = /*#__PURE__*/Object.freeze({ - __proto__: null, - AccessorModule: Accessor, - AjaxModule: Ajax, - ClipboardModule: Clipboard, - ColumnCalcsModule: ColumnCalcs, - DataTreeModule: DataTree, - DownloadModule: Download, - EditModule: Edit$1, - ExportModule: Export, - FilterModule: Filter, - FormatModule: Format, - FrozenColumnsModule: FrozenColumns, - FrozenRowsModule: FrozenRows, - GroupRowsModule: GroupRows, - HistoryModule: History, - HtmlTableImportModule: HtmlTableImport, - ImportModule: Import, - InteractionModule: Interaction, - KeybindingsModule: Keybindings, - MenuModule: Menu, - MoveColumnsModule: MoveColumns, - MoveRowsModule: MoveRows, - MutatorModule: Mutator, - PageModule: Page, - PersistenceModule: Persistence, - PopupModule: Popup$1, - PrintModule: Print, - ReactiveDataModule: ReactiveData, - ResizeColumnsModule: ResizeColumns, - ResizeRowsModule: ResizeRows, - ResizeTableModule: ResizeTable, - ResponsiveLayoutModule: ResponsiveLayout, - SelectRowModule: SelectRow, - SortModule: Sort, - TooltipModule: Tooltip, - ValidateModule: Validate - }); - - //tabulator with all modules installed - - class TabulatorFull extends Tabulator {} - - //bind modules and static functionality - new ModuleBinder(TabulatorFull, modules); - - return TabulatorFull; - -}))); -//# sourceMappingURL=tabulator.js.map diff --git a/src/main/webapp/tabulator/dist/js/tabulator.js.map b/src/main/webapp/tabulator/dist/js/tabulator.js.map deleted file mode 100644 index fcd6f332..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator.js","sources":["../../src/js/core/defaults/options.js","../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\n\n\tscrollToRowPosition:\"top\",\n\tscrollToRowIfVisible:true,\n\n\tscrollToColumnPosition:\"left\",\n\tscrollToColumnIfVisible:true,\n\n\trowFormatter:false,\n\trowFormatterPrint:null,\n\trowFormatterClipboard:null,\n\trowFormatterHtmlOutput:null,\n\n\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(typeof contents){\n\t\t\tcase \"object\":\n\t\t\t\tif(contents instanceof Node){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = \"\";\n\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic elOffset(el){\n\t\tvar box = el.getBoundingClientRect();\n\n\t\treturn {\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\t\t};\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\t\t\t\t}\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = field.split(\".\")[0];\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\n\n\t\t\tif(this.vDomTopPad < 0){\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t}\n\n\t\t\tif(index < 1){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(rows.length){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\n\t\tif(this.redrawBlock){\n\t\t\tif(callback){\n\t\t\t\tcallback();\n\t\t\t}else{\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tconst resized = this.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\n\t\t\tif(resized) {\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\t\t\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, match;\n\n\t\tif(typeof query === \"string\"){\n\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\tif(matches.length){\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.matchElement(query);\n\n\t\t\tif(match){\n\t\t\t\tresults.push(match);\n\t\t\t}\n\t\t}else if(Array.isArray(query)){\n\t\t\tquery.forEach(function(item){\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\n\t\t\t});\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","export default {\n\t\"default\":{ //hold default locale text\n\t\t\"groups\":{\n\t\t\t\"item\":\"item\",\n\t\t\t\"items\":\"items\",\n\t\t},\n\t\t\"columns\":{\n\t\t},\n\t\t\"data\":{\n\t\t\t\"loading\":\"Loading\",\n\t\t\t\"error\":\"Error\",\n\t\t},\n\t\t\"pagination\":{\n\t\t\t\"page_size\":\"Page Size\",\n\t\t\t\"page_title\":\"Show Page\",\n\t\t\t\"first\":\"First\",\n\t\t\t\"first_title\":\"First Page\",\n\t\t\t\"last\":\"Last\",\n\t\t\t\"last_title\":\"Last Page\",\n\t\t\t\"prev\":\"Prev\",\n\t\t\t\"prev_title\":\"Prev Page\",\n\t\t\t\"next\":\"Next\",\n\t\t\t\"next_title\":\"Next Page\",\n\t\t\t\"all\":\"All\",\n\t\t\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\n\t\t},\n\t\t\"headerFilters\":{\n\t\t\t\"default\":\"filter column...\",\n\t\t\t\"columns\":{}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}else{\n\t\t\t\t\t\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw();\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","export default {};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {\n\tmethod: \"GET\",\n};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\n\n\toutput.forEach(function(item){\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t});\n\n\treturn encoded.join(\"&\");\n}\n\nexport default function(url, config, params){\n\tif(url){\n\t\tif(params && Object.keys(params).length){\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\n\t\t\t\tconfig.method = \"get\";\n\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\n\n\t\t//set body content if not GET request\n\t\tif(config.method.toUpperCase() != \"GET\"){\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\n\t\t\tif(contentType){\n\n\t\t\t\tfor(var key in contentType.headers){\n\t\t\t\t\tif(!config.headers){\n\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\n\t\t\t//configure headers\n\t\t\tif(typeof config.headers === \"undefined\"){\n\t\t\t\tconfig.headers = {};\n\t\t\t}\n\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\n\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t}\n\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\tif(typeof config.mode === \"undefined\"){\n\t\t\t\tconfig.mode = \"cors\";\n\t\t\t}\n\n\t\t\tif(config.mode == \"cors\"){\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\n\t\t\t\t}\n \n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//send request\n\t\t\tfetch(url, config)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\tresolve([]);\n\t\t}\n\t});\n}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = new FormData();\n\n\t\t\toutput.forEach(function(item){\n\t\t\t\tform.append(item.key, item.value);\n\t\t\t});\n\n\t\t\treturn form;\n\t\t},\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(params, ajaxParams);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\treplace:function(rows){\n\t\treturn this.table.setData(rows);\n\t},\n\tupdate:function(rows){\n\t\treturn this.table.updateOrAddData(rows);\n\t},\n\tinsert:function(rows){\n\t\treturn this.table.addData(rows);\n\t},\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\n\t\t\t//check if headers are present by title\n\t\t\tdata[0].forEach(function(value){\n\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t});\n\n\t\t\t\tif(column){\n\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t}else{\n\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//check if column headers are present by field\n\t\t\tif(!headerFindSuccess){\n\t\t\t\theaderFindSuccess = true;\n\t\t\t\tcolumnMap = [];\n\n\t\t\t\tdata[0].forEach(function(value){\n\t\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t}else{\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(!headerFindSuccess){\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//remove header row if found\n\t\t\tif(headerFindSuccess){\n\t\t\t\tdata.shift();\n\t\t\t}\n\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\n\t\t\t\titem.forEach(function(value, i){\n\t\t\t\t\tif(columnMap[i]){\n\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPaseOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPaseOrigin(e){\n\t\tvar valid = true;\n\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn Number(sum) + Number(value);\n\t\t\t});\n\n\t\t\toutput = output / values.length;\n\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t}\n\n\t\treturn parseFloat(output).toString();\n\t},\n\t\"max\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value > output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"min\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value < output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"sum\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t});\n\t\t}\n\n\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t},\n\t\"concat\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn String(sum) + String(value);\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"count\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tif(value){\n\t\t\t\t\toutput ++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tif(!this.topInitialized){\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
              \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
              \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\t\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\n\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\n\t\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\trowData.push(\"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\n\n\tfunction fillSymbols(index){\n\t\tvar symbol = mask[index];\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\n\t\t\tel.value = el.value + \"\" + symbol;\n\t\t\tfillSymbols(index+1);\n\t\t}\n\t}\n\n\tel.addEventListener(\"keydown\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\tswitch(mask[index]){\n\t\t\t\t\tcase maskLetter:\n\t\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskNumber:\n\t\t\t\t\t\tif(isNaN(char)){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskWildcard:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(char !== mask[index]){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (e) => {\n\t\tif(e.keyCode > 46){\n\t\t\tif(options.maskAutoFill){\n\t\t\t\tfillSymbols(el.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\n\tif(!el.placeholder){\n\t\tel.placeholder = mask;\n\t}\n\n\tif(options.maskAutoFill){\n\t\tfillSymbols(el.value.length);\n\t}\n}","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tinput.scrollHeight;\n\t\t\tinput.style.height = input.scrollHeight + \"px\";\n\t\t\tcell.getRow().normalizeHeight();\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\t//submit new value on blur\n\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"hh:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"hh:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\n\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\n\t\t//handle empty values\n\t\tif(!as && as!== 0){\n\t\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t\t}else if(!bs && bs!== 0){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\ta = String(as).toLowerCase();\n\t\t\tb = String(bs).toLowerCase();\n\t\t\tif(a === b) return 0;\n\t\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\ta = a.match(rx);\n\t\t\tb = b.match(rx);\n\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\twhile(i < L){\n\t\t\t\ta1= a[i];\n\t\t\t\tb1= b[i++];\n\t\t\t\tif(a1 !== b1){\n\t\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\t\t\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(newRow === true){\n\t\t\t\t\t\tnewRow = this.table.addRow({});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\n\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t}else{\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\tcellEditor, component, params;\n\t\t\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\t\t\t\t\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\t\t\t\t\t\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\t\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\t\t\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\n\t\t\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(){\n\t\tvar output = [];\n\t\t\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows){\n\t\t\n\t\tvar columns = [];\n\t\tvar exportRows = [];\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t\t\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\n\n\t//equal to\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal == filterVal ? true : false;\n\t},\n\n\t//less than\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal < filterVal ? true : false;\n\t},\n\n\t//less than or equal to\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal <= filterVal ? true : false;\n\t},\n\n\t//greater than\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal > filterVal ? true : false;\n\t},\n\n\t//greater than or equal to\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal >= filterVal ? true : false;\n\t},\n\n\t//not equal to\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal != filterVal ? true : false;\n\t},\n\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\n\n\t\tif(typeof filterVal == \"string\"){\n\t\t\tfilterVal = new RegExp(filterVal);\n\t\t}\n\n\t\treturn filterVal.test(rowVal);\n\t},\n\n\t//contains the string\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//contains the keywords\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((keyword) =>{\n\t\t\tif(value.includes(keyword)){\n\t\t\t\tmatches.push(true);\n\t\t\t}\n\t\t});\n\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\n\t},\n\n\t//starts with the string\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//ends with the string\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(Array.isArray(filterVal)){\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\treturn false;\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterFocus(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.getHeaderFilterValue(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t}\n\t}\n\n\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterValue(column, value);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.value;\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\n\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\n\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\twhile (rgx.test(integer)){\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t}\n\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\t\t\tvalue = data[formatterParams.urlField];\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\n\t\t\t\treturn value;\n\t\t\t}else if(typeof invalid === \"function\"){\n\t\t\t\treturn invalid(value);\n\t\t\t}else{\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (invalid === true) {\n\t\t\t\treturn value;\n\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\treturn invalid(value);\n\t\t\t} else {\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\n\trow.watchPosition((position) => {\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
              \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\n\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\t\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.modules.frozen.edge){\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\tif(column.modules.frozen.edge){\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\t\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t}else{\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowDelete: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n};","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos >= 0){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollPageDown:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = rowManager.element.scrollHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos <= scrollMax){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\n\t},\n\tscrollToStart:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollToEnd:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tnavPrev:function(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\tundo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.undo();\n\t\t\t}\n\t\t}\n\t},\n\n\tredo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.redo();\n\t\t\t}\n\t\t}\n\t},\n\n\tcopyToClipboard:function(e){\n\t\tif(!this.table.modules.edit.currentCell){\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\n\t\t\t}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\ttoRow.update(fromRow.getData());\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\treplace:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\ttoRow.delete();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n};\n\nMoveRows.prototype.senders = {\n\tdelete:function(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\n\t\t\t\t\ttop = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, data;\n\n\t\t//if cookie exists, decode and load column data into tabulator\n\t\tif(cookiePos > -1){\n\t\t\tcookie = cookie.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(0, end);\n\t\t\t}\n\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t}\n};\n","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(id, type, data){\n\t\tvar expireDate = new Date();\n\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\n\t\t//block editor from taking action while resizing is taking place\n\t\tif(self.startColumn.modules.edit){\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.selectable !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\t\t\t\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t}\n\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectable !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\n\t\t\t\tif(this.table.options.selectableRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\t//compare valid values\n\t\t\treturn a - b;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
              \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\n\t\tparams.sort = sorters;\n\n\t\treturn params;\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\n\t\tif(column.definition.headerSort !== false){\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t}\n\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif(field){\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Sort.sorters[sorter];\n\t}\n\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\n\t\t\t\t\tif(sortObj){\n\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t}\n\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn !isNaN(value);\n\t},\n\n\t//must be a string\n\tstring: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn isNaN(value);\n\t},\n\n\t//maximum value\n\tmax: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) <= parameters;\n\t},\n\n\t//minimum value\n\tmin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) >= parameters;\n\t},\n\n\t//starts with value\n\tstarts: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\n\t},\n\n\t//ends with value\n\tends: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\n\t},\n\n\n\t//minimum string length\n\tminLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length >= parameters;\n\t},\n\n\t//maximum string length\n\tmaxLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length <= parameters;\n\t},\n\n\t//in provided value list\n\tin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar reg = new RegExp(parameters);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//value must be unique in this column\n\tunique: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar unique = true;\n\n\t\tvar cellData = cell.getData();\n\t\tvar column = cell.getColumn()._getSelf();\n\n\t\tthis.table.rowManager.rows.forEach(function(row){\n\t\t\tvar data = row.getData();\n\n\t\t\tif(data !== cellData){\n\t\t\t\tif(value == column.getFieldValue(data)){\n\t\t\t\t\tunique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn unique;\n\t},\n\n\t//must have a value\n\trequired:function(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\n\t\t\t\tif(validator){\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;"],"names":["defaultOptions","RendererVirtualDomHorizontal","RendererBasicHorizontal","RendererVirtualDomVertical","RendererBasicVertical","InteractionMonitor","generateParamsList","defaultURLGenerator","List","Edit","html","textarea","tickCross","datetime","star","progress","csv","json","array","Popup","number","date","time"],"mappings":"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"} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/js/tabulator.min.js b/src/main/webapp/tabulator/dist/js/tabulator.min.js deleted file mode 100644 index 58eaa41a..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v5.5.2 (c) Oliver Folkerd 2023 */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Tabulator=t()}(this,(function(){"use strict";class e{constructor(e){this.table=e}reloadData(e,t,i){return this.table.dataLoader.load(e,void 0,void 0,void 0,t,i)}langText(){return this.table.modules.localize.getText(...arguments)}langBind(){return this.table.modules.localize.bind(...arguments)}langLocale(){return this.table.modules.localize.getLocale(...arguments)}commsConnections(){return this.table.modules.comms.getConnections(...arguments)}commsSend(){return this.table.modules.comms.send(...arguments)}layoutMode(){return this.table.modules.layout.getMode()}layoutRefresh(e){return this.table.modules.layout.layout(e)}subscribe(){return this.table.eventBus.subscribe(...arguments)}unsubscribe(){return this.table.eventBus.unsubscribe(...arguments)}subscribed(e){return this.table.eventBus.subscribed(e)}subscriptionChange(){return this.table.eventBus.subscriptionChange(...arguments)}dispatch(){return this.table.eventBus.dispatch(...arguments)}chain(){return this.table.eventBus.chain(...arguments)}confirm(){return this.table.eventBus.confirm(...arguments)}dispatchExternal(){return this.table.externalEvents.dispatch(...arguments)}subscribedExternal(e){return this.table.externalEvents.subscribed(e)}subscriptionChangeExternal(){return this.table.externalEvents.subscriptionChange(...arguments)}options(e){return this.table.options[e]}setOption(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}deprecationCheck(e,t){return this.table.deprecationAdvisor.check(e,t)}deprecationCheckMsg(e,t){return this.table.deprecationAdvisor.checkMsg(e,t)}deprecationMsg(e){return this.table.deprecationAdvisor.msg(e)}module(e){return this.table.module(e)}}class t{constructor(e){return this._column=e,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}getElement(){return this._column.getElement()}getDefinition(){return this._column.getDefinition()}getField(){return this._column.getField()}getTitleDownload(){return this._column.getTitleDownload()}getCells(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}isVisible(){return this._column.visible}show(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}hide(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}toggle(){this._column.visible?this.hide():this.show()}delete(){return this._column.delete()}getSubColumns(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}getParentColumn(){return this._column.parent instanceof n&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(e,t){return this._column.table.columnManager.scrollToColumn(this._column,e,t)}getTable(){return this._column.table}move(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}getNextColumn(){var e=this._column.nextColumn();return!!e&&e.getComponent()}getPrevColumn(){var e=this._column.prevColumn();return!!e&&e.getComponent()}updateDefinition(e){return this._column.updateDefinition(e)}getWidth(){return this._column.getWidth()}setWidth(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.rerenderColumns(!0),t}}var i={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,maxInitialWidth:void 0,cssClass:void 0,variableHeight:void 0,headerVertical:void 0,headerHozAlign:void 0,headerWordWrap:!1,editableTitle:void 0};class s{constructor(e){return this._cell=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}getValue(){return this._cell.getValue()}getOldValue(){return this._cell.getOldValue()}getInitialValue(){return this._cell.initialValue}getElement(){return this._cell.getElement()}getRow(){return this._cell.row.getComponent()}getData(e){return this._cell.row.getData(e)}getType(){return"cell"}getField(){return this._cell.column.getField()}getColumn(){return this._cell.column.getComponent()}setValue(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}restoreOldValue(){this._cell.setValueActual(this._cell.getOldValue())}restoreInitialValue(){this._cell.setValueActual(this._cell.initialValue)}checkHeight(){this._cell.checkHeight()}getTable(){return this._cell.table}_getSelf(){return this._cell}}class o extends e{constructor(e,t){super(e.table),this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()}build(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}generateElement(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell")}_configureCell(){var e=this.element,t=this.column.getField();(e.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(e.style.display="inline-flex",e.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(e.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),t&&e.setAttribute("tabulator-field",t),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((t=>{e.classList.add(t)}));this.dispatch("cell-init",this),this.column.visible||this.hide()}_generateContents(){var e;switch(typeof(e=this.chain("cell-format",this,null,(()=>this.element.innerHTML=this.value)))){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t,i){this.setValueProcessData(e,t,i)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.column.definition.cellEdited&&this.column.definition.cellEdited.call(this.table,this.getComponent()),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}setValueProcessData(e,t,i){var s=!1;return(this.value!==e||i)&&(s=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),s&&this.dispatch("cell-value-changed",this),s}setValueActual(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}layoutElement(){this._generateContents(),this.dispatch("cell-layout",this)}setWidth(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}clearWidth(){this.width="",this.element.style.width=""}getWidth(){return this.width||this.element.offsetWidth}setMinWidth(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}setMaxWidth(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}checkHeight(){this.row.reinitializeHeight()}clearHeight(){this.element.style.height="",this.height=null,this.dispatch("cell-height",this,"")}setHeight(){this.height=this.row.height,this.element.style.height=this.row.heightStyled,this.dispatch("cell-height",this,this.row.heightStyled)}getHeight(){return this.height||this.element.offsetHeight}show(){this.element.style.display=this.column.vertAlign?"inline-flex":""}hide(){this.element.style.display="none"}delete(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}getIndex(){return this.row.getCellIndex(this)}getComponent(){return this.component||(this.component=new s(this)),this.component}}class n extends e{constructor(e,t){super(t.table),this.definition=e,this.parent=t,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleDownload=null,this.titleFormatterRendered=!1,this.mapDefinitions(),this.setField(this.definition.field),this.modules={},this.width=null,this.widthStyled="",this.maxWidth=null,this.maxWidthStyled="",this.maxInitialWidth=null,this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this.definition.columns?(this.isGroup=!0,this.definition.columns.forEach(((e,t)=>{var i=new n(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize()}createElement(){var e=document.createElement("div");switch(e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),this.table.options.columnHeaderVertAlign){case"middle":e.style.justifyContent="center";break;case"bottom":e.style.justifyContent="flex-end"}return e}createGroupElement(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}mapDefinitions(){var e=this.table.options.columnDefaults;if(e)for(let t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(n.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===n.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(this.field||this.definition.title)+"' column:",e)}))}setField(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}registerColumnPosition(e){this.parent.registerColumnPosition(e)}registerColumnField(e){this.parent.registerColumnField(e)}reRegisterPosition(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}_initialize(){for(var e=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);e.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.dispatch("column-init",this)}_buildColumnHeader(){var e=this.definition;(this.dispatch("column-layout",this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass)&&e.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(parseInt(e.minWidth)),e.maxInitialWidth&&(this.maxInitialWidth=parseInt(e.maxInitialWidth)),e.maxWidth&&this.setMaxWidth(parseInt(e.maxWidth)),this.reinitializeWidth(),this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}_buildColumnHeaderTitle(){var e=this.definition,t=document.createElement("div");if(t.classList.add("tabulator-col-title"),e.headerWordWrap&&t.classList.add("tabulator-col-title-wrap"),e.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),i.addEventListener("change",(()=>{e.title=i.value,this.dispatchExternal("columnTitleChanged",this.getComponent())})),t.appendChild(i),e.field?this.langBind("columns|"+e.field,(t=>{i.value=t||e.title||" "})):i.value=e.title||" "}else e.field?this.langBind("columns|"+e.field,(i=>{this._formatColumnHeaderTitle(t,i||e.title||" ")})):this._formatColumnHeaderTitle(t,e.title||" ");return t}_formatColumnHeaderTitle(e,t){var i=this.chain("column-format",[this,t,e],null,(()=>t));switch(typeof i){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":e.innerHTML="";break;default:e.innerHTML=i}}_buildGroupHeader(){(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}_getFlatData(e){return e[this.field]}_getNestedData(e){var t,i=e,s=this.fieldStructure,o=s.length;for(let e=0;e{t.push(e),t=t.concat(e.getColumns(!0))})):t=this.columns,t}getCells(){return this.cells}getTopColumn(){return this.parent.isGroup?this.parent.getTopColumn():this}getDefinition(e){var t=[];return this.isGroup&&e&&(this.columns.forEach((function(e){t.push(e.getDefinition(!0))})),this.definition.columns=t),this.definition}checkColumnVisibility(){var e=!1;this.columns.forEach((function(t){t.visible&&(e=!0)})),e?(this.show(),this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1)):this.hide()}show(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.show()})),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager.verticalAlignHeaders(),this.dispatch("column-show",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}hide(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager.verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.hide()})),this.dispatch("column-hide",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}matchChildWidths(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())}removeChild(e){var t=this.columns.indexOf(e);t>-1&&this.columns.splice(t,1),this.columns.length||this.delete()}setWidth(e){this.widthFixed=!0,this.setWidthActual(e)}setWidthActual(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}checkCellHeights(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}getWidth(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}getLeftOffset(){var e=this.element.offsetLeft;return this.parent.isGroup&&(e+=this.parent.getLeftOffset()),e}getHeight(){return Math.ceil(this.element.getBoundingClientRect().height)}setMinWidth(e){this.maxWidth&&e>this.maxWidth&&(e=this.maxWidth,console.warn("the minWidth ("+e+"px) for column '"+this.field+"' cannot be bigger that its maxWidth ("+this.maxWidthStyled+")")),this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.minWidth&&e{this.isGroup&&this.columns.forEach((function(e){e.delete()})),this.dispatch("column-delete",this);var i=this.cells.length;for(let e=0;e-1&&this._nextVisibleColumn(e+1)}_nextVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}prevColumn(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}_prevVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}reinitializeWidth(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(e),this.dispatch("column-width-fit-after",this)}fitToData(e){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((e=>{e.clearWidth()})));var t=this.element.offsetWidth;if((!this.width||!this.widthFixed)&&(this.cells.forEach((e=>{var i=e.getWidth();i>t&&(t=i)})),t)){var i=t+1;this.maxInitialWidth&&!e&&(i=Math.min(i,this.maxInitialWidth)),this.setWidthActual(i)}}}updateDefinition(e){var t;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((e=>(t.field==this.field&&(this.field=!1),this.delete().then((()=>e.getComponent()))))))}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getComponent(){return this.component||(this.component=new t(this)),this.component}}n.defaultOptionList=i;class r{static elVisible(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}static elOffset(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}static deepClone(e,t,i=[]){var s={}.__proto__,o=[].__proto__;for(var n in t||(t=Object.assign(Array.isArray(e)?[]:{},e)),e){let r,a,l=e[n];null==l||"object"!=typeof l||l.__proto__!==s&&l.__proto__!==o||(r=i.findIndex((e=>e.subject===l)),r>-1?t[n]=i[r].copy:(a=Object.assign(Array.isArray(l)?[]:{},l),i.unshift({subject:l,copy:a}),t[n]=this.deepClone(l,a,i)))}return t}}class a{constructor(e,t,i={}){this.table=e,this.msgType=t,this.registeredDefaults=Object.assign({},i)}register(e,t){this.registeredDefaults[e]=t}generate(e,t={}){var i=Object.assign({},this.registeredDefaults),s=this.table.options.debugInvalidOptions||!0===t.debugInvalidOptions;Object.assign(i,e);for(let e in t)i.hasOwnProperty(e)||(s&&console.warn("Invalid "+this.msgType+" option:",e),i[e]=t.key);for(let e in i)e in t?i[e]=t[e]:Array.isArray(i[e])?i[e]=Object.assign([],i[e]):"object"==typeof i[e]&&null!==i[e]?i[e]=Object.assign({},i[e]):void 0===i[e]&&delete i[e];return i}}class l extends e{constructor(e){super(e),this.elementVertical=e.rowManager.element,this.elementHorizontal=e.columnManager.element,this.tableElement=e.rowManager.tableElement,this.verticalFillMode="fit"}initialize(){}clearRows(){}clearColumns(){}reinitializeColumnWidths(e){}renderRows(){}renderColumns(){}rerenderRows(e){e&&e()}rerenderColumns(e,t){}renderRowCells(e){}rerenderRowCells(e,t){}scrollColumns(e,t){}scrollRows(e,t){}resize(){}scrollToRow(e){}scrollToRowNearestTop(e){}visibleRows(e){return[]}rows(){return this.table.rowManager.getDisplayRows()}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}clear(){this.clearRows(),this.clearColumns()}render(){this.renderRows(),this.renderColumns()}rerender(e){this.rerenderRows(),this.rerenderColumns()}scrollToRowPosition(e,t,i){var s=this.rows().indexOf(e),o=e.getElement(),n=0;return new Promise(((a,l)=>{if(s>-1){if(void 0===i&&(i=this.table.options.scrollToRowIfVisible),!i&&r.elVisible(o)&&(n=r.elOffset(o).top-r.elOffset(this.elementVertical).top)>0&&n{i.appendChild(e.getElement())})),e.element.appendChild(i),t||e.cells.forEach((e=>{e.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class d extends l{constructor(e){super(e),this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.windowBuffer=200,this.visibleRows=null,this.initialized=!1,this.isFitData=!1,this.columns=[]}initialize(){this.compatibilityCheck(),this.layoutCheck(),this.vertScrollListen()}compatibilityCheck(){"fitDataTable"==this.options("layout")&&console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"),this.options("responsiveLayout")&&console.warn("Horizontal Virtual DOM is not compatible with responsive columns"),this.options("rtl")&&console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction")}layoutCheck(){this.isFitData=this.options("layout").startsWith("fitData")}vertScrollListen(){this.subscribe("scroll-vertical",this.clearVisRowCache.bind(this)),this.subscribe("data-refreshed",this.clearVisRowCache.bind(this))}clearVisRowCache(){this.visibleRows=null}renderColumns(e,t){this.dataChange()}scrollColumns(e,t){this.scrollLeft!=e&&(this.scrollLeft=e,this.scroll(e-(this.vDomScrollPosLeft+this.windowBuffer)))}calcWindowBuffer(){var e=this.elementVertical.clientWidth;this.table.columnManager.columnsByIndex.forEach((t=>{if(t.visible){var i=t.getWidth();i>e&&(e=i)}})),this.windowBuffer=2*e}rerenderColumns(e,t){var i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol},s=0;e&&!this.initialized||(this.clear(),this.calcWindowBuffer(),this.scrollLeft=this.elementVertical.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.windowBuffer,this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,this.table.columnManager.columnsByIndex.forEach((e=>{var t,i={};e.visible&&(e.modules.frozen||(t=e.getWidth(),i.leftPos=s,i.rightPos=s+t,i.width=t,this.isFitData&&(i.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),s+t>this.vDomScrollPosLeft&&s{t.appendChild(e.getElement())})),e.element.appendChild(t),e.cells.forEach((e=>{e.cellRendered()}))}}rerenderRowCells(e,t){this.reinitializeRow(e,t)}reinitializeColumnWidths(e){for(let e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()}deinitialize(){this.initialized=!1}clear(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0}dataChange(){var e,t,i=!1;if(this.isFitData){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,e=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()))[0])){t=e.getElement(),e.generateCells(),this.tableElement.appendChild(t);for(let i=0;i{e!==this.columns[i]&&(t=!1)})),!t)}reinitializeRows(){var e=this.getVisibleRows(),t=this.table.rowManager.getRows().filter((t=>!e.includes(t)));e.forEach((e=>{this.reinitializeRow(e,!0)})),t.forEach((e=>{e.deinitialize()}))}getVisibleRows(){return this.visibleRows||(this.visibleRows=this.table.rowManager.getVisibleRows()),this.visibleRows}scroll(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,Math.abs(e)>this.windowBuffer/2?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}colPositionAdjust(e,t,i){for(let s=e;s{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.rightCol]).getElement().nextSibling),t.cellRendered()}})),this.fitDataColActualWidthCheck(i),this.rightCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)})),this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=i.getWidth()):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}addColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol-1];if(i)if(i.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft){e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.leftCol]).getElement()),t.cellRendered()}})),this.leftCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)})),this.leftCol<=0?this.vDomPadLeft=0:this.vDomPadLeft-=i.getWidth();let t=this.fitDataColActualWidthCheck(i);t&&(this.scrollLeft=this.elementVertical.scrollLeft=this.elementVertical.scrollLeft+t,this.vDomPadRight-=t)}else t=!1;else t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}removeColRight(){for(var e=!1,t=!0;t;){let i=this.columns[this.rightCol];i&&i.modules.vdomHoz.leftPos>this.vDomScrollPosRight?(e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColRight",e.message)}}})),this.vDomPadRight+=i.getWidth(),this.rightCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)}))):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}removeColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol];i&&i.modules.vdomHoz.rightPos{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColLeft",e.message)}}})),this.vDomPadLeft+=i.getWidth(),this.leftCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)}))):t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}fitDataColActualWidthCheck(e){var t,i;return e.modules.vdomHoz.fitDataCheck&&(e.reinitializeWidth(),(i=(t=e.getWidth())-e.modules.vdomHoz.width)&&(e.modules.vdomHoz.rightPos+=i,e.modules.vdomHoz.width=t,this.colPositionAdjust(this.columns.indexOf(e)+1,this.columns.length,i)),e.modules.vdomHoz.fitDataCheck=!1),i}initializeRow(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol},this.table.modules.frozenColumns&&this.table.modules.frozenColumns.leftColumns.forEach((t=>{this.appendCell(e,t)}));for(let t=this.leftCol;t<=this.rightCol;t++)this.appendCell(e,this.columns[t]);this.table.modules.frozenColumns&&this.table.modules.frozenColumns.rightColumns.forEach((t=>{this.appendCell(e,t)}))}}appendCell(e,t){if(t&&t.visible){let i=e.getCell(t);e.getElement().appendChild(i.getElement()),i.cellRendered()}}reinitializeRow(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(var i=e.getElement();i.firstChild;)i.removeChild(i.firstChild);this.initializeRow(e)}}}class c extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.contentsElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new a(this.table,"column definition",i),this.redrawBlock=!1,this.redrawBlockUpdate=null,this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.contentsElement=this.createHeaderContentsElement(),this.element=this.createHeaderElement(),this.contentsElement.insertBefore(this.headersElement,this.contentsElement.firstChild),this.element.insertBefore(this.contentsElement,this.element.firstChild),this.initializeScrollWheelWatcher(),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("scrollbar-vertical",this.padVerticalScrollbar.bind(this))}padVerticalScrollbar(e){this.table.rtl?this.headersElement.style.marginLeft=e+"px":this.headersElement.style.marginRight=e+"px"}initializeRenderer(){var e,t={virtual:d,basic:h};(e="string"==typeof this.table.options.renderHorizontal?t[this.table.options.renderHorizontal]:this.table.options.renderHorizontal)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize()):console.error("Unable to find matching renderer:",this.table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e.setAttribute("role","row"),e}createHeaderContentsElement(){var e=document.createElement("div");return e.classList.add("tabulator-header-contents"),e.setAttribute("role","rowgroup"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),e.setAttribute("role","rowgroup"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e}getElement(){return this.element}getContentsElement(){return this.contentsElement}getHeadersElement(){return this.headersElement}scrollHorizontal(e){this.contentsElement.scrollLeft=e,this.scrollLeft=e,this.renderer.scrollColumns(e)}initializeScrollWheelWatcher(){this.contentsElement.addEventListener("wheel",(e=>{var t;e.deltaX&&(t=this.contentsElement.scrollLeft+e.deltaX,this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))}))}generateColumnsFromRowData(e){var t,i,s=[],o=this.table.options.autoColumnsDefinitions;if(e&&e.length){for(var n in t=e[0]){let e={field:n,title:n},o=t[n];switch(typeof o){case"undefined":i="string";break;case"boolean":i="boolean";break;case"object":i=Array.isArray(o)?"array":"string";break;default:i=isNaN(o)||""===o?o.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}e.sorter=i,s.push(e)}if(o)switch(typeof o){case"function":this.table.options.columns=o.call(this.table,s);break;case"object":Array.isArray(o)?s.forEach((e=>{var t=o.find((t=>t.field===e.field));t&&Object.assign(e,t)})):s.forEach((e=>{o[e.field]&&Object.assign(e,o[e.field])})),this.table.options.columns=s}else this.table.options.columns=s;this.setColumns(this.table.options.columns)}}setColumns(e,t){for(;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach(((e,t)=>{this._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new n(e,this),o=s.getElement(),r=i?this.findColumnIndex(i):i;if(i&&r>-1){var a=i.getTopColumn(),l=this.columns.indexOf(a),h=a.getElement();t?(this.columns.splice(l,0,s),h.parentNode.insertBefore(o,h)):(this.columns.splice(l+1,0,s),h.parentNode.insertBefore(o,h.nextSibling))}else t?(this.columns.unshift(s),this.headersElement.insertBefore(s.getElement(),this.headersElement.firstChild)):(this.columns.push(s),this.headersElement.appendChild(s.getElement()));return s.columnRendered(),s}registerColumnField(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}registerColumnPosition(e){this.columnsByIndex.push(e)}_reIndexColumns(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}verticalAlignHeaders(){var e=0;this.redrawBlock||(this.headersElement.style.height="",this.columns.forEach((e=>{e.clearVerticalAlign()})),this.columns.forEach((t=>{var i=t.getHeight();i>e&&(e=i)})),this.headersElement.style.height=e+"px",this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize())}findColumn(e){var i;if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof n)return e;if(e instanceof t)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return i=[],this.columns.forEach((e=>{i.push(e),i=i.concat(e.getColumns(!0))})),i.find((t=>t.element===e))||!1}return!1}getColumnByField(e){return this.columnsByField[e]}getColumnsByFieldRoot(e){var t=[];return Object.keys(this.columnsByField).forEach((i=>{i.split(".")[0]===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibleColumn(){var e=this.columnsByIndex.findIndex((e=>e.visible));return e>-1&&this.columnsByIndex[e]}getColumns(){return this.columns}findColumnIndex(e){return this.columnsByIndex.findIndex((t=>e===t))}getRealColumns(){return this.columnsByIndex}traverse(e){this.columnsByIndex.forEach(((t,i)=>{e(t,i)}))}getDefinitions(e){var t=[];return this.columnsByIndex.forEach((i=>{(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}getDefinitionTree(){var e=[];return this.columns.forEach((t=>{e.push(t.getDefinition(!0))})),e}getComponents(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((e=>{t.push(e.getComponent())})),t}getWidth(){var e=0;return this.columnsByIndex.forEach((t=>{t.visible&&(e+=t.getWidth())})),e}moveColumn(e,t,i){t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this.moveColumnActual(e,t,i),this.verticalAlignHeaders(),this.table.rowManager.reinitialize()}moveColumnActual(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}_moveColumnInArray(e,t,i,s,o){var n,r=e.indexOf(t);r>-1&&(e.splice(r,1),(n=e.indexOf(i))>-1?s&&(n+=1):n=r,e.splice(n,0,t),o&&(this.chain("column-moving-rows",[t,i,s],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(n,0,t)}})))}scrollToColumn(e,t,i){var s=0,o=e.getLeftOffset(),n=0,r=e.getElement();return new Promise(((a,l)=>{if(void 0===t&&(t=this.table.options.scrollToColumnPosition),void 0===i&&(i=this.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":n=-this.element.clientWidth/2;break;case"right":n=r.clientWidth-this.headersElement.clientWidth}if(!i&&o>0&&o+r.offsetWidth{t.push(i.generateCell(e))})),t}getFlexBaseWidth(){var e=this.table.element.clientWidth,t=0;return this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var s,o,n;i.visible&&(s=i.definition.width||0,o=parseInt(i.minWidth),n="string"==typeof s?s.indexOf("%")>-1?e/100*parseInt(s):parseInt(s):s,t+=n>o?n:o)})),t}addColumn(e,t,i){return new Promise(((s,o)=>{var n=this._addColumn(e,t,i);this._reIndexColumns(),this.dispatch("column-add",e,t,i),"fitColumns"!=this.layoutMode()&&n.reinitializeWidth(),this.redraw(!0),this.table.rowManager.reinitialize(),this.rerenderColumns(),s(n)}))}deregisterColumn(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.verticalAlignHeaders(),this.redraw()}rerenderColumns(e,t){this.redrawBlock?(!1===e||!0===e&&null===this.redrawBlockUpdate)&&(this.redrawBlockUpdate=e):this.renderer.rerenderColumns(e,t)}blockRedraw(){this.redrawBlock=!0,this.redrawBlockUpdate=null}restoreRedraw(){this.redrawBlock=!1,this.verticalAlignHeaders(),this.renderer.rerenderColumns(this.redrawBlockUpdate)}redraw(e){r.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(e),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class u{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}getIndex(){return this._row.getData("data")[this._row.table.options.index]}getPosition(){return this._row.getPosition()}watchPosition(e){return this._row.watchPosition(e)}delete(){return this._row.delete()}scrollTo(e,t){return this._row.table.rowManager.scrollToRow(this._row,e,t)}move(e,t){this._row.moveToRow(e,t)}update(e){return this._row.updateData(e)}normalizeHeight(){this._row.normalizeHeight(!0)}_getSelf(){return this._row}reformat(){return this._row.reinitialize()}getTable(){return this._row.table}getNextRow(){var e=this._row.nextRow();return e?e.getComponent():e}getPrevRow(){var e=this._row.prevRow();return e?e.getComponent():e}}class p extends e{constructor(e,t,i="row"){super(t.table),this.parent=t,this.data={},this.type=i,this.element=!1,this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.position=0,this.positionWatchers=[],this.component=null,this.created=!1,this.setData(e)}create(){this.created||(this.created=!0,this.generateElement())}createElement(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}getElement(){return this.create(),this.element}detachElement(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}generateElement(){this.createElement(),this.dispatch("row-init",this)}generateCells(){this.cells=this.table.columnManager.generateCells(this)}initialize(e,t){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.initialized=!0,this.table.columnManager.renderer.renderRowCells(this,t),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this,t)}rendered(){this.cells.forEach((e=>{e.cellRendered()}))}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}deinitialize(){this.initialized=!1}deinitializeHeight(){this.heightInitialized=!1}reinitialize(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}calcHeight(e){var t,i=0;this.table.options.rowHeight?this.height=this.table.options.rowHeight:(t=this.table.options.resizableRows?this.element.clientHeight:0,this.cells.forEach((function(e){var t=e.getHeight();t>i&&(i=t)})),this.height=e?Math.max(i,t):this.manualHeight?this.height:Math.max(i,t)),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}setCellHeight(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}clearCellHeight(){this.cells.forEach((function(e){e.clearHeight()}))}normalizeHeight(e){e&&!this.table.options.rowHeight&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}setHeight(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}getHeight(){return this.outerHeight}getWidth(){return this.element.offsetWidth}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}setData(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}updateData(e){var t,i=this.element&&r.elVisible(this.element),s={};return new Promise(((o,n)=>{"string"==typeof e&&(e=JSON.parse(e)),this.dispatch("row-data-save-before",this),this.subscribed("row-data-changing")&&(s=Object.assign(s,this.data),s=Object.assign(s,e)),t=this.chain("row-data-changing",[this,s,e],null,e);for(let e in t)this.data[e]=t[e];this.dispatch("row-data-save-after",this);for(let s in e){this.table.columnManager.getColumnsByFieldRoot(s).forEach((e=>{let s=this.getCell(e.getField());if(s){let o=e.getFieldValue(t);s.getValue()!==o&&(s.setValueProcessData(o),i&&s.cellRendered())}}))}i?(this.normalizeHeight(!0),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent())):(this.initialized=!1,this.height=0,this.heightStyled=""),this.dispatch("row-data-changed",this,i,e),this.dispatchExternal("rowUpdated",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),o()}))}getData(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}getCell(e){return e=this.table.columnManager.findColumn(e),this.initialized||0!==this.cells.length||this.generateCells(),this.cells.find((function(t){return t.column===e}))}getCellIndex(e){return this.cells.findIndex((function(t){return t===e}))}findCell(e){return this.cells.find((t=>t.element===e))}getCells(){return this.initialized||0!==this.cells.length||this.generateCells(),this.cells}nextRow(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}prevRow(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}moveToRow(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}delete(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}deleteActual(e){this.detachModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detachModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;t{e(this.position)})))}watchPosition(e){this.positionWatchers.push(e),e(this.position)}getGroup(){return this.modules.group||!1}getComponent(){return this.component||(this.component=new u(this)),this.component}}class m extends l{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.scrollTop=0,e.scrollLeft=0,e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility=""}renderRows(){var e=this.tableElement,t=!0,i=document.createDocumentFragment(),s=this.rows();s.forEach(((e,s)=>{this.styleRow(e,s),e.initialize(!1,!0),"group"!==e.type&&(t=!1),i.appendChild(e.getElement())})),e.appendChild(i),s.forEach((e=>{e.rendered(),e.heightInitialized||e.calcHeight(!0)})),s.forEach((e=>{e.heightInitialized||e.setCellHeight()})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.clearRows(),e&&e(),this.renderRows()}scrollToRowNearestTop(e){var t=r.elOffset(e.getElement()).top;return!(Math.abs(this.elementVertical.scrollTop-t)>Math.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}scrollToRow(e){var t=e.getElement();this.elementVertical.scrollTop=r.elOffset(t).top-r.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class g extends l{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}renderRows(){this._virtualRenderFill()}rerenderRows(e){for(var t=this.elementVertical.scrollTop,i=!1,s=!1,o=this.table.rowManager.scrollLeft,n=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(n[r]){var a=t-n[r].getElement().offsetTop;if(!(!1===s||Math.abs(a){e.deinitializeHeight()})),e&&e(),this.rows().length?this._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0):(this.clear(),this.table.rowManager.tableEmpty()),this.scrollColumns(o)}scrollColumns(e){this.table.rowManager.scrollHorizontal(e)}scrollRows(e,t){var i=e-this.vDomScrollPosTop,s=e-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer,n=this.rows();if(this.scrollTop=e,-i>o||s>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*n.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(n,-i),s<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(n,-s):this.vDomScrollPosBottom=this.scrollTop)):(s>=0&&this._addBottomRow(n,s),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(n,i):this.vDomScrollPosTop=this.scrollTop))}resize(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}scrollToRowNearestTop(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}scrollToRow(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}visibleRows(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,s=!1,o=0,n=0,r=this.rows();if(e)o=this.vDomTop,n=this.vDomBottom;else for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(s){if(!(i-r[a].getElement().offsetTop>=0))break;n=a}else if(t-r[a].getElement().offsetTop>=0)o=a;else{if(s=!0,!(i-r[a].getElement().offsetTop>=0))break;n=a}return r.slice(o,n+1)}_virtualRenderFill(e,t,i){var s,o,n=this.tableElement,a=this.elementVertical,l=0,h=0,d=0,c=0,u=0,p=0,m=this.rows(),g=m.length,b=0,f=[],v=0,w=0,C=this.table.rowManager.fixedHeight,E=this.elementVertical.clientHeight,y=this.table.options.rowHeight,R=!0;if(i=i||0,e=e||0){for(;n.firstChild;)n.removeChild(n.firstChild);(c=(g-e+1)*this.vDomRowHeight){e.rendered(),e.heightInitialized||e.calcHeight(!0)})),f.forEach((e=>{e.heightInitialized||e.setCellHeight()})),f.forEach((e=>{d=e.getHeight(),vthis.vDomWindowBuffer&&(this.vDomWindowBuffer=2*d),v++})),R=this.table.rowManager.adjustTableSize(),E=this.elementVertical.clientHeight,R&&(C||this.table.options.maxHeight)&&(y=h/v,w=Math.max(this.vDomWindowMinTotalRows,Math.ceil(E/y+this.vDomWindowBuffer/y)))}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-u,this.vDomBottomPad=this.vDomBottom==g-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-h-u,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((h+u)/v),this.vDomBottomPad=this.vDomRowHeight*(g-this.vDomBottom-1),this.vDomScrollHeight=u+h+this.vDomBottomPad-E),n.style.paddingTop=this.vDomTopPad+"px",n.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+u+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-E:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-E),this.elementVertical.scrollWidth>this.elementVertical.clientWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-E),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,a.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}_addTopRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomTop-1,r=0,a=!0;a;)if(this.vDomTop){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.insertBefore(d.getElement(),i.firstChild),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomTop--,n--,r++):a=!1):a=!1}else a=!1;for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomTopPad-=o,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n<1&&(this.vDomTopPad=0),i.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=o)}_removeTopRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomTop];a&&o=r?(this.vDomTop++,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomTopPad+=s,this.tableElement.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?s:s+this.vDomWindowBuffer)}_addBottomRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomBottom+1,r=0,a=!0;a;){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.appendChild(d.getElement()),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomBottom++,n++,r++):a=!1):a=!1}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomBottomPad-=o,(this.vDomBottomPad<0||n==e.length-1)&&(this.vDomBottomPad=0),i.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=o)}_removeBottomRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomBottom];a&&o=r?(this.vDomBottom--,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomBottomPad+=s,this.vDomBottomPad<0&&(this.vDomBottomPad=0),this.tableElement.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=s)}_quickNormalizeRowHeight(e){for(let t of e)t.calcHeight();for(let t of e)t.setCellHeight()}}class b extends e{constructor(e){super(e),this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.placeholder=null,this.placeholderContents=null,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRowsPipeline=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRenderInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.scrollbarWidth=0,this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),e}initializePlaceholder(){var e=this.table.options.placeholder;if("function"==typeof e&&(e=e.call(this.table)),e=this.chain("placeholder",[e],e,e)||e){let t=document.createElement("div");if(t.classList.add("tabulator-placeholder"),"string"==typeof e){let i=document.createElement("div");i.classList.add("tabulator-placeholder-contents"),i.innerHTML=e,t.appendChild(i),this.placeholderContents=i}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(t.appendChild(e),this.placeholderContents=e):(console.warn("Invalid placeholder provided, must be string or HTML Element",e),this.el=null);this.placeholder=t}}getElement(){return this.element}getTableElement(){return this.tableElement}initialize(){this.initializePlaceholder(),this.initializeRenderer(),this.element.appendChild(this.tableElement),this.firstRender=!0,this.element.addEventListener("scroll",(()=>{var e=this.element.scrollLeft,t=this.scrollLeft>e,i=this.element.scrollTop,s=this.scrollTop>i;this.scrollLeft!=e&&(this.scrollLeft=e,this.dispatch("scroll-horizontal",e,t),this.dispatchExternal("scrollHorizontal",e,t),this._positionPlaceholder()),this.scrollTop!=i&&(this.scrollTop=i,this.renderer.scrollRows(i,s),this.dispatch("scroll-vertical",i,s),this.dispatchExternal("scrollVertical",i,s))}))}findRow(e){if("object"!=typeof e){if(void 0===e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof p)return e;if(e instanceof u)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.rows.find((t=>t.getElement()===e))||!1}return!1}getRowFromDataObject(e){return this.rows.find((t=>t.data===e))||!1}getRowFromPosition(e){return this.getDisplayRows().find((t=>t.getPosition()===e&&t.isDisplayed()))}scrollToRow(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}setData(e,t,i){return new Promise(((s,o)=>{t&&this.getDisplayRows().length?this.table.options.pagination?this._setDataActual(e,!0):this.reRenderInPosition((()=>{this._setDataActual(e)})):(this.table.options.autoColumns&&i&&this.table.initialized&&this.table.columnManager.generateColumnsFromRowData(e),this.resetScroll(),this._setDataActual(e)),s()}))}_setDataActual(e,t){this.dispatchExternal("dataProcessing",e),this._wipeElements(),Array.isArray(e)?(this.dispatch("data-processing",e),e.forEach(((e,t)=>{if(e&&"object"==typeof e){var i=new p(e,this);this.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)})),this.refreshActiveData(!1,!1,t),this.dispatch("data-processed",e),this.dispatchExternal("dataProcessed",e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",typeof e,"\nData: ",e)}_wipeElements(){this.dispatch("rows-wipe"),this.destroy(),this.adjustTableSize(),this.dispatch("rows-wiped")}destroy(){this.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0}deleteRow(e,t){var i=this.rows.indexOf(e),s=this.activeRows.indexOf(e);s>-1&&this.activeRows.splice(s,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((t=>{var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowPositions(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this.tableEmpty(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){return this.addRowActual(e,t,i,s)}addRows(e,t,i,s){var o=[];return new Promise(((n,r)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((e,s)=>{var n=this.addRow(e,t,i,!0);o.push(n),this.dispatch("row-added",n,e,t,i)})),this.refreshActiveData(!!s&&"displayPipeline",!1,!0),this.regenerateRowPositions(),o.length&&this._clearPlaceholder(),n(o)}))}findAddRowPos(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}addRowActual(e,t,i,s){var o,n,r=e instanceof p?e:new p(e||{},this),a=this.findAddRowPos(t),l=-1;return i||(n=this.chain("row-adding-position",[r,a],null,{index:i,top:a}),i=n.index,a=n.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,a],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(a?t:t+1,0,r)})),o>-1&&this.activeRows.splice(a?o:o+1,0,r),this.rows.splice(a?l:l+1,0,r)):a?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s||this.reRenderInPosition(),r}moveRow(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowPositions(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}moveRowActual(e,t,i){this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((s=>{this.moveRowInArray(s,e,t,i)})),this.dispatch("row-moving",e,t,i)}moveRowInArray(e,t,i,s){var o,n,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(n=e.indexOf(i))>-1?s?e.splice(n+1,0,t):e.splice(n,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=n>o?n:o+1;for(let t=o-1&&t}nextDisplayRow(e,t){var i=this.getDisplayRowIndex(e),s=!1;return!1!==i&&i-1)&&i}getData(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}getComponents(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}getDataCount(e){return this.getRows(e).length}scrollHorizontal(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}registerDataPipelineHandler(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Data pipeline handlers must have a priority in order to be registered")}registerDisplayPipelineHandler(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Display pipeline handlers must have a priority in order to be registered")}refreshActiveData(e,t,i){var s=this.table,o="",n=0,a=["all","dataPipeline","display","displayPipeline","end"];if(!this.table.destroyed){if("function"==typeof e)if((n=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)o="dataPipeline",t&&(n==this.dataPipeline.length-1?o="display":n++);else{if(!((n=this.displayPipeline.findIndex((t=>t.handler===e)))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);o="displayPipeline",t&&(n==this.displayPipeline.length-1?o="end":n++)}else o=e||"all",n=0;if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===o&&n{"row"===e.type&&(e.setPosition(t),t++)}))}setActiveRows(e){this.activeRows=this.activeRows=Object.assign([],e),this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}setDisplayRows(e,t){this.displayRows[t]=e,t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length)}getDisplayRows(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]}getVisibleRows(e,t){var i=Object.assign([],this.renderer.visibleRows(!t));return e&&(i=this.chain("rows-visible",[t],i,i)),i}displayRowIterator(e){this.activeRowsPipeline.forEach(e),this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length}getRows(e){var t=[];switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!1,!0);break;default:t=this.chain("rows-retrieve",e,null,this.rows)||this.rows}return t}reRenderInPosition(e){this.redrawBlock?e?e():this.redrawBlockRenderInPosition=!0:(this.dispatchExternal("renderStarted"),this.renderer.rerenderRows(e),this.fixedHeight||this.adjustTableSize(),this.scrollBarCheck(),this.dispatchExternal("renderComplete"))}scrollBarCheck(){var e=0;this.element.scrollHeight>this.element.clientHeight&&(e=this.element.offsetWidth-this.element.clientWidth),e!==this.scrollbarWidth&&(this.scrollbarWidth=e,this.dispatch("scrollbar-vertical",e))}initializeRenderer(){var e,t={virtual:g,basic:m};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]:this.table.options.renderVertical)?(this.renderMode=this.table.options.renderVertical,this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize(),!this.table.element.clientHeight&&!this.table.options.height||this.table.options.minHeight&&this.table.options.maxHeight?this.fixedHeight=!1:this.fixedHeight=!0):console.error("Unable to find matching renderer:",this.table.options.renderVertical)}getRenderMode(){return this.renderMode}renderTable(){this.dispatchExternal("renderStarted"),this.element.scrollTop=0,this._clearTable(),this.displayRowsCount?(this.renderer.renderRows(),this.firstRender&&(this.firstRender=!1,this.fixedHeight||this.adjustTableSize(),this.layoutRefresh(!0))):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.scrollBarCheck(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}tableEmpty(){this.renderEmptyScroll(),this._showPlaceholder()}_showPlaceholder(){this.placeholder&&(this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.initializePlaceholder(),this.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.placeholder),this._positionPlaceholder(),this.adjustTableSize())}_clearPlaceholder(){this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.tableElement.style.minWidth="",this.tableElement.style.display=""}_positionPlaceholder(){this.placeholder&&this.placeholder.parentNode&&(this.placeholder.style.width=this.table.columnManager.getWidth()+"px",this.placeholderContents.style.width=this.table.rowManager.element.clientWidth+"px",this.placeholderContents.style.marginLeft=this.scrollLeft+"px")}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}normalizeHeight(){this.activeRows.forEach((function(e){e.normalizeHeight()}))}adjustTableSize(){let e,t=this.element.clientHeight,i=!1;if("fill"===this.renderer.verticalFillMode){let s=Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height+(this.table.footerManager&&this.table.footerManager.active&&!this.table.footerManager.external?this.table.footerManager.getElement().getBoundingClientRect().height:0));if(this.fixedHeight){e=isNaN(this.table.options.minHeight)?this.table.options.minHeight:this.table.options.minHeight+"px";const t="calc(100% - "+s+"px)";this.element.style.minHeight=e||"calc(100% - "+s+"px)",this.element.style.height=t,this.element.style.maxHeight=t}else this.element.style.height="",this.element.style.height=this.table.element.clientHeight-s+"px",this.element.scrollTop=this.scrollTop;this.renderer.resize(),this.fixedHeight||t==this.element.clientHeight||(i=!0,this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw()),this.scrollBarCheck()}return this._positionPlaceholder(),i}reinitialize(){this.rows.forEach((function(e){e.reinitialize(!0)}))}blockRedraw(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1}restoreRedraw(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.handler,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRenderInPosition&&this.reRenderInPosition(),this.redrawBlockRenderInPosition=!1}redraw(e){const t=this.adjustTableSize();this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(t&&this.reRenderInPosition(),this.scrollHorizontal(this.scrollLeft))}resetScroll(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))}}class f extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.containerElement=this.createContainerElement(),this.external=!1}initialize(){this.initializeElement()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}createContainerElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer-contents"),this.element.appendChild(e),e}initializeElement(){if(this.table.options.footerElement)if("string"==typeof this.table.options.footerElement)"<"===this.table.options.footerElement[0]?this.containerElement.innerHTML=this.table.options.footerElement:(this.external=!0,this.containerElement=document.querySelector(this.table.options.footerElement));else this.element=this.table.options.footerElement}getElement(){return this.element}append(e){this.activate(),this.containerElement.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e){this.activate(),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()}remove(e){e.parentNode.removeChild(e),this.deactivate()}deactivate(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)}activate(){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display=""))}redraw(){this.dispatch("footer-redraw")}}class v extends e{constructor(e){super(e),this.el=null,this.abortClasses=["tabulator-headers","tabulator-table"],this.previousTargets={},this.listeners=["click","dblclick","contextmenu","mouseenter","mouseleave","mouseover","mouseout","mousemove","mouseup","mousedown","touchstart","touchend"],this.componentMap={"tabulator-cell":"cell","tabulator-row":"row","tabulator-group":"group","tabulator-col":"column"},this.pseudoTrackers={row:{subscriber:null,target:null},cell:{subscriber:null,target:null},group:{subscriber:null,target:null},column:{subscriber:null,target:null}},this.pseudoTracking=!1}initialize(){this.el=this.table.element,this.buildListenerMap(),this.bindSubscriptionWatchers()}buildListenerMap(){var e={};this.listeners.forEach((t=>{e[t]={handler:null,components:[]}})),this.listeners=e}bindPseudoEvents(){Object.keys(this.pseudoTrackers).forEach((e=>{this.pseudoTrackers[e].subscriber=this.pseudoMouseEnter.bind(this,e),this.subscribe(e+"-mouseover",this.pseudoTrackers[e].subscriber)})),this.pseudoTracking=!0}pseudoMouseEnter(e,t,i){this.pseudoTrackers[e].target!==i&&(this.pseudoTrackers[e].target&&this.dispatch(e+"-mouseleave",t,this.pseudoTrackers[e].target),this.pseudoMouseLeave(e,t),this.pseudoTrackers[e].target=i,this.dispatch(e+"-mouseenter",t,i))}pseudoMouseLeave(e,t){var i=Object.keys(this.pseudoTrackers),s={row:["cell"],cell:["row"]};(i=i.filter((t=>{var i=s[e];return t!==e&&(!i||i&&!i.includes(t))}))).forEach((e=>{var i=this.pseudoTrackers[e].target;this.pseudoTrackers[e].target&&(this.dispatch(e+"-mouseleave",t,i),this.pseudoTrackers[e].target=null)}))}bindSubscriptionWatchers(){var e=Object.keys(this.listeners),t=Object.values(this.componentMap);for(let i of t)for(let t of e){let e=i+"-"+t;this.subscriptionChange(e,this.subscriptionChanged.bind(this,i,t))}this.subscribe("table-destroy",this.clearWatchers.bind(this))}subscriptionChanged(e,t,i){var s=this.listeners[t].components,o=s.indexOf(e),n=!1;i?-1===o&&(s.push(e),n=!0):this.subscribed(e+"-"+t)||o>-1&&(s.splice(o,1),n=!0),"mouseenter"!==t&&"mouseleave"!==t||this.pseudoTracking||this.bindPseudoEvents(),n&&this.updateEventListeners()}updateEventListeners(){for(let e in this.listeners){let t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}track(e,t){var i=t.composedPath&&t.composedPath()||t.path,s=this.findTargets(i);s=this.bindComponents(e,s),this.triggerEvents(e,t,s),!this.pseudoTracking||"mouseover"!=e&&"mouseleave"!=e||Object.keys(s).length||this.pseudoMouseLeave("none",t)}findTargets(e){var t={};let i=Object.keys(this.componentMap);for(let s of e){let e=s.classList?[...s.classList]:[];if(e.filter((e=>this.abortClasses.includes(e))).length)break;let o=e.filter((e=>i.includes(e)));for(let e of o)t[this.componentMap[e]]||(t[this.componentMap[e]]=s)}return t.group&&t.group===t.row&&delete t.row,t}bindComponents(e,t){var i=Object.keys(t).reverse(),s=this.listeners[e],o={},n={};for(let e of i){let i,r=t[e],a=this.previousTargets[e];if(a&&a.target===r)i=a.component;else switch(e){case"row":case"group":if(s.components.includes("row")||s.components.includes("cell")||s.components.includes("group")){i=this.table.rowManager.getVisibleRows(!0).find((e=>e.getElement()===r)),t.row&&t.row.parentNode&&t.row.parentNode.closest(".tabulator-row")&&(t[e]=!1)}break;case"column":s.components.includes("column")&&(i=this.table.columnManager.findColumn(r));break;case"cell":s.components.includes("cell")&&(o.row instanceof p?i=o.row.findCell(r):t.row&&console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"))}i&&(o[e]=i,n[e]={target:r,component:i})}return this.previousTargets=n,o}triggerEvents(e,t,i){var s=this.listeners[e];for(let o in i)i[o]&&s.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}clearWatchers(){for(let e in this.listeners){let t=this.listeners[e];t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}}class w{constructor(e){this.table=e,this.bindings={}}bind(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,i):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i]&&"function"==typeof this.bindings[e][i].bind)return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||this.table.options.debugInvalidComponentFuncs&&console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class C extends e{constructor(e){super(e),this.requestOrder=0,this.loading=!1}initialize(){}load(e,t,i,s,o,n){var r=++this.requestOrder;return this.table.destroyed?Promise.resolve():(this.dispatchExternal("dataLoading",e),!e||0!=e.indexOf("{")&&0!=e.indexOf("[")||(e=JSON.parse(e)),this.confirm("data-loading",[e,t,i,o])?(this.loading=!0,o||this.alertLoader(),t=this.chain("data-params",[e,i,o],t||{},t||{}),t=this.mapParams(t,this.table.options.dataSendParams),this.chain("data-load",[e,t,i,o],!1,Promise.resolve([])).then((e=>{if(this.table.destroyed)console.warn("Data Load Response Blocked - Table has been destroyed");else{Array.isArray(e)||"object"!=typeof e||(e=this.mapParams(e,this.objectInvert(this.table.options.dataReceiveParams)));var t=this.chain("data-loaded",e,null,e);r==this.requestOrder?(this.clearAlert(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,s,void 0===n?!s:n))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")}})).catch((e=>{console.error("Data Load Error: ",e),this.dispatchExternal("dataLoadError",e),o||this.alertError(),setTimeout((()=>{this.clearAlert()}),this.table.options.dataLoaderErrorTimeout)})).finally((()=>{this.loading=!1}))):(this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,void 0===n?!s:n),Promise.resolve()))}mapParams(e,t){var i={};for(let s in e)i[t.hasOwnProperty(s)?t[s]:s]=e[s];return i}objectInvert(e){var t={};for(let i in e)t[e[i]]=i;return t}blockActiveLoad(){this.requestOrder++}alertLoader(){("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader)&&this.table.alertManager.alert(this.table.options.dataLoaderLoading||this.langText("data|loading"))}alertError(){this.table.alertManager.alert(this.table.options.dataLoaderError||this.langText("data|error"),"error")}clearAlert(){this.table.alertManager.clear()}}class E{constructor(e,t,i){this.table=e,this.events={},this.optionsList=t||{},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=i}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e,t=Array.from(arguments),i=t.shift();return this.events[i]&&this.events[i].forEach(((i,s)=>{let o=i.apply(this.table,t);s||(e=o)})),e}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="ExternalEvent:"+e[0],(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}}class y{constructor(e){this.events={},this.subscriptionNotifiers={},this.dispatch=e?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=e?this._debugChain.bind(this):this._chain.bind(this),this.confirm=e?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=e}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t,i=1e4){this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort(((e,t)=>e.priority-t.priority)),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e.callback===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_chain(e,t,i,s){var o=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach(((e,i)=>{o=e.callback.apply(this,t.concat([o]))})),o):"function"==typeof s?s():s}_confirm(e,t){var i=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach(((e,s)=>{e.callback.apply(this,t)&&(i=!0)})),i}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e=Array.from(arguments),t=e.shift();this.events[t]&&this.events[t].forEach((t=>{t.callback.apply(this,e)}))}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}_debugChain(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._chain(...arguments)}_debugConfirm(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._confirm(...arguments)}}class R extends e{constructor(e){super(e)}_warnUser(){this.options("debugDeprecation")&&console.warn(...arguments)}check(e,t){var i="";return void 0===this.options(e)||(i="Deprecated Setup Option - Use of the %c"+e+"%c option is now deprecated",t?(i=i+", Please use the %c"+t+"%c option instead",this._warnUser(i,"font-weight: bold;","font-weight: normal;","font-weight: bold;","font-weight: normal;")):this._warnUser(i,"font-weight: bold;","font-weight: normal;"),!1)}checkMsg(e,t){return void 0===this.options(e)||(this._warnUser("%cDeprecated Setup Option - Use of the %c"+e+" %c option is now deprecated, "+t,"font-weight: normal;","font-weight: bold;","font-weight: normal;"),!1)}msg(e){this._warnUser(e)}}class x{static register(e){x.tables.push(e)}static deregister(e){var t=x.tables.indexOf(e);t>-1&&x.tables.splice(t,1)}static lookupTable(e,t){var i,s,o=[];if("string"==typeof e){if((i=document.querySelectorAll(e)).length)for(var n=0;n{e.stopPropagation()}))),this}_fitToScreen(e,t,i,s,o){var n=this.container===document.body?document.documentElement.scrollTop:this.container.scrollTop;if((e+this.element.offsetWidth>=this.container.offsetWidth||this.reversedX)&&(this.element.style.left="",this.element.style.right=i?this.container.offsetWidth-s.left+"px":this.container.offsetWidth-e+"px",this.reversedX=!0),t+this.element.offsetHeight>Math.max(this.container.offsetHeight,n?this.container.scrollHeight:0))if(i)if("bottom"===o)this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight-i.offsetHeight-1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+i.offsetHeight+1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+"px"}isVisible(){return this.visible}hideOnBlur(e){return this.blurable=!0,this.visible&&(setTimeout((()=>{this.visible&&(this.table.rowManager.element.addEventListener("scroll",this.blurEvent),this.subscribe("cell-editing",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),document.body.addEventListener("mousedown",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent),this.blurEventsBound=!0)}),100),this.blurCallback=e),this}_escapeCheck(e){27==e.keyCode&&this.hide()}blockHide(){this.hideable=!1}restoreHide(){this.hideable=!0}hide(e=!1){return this.visible&&this.hideable&&(this.blurable&&this.blurEventsBound&&(document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),document.body.removeEventListener("mousedown",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.unsubscribe("cell-editing",this.blurEvent),this.blurEventsBound=!1),this.childPopup&&this.childPopup.hide(),this.parent&&(this.parent.childPopup=null),this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.visible=!1,this.blurCallback&&!e&&this.blurCallback(),this.unsubscribe("table-destroy",this.destroyBinding)),this}child(e){return this.childPopup&&this.childPopup.hide(),this.childPopup=new T(this.table,e,this),this.childPopup}}class k extends e{constructor(e,t){super(e),this._handler=null}initialize(){}registerTableOption(e,t){this.table.optionsList.register(e,t)}registerColumnOption(e,t){this.table.columnManager.optionsList.register(e,t)}registerTableFunction(e,t){void 0===this.table[e]?this.table[e]=(...i)=>(this.table.initGuard(e),t(...i)):console.warn("Unable to bind table function, name already in use",e)}registerComponentFunction(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}registerDataHandler(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}registerDisplayHandler(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}displayRows(e){var t,i=this.table.rowManager.displayRows.length-1;if(this._handler&&(t=this.table.rowManager.displayPipeline.findIndex((e=>e.handler===this._handler)))>-1&&(i=t),e&&(i+=e),this._handler)return i>-1?this.table.rowManager.getDisplayRows(i):this.activeRows()}activeRows(){return this.table.rowManager.activeRows}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}footerAppend(e){return this.table.footerManager.append(e)}footerPrepend(e){return this.table.footerManager.prepend(e)}footerRemove(e){return this.table.footerManager.remove(e)}popup(e,t){return new T(this.table,e,t)}alert(e,t){return this.table.alertManager.alert(e,t)}clearAlert(){return this.table.alertManager.clear()}}function M(e,t){e.forEach((function(e){e.reinitializeWidth()})),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}var L={fitData:function(e,t){t&&this.table.columnManager.renderer.reinitializeColumnWidths(e),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:M,fitDataTable:M,fitDataStretch:function(e,t){var i=0,s=this.table.rowManager.element.clientWidth,o=0,n=!1;e.forEach(((e,t)=>{e.widthFixed||e.reinitializeWidth(),(this.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(n=e),e.visible&&(i+=e.getWidth())})),n?(o=s-i+n.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(n.setWidth(0),this.table.modules.responsiveLayout.update()),o>0?n.setWidth(o):n.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e,t){var i,s,o=this.table.rowManager.element.getBoundingClientRect().width,n=0,r=0,a=0,l=[],h=[],d=0,c=0;function u(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function p(e,t,i,s){var o=[],n=0,r=0,l=0,h=a,d=0,c=0,m=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return u(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,n){var r=s?b(e):g(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,s;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(s=u(t),n+=s>i?s:i,e.definition.widthShrink&&(h.push({column:e,width:s>i?s:i}),d+=e.definition.widthShrink)):(l.push({column:e,width:0}),a+=e.definition.widthGrow||1))})),r=o-n,i=Math.floor(r/a),c=p(l,r,i,!1),l.length&&c>0&&(l[l.length-1].width+=c),l.forEach((function(e){r-=e.width})),(s=Math.abs(c)+r)>0&&d&&(c=p(h,s,Math.floor(s/d),!0)),c&&h.length&&(h[h.length-1].width-=c),l.forEach((function(e){e.column.setWidth(e.width)})),h.forEach((function(e){e.column.setWidth(e.width)}))}};class S extends k{constructor(e){super(e,"layout"),this.mode=null,this.registerTableOption("layout","fitData"),this.registerTableOption("layoutColumnsOnNewData",!1),this.registerColumnOption("widthGrow"),this.registerColumnOption("widthShrink")}initialize(){var e=this.table.options.layout;S.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode),this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){e.definition.widthGrow&&(e.definition.widthGrow=Number(e.definition.widthGrow)),e.definition.widthShrink&&(e.definition.widthShrink=Number(e.definition.widthShrink))}getMode(){return this.mode}layout(e){this.dispatch("layout-refreshing"),S.modes[this.mode].call(this,this.table.columnManager.columnsByIndex,e),this.dispatch("layout-refreshed")}}S.moduleName="layout",S.modes=L;class D extends k{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=r.deepClone(D.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);for(let e in this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}setHeaderFilterPlaceholder(e){this.langList.default.headerFilters.default=e}installLang(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}_setLangProp(e,t){for(let i in t)e[i]&&"object"==typeof e[i]?this._setLangProp(e[i],t[i]):e[i]=t[i]}setLocale(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langList[e]){let t=e.split("-")[0];this.langList[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=r.deepClone(this.langList.default||{}),"default"!=e&&function e(t,i){for(var s in t)"object"==typeof t[s]?(i[s]||(i[s]={}),e(t[s],i[s])):i[s]=t[s]}(this.langList[e],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}getLocale(e){return this.locale}getLang(e){return e?this.langList[e]:this.lang}getText(e,t){var i=(t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}_getLangElement(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}bind(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}_executeBindings(){for(let e in this.bindings)this.bindings[e].forEach((t=>{t(this.getText(e),this.lang)}))}}D.moduleName="localize",D.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All",counter:{showing:"Showing",of:"of",rows:"rows",pages:"pages"}},headerFilters:{default:"filter column...",columns:{}}}};class P extends k{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return x.lookupTable(e).forEach((e=>{this.table!==e&&t.push(e)})),t}send(e,t,i,s){var o=this.getConnections(e);o.forEach((e=>{e.tableComms(this.table.element,t,i,s)})),!o.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}receive(e,t,i,s){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,s);console.warn("Inter-table Comms Error - no such module:",t)}}P.moduleName="comms";var z=Object.freeze({__proto__:null,LayoutModule:S,LocalizeModule:D,CommsModule:P});class F{constructor(e,t){this.bindStaticFunctionality(e),this.bindModules(e,z,!0),t&&this.bindModules(e,t)}bindStaticFunctionality(e){e.moduleBindings={},e.extendModule=function(t,i,s){if(e.moduleBindings[t]){var o=e.moduleBindings[t][i];if(o)if("object"==typeof s)for(let e in s)o[e]=s[e];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",i)}else console.warn("Module Error - module does not exist:",t)},e.registerModule=function(t){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.registerModuleBinding(t)}))},e.registerModuleBinding=function(t){e.moduleBindings[t.moduleName]=t},e.findTable=function(e){var t=x.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){var t=[],i=[],s=[];for(var o in this.modules={},e.moduleBindings){let n=e.moduleBindings[o],r=new n(this);this.modules[o]=r,n.prototype.moduleCore?this.modulesCore.push(r):n.moduleInitOrder?n.moduleInitOrder<0?t.push(r):i.push(r):s.push(r)}t.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),i.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),this.modulesRegular=t.concat(s.concat(i))}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class H extends e{constructor(e){super(e),this.element=this._createAlertElement(),this.msgElement=this._createMsgElement(),this.type=null,this.element.appendChild(this.msgElement)}_createAlertElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert"),e}_createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert-msg"),e.setAttribute("role","alert"),e}_typeClass(){return"tabulator-alert-state-"+this.type}alert(e,t="msg"){if(e){for(this.clear(),this.type=t;this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.add(this._typeClass()),"function"==typeof e&&(e=e()),e instanceof HTMLElement?this.msgElement.appendChild(e):this.msgElement.innerHTML=e,this.table.element.appendChild(this.element)}}clear(){this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.msgElement.classList.remove(this._typeClass())}}class O{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.alertManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.originalElement=null,this.componentFunctionBinder=new w(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.deprecationAdvisor=new R(this),this.optionsList=new a(this,"table constructor"),this.initialized=!1,this.destroyed=!1,this.initializeElement(e)&&(this.initializeCoreSystems(t),setTimeout((()=>{this._create()}))),x.register(this)}initializeElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}initializeCoreSystems(e){this.columnManager=new c(this),this.rowManager=new b(this),this.footerManager=new f(this),this.dataLoader=new C(this),this.alertManager=new H(this),this.bindModules(),this.options=this.optionsList.generate(O.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new E(this,this.options,this.options.debugEventsExternal),this.eventBus=new y(this.options.debugEventsInternal),this.interactionMonitor=new v(this),this.dataLoader.initialize(),this.footerManager.initialize()}_mapDeprecatedFunctionality(){}_clearSelection(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}_create(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this._rtlCheck(),this._buildElement(),this._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}_rtlCheck(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}_clearObjectPointers(){this.options.columns=this.options.columns.slice(0),Array.isArray(this.options.data)&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}_buildElement(){var e,t=this.element,i=this.options;if("TABLE"===t.tagName){this.originalElement=this.element,e=document.createElement("div");var s=t.attributes;for(var o in s)"object"==typeof s[o]&&e.setAttribute(s[o].name,s[o].value);t.parentNode.replaceChild(e,t),this.element=t=e}for(t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight)}_initializeTable(){var e=this.element,t=this.options;this.interactionMonitor.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore.forEach((e=>{e.initialize()})),e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&t.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular.forEach((e=>{e.initialize()})),this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}_loadInitialData(){this.dataLoader.load(this.options.data)}destroy(){var e=this.element;for(this.destroyed=!0,x.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.destroy();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator"),this.externalEvents.dispatch("tableDestroyed")}_detectBrowser(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):e.indexOf("Mac OS")>-1?(this.browser="safari",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(e.slice(0,4))}initGuard(e,t){var i,s;return this.options.debugInitialization&&!this.initialized&&(e||(e=" "==(s="Error"==(i=(new Error).stack.split("\n"))[0]?i[2]:i[1])[0]?s.trim().split(" ")[1].split(".")[1]:s.trim().split("@")[0]),console.warn("Table Not Initialized - Calling the "+e+" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function."+(t?" "+t:""))),this.initialized}blockRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-blocking"),this.rowManager.blockRedraw(),this.columnManager.blockRedraw(),this.eventBus.dispatch("redraw-blocked")}restoreRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-restoring"),this.rowManager.restoreRedraw(),this.columnManager.restoreRedraw(),this.eventBus.dispatch("redraw-restored")}setData(e,t,i){return this.initGuard(!1,"To set initial data please use the 'data' property in the table constructor."),this.dataLoader.load(e,t,i,!1)}clearData(){this.initGuard(),this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){return this.initGuard(),this.dataLoader.load(e,t,i,!0,!0)}updateData(e){var t=0;return this.initGuard(),new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);o?(t++,o.updateData(e).then((()=>{--t||i()})).catch((t=>{s("Update Error - Unable to update row",e,t)}))):s("Update Error - Unable to find row",e)})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}))}addData(e,t,i){return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?this.rowManager.addRows(e,t,i).then((e=>{var t=[];e.forEach((function(e){t.push(e.getComponent())})),s(t)})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}updateOrAddData(e){var t=[],i=0;return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);i++,o?o.updateData(e).then((()=>{i--,t.push(o.getComponent()),i||s(t)})):this.rowManager.addRows(e).then((e=>{i--,t.push(e[0].getComponent()),i||s(t)}))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e){var t=this.rowManager.getRowFromPosition(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];this.initGuard(),Array.isArray(e)||(e=[e]);for(let i of e){let e=this.rowManager.findRow(i,!0);if(!e)return console.error("Delete Error - No matching row found:",i),Promise.reject("Delete Error - No matching row found");t.push(e)}return t.sort(((e,t)=>this.rowManager.rows.indexOf(e)>this.rowManager.rows.indexOf(t)?1:-1)),t.forEach((e=>{e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}addRow(e,t,i){return this.initGuard(),"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i,!0).then((e=>e[0].getComponent()))}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>i.getComponent())):this.rowManager.addRows(t).then((e=>e[0].getComponent()))}updateRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>Promise.resolve(i.getComponent()))):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}scrollToRow(e,t,i){var s=this.rowManager.findRow(e);return s?this.rowManager.scrollToRow(s,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}moveRow(e,t,i){var s=this.rowManager.findRow(e);this.initGuard(),s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e){var t=this.rowManager.findRow(e);return t?t.getPosition():(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.initGuard(!1,"To set initial columns please use the 'columns' property in the table constructor"),this.columnManager.setColumns(e)}getColumns(e){return this.columnManager.getComponents(e)}getColumn(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}getColumnDefinitions(){return this.columnManager.getDefinitionTree()}showColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}addColumn(e,t,i){var s=this.columnManager.findColumn(i);return this.initGuard(),this.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return this.initGuard(),t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}updateColumnDefinition(e,t){var i=this.columnManager.findColumn(e);return this.initGuard(),i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}moveColumn(e,t,i){var s=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);this.initGuard(),s?o?this.columnManager.moveColumn(s,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}scrollToColumn(e,t,i){return new Promise(((s,o)=>{var n=this.columnManager.findColumn(e);return n?this.columnManager.scrollToColumn(n,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}redraw(e){this.initGuard(),this.columnManager.redraw(e),this.rowManager.redraw(e)}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}on(e,t){this.externalEvents.subscribe(e,t)}off(e,t){this.externalEvents.unsubscribe(e,t)}dispatchEvent(){Array.from(arguments).shift(),this.externalEvents.dispatch(...arguments)}alert(e,t){this.initGuard(),this.alertManager.alert(e,t)}clearAlert(){this.initGuard(),this.alertManager.clear()}modExists(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}module(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}O.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,debugInvalidComponentFuncs:!0,debugInitialization:!0,debugDeprecation:!0,height:!1,minHeight:!1,maxHeight:!1,columnHeaderVertAlign:"top",popupContainer:!1,columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,rowHeight:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataLoaderErrorTimeout:3e3,dataSendParams:{},dataReceiveParams:{}},new F(O);class A extends k{constructor(e){super(e),this.allowedTypes=["","data","download","clipboard","print","htmlOutput"],this.registerColumnOption("accessor"),this.registerColumnOption("accessorParams"),this.registerColumnOption("accessorData"),this.registerColumnOption("accessorDataParams"),this.registerColumnOption("accessorDownload"),this.registerColumnOption("accessorDownloadParams"),this.registerColumnOption("accessorClipboard"),this.registerColumnOption("accessorClipboardParams"),this.registerColumnOption("accessorPrint"),this.registerColumnOption("accessorPrintParams"),this.registerColumnOption("accessorHtmlOutput"),this.registerColumnOption("accessorHtmlOutputParams")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="accessor"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupAccessor(e.definition[n]))&&(t=!0,i[n]={accessor:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.accessor=i)}lookupAccessor(e){var t=!1;switch(typeof e){case"string":A.accessors[e]?t=A.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),s=e.getComponent(),o=r.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var n,r,a,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(n=e.getFieldValue(o))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(n,o,t,l,s):r.params,e.setFieldValue(o,r.accessor(n,o,t,a,l,s)))})),o}}A.moduleName="accessor",A.accessors={};function _(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(_(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(_(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function B(e){var t=_(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function I(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+B(i))),e}function V(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(V(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(V(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}var N={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=V(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class W extends k{constructor(e){super(e),this.config={},this.url="",this.urlGenerator=!1,this.params=!1,this.loaderPromise=!1,this.registerTableOption("ajaxURL",!1),this.registerTableOption("ajaxURLGenerator",!1),this.registerTableOption("ajaxParams",{}),this.registerTableOption("ajaxConfig","get"),this.registerTableOption("ajaxContentType","form"),this.registerTableOption("ajaxRequestFunc",!1),this.registerTableOption("ajaxRequesting",(function(){})),this.registerTableOption("ajaxResponse",!1),this.contentTypeFormatters=W.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||W.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||W.defaultURLGenerator,this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.setDefaultConfig(this.table.options.ajaxConfig),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-params",this.requestParams.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}requestParams(e,t,i,s){var o=this.table.options.ajaxParams;return o&&("function"==typeof o&&(o=o.call(this.table)),s=Object.assign(s,o)),s}requestDataCheck(e,t,i,s){return!((e||!this.url)&&"string"!=typeof e)}requestData(e,t,i,s,o){var n;return!o&&this.requestDataCheck(e)?(e&&this.setUrl(e),n=this.generateConfig(i),this.sendRequest(this.url,t,n)):o}setDefaultConfig(e={}){this.config=Object.assign({},W.defaultConfig),"string"==typeof e?this.config.method=e:Object.assign(this.config,e)}generateConfig(e={}){var t=Object.assign({},this.config);return"string"==typeof e?t.method=e:Object.assign(t,e),t}setUrl(e){this.url=e}getUrl(){return this.url}sendRequest(e,t,i){return!1!==this.table.options.ajaxRequesting.call(this.table,e,t)?this.loaderPromise(e,i,t).then((i=>(this.table.options.ajaxResponse&&(i=this.table.options.ajaxResponse.call(this.table,e,t,i)),i))):Promise.reject()}}W.moduleName="ajax",W.defaultConfig={method:"GET"},W.defaultURLGenerator=I,W.defaultLoaderPromise=function(e,t,i){var s;return new Promise(((o,n)=>{if(e=this.urlGenerator.call(this.table,e,t,i),"GET"!=t.method.toUpperCase())if(s="object"==typeof this.table.options.ajaxContentType?this.table.options.ajaxContentType:this.contentTypeFormatters[this.table.options.ajaxContentType]){for(var r in s.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=s.headers[r]);t.body=s.body.call(this,e,t,i)}else console.warn("Ajax Error - Invalid ajaxContentType value:",this.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers.Origin&&(t.headers.Origin=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then((e=>{e.ok?e.json().then((e=>{o(e)})).catch((e=>{n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))})).catch((e=>{console.error("Ajax Load Error - Connection Error: ",e),n(e)}))):(console.warn("Ajax Load Error - No URL Set"),o([]))}))},W.contentTypeFormatters=N;class j extends k{constructor(e){super(e),this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0,this.registerTableOption("clipboard",!1),this.registerTableOption("clipboardCopyStyled",!0),this.registerTableOption("clipboardCopyConfig",!1),this.registerTableOption("clipboardCopyFormatter",!1),this.registerTableOption("clipboardCopyRowRange","active"),this.registerTableOption("clipboardPasteParser","table"),this.registerTableOption("clipboardPasteAction","insert"),this.registerColumnOption("clipboard"),this.registerColumnOption("titleClipboard")}initialize(){this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(e=>{var t,i,s;this.blocked||(e.preventDefault(),this.customSelection?(t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t))):(s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard"),t=(i=this.table.modules.export.generateHTMLTable(s))?this.generatePlainContent(s):"",this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t),i=this.table.options.clipboardCopyFormatter("html",i))),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",t):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",t),i&&e.clipboardData.setData("text/html",i)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",t),i&&e.originalEvent.clipboardData.setData("text/html",i)),this.dispatchExternal("clipboardCopied",t,i),this.reset())})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(e=>{this.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}reset(){this.blocked=!0,this.customSelection=!1}generatePlainContent(e){var t=[];return e.forEach((e=>{var i=[];e.columns.forEach((t=>{var s="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)s="";else switch(typeof t.value){case"object":s=JSON.stringify(t.value);break;case"undefined":s="";break;default:s=t.value}i.push(s)})),t.push(i.join("\t"))})),t.join("\n")}copy(e,t){var i,s;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),document.execCommand("copy"),i&&i.removeAllRanges())}setPasteAction(e){switch(typeof e){case"string":this.pasteAction=j.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}}setPasteParser(e){switch(typeof e){case"string":this.pasteParser=j.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}}paste(e){var t,i,s;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),s=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,s)):this.dispatchExternal("clipboardPasteError",t))}mutateData(e){var t=[];return Array.isArray(e)?e.forEach((e=>{t.push(this.table.modules.mutator.transformRow(e,"clipboard"))})):t=e,t}checkPaseOrigin(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}getPasteData(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}j.moduleName="clipboard",j.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},j.pasteParsers={table:function(e){var t=[],i=!0,s=this.table.columnManager.columns,o=[],n=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=s.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=s.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),n.push(t)})),n)}};class G{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getTable(){return this._row.table}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}_getSelf(){return this._row}}var U={avg:function(e,t,i){var s=0,o=void 0!==i.precision?i.precision:2;return e.length&&(s=e.reduce((function(e,t){return Number(e)+Number(t)})),s/=e.length,s=!1!==o?s.toFixed(o):s),parseFloat(s).toString()},max:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>s||null===s)&&(s=e)})),null!==s?!1!==o?s.toFixed(o):s:""},min:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))(e||0===t)&&e.indexOf(t)===i)).length}};class X extends k{constructor(e){super(e),this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.blocked=!1,this.recalcAfterBlock=!1,this.registerTableOption("columnCalcs",!0),this.registerColumnOption("topCalc"),this.registerColumnOption("topCalcParams"),this.registerColumnOption("topCalcFormatter"),this.registerColumnOption("topCalcFormatterParams"),this.registerColumnOption("bottomCalc"),this.registerColumnOption("bottomCalcParams"),this.registerColumnOption("bottomCalcFormatter"),this.registerColumnOption("bottomCalcFormatterParams")}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e}initialize(){this.genColumn=new n({field:"value"},this),this.subscribe("cell-value-changed",this.cellValueChanged.bind(this)),this.subscribe("column-init",this.initializeColumnCheck.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("column-moved",this.recalcActiveRows.bind(this)),this.subscribe("column-add",this.recalcActiveRows.bind(this)),this.subscribe("data-refreshed",this.recalcActiveRowsRefresh.bind(this)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("rows-visible",this.visibleRows.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this)),this.subscribe("redraw-blocked",this.blockRedraw.bind(this)),this.subscribe("redraw-restored",this.restoreRedraw.bind(this)),this.subscribe("table-redrawing",this.resizeHolderWidth.bind(this)),this.subscribe("column-resized",this.resizeHolderWidth.bind(this)),this.subscribe("column-show",this.resizeHolderWidth.bind(this)),this.subscribe("column-hide",this.resizeHolderWidth.bind(this)),this.registerTableFunction("getCalcResults",this.getResults.bind(this)),this.registerTableFunction("recalc",this.userRecalc.bind(this)),this.resizeHolderWidth()}resizeHolderWidth(){this.topElement.style.minWidth=this.table.columnManager.headersElement.offsetWidth+"px"}tableRedraw(e){this.recalc(this.table.rowManager.activeRows),e&&this.redraw()}blockRedraw(){this.blocked=!0,this.recalcAfterBlock=!1}restoreRedraw(){this.blocked=!1,this.recalcAfterBlock&&(this.recalcAfterBlock=!1,this.recalcActiveRowsRefresh())}userRecalc(){this.recalc(this.table.rowManager.activeRows)}blockCheck(){return this.blocked&&(this.recalcAfterBlock=!0),this.blocked}visibleRows(e,t){return this.topRow&&t.unshift(this.topRow),this.botRow&&t.push(this.botRow),t}rowsUpdated(e){this.table.options.groupBy?this.recalcRowGroup(e):this.recalcActiveRows()}recalcActiveRowsRefresh(){this.table.options.groupBy&&this.table.options.dataTreeStartExpanded&&this.table.options.dataTree?this.recalcAll():this.recalcActiveRows()}recalcActiveRows(){this.recalc(this.table.rowManager.activeRows)}cellValueChanged(e){(e.column.definition.topCalc||e.column.definition.bottomCalc)&&(this.table.options.groupBy?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.recalcActiveRows(),"table"!=this.table.options.columnCalcs&&this.recalcRowGroup(e.row)):this.recalcActiveRows())}initializeColumnCheck(e){(e.definition.topCalc||e.definition.bottomCalc)&&this.initializeColumn(e)}initializeColumn(e){var t=e.definition,i={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(typeof t.topCalc){case"string":X.calculations[t.topCalc]?i.topCalc=X.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":i.topCalc=t.topCalc}i.topCalc&&(e.modules.columnCalcs=i,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(typeof t.bottomCalc){case"string":X.calculations[t.bottomCalc]?i.botCalc=X.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":i.botCalc=t.bottomCalc}i.botCalc&&(e.modules.columnCalcs=i,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}}registerColumnField(){}removeCalcs(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.footerRemove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()}reinitializeCalcs(){this.topCalcs.length&&this.initializeTopRow(),this.botCalcs.length&&this.initializeBottomRow()}initializeTopRow(){this.topInitialized||(this.table.columnManager.getContentsElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)}initializeBottomRow(){this.botInitialized||(this.footerPrepend(this.botElement),this.botInitialized=!0)}scrollHorizontal(e){this.botInitialized&&this.botRow&&(this.botElement.scrollLeft=e)}recalc(e){var t,i;if(!this.blockCheck()&&(this.topInitialized||this.botInitialized)){if(t=this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),i=this.generateRow("top",t),this.topRow=i;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(i.getElement()),i.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),i=this.generateRow("bottom",t),this.botRow=i;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(i.getElement()),i.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}}recalcRowGroup(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))}recalcAll(){(this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalcActiveRows(),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs&&this.table.modules.groupRows.getChildGroups().forEach((e=>{this.recalcGroup(e)})))}recalcGroup(e){var t,i;this.blockCheck()||e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),i=this.generateRowData("bottom",t),e.calcs.bottom.updateData(i),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),i=this.generateRowData("top",t),e.calcs.top.updateData(i),e.calcs.top.reinitialize()))}generateTopRow(e){return this.generateRow("top",this.rowsToData(e))}generateBottomRow(e){return this.generateRow("bottom",this.rowsToData(e))}rowsToData(e){var t=[];return e.forEach((e=>{if(t.push(e.getData()),this.table.options.dataTree&&this.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree&&e.modules.dataTree.open){var i=this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(e));t=t.concat(i)}})),t}generateRow(e,t){var i,s=this.generateRowData(e,t);return this.table.modExists("mutator")&&this.table.modules.mutator.disable(),i=new p(s,this,"calc"),this.table.modExists("mutator")&&this.table.modules.mutator.enable(),i.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),i.component=!1,i.getComponent=()=>(i.component||(i.component=new G(i)),i.component),i.generateCells=()=>{var t=[];this.table.columnManager.columnsByIndex.forEach((s=>{this.genColumn.setField(s.getField()),this.genColumn.hozAlign=s.hozAlign,s.definition[e+"CalcFormatter"]&&this.table.modExists("format")?this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter(s.definition[e+"CalcFormatter"]),params:s.definition[e+"CalcFormatterParams"]||{}}:this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter("plaintext"),params:{}},this.genColumn.definition.cssClass=s.definition.cssClass;var n=new o(this.genColumn,i);n.getElement(),n.column=s,n.setWidth(),s.cells.push(n),t.push(n),s.visible||n.hide()})),i.cells=t},i}generateRowData(e,t){var i,s,o={},n="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return n.forEach((function(e){var n=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach((function(t){n.push(e.getFieldValue(t))})),s=r+"Params",i="function"==typeof e.modules.columnCalcs[s]?e.modules.columnCalcs[s](n,t):e.modules.columnCalcs[s],e.setFieldValue(o,e.modules.columnCalcs[r](n,t,i)))})),o}hasTopCalcs(){return!!this.topCalcs.length}hasBottomCalcs(){return!!this.botCalcs.length}redraw(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)}getResults(){var e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach((t=>{e[t.getKey()]=this.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e}getGroupResults(e){var t=e._getSelf(),i=e.getSubGroups(),s={};return i.forEach((e=>{s[e.getKey()]=this.getGroupResults(e)})),{top:t.calcs.top?t.calcs.top.getData():{},bottom:t.calcs.bottom?t.calcs.bottom.getData():{},groups:s}}adjustForScrollbar(e){this.botRow&&(this.table.rtl?this.botElement.style.paddingLeft=e+"px":this.botElement.style.paddingRight=e+"px")}}X.moduleName="columnCalcs",X.calculations=U;class q extends k{constructor(e){super(e),this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.registerTableOption("dataTree",!1),this.registerTableOption("dataTreeFilter",!0),this.registerTableOption("dataTreeSort",!0),this.registerTableOption("dataTreeElementColumn",!1),this.registerTableOption("dataTreeBranchElement",!0),this.registerTableOption("dataTreeChildIndent",9),this.registerTableOption("dataTreeChildField","_children"),this.registerTableOption("dataTreeCollapseElement",!1),this.registerTableOption("dataTreeExpandElement",!1),this.registerTableOption("dataTreeStartExpanded",!1),this.registerTableOption("dataTreeChildColumnCalcs",!1),this.registerTableOption("dataTreeSelectPropagate",!1),this.registerComponentFunction("row","treeCollapse",this.collapseRow.bind(this)),this.registerComponentFunction("row","treeExpand",this.expandRow.bind(this)),this.registerComponentFunction("row","treeToggle",this.toggleRow.bind(this)),this.registerComponentFunction("row","getTreeParent",this.getTreeParent.bind(this)),this.registerComponentFunction("row","getTreeChildren",this.getRowChildren.bind(this)),this.registerComponentFunction("row","addTreeChild",this.addTreeChildRow.bind(this)),this.registerComponentFunction("row","isTreeExpanded",this.isRowExpanded.bind(this))}initialize(){if(this.table.options.dataTree){var e=null,t=this.table.options;switch(this.field=t.dataTreeChildField,this.indent=t.dataTreeChildIndent,this.options("movableRows")&&console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"),t.dataTreeBranchElement?!0===t.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof t.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=t.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=t.dataTreeBranchElement:(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch-empty")),t.dataTreeCollapseElement?"string"==typeof t.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=t.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=t.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="
              "),t.dataTreeExpandElement?"string"==typeof t.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=t.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=t.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
              "),typeof t.dataTreeStartExpanded){case"boolean":this.startOpen=function(e,i){return t.dataTreeStartExpanded};break;case"function":this.startOpen=t.dataTreeStartExpanded;break;default:this.startOpen=function(e,i){return t.dataTreeStartExpanded[i]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("cell-value-updated",this.cellValueChanged.bind(this)),this.subscribe("edit-cancelled",this.cellValueChanged.bind(this)),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.subscribe("table-built",this.initializeElementField.bind(this)),this.subscribe("table-redrawing",this.tableRedrawing.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}tableRedrawing(e){e&&this.table.rowManager.getRows().forEach((e=>{this.reinitializeRowChildren(e)}))}initializeElementField(){var e=this.table.columnManager.getFirstVisibleColumn();this.elementField=this.table.options.dataTreeElementColumn||!!e&&e.field}getRowChildren(e){return this.getTreeChildren(e,!0)}columnMoving(){var e=[];return this.table.rowManager.rows.forEach((t=>{e=e.concat(this.getTreeChildren(t,!1,!0))})),e}rowDataChanged(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}cellValueChanged(e){e.column.getField()===this.elementField&&this.layoutRow(e.row)}initializeRow(e){var t=e.getData()[this.field],i=Array.isArray(t),s=i||!i&&"object"==typeof t&&null!==t;!s&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!s&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!s&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:s}}reinitializeRowChildren(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}layoutRow(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}generateControlElement(e,t){var i=e.modules.dataTree,s=i.controlEl;t=t||e.getCells()[0].getElement(),!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.collapseRow(e)}))):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.expandRow(e)}))),i.controlEl.addEventListener("mousedown",(e=>{e.stopPropagation()})),s&&s.parentNode===t?s.parentNode.replaceChild(i.controlEl,s):t.insertBefore(i.controlEl,t.firstChild))}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof p&&(e.create(),(s=e.modules.dataTree).index||!1===s.children||this.getChildren(e).forEach((e=>{e.create(),t.push(e)})))})),t}getChildren(e,t){var i=e.modules.dataTree,s=[],o=[];return!1!==i.children&&(i.open||t)&&(Array.isArray(i.children)||(i.children=this.generateChildren(e)),s=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(i.children):i.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(s),s.forEach((e=>{o.push(e),this.getChildren(e).forEach((e=>{o.push(e)}))}))),o}generateChildren(e){var t=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach((i=>{var s=new p(i||{},this.table.rowManager);s.create(),s.modules.dataTree.index=e.modules.dataTree.index+1,s.modules.dataTree.parent=e,s.modules.dataTree.children&&(s.modules.dataTree.open=this.startOpen(s.getComponent(),s.modules.dataTree.index)),t.push(s)})),t}expandRow(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}collapseRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}toggleRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}isRowExpanded(e){return e.modules.dataTree.open}getTreeParent(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}getTreeParentRoot(e){return e.modules.dataTree&&e.modules.dataTree.parent?this.getTreeParentRoot(e.modules.dataTree.parent):e}getFilteredTreeChildren(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((e=>{e instanceof p&&i.push(e)}))),i}rowDelete(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}addTreeChildRow(e,t,i,s){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==s&&!1!==(o=this.findChildIndex(s,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}findChildIndex(e,t){var i=!1;return"object"==typeof e?e instanceof p?i=e.data:e instanceof u?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof p&&t.element===e)))&&(i=i.data):null===e&&(i=!1):i=void 0!==e&&t.data[this.field].find((t=>t.data[this.table.options.index]==e)),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i}getTreeChildren(e,t,i){var s=e.modules.dataTree,o=[];return s&&s.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof p&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}q.moduleName="dataTree";var K={csv:function(e,t={},i){var s=t.delimiter?t.delimiter:",",o=[],n=[];e.forEach((e=>{var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(((e,t)=>{e&&1===e.depth&&(n[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":e.columns.forEach((e=>{if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}})),o.push(t.join(s))}})),n.length&&o.unshift(n.join(s)),o=o.join("\n"),t.bom&&(o="\ufeff"+o),i(o,"text/csv")},json:function(e,t,i){var s=[];e.forEach((e=>{var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(t)}})),i(s=JSON.stringify(s,null,"\t"),"application/json")},jsonLines:function(e,t,i){const s=[];e.forEach((e=>{const t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(JSON.stringify(t))}})),i(s.join("\n"),"application/x-ndjson")},pdf:function(e,t={},i){var s=[],o=[],n={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},a=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},l=t.jsPDF||{},h=t.title?t.title:"";function d(e,t){var i=[];return e.columns.forEach((e=>{var s;if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}s={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(s.styles=t),i.push(s)}})),i}l.orientation||(l.orientation=t.orientation||"landscape"),l.unit||(l.unit="pt"),e.forEach((e=>{switch(e.type){case"header":s.push(d(e));break;case"group":o.push(d(e,r));break;case"calc":o.push(d(e,a));break;case"row":o.push(d(e))}}));var c=new jspdf.jsPDF(l);t.autoTable&&(n="function"==typeof t.autoTable?t.autoTable(c)||{}:t.autoTable),h&&(n.didDrawPage=function(e){c.text(h,40,30)}),n.head=s,n.body=o,c.autoTable(n),t.documentProcessing&&t.documentProcessing(c),i(c.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,s){var o=i.sheetName||"Sheet1",n=XLSX.utils.book_new(),r=new e(this),a=!("compress"in i)||i.compress,l=i.writeOptions||{bookType:"xlsx",bookSST:!0,compression:a};function h(){var e=[],i=[],s={},o={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce(((e,t)=>e+(t&&t.width?t.width:1)),0):0,r:t.length}};return t.forEach(((t,s)=>{var o=[];t.columns.forEach((function(e,t){e?(o.push(e.value instanceof Date||"object"!=typeof e.value?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&(e.height>1||e.width>1)&&i.push({s:{r:s,c:t},e:{r:s+e.height-1,c:t+e.width-1}})):o.push("")})),e.push(o)})),XLSX.utils.sheet_add_aoa(s,e),s["!ref"]=XLSX.utils.encode_range(o),i.length&&(s["!merges"]=i),s}if(l.type="binary",n.SheetNames=[],n.Sheets={},i.sheetOnly)s(h());else{if(i.sheets)for(var d in i.sheets)!0===i.sheets[d]?(n.SheetNames.push(d),n.Sheets[d]=h()):(n.SheetNames.push(d),r.commsSend(i.sheets[d],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[d]=e}}));else n.SheetNames.push(o),n.Sheets[o]=h();i.documentProcessing&&(n=i.documentProcessing(n)),s(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),s=0;s!=e.length;++s)i[s]=255&e.charCodeAt(s);return t}(XLSX.write(n,l)),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.generateHTMLTable(e),"text/html")}};class J extends k{constructor(e){super(e),this.registerTableOption("downloadEncoder",(function(e,t){return new Blob([e],{type:t})})),this.registerTableOption("downloadReady",void 0),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.deprecatedOptionsCheck(),this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("downloadReady","downloadEncoder")}downloadToTab(e,t,i,s){this.download(e,t,i,s,!0)}download(e,t,i,s,o){var n=!1;if("function"==typeof e?n=e:J.downloaders[e]?n=J.downloaders[e]:console.warn("Download Error - No such download type found: ",e),n){var r=this.generateExportList(s);n.call(this.table,r,i||{},function(i,s){o?!0===o?this.triggerDownload(i,s,e,t,!0):o(i):this.triggerDownload(i,s,e,t)}.bind(this))}}generateExportList(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((e=>{var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}triggerDownload(e,t,i,s,o){var n=document.createElement("a"),r=this.table.options.downloadEncoder(e,t);r&&(o?window.open(window.URL.createObjectURL(r)):(s=s||"Tabulator."+("function"==typeof i?"txt":i),navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,s):(n.setAttribute("href",window.URL.createObjectURL(r)),n.setAttribute("download",s),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n))),this.dispatchExternal("downloadComplete"))}commsReceived(e,t,i){if("intercept"===t)this.download(i.type,"",i.options,i.active,i.intercept)}}function Y(e,t){var i=t.mask,s=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",n=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var a=i[t];void 0!==a&&a!==n&&a!==s&&a!==o&&(e.value=e.value+""+a,r(t+1))}e.addEventListener("keydown",(t=>{var r=e.value.length,a=t.key;if(t.keyCode>46&&!t.ctrlKey&&!t.metaKey){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case s:if(a.toUpperCase()==a.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(a))return t.preventDefault(),t.stopPropagation(),!1;break;case n:break;default:if(a!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(i=>{i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}J.moduleName="download",J.downloaders=K;class ${constructor(e,t,i,s,o,n){this.edit=e,this.table=e.table,this.cell=t,this.params=this._initializeParams(n),this.data=[],this.displayItems=[],this.currentItems=[],this.focusedItem=null,this.input=this._createInputElement(),this.listEl=this._createListElement(),this.initialValues=null,this.isFilter="header"===t.getType(),this.filterTimeout=null,this.filtered=!1,this.typing=!1,this.values=[],this.popup=null,this.listIteration=0,this.lastAction="",this.filterTerm="",this.blurable=!0,this.actions={success:s,cancel:o},this._deprecatedOptionsCheck(),this._initializeValue(),i(this._onRendered.bind(this))}_deprecatedOptionsCheck(){this.params.listItemFormatter&&this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.sortValuesList&&this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchFunc&&this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchingPlaceholder&&this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options")}_initializeValue(){var e=this.cell.getValue();void 0===e&&void 0!==this.params.defaultValue&&(e=this.params.defaultValue),this.initialValues=this.params.multiselect?e:[e],this.isFilter&&(this.input.value=this.initialValues?this.initialValues.join(","):"",this.headerFilterInitialListGen())}_onRendered(){var e=this.cell.getElement();function t(e){e.stopPropagation()}this.isFilter||(this.input.style.height="100%",this.input.focus({preventScroll:!0})),e.addEventListener("click",t),setTimeout((()=>{e.removeEventListener("click",t)}),1e3),this.input.addEventListener("mousedown",this._preventPopupBlur.bind(this))}_createListElement(){var e=document.createElement("div");return e.classList.add("tabulator-edit-list"),e.addEventListener("mousedown",this._preventBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e}_setListWidth(){var e=this.isFilter?this.input:this.cell.getElement();this.listEl.style.minWidth=e.offsetWidth+"px",this.params.maxWidth&&(!0===this.params.maxWidth?this.listEl.style.maxWidth=e.offsetWidth+"px":"number"==typeof this.params.maxWidth?this.listEl.style.maxWidth=this.params.maxWidth+"px":this.listEl.style.maxWidth=this.params.maxWidth)}_createInputElement(){var e=this.params.elementAttributes,t=document.createElement("input");if(t.setAttribute("type",this.params.clearable?"search":"text"),t.style.padding="4px",t.style.width="100%",t.style.boxSizing="border-box",this.params.autocomplete||(t.style.cursor="default",t.style.caretColor="transparent"),e&&"object"==typeof e)for(let i in e)"+"==i.charAt(0)?(i=i.slice(1),t.setAttribute(i,t.getAttribute(i)+e["+"+i])):t.setAttribute(i,e[i]);return this.params.mask&&Y(t,this.params),this._bindInputEvents(t),t}_initializeParams(e){var t,i=["values","valuesURL","valuesLookup"];return(e=Object.assign({},e)).verticalNavigation=e.verticalNavigation||"editor",e.placeholderLoading=void 0===e.placeholderLoading?"Searching ...":e.placeholderLoading,e.placeholderEmpty=void 0===e.placeholderEmpty?"No Results Found":e.placeholderEmpty,e.filterDelay=void 0===e.filterDelay?300:e.filterDelay,e.emptyValue=Object.keys(e).includes("emptyValue")?e.emptyValue:"",(t=Object.keys(e).filter((e=>i.includes(e))).length)?t>1&&console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"):console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"),e.autocomplete?e.multiselect&&(e.multiselect=!1,console.warn("list editor config error - multiselect option is not available when autocomplete is enabled")):(e.freetext&&(e.freetext=!1,console.warn("list editor config error - freetext option is only available when autocomplete is enabled")),e.filterFunc&&(e.filterFunc=!1,console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled")),e.filterRemote&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled")),e.mask&&(e.mask=!1,console.warn("list editor config error - mask option is only available when autocomplete is enabled")),e.allowEmpty&&(e.allowEmpty=!1,console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled")),e.listOnEmpty&&(e.listOnEmpty=!1,console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"))),e.filterRemote&&"function"!=typeof e.valuesLookup&&!e.valuesURL&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source")),e}_bindInputEvents(e){e.addEventListener("focus",this._inputFocus.bind(this)),e.addEventListener("click",this._inputClick.bind(this)),e.addEventListener("blur",this._inputBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e.addEventListener("search",this._inputSearch.bind(this)),this.params.autocomplete&&e.addEventListener("keyup",this._inputKeyUp.bind(this))}_inputFocus(e){this.rebuildOptionsList()}_filter(){this.params.filterRemote?(clearTimeout(this.filterTimeout),this.filterTimeout=setTimeout((()=>{this.rebuildOptionsList()}),this.params.filterDelay)):this._filterList()}_inputClick(e){e.stopPropagation()}_inputBlur(e){this.blurable&&(this.popup?this.popup.hide():this._resolveValue(!0))}_inputSearch(){this._clearChoices()}_inputKeyDown(e){switch(e.keyCode){case 38:this._keyUp(e);break;case 40:this._keyDown(e);break;case 37:case 39:this._keySide(e);break;case 13:this._keyEnter();break;case 27:this._keyEsc();break;case 36:case 35:this._keyHomeEnd(e);break;case 9:this._keyTab(e);break;default:this._keySelectLetter(e)}}_inputKeyUp(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:this._keyAutoCompLetter(e)}}_preventPopupBlur(){this.popup&&this.popup.blockHide(),setTimeout((()=>{this.popup&&this.popup.restoreHide()}),10)}_preventBlur(){this.blurable=!1,setTimeout((()=>{this.blurable=!0}),10)}_keyTab(e){this.params.autocomplete&&"typing"===this.lastAction?this._resolveValue(!0):this.focusedItem&&this._chooseItem(this.focusedItem,!0)}_keyUp(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&this._focusItem(this.displayItems[t-1]))}_keyDown(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t=38&&e.keyCode<=90&&this._scrollToValue(e.keyCode))}_keyAutoCompLetter(e){this._filter(),this.lastAction="typing",this.typing=!0}_scrollToValue(e){clearTimeout(this.filterTimeout);var t=String.fromCharCode(e).toLowerCase();this.filterTerm+=t.toLowerCase();var i=this.displayItems.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(this.filterTerm)));i&&this._focusItem(i),this.filterTimeout=setTimeout((()=>{this.filterTerm=""}),800)}_focusItem(e){this.lastAction="focus",this.focusedItem&&this.focusedItem.element&&this.focusedItem.element.classList.remove("focused"),this.focusedItem=e,e&&e.element&&(e.element.classList.add("focused"),e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"}))}headerFilterInitialListGen(){this._generateOptions(!0)}rebuildOptionsList(){this._generateOptions().then(this._sortOptions.bind(this)).then(this._buildList.bind(this)).then(this._showList.bind(this)).catch((e=>{Number.isInteger(e)||console.error("List generation error",e)}))}_filterList(){this._buildList(this._filterOptions()),this._showList()}_generateOptions(e){var t=[],i=++this.listIteration;return this.filtered=!1,this.params.values?t=this.params.values:this.params.valuesURL?t=this._ajaxRequest(this.params.valuesURL,this.input.value):"function"==typeof this.params.valuesLookup?t=this.params.valuesLookup(this.cell,this.input.value):this.params.valuesLookup&&(t=this._uniqueColumnValues(this.params.valuesLookupField)),t instanceof Promise?(e||this._addPlaceholder(this.params.placeholderLoading),t.then().then((e=>this.listIteration===i?this._parseList(e):Promise.reject(i)))):Promise.resolve(this._parseList(t))}_addPlaceholder(e){var t=document.createElement("div");"function"==typeof e&&(e=e(this.cell.getComponent(),this.listEl)),e&&(this._clearList(),e instanceof HTMLElement?t=e:(t.classList.add("tabulator-edit-list-placeholder"),t.innerHTML=e),this.listEl.appendChild(t),this._showList())}_ajaxRequest(e,t){return e=I(e,{},this.params.filterRemote?{term:t}:{}),fetch(e).then((e=>e.ok?e.json().catch((e=>(console.warn("List Ajax Load Error - Invalid JSON returned",e),Promise.reject(e)))):(console.error("List Ajax Load Error - Connection Error: "+e.status,e.statusText),Promise.reject(e)))).catch((e=>(console.error("List Ajax Load Error - Connection Error: ",e),Promise.reject(e))))}_uniqueColumnValues(e){var t,i={},s=this.table.getData(this.params.valuesLookup);return(t=e?this.table.columnManager.getColumnByField(e):this.cell.getColumn()._getSelf())?s.forEach((e=>{var s=t.getFieldValue(e);null!=s&&""!==s&&(i[s]=!0)})):(console.warn("unable to find matching column to create select lookup list:",e),i=[]),Object.keys(i)}_parseList(e){var t=[];return Array.isArray(e)||(e=Object.entries(e).map((([e,t])=>({label:t,value:e})))),e.forEach((e=>{"object"!=typeof e&&(e={label:e,value:e}),this._parseListItem(e,t,0)})),!this.currentItems.length&&this.params.freetext&&(this.input.value=this.initialValues,this.typing=!0,this.lastAction="typing"),this.data=t,t}_parseListItem(e,t,i){var s={};e.options?s=this._parseListGroup(e,i+1):(s={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,selected:!1,visible:!0,level:i,original:e},this.initialValues&&this.initialValues.indexOf(e.value)>-1&&this._chooseItem(s,!0)),t.push(s)}_parseListGroup(e,t){var i={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,visible:!0,level:t,options:[],original:e};return e.options.forEach((e=>{this._parseListItem(e,i.options,t)})),i}_sortOptions(e){var t;return this.params.sort&&(t="function"==typeof this.params.sort?this.params.sort:this._defaultSortFunction.bind(this),this._sortGroup(t,e)),e}_sortGroup(e,t){t.sort(((t,i)=>e(t.label,i.label,t.value,i.value,t.original,i.original))),t.forEach((t=>{t.group&&this._sortGroup(e,t.options)}))}_defaultSortFunction(e,t){var i,s,o,n,r,a=0,l=/(\d+)|(\D+)/g,h=/\d/,d=0;if("desc"===this.params.sort&&([e,t]=[t,e]),e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((i=String(e).toLowerCase())===(s=String(t).toLowerCase()))return 0;if(!h.test(i)||!h.test(s))return i>s?1:-1;for(i=i.match(l),s=s.match(l),r=i.length>s.length?s.length:i.length;an?1:-1;return i.length>s.length}d=1}else d=t||0===t?-1:0;return d}_filterOptions(){var e=this.params.filterFunc||this._defaultFilterFunc,t=this.input.value;return t?(this.filtered=!0,this.data.forEach((i=>{this._filterItem(e,t,i)}))):this.filtered=!1,this.data}_filterItem(e,t,i){var s=!1;return i.group?(i.options.forEach((i=>{this._filterItem(e,t,i)&&(s=!0)})),i.visible=s):i.visible=e(t,i.label,i.value,i.original),i.visible}_defaultFilterFunc(e,t,i,s){return e=String(e).toLowerCase(),null!=t&&(String(t).toLowerCase().indexOf(e)>-1||String(i).toLowerCase().indexOf(e)>-1)}_clearList(){for(;this.listEl.firstChild;)this.listEl.removeChild(this.listEl.firstChild);this.displayItems=[]}_buildList(e){this._clearList(),e.forEach((e=>{this._buildItem(e)})),this.displayItems.length||this._addPlaceholder(this.params.placeholderEmpty)}_buildItem(e){var t,i=e.element;if(!this.filtered||e.visible){if(!i){if((i=document.createElement("div")).tabIndex=0,(t=this.params.itemFormatter?this.params.itemFormatter(e.label,e.value,e.original,i):e.label)instanceof HTMLElement?i.appendChild(t):i.innerHTML=t,e.group?i.classList.add("tabulator-edit-list-group"):i.classList.add("tabulator-edit-list-item"),i.classList.add("tabulator-edit-list-group-level-"+e.level),e.elementAttributes&&"object"==typeof e.elementAttributes)for(let t in e.elementAttributes)"+"==t.charAt(0)?(t=t.slice(1),i.setAttribute(t,this.input.getAttribute(t)+e.elementAttributes["+"+t])):i.setAttribute(t,e.elementAttributes[t]);e.group?i.addEventListener("click",this._groupClick.bind(this,e)):i.addEventListener("click",this._itemClick.bind(this,e)),i.addEventListener("mousedown",this._preventBlur.bind(this)),e.element=i}this._styleItem(e),this.listEl.appendChild(i),e.group?e.options.forEach((e=>{this._buildItem(e)})):this.displayItems.push(e)}}_showList(){var e=this.popup&&this.popup.isVisible();if(this.input.parentNode){if(this.params.autocomplete&&""===this.input.value&&!this.params.listOnEmpty)return void(this.popup&&this.popup.hide(!0));this._setListWidth(),this.popup||(this.popup=this.edit.popup(this.listEl)),this.popup.show(this.cell.getElement(),"bottom"),e||setTimeout((()=>{this.popup.hideOnBlur(this._resolveValue.bind(this,!0))}),10)}}_styleItem(e){e&&e.element&&(e.selected?e.element.classList.add("active"):e.element.classList.remove("active"))}_itemClick(e,t){t.stopPropagation(),this._chooseItem(e)}_groupClick(e,t){t.stopPropagation()}_cancel(){this.popup.hide(!0),this.actions.cancel()}_clearChoices(){this.typing=!0,this.currentItems.forEach((e=>{e.selected=!1,this._styleItem(e)})),this.currentItems=[],this.focusedItem=null}_chooseItem(e,t){var i;this.typing=!1,this.params.multiselect?((i=this.currentItems.indexOf(e))>-1?(this.currentItems.splice(i,1),e.selected=!1):(this.currentItems.push(e),e.selected=!0),this.input.value=this.currentItems.map((e=>e.label)).join(","),this._styleItem(e)):(this.currentItems=[e],e.selected=!0,this.input.value=e.label,this._styleItem(e),t||this._resolveValue()),this._focusItem(e)}_resolveValue(e){var t,i;if(this.popup&&this.popup.hide(!0),this.params.multiselect)t=this.currentItems.map((e=>e.value));else if(e&&this.params.autocomplete&&this.typing){if(!(this.params.freetext||this.params.allowEmpty&&""===this.input.value))return void this.actions.cancel();t=this.input.value}else t=this.currentItems[0]?this.currentItems[0].value:null==(i=Array.isArray(this.initialValues)?this.initialValues[0]:this.initialValues)||""===i?i:this.params.emptyValue;""===t&&(t=this.params.emptyValue),this.actions.success(t),this.isFilter&&(this.initialValues=t&&!Array.isArray(t)?[t]:t,this.currentItems=[])}}var Z={input:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",o.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(e){null==n&&""!==r.value||r.value!==n?i(r.value)&&(n=r.value):s()}return r.value=void 0!==n?n:"",t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%",o.selectContents&&r.select())})),r.addEventListener("change",a),r.addEventListener("blur",a),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s();break;case 35:case 36:e.stopPropagation()}})),o.mask&&Y(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=document.createElement("textarea"),h=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),l.setAttribute(e,l.getAttribute(e)+o.elementAttributes["+"+e])):l.setAttribute(e,o.elementAttributes[e]);function d(t){null==n&&""!==l.value||l.value!==n?(i(l.value)&&(n=l.value),setTimeout((function(){e.getRow().normalizeHeight()}),300)):s()}return l.value=a,t((function(){"cell"===e.getType()&&(l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight(),o.selectContents&&l.select())})),l.addEventListener("change",d),l.addEventListener("blur",d),l.addEventListener("keyup",(function(){l.style.height="";var t=l.scrollHeight;l.style.height=t+"px",t!=h&&(h=t,e.getRow().normalizeHeight())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:e.shiftKey&&o.shiftEnterSubmit&&d();break;case 27:s();break;case 38:("editor"==r||"hybrid"==r&&l.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&l.selectionStart!==l.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&Y(l,o),l},number:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"editor",a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==o.max&&a.setAttribute("max",o.max),void 0!==o.min&&a.setAttribute("min",o.min),void 0!==o.step&&a.setAttribute("step",o.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),a.setAttribute(e,a.getAttribute(e)+o.elementAttributes["+"+e])):a.setAttribute(e,o.elementAttributes[e]);a.value=n;var l=function(e){h()};function h(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!==n?i(e)&&(n=e):s()}return t((function(){"cell"===e.getType()&&(a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l),o.selectContents&&a.select())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:s();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&Y(a,o),a},range:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==o.max&&r.setAttribute("max",o.max),void 0!==o.min&&r.setAttribute("min",o.min),void 0!==o.step&&r.setAttribute("step",o.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=n?i(e)&&(n=e):s()}return r.value=n,t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%")})),r.addEventListener("blur",(function(e){a()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s()}})),r},date:function(e,t,i,s,o){var n=o.format,r=o.verticalNavigation||"editor",a=n?window.DateTime||luxon.DateTime:null,l=e.getValue(),h=document.createElement("input");function d(e){return(a.isDateTime(e)?e:"iso"===n?a.fromISO(String(e)):a.fromFormat(String(e),n)).toFormat("yyyy-MM-dd")}if(h.type="date",h.style.padding="4px",h.style.width="100%",h.style.boxSizing="border-box",o.max&&h.setAttribute("max",n?d(o.max):o.max),o.min&&h.setAttribute("min",n?d(o.min):o.min),o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),h.setAttribute(e,h.getAttribute(e)+o.elementAttributes["+"+e])):h.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=h.value;if(null==l&&""!==t||t!==l){if(t&&n)switch(e=a.fromFormat(String(t),"yyyy-MM-dd"),n){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(n)}i(t)&&(l=h.value)}else s()}return l=void 0!==l?l:"",n&&(a?l=d(l):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),h.value=l,t((function(){"cell"===e.getType()&&(h.focus({preventScroll:!0}),h.style.height="100%",o.selectContents&&h.select())})),h.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==h)&&c()})),h.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation())}})),h},time:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="time",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromFormat(String(t),"hh:mm"),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("hh:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),d.value=h,t((function(){"cell"==e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},datetime:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="datetime-local",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromISO(String(t)),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("yyyy-MM-dd")+"T"+n.toFormat("hh:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),d.value=h,t((function(){"cell"===e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},select:function(e,t,i,s,o){return this.deprecationMsg("The select editor has been deprecated, please use the new list editor"),new $(this,e,t,i,s,o).input},list:function(e,t,i,s,o){return new $(this,e,t,i,s,o).input},autocomplete:function(e,t,i,s,o){return this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"),o.autocomplete=!0,new $(this,e,t,i,s,o).input},star:function(e,t,i,s,o){var n=this,r=e.getElement(),a=e.getValue(),l=r.getElementsByTagName("svg").length||5,h=r.getElementsByTagName("svg")[0]?r.getElementsByTagName("svg")[0].getAttribute("width"):14,d=[],c=document.createElement("div"),u=document.createElementNS("http://www.w3.org/2000/svg","svg");function p(e){d.forEach((function(t,i){i'):("ie"==n.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function m(e){var t=document.createElement("span"),s=u.cloneNode(!0);d.push(s),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),p(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),r.blur()})),t.appendChild(s),c.appendChild(t)}function g(e){a=e,p(e)}if(r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",c.style.verticalAlign="middle",c.style.display="inline-block",c.style.padding="4px",u.setAttribute("width",h),u.setAttribute("height",h),u.setAttribute("viewBox","0 0 512 512"),u.setAttribute("xml:space","preserve"),u.style.padding="0 1px",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+o.elementAttributes["+"+e])):c.setAttribute(e,o.elementAttributes[e]);for(var b=1;b<=l;b++)m(b);return p(a=Math.min(parseInt(a),l)),c.addEventListener("mousemove",(function(e){p(0)})),c.addEventListener("click",(function(e){i(0)})),r.addEventListener("blur",(function(e){s()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(a+1);break;case 37:g(a-1);break;case 13:i(a);break;case 27:s()}})),c},progress:function(e,t,i,s,o){var n,r,a=e.getElement(),l=void 0===o.max?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,h=void 0===o.min?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,d=(l-h)/100,c=e.getValue()||0,u=document.createElement("div"),p=document.createElement("div");function m(){var e=window.getComputedStyle(a,null),t=d*Math.round(p.offsetWidth/((a.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+h;i(t),a.setAttribute("aria-valuenow",t),a.setAttribute("aria-label",c)}if(u.style.position="absolute",u.style.right="0",u.style.top="0",u.style.bottom="0",u.style.width="5px",u.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),p.setAttribute(e,p.getAttribute(e)+o.elementAttributes["+"+e])):p.setAttribute(e,o.elementAttributes[e]);return a.style.padding="4px 4px",c=Math.min(parseFloat(c),l),c=Math.max(parseFloat(c),h),c=Math.round((c-h)/d),p.style.width=c+"%",a.setAttribute("aria-valuemin",h),a.setAttribute("aria-valuemax",l),p.appendChild(u),u.addEventListener("mousedown",(function(e){n=e.screenX,r=p.offsetWidth})),u.addEventListener("mouseover",(function(){u.style.cursor="ew-resize"})),a.addEventListener("mousemove",(function(e){n&&(p.style.width=r+e.screenX-n+"px")})),a.addEventListener("mouseup",(function(e){n&&(e.stopPropagation(),e.stopImmediatePropagation(),n=!1,r=!1,m())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+a.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-a.clientWidth/100+"px";break;case 9:case 13:m();break;case 27:s()}})),a.addEventListener("blur",(function(){s()})),p},tickCross:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input"),a=o.tristate,l=void 0===o.indeterminateValue?null:o.indeterminateValue,h=!1,d=Object.keys(o).includes("trueValue"),c=Object.keys(o).includes("falseValue");if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function u(e){var t=r.checked;return d&&t?t=o.trueValue:c&&!t&&(t=o.falseValue),a?e?h?l:t:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,t):t}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&"safari"!=this.table.browser&&t((function(){"cell"===e.getType()&&r.focus({preventScroll:!0})})),r.checked=d?n===o.trueValue:!0===n||"true"===n||"True"===n||1===n,r.addEventListener("change",(function(e){i(u())})),r.addEventListener("blur",(function(e){i(u(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(u()),27==e.keyCode&&s()})),r}};class Q extends k{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=Q.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),this.registerTableFunction("getEditedCells",this.getEditedCells.bind(this)),this.registerTableFunction("clearCellEdited",this.clearCellEdited.bind(this)),this.registerTableFunction("navigatePrev",this.navigatePrev.bind(this)),this.registerTableFunction("navigateNext",this.navigateNext.bind(this)),this.registerTableFunction("navigateLeft",this.navigateLeft.bind(this)),this.registerTableFunction("navigateRight",this.navigateRight.bind(this)),this.registerTableFunction("navigateUp",this.navigateUp.bind(this)),this.registerTableFunction("navigateDown",this.navigateDown.bind(this)),this.registerComponentFunction("cell","isEdited",this.cellIsEdited.bind(this)),this.registerComponentFunction("cell","clearEdited",this.clearEdited.bind(this)),this.registerComponentFunction("cell","edit",this.editCell.bind(this)),this.registerComponentFunction("cell","cancelEdit",this.cellCancelEdit.bind(this)),this.registerComponentFunction("cell","navigatePrev",this.navigatePrev.bind(this)),this.registerComponentFunction("cell","navigateNext",this.navigateNext.bind(this)),this.registerComponentFunction("cell","navigateLeft",this.navigateLeft.bind(this)),this.registerComponentFunction("cell","navigateRight",this.navigateRight.bind(this)),this.registerComponentFunction("cell","navigateUp",this.navigateUp.bind(this)),this.registerComponentFunction("cell","navigateDown",this.navigateDown.bind(this))}initialize(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("cell-value-changed",this.updateCellClass.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("row-layout",this.rowEditableCheck.bind(this)),this.subscribe("data-refreshing",this.cancelEdit.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this,void 0)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-left",this.navigateLeft.bind(this,void 0)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this,void 0)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((()=>{setTimeout((()=>{t.getComponent().navigateNext()}))}))))}cellIsEdited(e){return!!e.modules.edit&&e.modules.edit.edited}cellCancelEdit(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}updateCellClass(e){this.allowEdit(e)?e.getElement().classList.add("tabulator-editable"):e.getElement().classList.remove("tabulator-editable")}clearCellEdited(e){e||(e=this.table.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.table.modules.edit.clearEdited(e._getSelf())}))}navigatePrev(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateLeft())return!0;if((s=this.table.rowManager.prevDisplayRow(e.row,!0))&&(i=this.findPrevEditableCell(s,s.cells.length)))return i.getComponent().edit(),!0}return!1}navigateNext(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateRight())return!0;if((s=this.table.rowManager.nextDisplayRow(e.row,!0))&&(i=this.findNextEditableCell(s,-1)))return i.getComponent().edit(),!0}return!1}navigateLeft(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findPrevEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateRight(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findNextEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateUp(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.prevDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}navigateDown(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.nextDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}findNextEditableCell(e,t){var i=!1;if(t0)for(var s=t-1;s>=0;s--){let t=e.cells[s];if(t.column.modules.edit&&r.elVisible(t.getElement())){if(this.allowEdit(t)){i=t;break}}}return i}initializeColumnCheck(e){void 0!==e.definition.editor&&this.initializeColumn(e)}columnDeleteCheck(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}rowDeleteCheck(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}rowEditableCheck(e){e.getCells().forEach((e=>{e.column.modules.edit&&"function"==typeof e.column.modules.edit.check&&this.updateCellClass(e)}))}initializeColumn(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(typeof e.definition.editor){case"string":this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)}getCurrentCell(){return!!this.currentCell&&this.currentCell.getComponent()}clearEditor(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),this.dispatch("edit-editor-clear",i,e),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-editing"),i.table.element.classList.remove("tabulator-editing")}}cancelEdit(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatch("edit-cancelled",e),this.dispatchExternal("cellEditCancelled",t)}}bindEditor(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);this.updateCellClass(e),i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}focusCellNoEvent(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}editCell(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}focusScrollAdjust(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,s=e.row.getElement();s.offsetTopi&&(this.table.rowManager.element.scrollTop+=s.offsetTop+s.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,n=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin||0),n-=parseInt(this.table.modules.frozenColumns.rightMargin||0)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),n-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLeftn&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-n)}}allowEdit(e){var t=!!e.column.modules.edit;if(e.column.modules.edit)switch(typeof e.column.modules.edit.check){case"function":e.row.initialized&&(t=e.column.modules.edit.check(e.getComponent()));break;case"string":t=!!e.row.data[e.column.modules.edit.check];break;case"boolean":t=e.column.modules.edit.check}return t}edit(e,t,i){var s,o,n,r=this,a=function(){},l=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,l.blur(),!1;if(t&&t.stopPropagation(),this.allowEdit(e)||i){if(r.cancelEdit(),r.currentCell=e,this.focusScrollAdjust(e),o=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.definition.cellClick&&e.column.definition.cellClick.call(this.table,t,o)),e.column.definition.cellEditing&&e.column.definition.cellEditing.call(this.table,o),this.dispatch("cell-editing",e),this.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,s=e.column.modules.edit.editor.call(r,o,(function(e){a=e}),(function(t){if(r.currentCell===e){var i=r.chain("edit-success",[e,t],!0,!0);return!0===i||"highlight"===r.table.options.validationMode?(r.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==r.editedCells.indexOf(e)&&r.editedCells.push(e),e.setValue(t,!0),!0===i):(r.invalidEdit=!0,r.focusCellNoEvent(e,!0),a(),!1)}}),(function(){r.currentCell===e&&r.cancelEdit()}),n),!this.currentCell||!1===s)return l.blur(),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),l.blur(),!1;for(l.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-editing"),e.table.element.classList.add("tabulator-editing");l.firstChild;)l.removeChild(l.firstChild);l.appendChild(s),a();for(var h=l.children,d=0;d{e.push(t.getComponent())})),e}clearEdited(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,this.dispatch("edit-edited-clear",e)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}Q.moduleName="edit",Q.editors=Z;class ee{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class te{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class ie extends k{constructor(e){super(e),this.config={},this.cloneTableStyle=!0,this.colVisProp="",this.registerTableOption("htmlOutputConfig",!1),this.registerColumnOption("htmlOutput"),this.registerColumnOption("titleHtmlOutput")}initialize(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}generateExportList(e,t,i,s){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}generateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.generateTableElement(o)}rowLookup(e){var t=[];if("function"==typeof e)e.call(this.table).forEach((e=>{(e=this.table.rowManager.findRow(e))&&t.push(e)}));else switch(e){case!0:case"visible":t=this.table.rowManager.getVisibleRows(!1,!0);break;case"all":t=this.table.rowManager.rows;break;case"selected":t=this.table.modules.selectRow.selectedRows;break;default:t=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],t)}generateColumnGroupHeaders(){var e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((t=>{var i=this.processColumnGroup(t);i&&e.push(i)})),e}processColumnGroup(e){var t=e.columns,i=0,s={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach((e=>{var t=this.processColumnGroup(e);t&&(s.width+=t.width,s.subGroups.push(t),t.depth>i&&(i=t.depth))})),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s}columnVisCheck(e){var t=e.definition[this.colVisProp];return"function"==typeof t&&(t=t.call(this.table,e.getComponent())),!1!==t&&(e.visible||!e.visible&&t)}headersToExportRows(e){var t=[],i=0,s=[];function o(e,s){var n=i-s;if(void 0===t[s]&&(t[s]=[]),e.height=e.subGroups?1:n-e.depth+1,t[s].push(e),e.height>1)for(let i=1;i1)for(let i=1;ii&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((e=>{var t=[];e.forEach((e=>{if(e){let i=void 0===e.title?"":e.title;t.push(new te(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),s.push(new ee("header",t))})),s}bodyToExportRows(e){var t=[],i=[];return this.table.columnManager.columnsByIndex.forEach((e=>{this.columnVisCheck(e)&&t.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((e=>{switch(e.type){case"group":return!1!==this.config.rowGroups;case"calc":return!1!==this.config.columnCalcs;case"row":return!(this.table.options.dataTree&&!1===this.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach(((e,s)=>{var o=e.getData(this.colVisProp),n=[],r=0;switch(e.type){case"group":r=e.level,n.push(new te(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new te(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new ee(e.type,n,e.getComponent(),r))})),i}generateTableElement(e){var t=document.createElement("table"),i=document.createElement("thead"),s=document.createElement("tbody"),o=this.lookupTableStyles(),n=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==n?n:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),t.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(((e,t)=>{let n;switch(e.type){case"header":i.appendChild(this.generateHeaderElement(e,r,o));break;case"group":s.appendChild(this.generateGroupElement(e,r,o));break;case"calc":s.appendChild(this.generateCalcElement(e,r,o));break;case"row":n=this.generateRowElement(e,r,o),this.mapElementStyles(t%2&&o.evenRow?o.evenRow:o.oddRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s.appendChild(n)}})),i.innerHTML&&t.appendChild(i),t.appendChild(s),this.mapElementStyles(this.table.element,t,["border-top","border-left","border-right","border-bottom"]),t}lookupTableStyles(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}generateHeaderElement(e,t,i){var s=document.createElement("tr");return e.columns.forEach((e=>{if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,this.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),this.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),this.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?this.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&this.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),s.appendChild(t)}})),s}generateGroupElement(e,t,i){var s=document.createElement("tr"),o=document.createElement("td"),n=e.columns[0];return s.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?n.value=t.groupHeader[e.indent](n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1!==t.groupHeader&&(n.value=e.component._group.generator(n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)),o.colSpan=n.width,o.innerHTML=n.value,s.classList.add("tabulator-print-table-group"),s.classList.add("tabulator-group-level-"+e.indent),n.component.isVisible()&&s.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(o),s}generateCalcElement(e,t,i){var s=this.generateRowElement(e,t,i);return s.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s}generateRowElement(e,t,i){var s=document.createElement("tr");if(s.classList.add("tabulator-print-table-row"),e.columns.forEach(((o,n)=>{if(o){var r,a=document.createElement("td"),l=o.component._column,h=this.table.columnManager.findColumnIndex(l),d=o.value,c={modules:{},getValue:function(){return d},getField:function(){return l.definition.field},getElement:function(){return a},getType:function(){return"cell"},getColumn:function(){return l.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return c},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach((function(e){a.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)d=this.table.modules.format.formatExportValue(c,this.colVisProp);else switch(typeof d){case"object":d=null!==d?JSON.stringify(d):"";break;case"undefined":d=""}d instanceof Node?a.appendChild(d):a.innerHTML=d,(r=i.styleCells&&i.styleCells[h]?i.styleCells[h]:i.firstCell)&&(this.mapElementStyles(r,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),l.definition.align&&(a.style.textAlign=l.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==n)&&(e.component._row.modules.dataTree.controlEl&&a.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),e.component._row.modules.dataTree.branchEl&&a.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),s.appendChild(a),c.modules.format&&c.modules.format.renderedCallback&&c.modules.format.renderedCallback()}})),t.rowFormatter&&"row"===e.type&&!1!==this.config.formatCells){Object.assign(e.component).getElement=function(){return s},t.rowFormatter(e.component)}return s}generateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.generateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.generateHTMLTable(o)}mapElementStyles(e,t,i){if(this.cloneTableStyle&&e&&t){var s={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[s[e]]||(t.style[s[e]]=o.getPropertyValue(e))}))}}}}ie.moduleName="export";var se={"=":function(e,t,i,s){return t==e},"<":function(e,t,i,s){return t":function(e,t,i,s){return t>e},">=":function(e,t,i,s){return t>=e},"!=":function(e,t,i,s){return t!=e},regex:function(e,t,i,s){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,s){var o=e.toLowerCase().split(void 0===s.separator?" ":s.separator),n=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((e=>{n.includes(e)&&r.push(!0)})),s.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,s){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}};class oe extends k{constructor(e){super(e),this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1,this.tableInitialized=!1,this.registerTableOption("filterMode","local"),this.registerTableOption("initialFilter",!1),this.registerTableOption("initialHeaderFilter",!1),this.registerTableOption("headerFilterLiveFilterDelay",300),this.registerTableOption("placeholderHeaderFilter",!1),this.registerColumnOption("headerFilter"),this.registerColumnOption("headerFilterPlaceholder"),this.registerColumnOption("headerFilterParams"),this.registerColumnOption("headerFilterEmptyCheck"),this.registerColumnOption("headerFilterFunc"),this.registerColumnOption("headerFilterFuncParams"),this.registerColumnOption("headerFilterLiveFilter"),this.registerTableFunction("searchRows",this.searchRows.bind(this)),this.registerTableFunction("searchData",this.searchData.bind(this)),this.registerTableFunction("setFilter",this.userSetFilter.bind(this)),this.registerTableFunction("refreshFilter",this.userRefreshFilter.bind(this)),this.registerTableFunction("addFilter",this.userAddFilter.bind(this)),this.registerTableFunction("getFilters",this.getFilters.bind(this)),this.registerTableFunction("setHeaderFilterFocus",this.userSetHeaderFilterFocus.bind(this)),this.registerTableFunction("getHeaderFilterValue",this.userGetHeaderFilterValue.bind(this)),this.registerTableFunction("setHeaderFilterValue",this.userSetHeaderFilterValue.bind(this)),this.registerTableFunction("getHeaderFilters",this.getHeaderFilters.bind(this)),this.registerTableFunction("removeFilter",this.userRemoveFilter.bind(this)),this.registerTableFunction("clearFilter",this.userClearFilter.bind(this)),this.registerTableFunction("clearHeaderFilter",this.userClearHeaderFilter.bind(this)),this.registerComponentFunction("column","headerFilterFocus",this.setHeaderFilterFocus.bind(this)),this.registerComponentFunction("column","reloadHeaderFilter",this.reloadHeaderFilter.bind(this)),this.registerComponentFunction("column","getHeaderFilterValue",this.getHeaderFilterValue.bind(this)),this.registerComponentFunction("column","setHeaderFilterValue",this.setHeaderFilterValue.bind(this))}initialize(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.subscribe("placeholder",this.generatePlaceholder.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}tableBuilt(){this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((e=>{var t=this.table.columnManager.findColumn(e.field);if(!t)return console.warn("Column Filter Error - No matching column found:",e.field),!1;this.setHeaderFilterValue(t,e.value)})),this.tableInitialized=!0}remoteFilterParams(e,t,i,s){return s.filter=this.getFilters(!0,!0),s}generatePlaceholder(e){if(this.table.options.placeholderHeaderFilter&&Object.keys(this.headerFilters).length)return this.table.options.placeholderHeaderFilter}userSetFilter(e,t,i,s){this.setFilter(e,t,i,s),this.refreshFilter()}userRefreshFilter(){this.refreshFilter()}userAddFilter(e,t,i,s){this.addFilter(e,t,i,s),this.refreshFilter()}userSetHeaderFilterFocus(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}userGetHeaderFilterValue(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}userSetHeaderFilterValue(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}userRemoveFilter(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}userClearFilter(e){this.clearFilter(e),this.refreshFilter()}userClearHeaderFilter(){this.clearHeaderFilter(),this.refreshFilter()}searchRows(e,t,i){return this.search("rows",e,t,i)}searchData(e,t,i){return this.search("data",e,t,i)}initializeColumnHeaderFilter(e){e.definition.headerFilter&&this.initializeColumn(e)}initializeColumn(e,t){var i=this,s=e.getField();e.modules.filter={success:function(t){var o,n="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[s];else{switch(e.modules.filter.value=t,typeof e.definition.headerFilterFunc){case"string":oe.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,oe.filters[e.definition.headerFilterFunc](t,o,i,s)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,e.definition.headerFilterFunc(t,o,i,s)}}if(!o)if("partial"===n)o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";else o=function(i){return e.getFieldValue(i)==t},r="=";i.headerFilters[s]={value:t,func:o,type:r}}e.modules.filter.value=t,a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.trackChanges(),i.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)}generateHeaderFilterElement(e,t,i){var s,o,n,r,a,l,h,d,c=this,u=e.modules.filter.success,p=e.getField();if(e.modules.filter.value=t,e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(o=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(o=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=c.table.modules.edit.editors.input}if(o){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return s},getColumn:function(){return e.getComponent()},getTable:()=>this.table,getType:()=>"header",getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(c.table,r):h,!(n=o.call(this.table.modules.edit,r,(function(e){d=e}),u,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",n);c.langBind("headerFilters|columns|"+e.definition.field,(function(t){n.setAttribute("placeholder",void 0!==t&&t?t:e.definition.headerFilterPlaceholder||c.langText("headerFilters|default"))})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.contentsElement.scrollLeft;t!==this.table.rowManager.element.scrollLeft&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){u(n.value)}),c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=n,e.modules.filter.attrType=n.hasAttribute("type")?n.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=n.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(n.addEventListener("keyup",l),n.addEventListener("search",l),"number"==e.modules.filter.attrType&&n.addEventListener("change",(function(e){u(n.value)})),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&n.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||n.addEventListener("mousedown",(function(e){e.stopPropagation()}))),s.appendChild(n),e.contentElement.appendChild(s),i||c.headerFilterColumns.push(e),d&&d()}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)}hideHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}showHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}setHeaderFilterFocus(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}getHeaderFilterValue(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}setHeaderFilterValue(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}reloadHeaderFilter(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}refreshFilter(){this.tableInitialized&&("remote"===this.table.options.filterMode?this.reloadData(null,!1,!1):this.refreshData(!0))}trackChanges(){this.changed=!0,this.dispatch("filter-changed")}hasChanged(){var e=this.changed;return this.changed=!1,e}setFilter(e,t,i,s){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),this.addFilter(e)}addFilter(e,t,i,s){var o=!1;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),e.forEach((e=>{(e=this.findFilter(e))&&(this.filterList.push(e),o=!0)})),o&&this.trackChanges()}findFilter(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:oe.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return oe.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return oe.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}findSubFilters(e){var t=[];return e.forEach((e=>{(e=this.findFilter(e))&&t.push(e)})),!!t.length&&t}getFilters(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}filtersToArray(e,t){var i=[];return e.forEach((e=>{var s;Array.isArray(e)?i.push(this.filtersToArray(e,t)):(s={field:e.field,type:e.type,value:e.value},t&&"function"==typeof s.type&&(s.type="function"),i.push(s))})),i}getHeaderFilters(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}removeFilter(e,t,i){Array.isArray(e)||(e=[{field:e,type:t,value:i}]),e.forEach((e=>{var t=-1;(t="object"==typeof e.field?this.filterList.findIndex((t=>e===t)):this.filterList.findIndex((t=>e.field===t.field&&e.type===t.type&&e.value===t.value)))>-1?this.filterList.splice(t,1):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)})),this.trackChanges()}clearFilter(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}clearHeaderFilter(){this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((e=>{void 0!==e.modules.filter.value&&delete e.modules.filter.value,e.modules.filter.prevSuccess=void 0,this.reloadHeaderFilter(e)})),this.trackChanges()}search(e,t,i,s){var o=[],n=[];return Array.isArray(t)||(t=[{field:t,type:i,value:s}]),t.forEach((e=>{(e=this.findFilter(e))&&n.push(e)})),this.table.rowManager.rows.forEach((t=>{var i=!0;n.forEach((e=>{this.filterRecurse(e,t.getData())||(i=!1)})),i&&o.push("data"===e?t.getData("data"):t.getComponent())})),o}filter(e,t){var i=[],s=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters(!0)),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((e=>{this.filterRow(e)&&i.push(e)})):i=e.slice(0),this.subscribedExternal("dataFiltered")&&(i.forEach((e=>{s.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(!0),s)),i}filterRow(e,t){var i=!0,s=e.getData();for(var o in this.filterList.forEach((e=>{this.filterRecurse(e,s)||(i=!1)})),this.headerFilters)this.headerFilters[o].func(s)||(i=!1);return i}filterRecurse(e,t){var i=!1;return Array.isArray(e)?e.forEach((e=>{this.filterRecurse(e,t)&&(i=!0)})):i=e.func(t),i}}oe.moduleName="filter",oe.filters=se;var ne={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var s,o,n,r,a,l=parseFloat(e.getValue()),h="",d=t.decimal||".",c=t.thousand||",",u=t.negativeSign||"-",p=t.symbol||"",m=!!t.symbolAfter,g=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));if(l<0&&(l=Math.abs(l),h=u),s=!1!==g?l.toFixed(g):l,o=(s=String(s).split("."))[0],n=s.length>1?d+s[1]:"",!1!==t.thousand)for(r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+c+"$2");return a=o+n,!0===h?(a="("+a+")",m?a+p:p+a):m?h+a+p:h+p+a},link:function(e,t,i){var s,o=e.getValue(),n=t.urlPrefix||"",r=t.download,a=o,l=document.createElement("a");if(t.labelField&&(s=e.getData(),a=function e(t,i){var s=i[t.shift()];return t.length&&"object"==typeof s?e(t,s):s}(t.labelField.split(this.table.options.nestedFieldSeparator),s)),t.label)switch(typeof t.label){case"string":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(o=(s=e.getData())[t.urlField]),t.url)switch(typeof t.url){case"string":o=t.url;break;case"function":o=t.url(e)}return l.setAttribute("href",n+o),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return" "},image:function(e,t,i){var s=document.createElement("img"),o=e.getValue();switch(t.urlPrefix&&(o=t.urlPrefix+e.getValue()),t.urlSuffix&&(o+=t.urlSuffix),s.setAttribute("src",o),typeof t.height){case"number":s.style.height=t.height+"px";break;case"string":s.style.height=t.height}switch(typeof t.width){case"number":s.style.width=t.width+"px";break;case"string":s.style.width=t.width}return s.addEventListener("load",(function(){e.getRow().normalizeHeight()})),s},tickCross:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t.allowEmpty,r=t.allowTruthy,a=Object.keys(t).includes("trueValue"),l=void 0!==t.tickElement?t.tickElement:'',h=void 0!==t.crossElement?t.crossElement:'';return a&&s===t.trueValue||!a&&(r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s)?(o.setAttribute("aria-checked",!0),l||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),h||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=t.outputFormat||"dd/MM/yyyy HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue();if(void 0!==o)return(s=o.isDateTime(l)?l:"iso"===n?o.fromISO(String(l)):o.fromFormat(String(l),n)).isValid?(t.timezone&&(s=s.setZone(t.timezone)),s.toFormat(r)):!0!==a&&l?"function"==typeof a?a(l):a:l;console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:"days",h=void 0!==t.humanize&&t.humanize,d=void 0!==t.date?t.date:o.now(),c=e.getValue();if(void 0!==o)return(s=o.isDateTime(c)?c:"iso"===n?o.fromISO(String(c)):o.fromFormat(String(c),n)).isValid?h?s.diff(d,l).toHuman()+(a?" "+a:""):parseInt(s.diff(d,l)[l])+(a?" "+a:""):!0===r?c:"function"==typeof r?r(c):r;console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var s=e.getValue();return void 0===t[s]?(console.warn("Missing display value for "+s),s):t[s]},star:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",s=s&&!isNaN(s)?parseInt(s):0,s=Math.max(0,Math.min(s,n));for(var l=1;l<=n;l++){var h=a.cloneNode(!0);h.innerHTML=l<=s?'':'',r.appendChild(h)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",s),r},traffic:function(e,t,i){var s,o,n=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,h=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),o=parseFloat(n)<=a?parseFloat(n):a,o=parseFloat(o)>=l?parseFloat(o):l,s=(a-l)/100,o=Math.round((o-l)/s),typeof h){case"string":d=h;break;case"function":d=h(n);break;case"object":if(Array.isArray(h)){var c=100/h.length,u=Math.floor(o/c);u=Math.min(u,h.length-1),d=h[u=Math.max(u,0)];break}}return r.style.backgroundColor=d,r}},progress:function(e,t={},i){var o,n,r,a,l,h=this.sanitizeHTML(e.getValue())||0,d=e.getElement(),c=t.max?t.max:100,u=t.min?t.min:0,p=t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(h)<=c?parseFloat(h):c,n=parseFloat(n)>=u?parseFloat(n):u,o=(c-u)/100,n=Math.round((n-u)/o),typeof t.color){case"string":r=t.color;break;case"function":r=t.color(h);break;case"object":if(Array.isArray(t.color)){let e=100/t.color.length,i=Math.floor(n/e);i=Math.min(i,t.color.length-1),i=Math.max(i,0),r=t.color[i];break}default:r="#2DC214"}switch(typeof t.legend){case"string":a=t.legend;break;case"function":a=t.legend(h);break;case"boolean":a=h;break;default:a=!1}switch(typeof t.legendColor){case"string":l=t.legendColor;break;case"function":l=t.legendColor(h);break;case"object":if(Array.isArray(t.legendColor)){let e=100/t.legendColor.length,i=Math.floor(n/e);i=Math.min(i,t.legendColor.length-1),i=Math.max(i,0),l=t.legendColor[i]}break;default:l="#000"}d.style.minWidth="30px",d.style.position="relative",d.setAttribute("aria-label",n);var m=document.createElement("div");m.style.display="inline-block",m.style.width=n+"%",m.style.backgroundColor=r,m.style.height="100%",m.setAttribute("data-max",c),m.setAttribute("data-min",u);var g=document.createElement("div");if(g.style.position="relative",g.style.width="100%",g.style.height="100%",a){var b=document.createElement("div");b.style.position="absolute",b.style.top=0,b.style.left=0,b.style.textAlign=p,b.style.width="100%",b.style.color=l,b.innerHTML=a}return i((function(){if(!(e instanceof s)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",d.appendChild(t),d=t}d.appendChild(g),g.appendChild(m),a&&g.appendChild(b)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){var s=document.createElement("span");return e.getRow().watchPosition((e=>{s.innerText=e})),s},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
              "},responsiveCollapse:function(e,t,i){var s=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function n(e){var t=o.element;o.open=e,t&&(o.open?(s.classList.add("open"),t.style.display=""):(s.classList.remove("open"),t.style.display="none"))}return s.classList.add("tabulator-responsive-collapse-toggle"),s.innerHTML='\n \n \n\n\n\n \n',e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(t){t.stopImmediatePropagation(),n(!o.open),e.getTable().rowManager.adjustTableSize()})),n(o.open),s},rowSelection:function(e,t,i){var s=document.createElement("input"),o=!1;if(s.type="checkbox",s.setAttribute("aria-label","Select Row"),this.table.modExists("selectRow",!0))if(s.addEventListener("click",(e=>{e.stopPropagation()})),"function"==typeof e.getRow){var n=e.getRow();n instanceof u?(s.addEventListener("change",(e=>{"click"===this.table.options.selectableRangeMode&&o?o=!1:n.toggleSelect()})),"click"===this.table.options.selectableRangeMode&&s.addEventListener("click",(e=>{o=!0,this.table.modules.selectRow.handleComplexRowClick(n._row,e)})),s.checked=n.isSelected&&n.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(n,s)):s=""}else s.addEventListener("change",(e=>{this.table.modules.selectRow.selectedRows.length?this.table.deselectRow():this.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(s);return s}};class re extends k{constructor(e){super(e),this.registerColumnOption("formatter"),this.registerColumnOption("formatterParams"),this.registerColumnOption("formatterPrint"),this.registerColumnOption("formatterPrintParams"),this.registerColumnOption("formatterClipboard"),this.registerColumnOption("formatterClipboardParams"),this.registerColumnOption("formatterHtmlOutput"),this.registerColumnOption("formatterHtmlOutputParams"),this.registerColumnOption("titleFormatter"),this.registerColumnOption("titleFormatterParams")}initialize(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}initializeColumn(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}lookupFormatter(e,t){var i={params:e.definition["formatter"+t+"Params"]||{}},s=e.definition["formatter"+t];switch(typeof s){case"string":re.formatters[s]?i.formatter=re.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=re.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=re.formatters.plaintext}return i}cellRendered(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}formatHeader(e,t,i){var s,o,n,r;return e.definition.titleFormatter?(s=this.getFormatter(e.definition.titleFormatter),n=t=>{e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i},getType:function(){return"header"},getColumn:function(){return e.getComponent()},getTable:()=>this.table},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,s.call(this,r,o,n)):t}formatValue(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}formatExportValue(e,t){var i,s=e.column.modules.format[t];if(s){function o(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}return i="function"==typeof s.params?s.params(e.getComponent()):s.params,s.formatter.call(this,e.getComponent(),i,o)}return this.formatValue(e)}sanitizeHTML(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=/]/g,(function(e){return t[e]}))}return e}emptyToSpace(e){return null==e||""===e?" ":e}getFormatter(e){switch(typeof e){case"string":re.formatters[e]?e=re.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=re.formatters.plaintext);break;case"function":break;default:e=re.formatters.plaintext}return e}}re.moduleName="format",re.formatters=ne;class ae extends k{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.initializationMode="left",this.active=!1,this.blocked=!0,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.active=!1}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("column-add",this.reinitializeColumns.bind(this)),this.subscribe("column-delete",this.reinitializeColumns.bind(this)),this.subscribe("table-redraw",this.layout.bind(this)),this.subscribe("layout-refreshing",this.blockLayout.bind(this)),this.subscribe("layout-refreshed",this.unblockLayout.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this))}blockLayout(){this.blocked=!0}unblockLayout(){this.blocked=!1}layoutCell(e){this.layoutElement(e.element,e.column)}reinitializeColumns(){this.reset(),this.table.columnManager.columnsByIndex.forEach((e=>{this.initializeColumn(e)}))}initializeColumn(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}frozenCheck(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}layoutCalcRows(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow),this.table.modExists("groupRows")&&this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()))}layoutGroupCalcs(e){e.forEach((e=>{e.calcs.top&&this.layoutRow(e.calcs.top),e.calcs.bottom&&this.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&this.layoutGroupCalcs(e.groupList)}))}layoutColumnPosition(e){var t=[],i=0,s=0;this.leftColumns.forEach(((s,o)=>{if(s.modules.frozen.marginValue=i,s.modules.frozen.margin=s.modules.frozen.marginValue+"px",s.visible&&(i+=s.getWidth()),o==this.leftColumns.length-1?s.modules.frozen.edge=!0:s.modules.frozen.edge=!1,s.parent.isGroup){var n=this.getColGroupParentElement(s);t.includes(n)||(this.layoutElement(n,s),t.push(n)),s.modules.frozen.edge&&n.classList.add("tabulator-frozen-"+s.modules.frozen.position)}else this.layoutElement(s.getElement(),s);e&&s.cells.forEach((e=>{this.layoutElement(e.getElement(!0),s)}))})),this.rightColumns.forEach(((t,i)=>{t.modules.frozen.marginValue=s,t.modules.frozen.margin=t.modules.frozen.marginValue+"px",t.visible&&(s+=t.getWidth()),i==this.rightColumns.length-1?t.modules.frozen.edge=!0:t.modules.frozen.edge=!1,t.parent.isGroup?this.layoutElement(this.getColGroupParentElement(t),t):this.layoutElement(t.getElement(),t),e&&t.cells.forEach((e=>{this.layoutElement(e.getElement(!0),t)}))}))}getColGroupParentElement(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}layout(){this.active&&!this.blocked&&(this.layoutColumnPosition(),this.reinitializeRows(),this.layoutCalcRows())}reinitializeRows(){var e=this.table.rowManager.getVisibleRows(!0);this.table.rowManager.getRows().filter((t=>!e.includes(t))).forEach((e=>{e.deinitialize()})),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)}))}layoutRow(e){"fitDataFill"===this.table.options.layout&&this.rightColumns.length&&(this.table.rowManager.getTableElement().style.minWidth="calc(100% - "+this.rightMargin+")"),this.leftColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)})),this.rightColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)}))}layoutElement(e,t){var i;t.modules.frozen&&e&&(e.style.position="sticky",i=this.table.rtl?"left"===t.modules.frozen.position?"right":"left":t.modules.frozen.position,e.style[i]=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}adjustForScrollbar(e){this.rightColumns.length&&(this.table.columnManager.getContentsElement().style.width="calc(100% - "+e+"px)")}_calcSpace(e,t){var i=0;for(let s=0;s{this.initializeRow(e)}))}initializeRow(e){var t=this.table.options.frozenRows,i=typeof t;"number"===i?e.getPosition()&&e.getPosition()+this.rows.length<=t&&this.freezeRow(e):"function"===i?t.call(this.table,e.getComponent())&&this.freezeRow(e):Array.isArray(t)&&t.includes(e.data[this.options("frozenRowsField")])&&this.freezeRow(e)}isRowFrozen(e){return this.rows.indexOf(e)>-1}isFrozen(){return!!this.rows.length}visibleRows(e,t){return this.rows.forEach((e=>{t.push(e)})),t}getRows(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}freezeRow(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.rows.push(e),this.refreshData(!1,"display"),this.table.rowManager.adjustTableSize(),this.styleRows())}unfreezeRow(e){e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}detachRow(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode&&i.parentNode.removeChild(i),this.rows.splice(t,1)}}styleRows(e){this.rows.forEach(((e,t)=>{this.table.rowManager.styleRow(e,t)}))}}le.moduleName="frozenRows";class he{constructor(e){return this._group=e,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.groupManager.table.componentFunctionBinder.handle("group",e._group,t)}})}getKey(){return this._group.key}getField(){return this._group.field}getElement(){return this._group.element}getRows(){return this._group.getRows(!0)}getSubGroups(){return this._group.getSubGroups(!0)}getParentGroup(){return!!this._group.parent&&this._group.parent.getComponent()}isVisible(){return this._group.visible}show(){this._group.show()}hide(){this._group.hide()}toggle(){this._group.toggleVisibility()}scrollTo(e,t){return this._group.groupManager.table.rowManager.scrollToRow(this._group,e,t)}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class de{constructor(e,t,i,s,o,n,r){this.groupManager=e,this.parent=t,this.key=s,this.level=i,this.field=o,this.hasSubGroups=i{e.modules&&delete e.modules.group}))),this.element=!1,this.arrowElement=!1,this.elementContents=!1}createElements(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)}createValueGroups(){var e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach((t=>{this._createGroup(t,e)}))}addBindings(){this.groupManager.table.options.groupToggleElement&&("arrow"==this.groupManager.table.options.groupToggleElement?this.arrowElement:this.element).addEventListener("click",(e=>{"arrow"===this.groupManager.table.options.groupToggleElement&&(e.stopPropagation(),e.stopImmediatePropagation()),setTimeout((()=>{this.toggleVisibility()}))}))}_createGroup(e,t){var i=t+"_"+e,s=new de(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[i]);this.groups[i]=s,this.groupList.push(s)}_addRowToGroup(e){var t=this.level+1;if(this.hasSubGroups){var i=this.groupManager.groupIDLookups[t].func(e.getData()),s=t+"_"+i;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[s]&&this.groups[s].addRow(e):(this.groups[s]||this._createGroup(i,t),this.groups[s].addRow(e))}}_addRow(e){this.rows.push(e),e.modules.group=this}insertRow(e,t,i){var s=this.conformRowData({});e.updateData(s);var o=this.rows.indexOf(t);o>-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}scrollHeader(e){this.arrowElement&&(this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)})))}getRowIndex(e){}conformRowData(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}removeRow(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.groupManager.blockRedraw||(this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this))):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}getHeadersAndRows(){var e=[];return e.push(this),this._visSet(),this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.visible?this.groupList.length?this.groupList.forEach((function(t){e=e.concat(t.getHeadersAndRows())})):("table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),e=e.concat(this.rows),"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))),e}getData(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((e=>{i.push(e.getData(t||"data"))})),i}getRowCount(){var e=0;return this.groupList.length?this.groupList.forEach((t=>{e+=t.getRowCount()})):e=this.rows.length,e}toggleVisibility(){this.visible?this.hide():this.show()}hide(){this.visible=!1,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination||(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((e=>{e.getHeadersAndRows().forEach((e=>{e.detachElement()}))})):this.rows.forEach((e=>{var t=e.getElement();t.parentNode.removeChild(t)}))),this.groupManager.updateGroupRows(!0),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.generateElement();this.groupList.length?this.groupList.forEach((t=>{t.getHeadersAndRows().forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.updateGroupRows(!0)}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}_visSet(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}getRowGroup(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var s=i.getRowGroup(e);s&&(t=s)})):this.rows.find((function(t){return t===e}))&&(t=this),t}getSubGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getRows(e,t){var i=[];return t&&this.groupList.length?this.groupList.forEach((s=>{i=i.concat(s.getRows(e,t))})):this.rows.forEach((function(t){i.push(e?t.getComponent():t)})),i}generateGroupHeaderContents(){var e=[];for(this.getRows(!1,!0).forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}getPath(e=[]){return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}getElement(){return this.elementContents?this.element:this.generateElement()}generateElement(){this.addBindings=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",((e,t)=>{this.headerGenerator[0]=(i,s,o)=>(void 0===i?"":i)+"("+s+" "+(1===s?e:t.groups.items)+")"})),this.groupIDLookups=[],e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((e=>{e.definition.topCalc&&this.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&this.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(e)||(e=[e]),e.forEach(((e,t)=>{var i,s;i="function"==typeof e?e:(s=this.table.columnManager.getColumnByField(e))?function(e){return s.getFieldValue(e)}:function(t){return t[e]},this.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!this.allowedValues&&this.allowedValues[t]})})),t&&(Array.isArray(t)||(t=[t]),t.forEach((e=>{})),this.startOpen=t),i&&(this.headerGenerator=Array.isArray(i)?i:[i])}else this.groupList=[],this.groups={}}rowSample(e,t){if(this.table.options.groupBy){var i=this.getGroups(!1)[0];t.push(i.getRows(!1)[0])}return t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();if(!this.table.options.groupBy)return t;t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){if(this.table.options.groupBy){this.assignRowToGroup(e);var s=e.modules.group.rows;return s.length>1&&(!t||t&&-1==s.indexOf(t)?i?s[0]!==e&&(t=s[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):s[s.length-1]!==e&&(t=s[s.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}}trackChanges(){this.dispatch("group-changed")}setGroupBy(e){this.table.options.groupBy=e,this.initialized||this.initialize(),this.configureGroupSetup(),!e&&this.table.modExists("columnCalcs")&&!0===this.table.options.columnCalcs&&this.table.modules.columnCalcs.reinitializeCalcs(),this.refreshData(),this.trackChanges()}setGroupValues(e){this.table.options.groupValues=e,this.configureGroupSetup(),this.refreshData(),this.trackChanges()}setGroupStartOpen(e){this.table.options.groupStartOpen=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}setGroupHeader(e){this.table.options.groupHeader=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}userGetGroups(e){return this.getGroups(!0)}userGetGroupedData(){return this.table.options.groupBy?this.getGroupedData():this.getData()}rowGetGroup(e){return!!e.modules.group&&e.modules.group.getComponent()}rowMoving(e,t,i){if(this.table.options.groupBy){!i&&t instanceof de&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof de?t:t.modules.group,o=e instanceof de?e:e.modules.group;s===o?this.table.rowManager.moveRowInArray(s.rows,e,t,i):(o&&o.removeRow(e),s.insertRow(e,t,i))}}rowDeleting(e){this.table.options.groupBy&&e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.table.options.groupBy&&this.updateGroupRows(!0)}cellUpdated(e){this.table.options.groupBy&&this.reassignRowToGroup(e.row)}getRows(e){return this.table.options.groupBy&&this.groupIDLookups.length?(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0)),this.updateGroupRows()):e.slice(0)}getGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getChildGroups(e){var t=[];return e||(e=this),e.groupList.forEach((e=>{e.groupList.length?t=t.concat(this.getChildGroups(e)):t.push(e)})),t}wipe(){this.table.options.groupBy&&(this.groupList.forEach((function(e){e.wipe()})),this.groupList=[],this.groups={})}pullGroupListData(e){var t=[];return e.forEach((e=>{var i={level:0,rowCount:0,headerContent:""},s=[];e.hasSubGroups?(s=this.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=s.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),t.push(i),t=t.concat(s)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,t.push(i),e.getRows().forEach((e=>{t.push(e.getData("data"))})))})),t}getGroupedData(){return this.pullGroupListData(this.groupList)}getRowGroup(e){var t=!1;return this.options("dataTree")&&(e=this.table.modules.dataTree.getTreeParentRoot(e)),this.groupList.forEach((i=>{var s=i.getRowGroup(e);s&&(t=s)})),t}countGroups(){return this.groupList.length}generateGroups(e){var t=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((e=>{this.createGroup(e,0,t)})),e.forEach((e=>{this.assignRowToExistingGroup(e,t)}))):e.forEach((e=>{this.assignRowToGroup(e,t)})),Object.values(t).forEach((e=>{e.wipe(!0)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new de(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=s,this.groupList.push(s)}assignRowToExistingGroup(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}assignRowToGroup(e,t){var i=this.groupIDLookups[0].func(e.getData()),s=!this.groups["0_"+i];return s&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!s}reassignRowToGroup(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),s=this.getExpectedPath(e);i.length==s.length&&i.every(((e,t)=>e===s[t]))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}getExpectedPath(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((e=>{t.push(e.func(i))})),t}updateGroupRows(e){var t=[];return this.blockRedraw||(this.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0)),t}scrollHeaders(e){this.table.options.groupBy&&("virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((t=>{t.scrollHeader(e)})))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}checkBasicModeGroupHeaderWidth(){var e=this.table.rowManager.tableElement,t=!0;this.table.rowManager.getDisplayRows().forEach(((i,s)=>{this.table.rowManager.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}}ce.moduleName="groupRows";class ue extends k{constructor(e){super(e),this.history=[],this.index=-1,this.registerTableOption("history",!1)}initialize(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}rowMoved(e,t,i){this.action("rowMove",e,{posFrom:e.getPosition(),posTo:t.getPosition(),to:t,after:i})}rowAdded(e,t,i,s){this.action("rowAdd",e,{data:t,pos:i,index:s})}rowDeleted(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup()._getSelf().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}cellUpdated(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}clear(){this.history=[],this.index=-1}action(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}getHistoryUndoSize(){return this.index+1}getHistoryRedoSize(){return this.history.length-(this.index+1)}clearComponentHistory(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}undo(){if(this.index>-1){let e=this.history[this.index];return ue.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return ue.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof p)i.component===e&&(i.component=t);else if(i.component instanceof o&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}ue.moduleName="history",ue.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){var t=e.data.posFrom-e.data.posTo>0;this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posFrom),t),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}},ue.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue),e.component.cellRendered()},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posTo),e.data.after),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}};class pe extends k{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.tableElementCheck()}tableElementCheck(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&(this.table.originalElement.childNodes.length?this.parseTable():console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."))}parseTable(){var e=this.table.originalElement,t=this.table.options,i=e.getElementsByTagName("th"),s=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),s=s?s.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,s):this._generateBlankHeaders(i,s);for(var n=0;n{n[e.toLowerCase()]=e})),s){var a,l=s[r];l&&"object"==typeof l&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==n[a]&&(t[n[a]]=this._attribValue(l.value)))}}_attribValue(e){return"true"===e||"false"!==e&&e}_findCol(e){return this.table.options.columns.find((t=>t.title===e))||!1}_extractHeaders(e,t){for(var i=0;i(console.error("Import Error:",e||"Unable to import data"),Promise.reject(e))))}lookupImporter(e){var t;return e||(e=this.table.options.importFormat),(t="string"==typeof e?ge.importers[e]:e)||console.error("Import Error - Importer not found:",e),t}importFromFile(e,t){var i=this.lookupImporter(e);if(i)return this.pickFile(t).then(this.importData.bind(this,i)).then(this.structureData.bind(this)).then(this.setData.bind(this)).catch((e=>(console.error("Import Error:",e||"Unable to import file"),Promise.reject(e))))}pickFile(e){return new Promise(((t,i)=>{var s=document.createElement("input");s.type="file",s.accept=e,s.addEventListener("change",(e=>{var o=s.files[0],n=new FileReader;switch(this.table.options.importReader){case"buffer":n.readAsArrayBuffer(o);break;case"binary":n.readAsBinaryString(o);break;case"url":n.readAsDataURL(o);break;default:n.readAsText(o)}n.onload=e=>{t(n.result)},n.onerror=e=>{console.warn("File Load Error - Unable to read file"),i()}})),s.click()}))}importData(e,t){var i=e.call(this.table,t);return i instanceof Promise?i:i?Promise.resolve(i):Promise.reject()}structureData(e){return Array.isArray(e)&&e.length&&Array.isArray(e[0])?this.table.options.autoColumns?this.structureArrayToObject(e):this.structureArrayToColumns(e):e}structureArrayToObject(e){var t=e.shift();return e.map((e=>{var i={};return t.forEach(((t,s)=>{i[t]=e[s]})),i}))}structureArrayToColumns(e){var t=[],i=this.table.getColumns();return i[0]&&e[0][0]&&i[0].getDefinition().title===e[0][0]&&e.shift(),e.forEach((e=>{var s={};e.forEach(((e,t)=>{var o=i[t];o&&(s[o.getField()]=e)})),t.push(s)})),t}setData(e){return this.table.setData(e)}}ge.moduleName="import",ge.importers=me;class be extends k{constructor(e){super(e),this.eventMap={rowClick:"row-click",rowDblClick:"row-dblclick",rowContext:"row-contextmenu",rowMouseEnter:"row-mouseenter",rowMouseLeave:"row-mouseleave",rowMouseOver:"row-mouseover",rowMouseOut:"row-mouseout",rowMouseMove:"row-mousemove",rowMouseDown:"row-mousedown",rowMouseUp:"row-mouseup",rowTap:"row",rowDblTap:"row",rowTapHold:"row",cellClick:"cell-click",cellDblClick:"cell-dblclick",cellContext:"cell-contextmenu",cellMouseEnter:"cell-mouseenter",cellMouseLeave:"cell-mouseleave",cellMouseOver:"cell-mouseover",cellMouseOut:"cell-mouseout",cellMouseMove:"cell-mousemove",cellMouseDown:"cell-mousedown",cellMouseUp:"cell-mouseup",cellTap:"cell",cellDblTap:"cell",cellTapHold:"cell",headerClick:"column-click",headerDblClick:"column-dblclick",headerContext:"column-contextmenu",headerMouseEnter:"column-mouseenter",headerMouseLeave:"column-mouseleave",headerMouseOver:"column-mouseover",headerMouseOut:"column-mouseout",headerMouseMove:"column-mousemove",headerMouseDown:"column-mousedown",headerMouseUp:"column-mouseup",headerTap:"column",headerDblTap:"column",headerTapHold:"column",groupClick:"group-click",groupDblClick:"group-dblclick",groupContext:"group-contextmenu",groupMouseEnter:"group-mouseenter",groupMouseLeave:"group-mouseleave",groupMouseOver:"group-mouseover",groupMouseOut:"group-mouseout",groupMouseMove:"group-mousemove",groupMouseDown:"group-mousedown",groupMouseUp:"group-mouseup",groupTap:"group",groupDblTap:"group",groupTapHold:"group"},this.subscribers={},this.touchSubscribers={},this.columnSubscribers={},this.touchWatchers={row:{tap:null,tapDbl:null,tapHold:null},cell:{tap:null,tapDbl:null,tapHold:null},column:{tap:null,tapDbl:null,tapHold:null},group:{tap:null,tapDbl:null,tapHold:null}},this.registerColumnOption("headerClick"),this.registerColumnOption("headerDblClick"),this.registerColumnOption("headerContext"),this.registerColumnOption("headerMouseEnter"),this.registerColumnOption("headerMouseLeave"),this.registerColumnOption("headerMouseOver"),this.registerColumnOption("headerMouseOut"),this.registerColumnOption("headerMouseMove"),this.registerColumnOption("headerMouseDown"),this.registerColumnOption("headerMouseUp"),this.registerColumnOption("headerTap"),this.registerColumnOption("headerDblTap"),this.registerColumnOption("headerTapHold"),this.registerColumnOption("cellClick"),this.registerColumnOption("cellDblClick"),this.registerColumnOption("cellContext"),this.registerColumnOption("cellMouseEnter"),this.registerColumnOption("cellMouseLeave"),this.registerColumnOption("cellMouseOver"),this.registerColumnOption("cellMouseOut"),this.registerColumnOption("cellMouseMove"),this.registerColumnOption("cellMouseDown"),this.registerColumnOption("cellMouseUp"),this.registerColumnOption("cellTap"),this.registerColumnOption("cellDblTap"),this.registerColumnOption("cellTapHold")}initialize(){this.initializeExternalEvents(),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("cell-dblclick",this.cellContentsSelectionFixer.bind(this)),this.subscribe("scroll-horizontal",this.clearTouchWatchers.bind(this)),this.subscribe("scroll-vertical",this.clearTouchWatchers.bind(this))}clearTouchWatchers(){Object.values(this.touchWatchers).forEach((e=>{for(let t in e)e[t]=null}))}cellContentsSelectionFixer(e,t){var i;if(!this.table.modExists("edit")||this.table.modules.edit.currentCell!==t){e.preventDefault();try{document.selection?((i=document.body.createTextRange()).moveToElementText(t.getElement()),i.select()):window.getSelection&&((i=document.createRange()).selectNode(t.getElement()),window.getSelection().removeAllRanges(),window.getSelection().addRange(i))}catch(e){}}}initializeExternalEvents(){for(let e in this.eventMap)this.subscriptionChangeExternal(e,this.subscriptionChanged.bind(this,e))}subscriptionChanged(e,t){t?this.subscribers[e]||(this.eventMap[e].includes("-")?(this.subscribers[e]=this.handle.bind(this,e),this.subscribe(this.eventMap[e],this.subscribers[e])):this.subscribeTouchEvents(e)):this.eventMap[e].includes("-")?!this.subscribers[e]||this.columnSubscribers[e]||this.subscribedExternal(e)||(this.unsubscribe(this.eventMap[e],this.subscribers[e]),delete this.subscribers[e]):this.unsubscribeTouchEvents(e)}subscribeTouchEvents(e){var t=this.eventMap[e];this.touchSubscribers[t+"-touchstart"]||(this.touchSubscribers[t+"-touchstart"]=this.handleTouch.bind(this,t,"start"),this.touchSubscribers[t+"-touchend"]=this.handleTouch.bind(this,t,"end"),this.subscribe(t+"-touchstart",this.touchSubscribers[t+"-touchstart"]),this.subscribe(t+"-touchend",this.touchSubscribers[t+"-touchend"])),this.subscribers[e]=!0}unsubscribeTouchEvents(e){var t=!0,i=this.eventMap[e];if(this.subscribers[e]&&!this.subscribedExternal(e)){delete this.subscribers[e];for(let e in this.eventMap)this.eventMap[e]===i&&this.subscribers[e]&&(t=!1);t&&(this.unsubscribe(i+"-touchstart",this.touchSubscribers[i+"-touchstart"]),this.unsubscribe(i+"-touchend",this.touchSubscribers[i+"-touchend"]),delete this.touchSubscribers[i+"-touchstart"],delete this.touchSubscribers[i+"-touchend"])}}initializeColumn(e){var t=e.definition;for(let i in this.eventMap)t[i]&&(this.subscriptionChanged(i,!0),this.columnSubscribers[i]||(this.columnSubscribers[i]=[]),this.columnSubscribers[i].push(e))}handle(e,t,i){this.dispatchEvent(e,t,i)}handleTouch(e,t,i,s){var o=this.touchWatchers[e];switch("column"===e&&(e="header"),t){case"start":o.tap=!0,clearTimeout(o.tapHold),o.tapHold=setTimeout((()=>{clearTimeout(o.tapHold),o.tapHold=null,o.tap=null,clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"TapHold",i,s)}),1e3);break;case"end":o.tap&&(o.tap=null,this.dispatchEvent(e+"Tap",i,s)),o.tapDbl?(clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"DblTap",i,s)):o.tapDbl=setTimeout((()=>{clearTimeout(o.tapDbl),o.tapDbl=null}),300),clearTimeout(o.tapHold),o.tapHold=null}}dispatchEvent(e,t,i){var s,r=i.getComponent();this.columnSubscribers[e]&&(i instanceof o?s=i.column.definition[e]:i instanceof n&&(s=i.definition[e]),s&&s(t,r)),this.dispatchExternal(e,t,r)}}be.moduleName="interaction";class fe extends k{constructor(e){super(e),this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1,this.registerTableOption("keybindings",{}),this.registerTableOption("tabEndNewRow",!1)}initialize(){var e=this.table.options.keybindings,t={};this.watchKeys={},this.pressedKeys=[],!1!==e&&(Object.assign(t,fe.bindings),Object.assign(t,e),this.mapBindings(t),this.bindEvents()),this.subscribe("table-destroy",this.clearBindings.bind(this))}mapBindings(e){for(let t in e)fe.actions[t]?e[t]&&("object"!=typeof e[t]&&(e[t]=[e[t]]),e[t].forEach((e=>{(Array.isArray(e)?e:[e]).forEach((e=>{this.mapBinding(t,e)}))}))):console.warn("Key Binding Error - no such action:",t)}mapBinding(e,t){var i={action:fe.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach((e=>{switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=isNaN(e)?e.toUpperCase().charCodeAt(0):parseInt(e),i.keys.push(e),this.watchKeys[e]||(this.watchKeys[e]=[]),this.watchKeys[e].push(i)}}))}bindEvents(){var e=this;this.keyupBinding=function(t){var i=t.keyCode,s=e.watchKeys[i];s&&(e.pressedKeys.push(i),s.forEach((function(i){e.checkBinding(t,i)})))},this.keydownBinding=function(t){var i=t.keyCode;if(e.watchKeys[i]){var s=e.pressedKeys.indexOf(i);s>-1&&e.pressedKeys.splice(s,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}clearBindings(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}checkBinding(e,t){var i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((e=>{-1==this.pressedKeys.indexOf(e)&&(i=!1)})),i&&t.action.call(this,e),!0)}}fe.moduleName="keybindings",fe.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 67"]},fe.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,s=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=s?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};class ve extends k{constructor(e){super(e),this.menuContainer=null,this.nestedMenuBlock=!1,this.currentComponent=null,this.rootPopup=null,this.columnSubscribers={},this.registerTableOption("menuContainer",void 0),this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("rowDblClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerTableOption("groupDblClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerClickMenu"),this.registerColumnOption("headerDblClickMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("headerMenuIcon"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu"),this.registerColumnOption("dblClickMenu")}initialize(){this.deprecatedOptionsCheck(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("menuContainer","popupContainer")||(this.table.options.popupContainer=this.table.options.menuContainer)}initializeRowWatchers(){this.table.options.rowContextMenu&&(this.subscribe("row-contextmenu",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu)),this.table.on("rowTapHold",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu))),this.table.options.rowClickMenu&&this.subscribe("row-click",this.loadMenuEvent.bind(this,this.table.options.rowClickMenu)),this.table.options.rowDblClickMenu&&this.subscribe("row-dblclick",this.loadMenuEvent.bind(this,this.table.options.rowDblClickMenu))}initializeGroupWatchers(){this.table.options.groupContextMenu&&(this.subscribe("group-contextmenu",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu)),this.table.on("groupTapHold",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu))),this.table.options.groupClickMenu&&this.subscribe("group-click",this.loadMenuEvent.bind(this,this.table.options.groupClickMenu)),this.table.options.groupDblClickMenu&&this.subscribe("group-dblclick",this.loadMenuEvent.bind(this,this.table.options.groupDblClickMenu))}initializeColumn(e){var t=e.definition;t.headerContextMenu&&!this.columnSubscribers.headerContextMenu&&(this.columnSubscribers.headerContextMenu=this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextMenu),this.table.on("headerTapHold",this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"))),t.headerClickMenu&&!this.columnSubscribers.headerClickMenu&&(this.columnSubscribers.headerClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerClickMenu"),this.subscribe("column-click",this.columnSubscribers.headerClickMenu)),t.headerDblClickMenu&&!this.columnSubscribers.headerDblClickMenu&&(this.columnSubscribers.headerDblClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerDblClickMenu"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickMenu)),t.headerMenu&&this.initializeColumnHeaderMenu(e),t.contextMenu&&!this.columnSubscribers.contextMenu&&(this.columnSubscribers.contextMenu=this.loadMenuTableCellEvent.bind(this,"contextMenu"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextMenu),this.table.on("cellTapHold",this.loadMenuTableCellEvent.bind(this,"contextMenu"))),t.clickMenu&&!this.columnSubscribers.clickMenu&&(this.columnSubscribers.clickMenu=this.loadMenuTableCellEvent.bind(this,"clickMenu"),this.subscribe("cell-click",this.columnSubscribers.clickMenu)),t.dblClickMenu&&!this.columnSubscribers.dblClickMenu&&(this.columnSubscribers.dblClickMenu=this.loadMenuTableCellEvent.bind(this,"dblClickMenu"),this.subscribe("cell-dblclick",this.columnSubscribers.dblClickMenu))}initializeColumnHeaderMenu(e){var t,i=e.definition.headerMenuIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadMenuEvent(e.definition.headerMenu,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadMenuTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadMenuEvent(i.column.definition[e],t,i)}loadMenuTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadMenuEvent(i.definition[e],t,i)}loadMenuEvent(e,t,i){i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent()):e,this.loadMenu(t,i,e)}loadMenu(e,t,i,s,o){var n,r=!(e instanceof MouseEvent),a=document.createElement("div");if(a.classList.add("tabulator-menu"),r||e.preventDefault(),i&&i.length){if(s)n=o.child(a);else{if(this.nestedMenuBlock){if(this.rootPopup)return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.rootPopup&&this.rootPopup.hide(),this.rootPopup=n=this.popup(a)}i.forEach((e=>{var i=document.createElement("div"),s=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof s&&(s=s.call(this.table,t.getComponent())),s instanceof Node?i.appendChild(s):i.innerHTML=s,"function"==typeof o&&(o=o.call(this.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(e=>{e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(s=>{s.stopPropagation(),this.loadMenu(s,t,e.menu,i,n)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),a.appendChild(i)})),a.addEventListener("click",(e=>{this.rootPopup&&this.rootPopup.hide()})),n.show(s||e),n===this.rootPopup&&(this.rootPopup.hideOnBlur((()=>{this.rootPopup=null,this.currentComponent&&(this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)})),this.currentComponent=t,this.dispatchExternal("menuOpened",t.getComponent()))}}}ve.moduleName="menu";class we extends k{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.registerTableOption("movableColumns",!1)}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}initialize(){this.table.options.movableColumns&&this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){var t,i=this,s={};e.modules.frozen||e.isGroup||(t=e.getElement(),s.mousemove=function(s){e.parent===i.moving.parent&&((i.touchMove?s.touches[0].pageX:s.pageX)-r.elOffset(t).left+i.table.columnManager.contentsElement.scrollLeft>e.getWidth()/2?i.toCol===e&&i.toColAfter||(t.parentNode.insertBefore(i.placeholderElement,t.nextSibling),i.moveColumn(e,!0)):(i.toCol!==e||i.toColAfter)&&(t.parentNode.insertBefore(i.placeholderElement,t),i.moveColumn(e,!1)))}.bind(i),t.addEventListener("mousedown",(function(t){i.touchMove=!1,1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),i.bindTouchEvents(e)),e.modules.moveColumn=s}bindTouchEvents(e){var t,i,s,o,n,r,a=e.getElement(),l=!1;a.addEventListener("touchstart",(a=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,t=e.nextColumn(),s=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,n=0,r=0,l=!1,this.startMove(a,e)}),this.checkPeriod)}),{passive:!0}),a.addEventListener("touchmove",(a=>{var h,d;this.moving&&(this.moveHover(a),l||(l=a.touches[0].pageX),(h=a.touches[0].pageX-l)>0?t&&h-n>s&&(d=t)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveColumn(d,!0)):i&&-h-r>o&&(d=i)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveColumn(d,!1)),d&&(t=d.nextColumn(),n=s,s=t?t.getWidth()/2:0,i=d.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),a.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&this.endMove(e)}))}startMove(e,t){var i=t.getElement(),s=this.table.columnManager.getContentsElement(),o=this.table.columnManager.getHeadersElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-r.elOffset(i).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),s.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom=s.clientHeight-o.offsetHeight+"px",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}_bindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}_unbindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}moveColumn(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s.nextSibling)})):e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s)}))}endMove(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}moveHover(e){var t,i=this.table.columnManager.getContentsElement(),s=i.scrollLeft,o=(this.touchMove?e.touches[0].pageX:e.pageX)-r.elOffset(i).left+s;this.hoverElement.style.left=o-this.startX+"px",o-s{t=Math.max(0,s-5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1))),s+i.clientWidth-o{t=Math.min(i.clientWidth,s+5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1)))}}we.moduleName="moveColumn";class Ce extends k{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1,this.registerTableOption("movableRows",!1),this.registerTableOption("movableRowsConnectedTables",!1),this.registerTableOption("movableRowsConnectedElements",!1),this.registerTableOption("movableRowsSender",!1),this.registerTableOption("movableRowsReceiver","insert"),this.registerColumnOption("rowHandle")}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e}initialize(){this.table.options.movableRows&&(this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements,this.subscribe("cell-init",this.initializeCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)))}initializeGroupHeader(e){var t=this,i={};i.mouseup=function(i){t.tableRowDrop(i,e)}.bind(t),i.mousemove=function(i){var s;i.pageY-r.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((s=e.getElement()).parentNode.insertBefore(t.placeholderElement,s.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(s=e.getElement()).previousSibling&&(s.parentNode.insertBefore(t.placeholderElement,s),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}initializeRow(e){var t,i=this,s={};s.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),s.mousemove=function(t){var s=e.getElement();t.pageY-r.elOffset(s).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(s.parentNode.insertBefore(i.placeholderElement,s.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(s.parentNode.insertBefore(i.placeholderElement,s),i.moveRow(e,!1))}.bind(i),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=s}initializeColumn(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}initializeCell(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}bindTouchEvents(e,t){var i,s,o,n,r,a,l=!1;t.addEventListener("touchstart",(t=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,s=e.prevRow(),n=s?s.getHeight()/2:0,r=0,a=0,l=!1,this.startMove(t,e)}),this.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(t=>{var h,d;this.moving&&(t.preventDefault(),this.moveHover(t),l||(l=t.touches[0].pageY),(h=t.touches[0].pageY-l)>0?i&&h-r>o&&(d=i)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveRow(d,!0)):s&&-h-a>n&&(d=s)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveRow(d,!1)),d&&(i=d.nextRow(),r=o,o=i?i.getHeight()/2:0,s=d.prevRow(),a=n,n=s?s.getHeight()/2:0))})),t.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&(this.endMove(e),this.touchMove=!1)}))}_bindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}_unbindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}startMove(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.dispatchExternal("rowMoving",t.getComponent()),this.moveHover(e)}setStartPosition(e,t){var i,s,o=this.touchMove?e.touches[0].pageX:e.pageX,n=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(s=i.getBoundingClientRect(),this.startX=s.left-o+window.pageXOffset,this.startY=s.top-n+window.pageYOffset):this.startY=n-i.getBoundingClientRect().top}endMove(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow?this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter):this.dispatchExternal("rowMoveCancelled",this.moving.getComponent()),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}moveRow(e,t){this.toRow=e,this.toRowAfter=t}moveHover(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}moveHoverTable(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,s=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=Math.min(s-this.startY,this.table.rowManager.element.scrollHeight-this.hoverElement.offsetHeight)+"px"}moveHoverConnections(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}elementRowDrop(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}connectToTables(e){var t;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((e=>{"string"==typeof e?this.connectionElements=this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):this.connectionElements.push(e)})),this.connectionElements.forEach((e=>{var t=t=>{this.elementRowDrop(t,e,this.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}disconnectFromTables(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((e=>{e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}connect(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}disconnect(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}dropComplete(e,t,i){var s=!1;if(i){switch(typeof this.table.options.movableRowsSender){case"string":s=this.senders[this.table.options.movableRowsSender];break;case"function":s=this.table.options.movableRowsSender}s?s.call(this,this.moving?this.moving.getComponent():void 0,t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()}tableRowDrop(e,t){var i=!1,s=!1;switch(e.stopImmediatePropagation(),typeof this.table.options.movableRowsReceiver){case"string":i=this.receivers[this.table.options.movableRowsReceiver];break;case"function":i=this.table.options.movableRowsReceiver}i?s=i.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),s?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:t,success:s})}commsReceived(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}Ce.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},Ce.prototype.senders={delete:function(e,t,i){e.delete()}},Ce.moduleName="moveRow";class Ee extends k{constructor(e){super(e),this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0,this.registerColumnOption("mutator"),this.registerColumnOption("mutatorParams"),this.registerColumnOption("mutatorData"),this.registerColumnOption("mutatorDataParams"),this.registerColumnOption("mutatorEdit"),this.registerColumnOption("mutatorEditParams"),this.registerColumnOption("mutatorClipboard"),this.registerColumnOption("mutatorClipboardParams"),this.registerColumnOption("mutateLink")}initialize(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("cell-value-changed",this.mutateLink.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}rowDataChanged(e,t,i){return this.transformRow(t,"data",i)}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="mutator"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupMutator(e.definition[n]))&&(t=!0,i[n]={mutator:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.mutate=i)}lookupMutator(e){var t=!1;switch(typeof e){case"string":Ee.mutators[e]?t=Ee.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t,i){var s,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((n=>{var r,a,l;n.modules.mutate&&(r=n.modules.mutate[o]||n.modules.mutate.mutator||!1)&&(s=n.getFieldValue(void 0!==i?i:e),("data"==t&&!i||void 0!==s)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(s,e,t,l):r.params,n.setFieldValue(e,r.mutator(s,e,t,a,l))))})),e}transformCell(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,s={};if(i)return s=Object.assign(s,e.row.getData()),e.column.setFieldValue(s,t),i.mutator(t,s,"edit",i.params,e.getComponent())}return t}mutateLink(e){var t=e.column.definition.mutateLink;t&&(Array.isArray(t)||(t=[t]),t.forEach((t=>{var i=e.row.getCell(t);i&&i.setValue(i.getValue(),!0,!0)})))}enable(){this.enabled=!0}disable(){this.enabled=!1}}Ee.moduleName="mutator",Ee.mutators={};var ye={rows:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|rows",(e=>{d.innerHTML=e})),s?(a.innerHTML=" "+t+"-"+Math.min(t+e-1,s)+" ",h.innerHTML=" "+s+" ",n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d)):(a.innerHTML=" 0 ",n.appendChild(r),n.appendChild(a),n.appendChild(d)),n},pages:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),a.innerHTML=" "+i+" ",this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),h.innerHTML=" "+o+" ",this.table.modules.localize.langBind("pagination|counter|pages",(e=>{d.innerHTML=e})),n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d),n}};class Re extends k{constructor(e){super(e),this.mode="local",this.progressiveLoad=!1,this.element=null,this.pageCounterElement=null,this.pageCounter=null,this.size=0,this.page=1,this.count=5,this.max=1,this.remoteRowCountEstimate=null,this.initialLoad=!0,this.dataChanging=!1,this.pageSizes=[],this.registerTableOption("pagination",!1),this.registerTableOption("paginationMode","local"),this.registerTableOption("paginationSize",!1),this.registerTableOption("paginationInitialPage",1),this.registerTableOption("paginationCounter",!1),this.registerTableOption("paginationCounterElement",!1),this.registerTableOption("paginationButtonCount",5),this.registerTableOption("paginationSizeSelector",!1),this.registerTableOption("paginationElement",!1),this.registerTableOption("paginationAddRow","page"),this.registerTableOption("progressiveLoad",!1),this.registerTableOption("progressiveLoadDelay",0),this.registerTableOption("progressiveLoadScrollMargin",0),this.registerTableFunction("setMaxPage",this.setMaxPage.bind(this)),this.registerTableFunction("setPage",this.setPage.bind(this)),this.registerTableFunction("setPageToRow",this.userSetPageToRow.bind(this)),this.registerTableFunction("setPageSize",this.userSetPageSize.bind(this)),this.registerTableFunction("getPageSize",this.getPageSize.bind(this)),this.registerTableFunction("previousPage",this.previousPage.bind(this)),this.registerTableFunction("nextPage",this.nextPage.bind(this)),this.registerTableFunction("getPage",this.getPage.bind(this)),this.registerTableFunction("getPageMax",this.getPageMax.bind(this)),this.registerComponentFunction("row","pageTo",this.setPageToRow.bind(this))}initialize(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("footer-redraw",this.footerRedraw.bind(this)),"page"==this.table.options.paginationAddRow&&this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePageCounter(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}rowAddingPosition(e,t){var i,s=this.table.rowManager,o=s.getDisplayRows();return t?o.length?i=o[0]:s.activeRows.length&&(i=s.activeRows[s.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.length{}))}restOnRenderBefore(e,t){return t||"local"===this.mode&&this.reset(),e}rowsUpdated(){this.refreshData(!0,"all")}createElements(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))}generatePageSizeSelectList(){var e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(let t=1;t<5;t++)e.push(this.size*t);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach((e=>{var t=document.createElement("option");t.value=e,!0===e?this.langBind("pagination|all",(function(e){t.innerHTML=e})):t.innerHTML=e,this.pageSizeSelect.appendChild(t)})),this.pageSizeSelect.value=this.size}}initializePageCounter(){var e=this.table.options.paginationCounter,t=null;e&&((t="function"==typeof e?e:Re.pageCounters[e])?(this.pageCounter=t,this.pageCounterElement=document.createElement("span"),this.pageCounterElement.classList.add("tabulator-page-counter")):console.warn("Pagination Error - No such page counter found: ",e))}initializePaginator(e){var t,i;e||(this.langBind("pagination|first",(e=>{this.firstBut.innerHTML=e})),this.langBind("pagination|first_title",(e=>{this.firstBut.setAttribute("aria-label",e),this.firstBut.setAttribute("title",e)})),this.langBind("pagination|prev",(e=>{this.prevBut.innerHTML=e})),this.langBind("pagination|prev_title",(e=>{this.prevBut.setAttribute("aria-label",e),this.prevBut.setAttribute("title",e)})),this.langBind("pagination|next",(e=>{this.nextBut.innerHTML=e})),this.langBind("pagination|next_title",(e=>{this.nextBut.setAttribute("aria-label",e),this.nextBut.setAttribute("title",e)})),this.langBind("pagination|last",(e=>{this.lastBut.innerHTML=e})),this.langBind("pagination|last_title",(e=>{this.lastBut.setAttribute("aria-label",e),this.lastBut.setAttribute("title",e)})),this.firstBut.addEventListener("click",(()=>{this.setPage(1)})),this.prevBut.addEventListener("click",(()=>{this.previousPage()})),this.nextBut.addEventListener("click",(()=>{this.nextPage()})),this.lastBut.addEventListener("click",(()=>{this.setPage(this.max)})),this.table.options.paginationElement&&(this.element=this.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),this.langBind("pagination|page_size",(e=>{this.pageSizeSelect.setAttribute("aria-label",e),this.pageSizeSelect.setAttribute("title",e),t.innerHTML=e})),this.element.appendChild(t),this.element.appendChild(this.pageSizeSelect),this.pageSizeSelect.addEventListener("change",(e=>{this.setPageSize("true"==this.pageSizeSelect.value||this.pageSizeSelect.value),this.setPage(1)}))),this.element.appendChild(this.firstBut),this.element.appendChild(this.prevBut),this.element.appendChild(this.pagesElement),this.element.appendChild(this.nextBut),this.element.appendChild(this.lastBut),this.table.options.paginationElement||(this.table.options.paginationCounter&&(this.table.options.paginationCounterElement?this.table.options.paginationCounterElement instanceof HTMLElement?this.table.options.paginationCounterElement.appendChild(this.pageCounterElement):"string"==typeof this.table.options.paginationCounterElement&&((i=document.querySelector(this.table.options.paginationCounterElement))?i.appendChild(this.pageCounterElement):console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:",this.table.options.paginationCounterElement)):this.footerAppend(this.pageCounterElement)),this.footerAppend(this.element)),this.page=this.table.options.paginationInitialPage,this.count=this.table.options.paginationButtonCount),this.mode=this.table.options.paginationMode}initializeProgressive(e){this.initializePaginator(!0),this.mode="progressive_"+e,this.progressiveLoad=!0}trackChanges(){this.dispatch("page-changed")}setMaxRows(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)}reset(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1,this.trackChanges())}setMaxPage(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}setPage(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}setPageToRow(e){var t=this.displayRows(-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}setPageSize(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e,this.dispatchExternal("pageSizeChanged",e)),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}_setPageCounter(e,t,i){var s;if(this.pageCounter)switch("remote"===this.mode&&(t=this.size,i=(this.page-1)*this.size+1,e=this.remoteRowCountEstimate),typeof(s=this.pageCounter.call(this,t,i,this.page,e,this.max))){case"object":if(s instanceof Node){for(;this.pageCounterElement.firstChild;)this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);this.pageCounterElement.appendChild(s)}else this.pageCounterElement.innerHTML="",null!=s&&console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:",s);break;case"undefined":this.pageCounterElement.innerHTML="";break;default:this.pageCounterElement.innerHTML=s}}_setPageButtons(){let e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&e<=this.max&&this.pagesElement.appendChild(this._generatePageButton(e));this.footerRedraw()}_generatePageButton(e){var t=document.createElement("button");return t.classList.add("tabulator-page"),e==this.page&&t.classList.add("active"),t.setAttribute("type","button"),t.setAttribute("role","button"),this.langBind("pagination|page_title",(i=>{t.setAttribute("aria-label",i+" "+e),t.setAttribute("title",i+" "+e)})),t.setAttribute("data-page",e),t.textContent=e,t.addEventListener("click",(t=>{this.setPage(e)})),t}previousPage(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}nextPage(){return this.page"row"===e.type));if("local"==this.mode){t=[],this.setMaxRows(e.length),!0===this.size?(i=0,s=e.length):s=(i=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(let r=i;r{this.dataChanging=!1}));case"progressive_load":case"progressive_scroll":return this.reloadData(null,!0);default:return console.warn("Pagination Error - no such pagination mode:",this.mode),Promise.reject()}}_parseRemoteData(e){var t;if(void 0===e.last_page&&console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").last_page||"last_page")+"' property"),e.data){if(this.max=parseInt(e.last_page)||1,this.remoteRowCountEstimate=void 0!==e.last_row?e.last_row:e.last_page*this.size-(this.page==e.last_page?this.size-e.data.length:0),this.progressiveLoad){switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e.data,!1,1==this.page):this.table.rowManager.addRows(e.data),this.page{this.nextPage()}),this.table.options.progressiveLoadDelay);break;case"progressive_scroll":e=1===this.page?e.data:this.table.rowManager.getData().concat(e.data),this.table.rowManager.setData(e,1!==this.page,1==this.page),t=this.table.options.progressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,this.table.rowManager.element.scrollHeight<=this.table.rowManager.element.clientHeight+t&&this.page{this.nextPage()}))}return!1}this.dispatchExternal("pageLoaded",this.getPage())}else console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").data||"data")+"' property");return e.data}footerRedraw(){var e=this.table.footerManager.containerElement;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))}}Re.moduleName="page",Re.pageCounters=ye;var xe={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&((i=(o=o.slice(r)).indexOf(";"))>-1&&(o=o.slice(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},Te={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}};class ke extends k{constructor(e){super(e),this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1,this.registerTableOption("persistence",!1),this.registerTableOption("persistenceID",""),this.registerTableOption("persistenceMode",!0),this.registerTableOption("persistenceReaderFunc",!1),this.registerTableOption("persistenceWriterFunc",!1)}localStorageTest(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}initialize(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:ke.readers[this.table.options.persistenceReaderFunc]?this.readFunc=ke.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):ke.readers[this.mode]?this.readFunc=ke.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:ke.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=ke.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):ke.writers[this.mode]?this.writeFunc=ke.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,headerFilter:!0===this.table.options.persistence||this.table.options.persistence.headerFilter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retrieveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retrieveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns"))),this.subscribe("table-built",this.tableBuilt.bind(this),0),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("filter-changed",this.eventSave.bind(this,"headerFilter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("column-width",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}eventSave(e){this.config[e]&&this.save(e)}tableBuilt(){var e,t,i;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.options.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.options.initialFilter=t),this.config.headerFilter&&!1==!(i=this.load("headerFilter"))&&(this.table.options.initialHeaderFilter=i)}tableRedraw(e){e&&this.config.columns&&this.save("columns")}getColumnLayout(){return this.parseColumns(this.table.columnManager.getColumns())}setColumnLayout(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}initializeColumn(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((e=>{var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:e=>{s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:()=>(i.get&&i.get(),s)})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retrieveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retrieveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t){var i=[];return(t=t||[]).forEach(((t,s)=>{var o,n=this._findColumn(e,t);n&&(!0===this.config.columns||null==this.config.columns?(o=Object.keys(n)).push("width"):o=this.config.columns,o.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(n[e]=t[e])})),n.columns&&(n.columns=this.mergeDefinition(n.columns,t.columns)),i.push(n))})),e.forEach(((e,s)=>{this._findColumn(t,e)||(i.length>s?i.splice(s,0,e):i.push(e))})),i}_findColumn(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}save(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"headerFilter":t=this.table.modules.filter.getHeaderFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}validateSorters(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}getGroupConfig(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}getPageConfig(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}parseColumns(e){var t=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((e=>{var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=this.parseColumns(e.getColumns())):(o.field=e.getField(),!0===this.config.columns||null==this.config.columns?((s=Object.keys(n)).push("width"),s.push("visible")):s=this.config.columns,s.forEach((t=>{switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:"function"!=typeof n[t]&&-1===i.indexOf(t)&&(o[t]=n[t])}}))),t.push(o)})),t}}ke.moduleName="persistence",ke.moduleInitOrder=-10,ke.readers=xe,ke.writers=Te;class Me extends k{constructor(e){super(e),this.columnSubscribers={},this.registerTableOption("rowContextPopup",!1),this.registerTableOption("rowClickPopup",!1),this.registerTableOption("rowDblClickPopup",!1),this.registerTableOption("groupContextPopup",!1),this.registerTableOption("groupClickPopup",!1),this.registerTableOption("groupDblClickPopup",!1),this.registerColumnOption("headerContextPopup"),this.registerColumnOption("headerClickPopup"),this.registerColumnOption("headerDblClickPopup"),this.registerColumnOption("headerPopup"),this.registerColumnOption("headerPopupIcon"),this.registerColumnOption("contextPopup"),this.registerColumnOption("clickPopup"),this.registerColumnOption("dblClickPopup"),this.registerComponentFunction("cell","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("column","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("row","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("group","popup",this._componentPopupCall.bind(this))}initialize(){this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}_componentPopupCall(e,t,i){this.loadPopupEvent(t,null,e,i)}initializeRowWatchers(){this.table.options.rowContextPopup&&(this.subscribe("row-contextmenu",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup)),this.table.on("rowTapHold",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup))),this.table.options.rowClickPopup&&this.subscribe("row-click",this.loadPopupEvent.bind(this,this.table.options.rowClickPopup)),this.table.options.rowDblClickPopup&&this.subscribe("row-dblclick",this.loadPopupEvent.bind(this,this.table.options.rowDblClickPopup))}initializeGroupWatchers(){this.table.options.groupContextPopup&&(this.subscribe("group-contextmenu",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup)),this.table.on("groupTapHold",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup))),this.table.options.groupClickPopup&&this.subscribe("group-click",this.loadPopupEvent.bind(this,this.table.options.groupClickPopup)),this.table.options.groupDblClickPopup&&this.subscribe("group-dblclick",this.loadPopupEvent.bind(this,this.table.options.groupDblClickPopup))}initializeColumn(e){var t=e.definition;t.headerContextPopup&&!this.columnSubscribers.headerContextPopup&&(this.columnSubscribers.headerContextPopup=this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextPopup),this.table.on("headerTapHold",this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"))),t.headerClickPopup&&!this.columnSubscribers.headerClickPopup&&(this.columnSubscribers.headerClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerClickPopup"),this.subscribe("column-click",this.columnSubscribers.headerClickPopup)),t.headerDblClickPopup&&!this.columnSubscribers.headerDblClickPopup&&(this.columnSubscribers.headerDblClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerDblClickPopup"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickPopup)),t.headerPopup&&this.initializeColumnHeaderPopup(e),t.contextPopup&&!this.columnSubscribers.contextPopup&&(this.columnSubscribers.contextPopup=this.loadPopupTableCellEvent.bind(this,"contextPopup"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextPopup),this.table.on("cellTapHold",this.loadPopupTableCellEvent.bind(this,"contextPopup"))),t.clickPopup&&!this.columnSubscribers.clickPopup&&(this.columnSubscribers.clickPopup=this.loadPopupTableCellEvent.bind(this,"clickPopup"),this.subscribe("cell-click",this.columnSubscribers.clickPopup)),t.dblClickPopup&&!this.columnSubscribers.dblClickPopup&&(this.columnSubscribers.dblClickPopup=this.loadPopupTableCellEvent.bind(this,"dblClickPopup"),this.subscribe("cell-click",this.columnSubscribers.dblClickPopup))}initializeColumnHeaderPopup(e){var t,i=e.definition.headerPopupIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadPopupEvent(e.definition.headerPopup,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadPopupTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadPopupEvent(i.column.definition[e],t,i)}loadPopupTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadPopupEvent(i.definition[e],t,i)}loadPopupEvent(e,t,i,s){var o;i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent(),(function(e){o=e})):e,this.loadPopup(t,i,e,o,s)}loadPopup(e,t,i,s,o){var n,r,a=!(e instanceof MouseEvent);i instanceof HTMLElement?n=i:(n=document.createElement("div")).innerHTML=i,n.classList.add("tabulator-popup"),n.addEventListener("click",(e=>{e.stopPropagation()})),a||e.preventDefault(),r=this.popup(n),"function"==typeof s&&r.renderCallback(s),e?r.show(e):r.show(t.getElement(),o||"center"),r.hideOnBlur((()=>{this.dispatchExternal("popupClosed",t.getComponent())})),this.dispatchExternal("popupOpened",t.getComponent())}}Me.moduleName="popup";class Le extends k{constructor(e){super(e),this.element=!1,this.manualBlock=!1,this.beforeprintEventHandler=null,this.afterprintEventHandler=null,this.registerTableOption("printAsHtml",!1),this.registerTableOption("printFormatter",!1),this.registerTableOption("printHeader",!1),this.registerTableOption("printFooter",!1),this.registerTableOption("printStyled",!0),this.registerTableOption("printRowRange","visible"),this.registerTableOption("printConfig",{}),this.registerColumnOption("print"),this.registerColumnOption("titlePrint")}initialize(){this.table.options.printAsHtml&&(this.beforeprintEventHandler=this.replaceTable.bind(this),this.afterprintEventHandler=this.cleanup.bind(this),window.addEventListener("beforeprint",this.beforeprintEventHandler),window.addEventListener("afterprint",this.afterprintEventHandler),this.subscribe("table-destroy",this.destroy.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}destroy(){this.table.options.printAsHtml&&(window.removeEventListener("beforeprint",this.beforeprintEventHandler),window.removeEventListener("afterprint",this.afterprintEventHandler))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}cleanup(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}printFullscreen(e,t,i){var s,o,n=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),h=this.table.modules.export.generateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),"string"==typeof(s="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?a.innerHTML=s:a.appendChild(s),this.element.appendChild(a)),this.element.appendChild(h),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,h),window.print(),this.cleanup(),window.scrollTo(n,r),this.manualBlock=!1}}Le.moduleName="print";class Se extends k{constructor(e){super(e),this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0,this.registerTableOption("reactiveData",!1)}initialize(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this,"cellsave")),this.subscribe("cell-value-save-after",this.unblock.bind(this,"cellsave")),this.subscribe("row-data-save-before",this.block.bind(this,"rowsave")),this.subscribe("row-data-save-after",this.unblock.bind(this,"rowsave")),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}watchData(e){var t,i=this;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-push"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),s=i.origFuncs.push.apply(e,arguments),i.unblock("data-push")),s}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-unshift"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),s=i.origFuncs.unshift.apply(e,arguments),i.unblock("data-unshift")),s}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-shift"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),o=i.origFuncs.shift.call(e),i.unblock("data-shift")),o}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-pop"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),o=i.origFuncs.pop.call(e),i.unblock("data-pop")),o}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o,n=Array.from(arguments),r=n[0]<0?e.length+n[0]:n[0],a=n[1],l=!!n[2]&&n.slice(2);if(!i.blocked&&t===i.currentVersion){if(i.block("data-splice"),l&&((s=!!e[r]&&i.table.rowManager.getRowFromDataObject(e[r]))?l.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(l=l.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==a){var h=e.slice(r,void 0===n[1]?n[1]:r+a);h.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==h.length-1)}))}(l||0!==a)&&i.table.rowManager.reRenderInPosition(),o=i.origFuncs.splice.apply(e,arguments),i.unblock("data-splice")}return o}})}unwatchData(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}watchRow(e){var t=e.getData();for(var i in t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e)}watchTreeChildren(e){var t=this,i=e.getData()[this.table.options.dataTreeChildField],s={};i&&(s.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-push");var o=s.push.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-push")}return o}}),s.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-unshift");var o=s.unshift.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-unshift")}return o}}),s.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-shift");var o=s.shift.call(i);this.rebuildTree(e),t.unblock("tree-shift")}return o}}),s.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-pop");var o=s.pop.call(i);this.rebuildTree(e),t.unblock("tree-pop")}return o}}),s.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-splice");var o=s.splice.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-splice")}return o}}))}rebuildTree(e){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}watchKey(e,t,i){var s=this,o=Object.getOwnPropertyDescriptor(t,i),n=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(n=t,!s.blocked&&r===s.currentVersion){s.block("key");var a={};a[i]=t,e.updateData(a),s.unblock("key")}o.set&&o.set(t)},get:()=>(o.get&&o.get(),n)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(e){this.blocked||(this.blocked=e)}unblock(e){this.blocked===e&&(this.blocked=!1)}}Se.moduleName="reactiveData";class De extends k{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.latestX=!1,this.handle=null,this.initialNextColumn=null,this.nextColumn=null,this.initialized=!1,this.registerColumnOption("resizable",!0),this.registerTableOption("resizableColumnFit",!1)}initialize(){this.subscribe("column-rendered",this.layoutColumnHeader.bind(this))}initializeEventWatchers(){this.initialized||(this.subscribe("cell-rendered",this.layoutCellHandles.bind(this)),this.subscribe("cell-delete",this.deInitializeComponent.bind(this)),this.subscribe("cell-height",this.resizeHandle.bind(this)),this.subscribe("column-moved",this.columnLayoutUpdated.bind(this)),this.subscribe("column-hide",this.deInitializeColumn.bind(this)),this.subscribe("column-show",this.columnLayoutUpdated.bind(this)),this.subscribe("column-width",this.columnWidthUpdated.bind(this)),this.subscribe("column-delete",this.deInitializeComponent.bind(this)),this.subscribe("column-height",this.resizeHandle.bind(this)),this.initialized=!0)}layoutCellHandles(e){"row"===e.row.type&&(this.deInitializeComponent(e),this.initializeColumn("cell",e,e.column,e.element))}layoutColumnHeader(e){e.definition.resizable&&(this.initializeEventWatchers(),this.deInitializeComponent(e),this.initializeColumn("header",e,e,e.element))}columnLayoutUpdated(e){var t=e.prevColumn();this.reinitializeColumn(e),t&&this.reinitializeColumn(t)}columnWidthUpdated(e){e.modules.frozen&&(this.table.modules.frozenColumns.leftColumns.includes(e)?this.table.modules.frozenColumns.leftColumns.forEach((e=>{this.reinitializeColumn(e)})):this.table.modules.frozenColumns.rightColumns.includes(e)&&this.table.modules.frozenColumns.rightColumns.forEach((e=>{this.reinitializeColumn(e)})))}frozenColumnOffset(e){var t=!1;return e.modules.frozen&&(t=e.modules.frozen.marginValue,"left"===e.modules.frozen.position?t+=e.getWidth()-3:t&&(t-=3)),!1!==t&&t+"px"}reinitializeColumn(e){var t=this.frozenColumnOffset(e);e.cells.forEach((i=>{i.modules.resize&&i.modules.resize.handleEl&&(t&&(i.modules.resize.handleEl.style[e.modules.frozen.position]=t,i.modules.resize.handleEl.style["z-index"]=11),i.element.after(i.modules.resize.handleEl))})),e.modules.resize&&e.modules.resize.handleEl&&(t&&(e.modules.resize.handleEl.style[e.modules.frozen.position]=t),e.element.after(e.modules.resize.handleEl))}initializeColumn(e,t,i,s){var o=this,n=i.definition.resizable,r={},a=i.getLastColumn();if("header"===e&&(r={variableHeight:"textarea"==i.definition.formatter||i.definition.variableHeight}),(!0===n||n==e)&&this._checkResizability(a)){var l=document.createElement("span");l.className="tabulator-col-resize-handle",l.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){o.startColumn=i,o.initialNextColumn=o.nextColumn=a.nextColumn(),o._mouseDown(e,a,l)};l.addEventListener("mousedown",h),l.addEventListener("touchstart",h,{passive:!0}),l.addEventListener("dblclick",(e=>{var t=a.getWidth();e.stopPropagation(),a.reinitializeWidth(!0),t!==a.getWidth()&&(o.dispatch("column-resized",a),o.table.externalEvents.dispatch("columnResized",a.getComponent()))})),i.modules.frozen&&(l.style.position="sticky",l.style[i.modules.frozen.position]=this.frozenColumnOffset(i)),r.handleEl=l,s.parentNode&&i.visible&&s.after(l)}t.modules.resize=r}deInitializeColumn(e){this.deInitializeComponent(e),e.cells.forEach((e=>{this.deInitializeComponent(e)}))}deInitializeComponent(e){var t;e.modules.resize&&(t=e.modules.resize.handleEl)&&t.parentElement&&t.parentElement.removeChild(t)}resizeHandle(e,t){e.modules.resize&&e.modules.resize.handleEl&&(e.modules.resize.handleEl.style.height=t)}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){var i,o,n=void 0===e.screenX?e.touches[0].screenX:e.screenX,r=n-s.startX,a=n-s.latestX;if(s.latestX=n,s.table.rtl&&(r=-r,a=-a),i=t.width==t.minWidth||t.width==t.maxWidth,t.setWidth(s.startWidth+r),o=t.width==t.minWidth||t.width==t.maxWidth,a<0&&(s.nextColumn=s.initialNextColumn),s.table.options.resizableColumnFit&&s.nextColumn&&(!i||!o)){let e=s.nextColumn.getWidth();a>0&&e<=s.nextColumn.minWidth&&(s.nextColumn=s.nextColumn.nextColumn()),s.nextColumn&&s.nextColumn.setWidth(s.nextColumn.getWidth()-a)}s.table.columnManager.rerenderColumns(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.startWidth!==t.getWidth()&&(s.table.columnManager.verticalAlignHeaders(),s.dispatch("column-resized",t),s.table.externalEvents.dispatch("columnResized",t.getComponent()))}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.latestX=s.startX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}De.moduleName="resizeColumns";class Pe extends k{constructor(e){super(e),this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null,this.registerTableOption("resizableRows",!1)}initialize(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}initializeRow(e){var t=this,i=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",s.addEventListener("click",(function(e){e.stopPropagation()}));var n=function(i){t.startRow=e,t._mouseDown(i,e,s)};s.addEventListener("mousedown",n),s.addEventListener("touchstart",n,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(i,s,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(s),i.appendChild(o)}_mouseDown(e,t,i){var s=this;function o(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.dispatchExternal("rowResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}Pe.moduleName="resizeRows";class ze extends k{constructor(e){super(e),this.binding=!1,this.visibilityObserver=!1,this.resizeObserver=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1,this.visible=!1,this.initialized=!1,this.initialRedraw=!1,this.registerTableOption("autoResize",!0)}initialize(){if(this.table.options.autoResize){var e,t=this.table;this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),"undefined"!=typeof IntersectionObserver&&"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.initializeVisibilityObserver(),this.autoResize=!0,this.resizeObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.tableHeight==i&&this.tableWidth==s||(this.tableHeight=i,this.tableWidth=s,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),this.redrawTable())}})),this.resizeObserver.observe(t.element),e=window.getComputedStyle(t.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(e.getPropertyValue("max-height")||e.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.containerHeight==i&&this.containerWidth==s||(this.containerHeight=i,this.containerWidth=s,this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth),this.redrawTable()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell)&&(t.columnManager.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((e=>{this.visible=e[0].isIntersecting,this.initialized?this.visible&&(this.redrawTable(this.initialRedraw),this.initialRedraw=!1):(this.initialized=!0,this.initialRedraw=!this.visible)})),this.visibilityObserver.observe(this.table.element)}redrawTable(e){this.initialized&&this.visible&&(this.table.columnManager.rerenderColumns(!0),this.table.redraw(e))}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.resizeObserver&&this.resizeObserver.unobserve(this.table.element),this.visibilityObserver&&this.visibilityObserver.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}ze.moduleName="resizeTable";class Fe extends k{constructor(e){super(e),this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1,this.registerTableOption("responsiveLayout",!1),this.registerTableOption("responsiveLayoutCollapseStartOpen",!0),this.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),this.registerTableOption("responsiveLayoutCollapseFormatter",!1),this.registerColumnOption("responsive")}initialize(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-data-changed",this.generateCollapsedRowContent.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}tableRedraw(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}initializeResponsivity(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(((t,i)=>{t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==this.mode||this.hiddenColumns.push(t))})),e=(e=e.reverse()).sort(((e,t)=>t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index)),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(let e of this.table.columnManager.columnsByIndex)if("responsiveCollapse"==e.definition.formatter){this.collapseHandleColumn=e;break}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}initializeColumn(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}initializeRow(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}layoutRow(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}updateColumnVisibility(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initializeResponsivity())}hideColumn(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}showColumn(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}update(){for(var e=!0;e;){let t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),i=(this.table.options.headerVisible?this.table.columnManager.element.clientWidth:this.table.element.clientWidth)-t;if(i<0){let t=this.columns[this.index];t?(this.hideColumn(t),this.index++):e=!1}else{let t=this.columns[this.index-1];t&&i>0&&i>=t.getWidth()?(this.showColumn(t),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){this.table.rowManager.getDisplayRows().forEach((e=>{this.generateCollapsedRowContent(e)}))}generateCollapsedRowContent(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}generateCollapsedRowData(e){var t,i=e.getData(),s=[];return this.hiddenColumns.forEach((o=>{var n=o.getFieldValue(i);if(o.definition.title&&o.field)if(o.modules.format&&this.table.options.responsiveLayoutCollapseUseFormatters){function r(e){e()}t={value:!1,data:{},getValue:function(){return n},getData:function(){return i},getType:function(){return"cell"},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return o.getComponent()},getTable:()=>this.table},s.push({field:o.field,title:o.definition.title,value:o.modules.format.formatter.call(this.table.modules.format,t,o.modules.format.params,r)})}else s.push({field:o.field,title:o.definition.title,value:n})})),s}formatCollapsedData(e){var t=document.createElement("table");return e.forEach((function(e){var i,s=document.createElement("tr"),o=document.createElement("td"),n=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerHTML=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),n.appendChild(i)):n.innerHTML=e.value,s.appendChild(o),s.appendChild(n),t.appendChild(s)}),this),Object.keys(e).length?t:""}}Fe.moduleName="responsiveLayout";class He extends k{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectable","highlight"),this.registerTableOption("selectableRangeMode","drag"),this.registerTableOption("selectableRollingSelection",!0),this.registerTableOption("selectablePersistence",!0),this.registerTableOption("selectableCheck",(function(e,t){return!0})),this.registerTableFunction("selectRow",this.selectRows.bind(this)),this.registerTableFunction("deselectRow",this.deselectRows.bind(this)),this.registerTableFunction("toggleSelectRow",this.toggleRow.bind(this)),this.registerTableFunction("getSelectedRows",this.getSelectedRows.bind(this)),this.registerTableFunction("getSelectedData",this.getSelectedData.bind(this)),this.registerComponentFunction("row","select",this.selectRows.bind(this)),this.registerComponentFunction("row","deselect",this.deselectRows.bind(this)),this.registerComponentFunction("row","toggleSelect",this.toggleRow.bind(this)),this.registerComponentFunction("row","isSelected",this.isRowSelected.bind(this))}initialize(){!1!==this.table.options.selectable&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.rowRetrieve.bind(this)),this.table.options.selectable&&!this.table.options.selectablePersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){var t=this.selectedRows.length;this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t&&!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=e.getElement(),s=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",s)};e.modules.select={selected:!1},t.checkRowSelectability(e)?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",s),document.body.addEventListener("keyup",s),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}handleComplexRowClick(e,t){if(t.shiftKey){this.table._clearSelection(),this.lastClickedRow=this.lastClickedRow||e;var i=this.table.rowManager.getDisplayRowIndex(this.lastClickedRow),s=this.table.rowManager.getDisplayRowIndex(e),o=i<=s?i:s,n=i>=s?i:s,r=this.table.rowManager.getDisplayRows().slice(0).splice(o,n-o+1);t.ctrlKey||t.metaKey?(r.forEach((t=>{t!==this.lastClickedRow&&(!0===this.table.options.selectable||this.isRowSelected(e)||this.selectedRows.lengththis.table.options.selectable&&(r=r.slice(0,this.table.options.selectable)),this.selectRows(r)),this.table._clearSelection()}else t.ctrlKey||t.metaKey?(this.toggleRow(e),this.lastClickedRow=e):(this.deselectRows(void 0,!0),this.selectRows(e),this.lastClickedRow=e)}checkRowSelectability(e){return!(!e||"row"!==e.type)&&this.table.options.selectableCheck.call(this.table,e.getComponent())}toggleRow(e){this.checkRowSelectability(e)&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t,i,s=[];switch(typeof e){case"undefined":t=this.table.rowManager.rows;break;case"string":(t=this.table.rowManager.findRow(e))||(t=this.table.rowManager.getRows(e));break;default:t=e}Array.isArray(t)?t.length&&(t.forEach((e=>{(i=this._selectRow(e,!0,!0))&&s.push(i)})),this._rowSelectionChanged(!1,s)):t&&this._selectRow(t,!1,!0)}_selectRow(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);if(s){if(-1==this.selectedRows.indexOf(s))return s.getElement().classList.add("tabulator-selected"),s.modules.select||(s.modules.select={}),s.modules.select.selected=!0,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!0),this.selectedRows.push(s),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!0),this.dispatchExternal("rowSelected",s.getComponent()),this._rowSelectionChanged(t,s),s}else t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}isRowSelected(e){return-1!==this.selectedRows.indexOf(e)}deselectRows(e,t){var i,s,o=[];switch(typeof e){case"undefined":i=Object.assign([],this.selectedRows);break;case"string":(i=this.table.rowManager.findRow(e))||(i=this.table.rowManager.getRows(e));break;default:i=e}Array.isArray(i)?i.length&&(i.forEach((e=>{(s=this._deselectRow(e,!0,!0))&&o.push(s)})),this._rowSelectionChanged(t,[],o)):i&&this._deselectRow(i,t,!0)}_deselectRow(e,t){var i,s,o=this,n=o.table.rowManager.findRow(e);if(n){if((i=o.selectedRows.findIndex((function(e){return e==n})))>-1)return(s=n.getElement())&&s.classList.remove("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),o.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),this.dispatchExternal("rowDeselected",n.getComponent()),o._rowSelectionChanged(t,void 0,n),n}else t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}getSelectedData(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}getSelectedRows(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}_rowSelectionChanged(e,t=[],i=[]){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||(Array.isArray(t)||(t=[t]),t=t.map((e=>e.getComponent())),Array.isArray(i)||(i=[i]),i=i.map((e=>e.getComponent())),this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows(),t,i))}registerRowSelectCheckbox(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}registerHeaderSelectCheckbox(e){this.headerCheckboxElement=e}childRowSelection(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t)for(let e of i)this._selectRow(e,!0);else for(let e of i)this._deselectRow(e,!0)}}function Oe(e,t,i,s,o,n,r){var a=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",h=r.alignEmptyValues,d=0;if(void 0!==a){if(a.isDateTime(e)||(e="iso"===l?a.fromISO(String(e)):a.fromFormat(String(e),l)),a.isDateTime(t)||(t="iso"===l?a.fromISO(String(t)):a.fromFormat(String(t),l)),e.isValid){if(t.isValid)return e-t;d=1}else d=t.isValid?-1:0;return("top"===h&&"desc"===n||"bottom"===h&&"asc"===n)&&(d*=-1),d}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}He.moduleName="selectRow";var Ae={number:function(e,t,i,s,o,n,r){var a=r.alignEmptyValues,l=r.decimalSeparator,h=r.thousandSeparator,d=0;if(e=String(e),t=String(t),h&&(e=e.split(h).join(""),t=t.split(h).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))d=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;d=1}return("top"===a&&"desc"===n||"bottom"===a&&"asc"===n)&&(d*=-1),d},string:function(e,t,i,s,o,n,r){var a,l=r.alignEmptyValues,h=0;if(e){if(t){switch(typeof r.locale){case"boolean":r.locale&&(a=this.langLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}h=1}else h=t?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},date:function(e,t,i,s,o,n,r){return r.format||(r.format="dd/MM/yyyy"),Oe.call(this,e,t,i,s,o,n,r)},time:function(e,t,i,s,o,n,r){return r.format||(r.format="HH:mm"),Oe.call(this,e,t,i,s,o,n,r)},datetime:Oe,boolean:function(e,t,i,s,o,n,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,s,o,n,r){var a=r.type||"length",l=r.alignEmptyValues,h=0;function d(e){var t;switch(a){case"length":t=e.length;break;case"sum":t=e.reduce((function(e,t){return e+t}));break;case"max":t=Math.max.apply(null,e);break;case"min":t=Math.min.apply(null,e);break;case"avg":t=e.reduce((function(e,t){return e+t}))/e.length}return t}if(Array.isArray(e)){if(Array.isArray(t))return d(t)-d(e);h=1}else h=Array.isArray(t)?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},exists:function(e,t,i,s,o,n,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,s,o,n,r){var a,l,h,d,c,u=0,p=/(\d+)|(\D+)/g,m=/\d/,g=r.alignEmptyValues,b=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((a=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),c=a.length>l.length?l.length:a.length;ud?1:-1;return a.length>l.length}b=1}else b=t||0===t?-1:0;return("top"===g&&"desc"===n||"bottom"===g&&"asc"===n)&&(b*=-1),b}};class _e extends k{constructor(e){super(e),this.sortList=[],this.changed=!1,this.registerTableOption("sortMode","local"),this.registerTableOption("initialSort",!1),this.registerTableOption("columnHeaderSortMulti",!0),this.registerTableOption("sortOrderReverse",!1),this.registerTableOption("headerSortElement","
              "),this.registerTableOption("headerSortClickElement","header"),this.registerColumnOption("sorter"),this.registerColumnOption("sorterParams"),this.registerColumnOption("headerSort",!0),this.registerColumnOption("headerSortStartingDir"),this.registerColumnOption("headerSortTristate")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}tableBuilt(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}remoteSortParams(e,t,i,s){var o=this.getSort();return o.forEach((e=>{delete e.column})),s.sort=o,s}userSetSort(e,t){this.setSort(e,t),this.refreshSort()}clearSort(){this.clear(),this.refreshSort()}initializeColumn(e){var t,i,s=!1;switch(typeof e.definition.sorter){case"string":_e.sorters[e.definition.sorter]?s=_e.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}if(e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort){if((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"icon"===this.table.options.headerSortClickElement)i.classList.add("tabulator-col-sorter-element");else t.classList.add("tabulator-col-sorter-element");switch(this.table.options.headerSortElement){case"function":break;case"object":i.appendChild(this.table.options.headerSortElement);break;default:i.innerHTML=this.table.options.headerSortElement}e.titleHolderElement.appendChild(i),e.modules.sort.element=i,this.setColumnHeaderSortIcon(e,"none"),("icon"===this.table.options.headerSortClickElement?i:t).addEventListener("click",(t=>{var i="",s=[],o=!1;if(e.modules.sort){if(e.modules.sort.tristate)i="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=e.modules.sort.startingDir}this.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(o=(s=this.getSort()).findIndex((t=>t.field===e.getField())),o>-1?(s[o].dir=i,o=s.splice(o,1)[0],"none"!=i&&s.push(o)):"none"!=i&&s.push({column:e,dir:i}),this.setSort(s)):"none"==i?this.clear():this.setSort(e,i),this.refreshSort()}}))}}refreshSort(){"remote"===this.table.options.sortMode?this.reloadData(null,!1,!1):this.refreshData(!0)}hasChanged(){var e=this.changed;return this.changed=!1,e}getSort(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}setSort(e,t){var i=this,s=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,s.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=s,this.dispatch("sort-changed")}clear(){this.setSort([])}findSorter(e){var t,i=this.table.rowManager.activeRows[0],s="string";if(i&&(i=i.getData(),e.getField()))switch(typeof(t=e.getFieldValue(i))){case"undefined":s="string";break;case"boolean":s="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(s="alphanum"):s="number"}return _e.sorters[s]}sort(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,s=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o;e.column&&((o=e.column.modules.sort)&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,s.push(e)),t.setColumnHeader(e.column,e.dir))})),s.length&&t._sortItems(e,s)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((e=>{o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}clearColumnHeaders(){this.table.columnManager.getRealColumns().forEach((e=>{e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"),this.setColumnHeaderSortIcon(e,"none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort","asc"===t?"ascending":"descending"),this.setColumnHeaderSortIcon(e,t)}setColumnHeaderSortIcon(e,t){var i,s=e.modules.sort.element;if(e.definition.headerSort&&"function"==typeof this.table.options.headerSortElement){for(;s.firstChild;)s.removeChild(s.firstChild);"object"==typeof(i=this.table.options.headerSortElement.call(this.table,e.getComponent(),t))?s.appendChild(i):s.innerHTML=i}}_sortItems(e,t){var i=t.length-1;e.sort(((e,s)=>{for(var o,n=i;n>=0;n--){let i=t[n];if(0!==(o=this._sortRow(e,s,i.column,i.dir,i.params)))break}return o}))}_sortRow(e,t,i,s,o){var n,r,a="asc"==s?e:t,l="asc"==s?t:e;return e=void 0!==(e=i.getFieldValue(a.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",n=a.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,n,r,i.getComponent(),s,o)}}_e.moduleName="sort",_e.sorters=Ae;class Be extends k{constructor(e){super(e),this.tooltipSubscriber=null,this.headerSubscriber=null,this.timeout=null,this.popupInstance=null,this.registerTableOption("tooltipGenerationMode",void 0),this.registerTableOption("tooltipDelay",300),this.registerColumnOption("tooltip"),this.registerColumnOption("headerTooltip")}initialize(){this.deprecatedOptionsCheck(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheckMsg("tooltipGenerationMode","This option is no longer needed as tooltips are always generated on hover now")}initializeColumn(e){e.definition.headerTooltip&&!this.headerSubscriber&&(this.headerSubscriber=!0,this.subscribe("column-mousemove",this.mousemoveCheck.bind(this,"headerTooltip")),this.subscribe("column-mouseout",this.mouseoutCheck.bind(this,"headerTooltip"))),e.definition.tooltip&&!this.tooltipSubscriber&&(this.tooltipSubscriber=!0,this.subscribe("cell-mousemove",this.mousemoveCheck.bind(this,"tooltip")),this.subscribe("cell-mouseout",this.mouseoutCheck.bind(this,"tooltip")))}mousemoveCheck(e,t,i){var s="tooltip"===e?i.column.definition.tooltip:i.definition.headerTooltip;s&&(this.clearPopup(),this.timeout=setTimeout(this.loadTooltip.bind(this,t,i,s),this.table.options.tooltipDelay))}mouseoutCheck(e,t,i){this.popupInstance||this.clearPopup()}clearPopup(e,t,i){clearTimeout(this.timeout),this.timeout=null,this.popupInstance&&this.popupInstance.hide()}loadTooltip(e,t,i){var s,n,r;"function"==typeof i&&(i=i(e,t.getComponent(),(function(e){n=e}))),i instanceof HTMLElement?s=i:(s=document.createElement("div"),!0===i&&(t instanceof o?i=t.value:t.definition.field?this.langBind("columns|"+t.definition.field,(e=>{s.innerHTML=i=e||t.definition.title})):i=t.definition.title),s.innerHTML=i),(i||0===i||!1===i)&&(s.classList.add("tabulator-tooltip"),s.addEventListener("mousemove",(e=>e.preventDefault())),this.popupInstance=this.popup(s),"function"==typeof n&&this.popupInstance.renderCallback(n),r=this.popupInstance.containerEventCoords(e),this.popupInstance.show(r.x+15,r.y+15).hideOnBlur((()=>{this.dispatchExternal("TooltipClosed",t.getComponent()),this.popupInstance=null})),this.dispatchExternal("TooltipOpened",t.getComponent()))}}Be.moduleName="tooltip";var Ie={integer:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&Math.floor(t)===t)},float:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&t%1!=0)},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var s=!0,o=e.getData(),n=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==n.getFieldValue(i)&&(s=!1)})),s},required:function(e,t,i){return""!==t&&null!=t}};class Ve extends k{constructor(e){super(e),this.invalidCells=[],this.registerTableOption("validationMode","blocking"),this.registerColumnOption("validator"),this.registerTableFunction("getInvalidCells",this.getInvalidCells.bind(this)),this.registerTableFunction("clearCellValidation",this.userClearCellValidation.bind(this)),this.registerTableFunction("validate",this.userValidate.bind(this)),this.registerComponentFunction("cell","isValid",this.cellIsValid.bind(this)),this.registerComponentFunction("cell","clearValidation",this.clearValidation.bind(this)),this.registerComponentFunction("cell","validate",this.cellValidate.bind(this)),this.registerComponentFunction("column","validate",this.columnValidate.bind(this)),this.registerComponentFunction("row","validate",this.rowValidate.bind(this))}initialize(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("edit-success",this.editValidate.bind(this)),this.subscribe("edit-editor-clear",this.editorClear.bind(this)),this.subscribe("edit-edited-clear",this.editedClear.bind(this))}editValidate(e,t,i){var s="manual"===this.table.options.validationMode||this.validate(e.column.modules.validate,e,t);return!0!==s&&setTimeout((()=>{e.getElement().classList.add("tabulator-validation-fail"),this.dispatchExternal("validationFailed",e.getComponent(),t,s)})),s}editorClear(e,t){t&&e.column.modules.validate&&this.cellValidate(e),e.getElement().classList.remove("tabulator-validation-fail")}editedClear(e){e.modules.validate&&(e.modules.validate.invalid=!1)}cellIsValid(e){return e.modules.validate&&e.modules.validate.invalid||!0}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}userClearCellValidation(e){e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.clearValidation(e._getSelf())}))}userValidate(e){var t=[];return this.table.rowManager.rows.forEach((e=>{var i=(e=e.getComponent()).validate();!0!==i&&(t=t.concat(i))})),!t.length||t}initializeColumnCheck(e){void 0!==e.definition.validator&&this.initializeColumn(e)}initializeColumn(e){var t,i=this,s=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((e=>{(t=i._extractValidator(e))&&s.push(t)})):(t=this._extractValidator(e.definition.validator))&&s.push(t),e.modules.validate=!!s.length&&s)}_extractValidator(e){var t,i,s;switch(typeof e){case"string":return(s=e.indexOf(":"))>-1?(t=e.substring(0,s),i=e.substring(s+1)):t=e,this._buildValidator(t,i);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}}_buildValidator(e,t){var i="function"==typeof e?e:Ve.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}validate(e,t,i){var s=this,o=[],n=this.invalidCells.indexOf(t);return e&&e.forEach((e=>{e.func.call(s,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),t.modules.validate||(t.modules.validate={}),o.length?(t.modules.validate.invalid=o,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)):(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)),!o.length||o}getInvalidCells(){var e=[];return this.invalidCells.forEach((t=>{e.push(t.getComponent())})),e}clearValidation(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}Ve.moduleName="validate",Ve.validators=Ie;var Ne=Object.freeze({__proto__:null,AccessorModule:A,AjaxModule:W,ClipboardModule:j,ColumnCalcsModule:X,DataTreeModule:q,DownloadModule:J,EditModule:Q,ExportModule:ie,FilterModule:oe,FormatModule:re,FrozenColumnsModule:ae,FrozenRowsModule:le,GroupRowsModule:ce,HistoryModule:ue,HtmlTableImportModule:pe,ImportModule:ge,InteractionModule:be,KeybindingsModule:fe,MenuModule:ve,MoveColumnsModule:we,MoveRowsModule:Ce,MutatorModule:Ee,PageModule:Re,PersistenceModule:ke,PopupModule:Me,PrintModule:Le,ReactiveDataModule:Se,ResizeColumnsModule:De,ResizeRowsModule:Pe,ResizeTableModule:ze,ResponsiveLayoutModule:Fe,SelectRowModule:He,SortModule:_e,TooltipModule:Be,ValidateModule:Ve});class We extends O{}return new F(We,Ne),We})); -//# sourceMappingURL=tabulator.min.js.map diff --git a/src/main/webapp/tabulator/dist/js/tabulator.min.js.map b/src/main/webapp/tabulator/dist/js/tabulator.min.js.map deleted file mode 100644 index eb9cf7ba..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/core/defaults/options.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/History.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(typeof contents){\n\t\t\tcase \"object\":\n\t\t\t\tif(contents instanceof Node){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = \"\";\n\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic elOffset(el){\n\t\tvar box = el.getBoundingClientRect();\n\n\t\treturn {\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\t\t};\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\t\t\t\t}\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = field.split(\".\")[0];\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\n\n\t\t\tif(this.vDomTopPad < 0){\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t}\n\n\t\t\tif(index < 1){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(rows.length){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\n\t\tif(this.redrawBlock){\n\t\t\tif(callback){\n\t\t\t\tcallback();\n\t\t\t}else{\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tconst resized = this.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\n\t\t\tif(resized) {\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\t\t\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, match;\n\n\t\tif(typeof query === \"string\"){\n\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\tif(matches.length){\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.matchElement(query);\n\n\t\t\tif(match){\n\t\t\t\tresults.push(match);\n\t\t\t}\n\t\t}else if(Array.isArray(query)){\n\t\t\tquery.forEach(function(item){\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\n\t\t\t});\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","export default {\n\t\"default\":{ //hold default locale text\n\t\t\"groups\":{\n\t\t\t\"item\":\"item\",\n\t\t\t\"items\":\"items\",\n\t\t},\n\t\t\"columns\":{\n\t\t},\n\t\t\"data\":{\n\t\t\t\"loading\":\"Loading\",\n\t\t\t\"error\":\"Error\",\n\t\t},\n\t\t\"pagination\":{\n\t\t\t\"page_size\":\"Page Size\",\n\t\t\t\"page_title\":\"Show Page\",\n\t\t\t\"first\":\"First\",\n\t\t\t\"first_title\":\"First Page\",\n\t\t\t\"last\":\"Last\",\n\t\t\t\"last_title\":\"Last Page\",\n\t\t\t\"prev\":\"Prev\",\n\t\t\t\"prev_title\":\"Prev Page\",\n\t\t\t\"next\":\"Next\",\n\t\t\t\"next_title\":\"Next Page\",\n\t\t\t\"all\":\"All\",\n\t\t\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\n\t\t},\n\t\t\"headerFilters\":{\n\t\t\t\"default\":\"filter column...\",\n\t\t\t\"columns\":{}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}else{\n\t\t\t\t\t\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw();\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\n\n\tscrollToRowPosition:\"top\",\n\tscrollToRowIfVisible:true,\n\n\tscrollToColumnPosition:\"left\",\n\tscrollToColumnIfVisible:true,\n\n\trowFormatter:false,\n\trowFormatterPrint:null,\n\trowFormatterClipboard:null,\n\trowFormatterHtmlOutput:null,\n\n\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\n\n\toutput.forEach(function(item){\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t});\n\n\treturn encoded.join(\"&\");\n}\n\nexport default function(url, config, params){\n\tif(url){\n\t\tif(params && Object.keys(params).length){\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\n\t\t\t\tconfig.method = \"get\";\n\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = new FormData();\n\n\t\t\toutput.forEach(function(item){\n\t\t\t\tform.append(item.key, item.value);\n\t\t\t});\n\n\t\t\treturn form;\n\t\t},\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(params, ajaxParams);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\tmethod: \"GET\",\n};","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\n\n\t\t//set body content if not GET request\n\t\tif(config.method.toUpperCase() != \"GET\"){\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\n\t\t\tif(contentType){\n\n\t\t\t\tfor(var key in contentType.headers){\n\t\t\t\t\tif(!config.headers){\n\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\n\t\t\t//configure headers\n\t\t\tif(typeof config.headers === \"undefined\"){\n\t\t\t\tconfig.headers = {};\n\t\t\t}\n\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\n\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t}\n\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\tif(typeof config.mode === \"undefined\"){\n\t\t\t\tconfig.mode = \"cors\";\n\t\t\t}\n\n\t\t\tif(config.mode == \"cors\"){\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\n\t\t\t\t}\n \n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//send request\n\t\t\tfetch(url, config)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\tresolve([]);\n\t\t}\n\t});\n}","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPaseOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPaseOrigin(e){\n\t\tvar valid = true;\n\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","export default {\n\treplace:function(rows){\n\t\treturn this.table.setData(rows);\n\t},\n\tupdate:function(rows){\n\t\treturn this.table.updateOrAddData(rows);\n\t},\n\tinsert:function(rows){\n\t\treturn this.table.addData(rows);\n\t},\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\n\t\t\t//check if headers are present by title\n\t\t\tdata[0].forEach(function(value){\n\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t});\n\n\t\t\t\tif(column){\n\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t}else{\n\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//check if column headers are present by field\n\t\t\tif(!headerFindSuccess){\n\t\t\t\theaderFindSuccess = true;\n\t\t\t\tcolumnMap = [];\n\n\t\t\t\tdata[0].forEach(function(value){\n\t\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t}else{\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(!headerFindSuccess){\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//remove header row if found\n\t\t\tif(headerFindSuccess){\n\t\t\t\tdata.shift();\n\t\t\t}\n\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\n\t\t\t\titem.forEach(function(value, i){\n\t\t\t\t\tif(columnMap[i]){\n\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n};","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn Number(sum) + Number(value);\n\t\t\t});\n\n\t\t\toutput = output / values.length;\n\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t}\n\n\t\treturn parseFloat(output).toString();\n\t},\n\t\"max\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value > output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"min\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value < output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"sum\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t});\n\t\t}\n\n\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t},\n\t\"concat\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn String(sum) + String(value);\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"count\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tif(value){\n\t\t\t\t\toutput ++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tif(!this.topInitialized){\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
              \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
              \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\t\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\n\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\n\t\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\trowData.push(\"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\n\n\tfunction fillSymbols(index){\n\t\tvar symbol = mask[index];\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\n\t\t\tel.value = el.value + \"\" + symbol;\n\t\t\tfillSymbols(index+1);\n\t\t}\n\t}\n\n\tel.addEventListener(\"keydown\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\tswitch(mask[index]){\n\t\t\t\t\tcase maskLetter:\n\t\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskNumber:\n\t\t\t\t\t\tif(isNaN(char)){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskWildcard:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(char !== mask[index]){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (e) => {\n\t\tif(e.keyCode > 46){\n\t\t\tif(options.maskAutoFill){\n\t\t\t\tfillSymbols(el.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\n\tif(!el.placeholder){\n\t\tel.placeholder = mask;\n\t}\n\n\tif(options.maskAutoFill){\n\t\tfillSymbols(el.value.length);\n\t}\n}","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\n\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\n\t\t//handle empty values\n\t\tif(!as && as!== 0){\n\t\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t\t}else if(!bs && bs!== 0){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\ta = String(as).toLowerCase();\n\t\t\tb = String(bs).toLowerCase();\n\t\t\tif(a === b) return 0;\n\t\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\ta = a.match(rx);\n\t\t\tb = b.match(rx);\n\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\twhile(i < L){\n\t\t\t\ta1= a[i];\n\t\t\t\tb1= b[i++];\n\t\t\t\tif(a1 !== b1){\n\t\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tinput.scrollHeight;\n\t\t\tinput.style.height = input.scrollHeight + \"px\";\n\t\t\tcell.getRow().normalizeHeight();\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\t//submit new value on blur\n\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"hh:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"hh:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\t\t\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(newRow === true){\n\t\t\t\t\t\tnewRow = this.table.addRow({});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\n\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t}else{\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\tcellEditor, component, params;\n\t\t\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\t\t\t\t\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\t\t\t\t\t\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\t\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\t\t\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\n\t\t\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(){\n\t\tvar output = [];\n\t\t\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows){\n\t\t\n\t\tvar columns = [];\n\t\tvar exportRows = [];\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t\t\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\n\n\t//equal to\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal == filterVal ? true : false;\n\t},\n\n\t//less than\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal < filterVal ? true : false;\n\t},\n\n\t//less than or equal to\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal <= filterVal ? true : false;\n\t},\n\n\t//greater than\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal > filterVal ? true : false;\n\t},\n\n\t//greater than or equal to\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal >= filterVal ? true : false;\n\t},\n\n\t//not equal to\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal != filterVal ? true : false;\n\t},\n\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\n\n\t\tif(typeof filterVal == \"string\"){\n\t\t\tfilterVal = new RegExp(filterVal);\n\t\t}\n\n\t\treturn filterVal.test(rowVal);\n\t},\n\n\t//contains the string\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//contains the keywords\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((keyword) =>{\n\t\t\tif(value.includes(keyword)){\n\t\t\t\tmatches.push(true);\n\t\t\t}\n\t\t});\n\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\n\t},\n\n\t//starts with the string\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//ends with the string\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(Array.isArray(filterVal)){\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\treturn false;\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterFocus(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.getHeaderFilterValue(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t}\n\t}\n\n\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterValue(column, value);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.value;\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\n\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\n\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\twhile (rgx.test(integer)){\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t}\n\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\t\t\tvalue = data[formatterParams.urlField];\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\n\t\t\t\treturn value;\n\t\t\t}else if(typeof invalid === \"function\"){\n\t\t\t\treturn invalid(value);\n\t\t\t}else{\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (invalid === true) {\n\t\t\t\treturn value;\n\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\treturn invalid(value);\n\t\t\t} else {\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\n\trow.watchPosition((position) => {\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
              \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\n\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\t\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.modules.frozen.edge){\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\tif(column.modules.frozen.edge){\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\t\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t}else{\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowDelete: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n};","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos >= 0){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollPageDown:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = rowManager.element.scrollHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos <= scrollMax){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\n\t},\n\tscrollToStart:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollToEnd:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tnavPrev:function(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\tundo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.undo();\n\t\t\t}\n\t\t}\n\t},\n\n\tredo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.redo();\n\t\t\t}\n\t\t}\n\t},\n\n\tcopyToClipboard:function(e){\n\t\tif(!this.table.modules.edit.currentCell){\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\n\t\t\t}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\ttoRow.update(fromRow.getData());\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\treplace:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\ttoRow.delete();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n};\n\nMoveRows.prototype.senders = {\n\tdelete:function(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default {};","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\n\t\t\t\t\ttop = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, data;\n\n\t\t//if cookie exists, decode and load column data into tabulator\n\t\tif(cookiePos > -1){\n\t\t\tcookie = cookie.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(0, end);\n\t\t\t}\n\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t}\n};\n","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(id, type, data){\n\t\tvar expireDate = new Date();\n\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\n\t\t//block editor from taking action while resizing is taking place\n\t\tif(self.startColumn.modules.edit){\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.selectable !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\t\t\t\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t}\n\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectable !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\n\t\t\t\tif(this.table.options.selectableRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\t//compare valid values\n\t\t\treturn a - b;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
              \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\n\t\tparams.sort = sorters;\n\n\t\treturn params;\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\n\t\tif(column.definition.headerSort !== false){\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t}\n\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif(field){\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Sort.sorters[sorter];\n\t}\n\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\n\t\t\t\t\tif(sortObj){\n\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t}\n\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn !isNaN(value);\n\t},\n\n\t//must be a string\n\tstring: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn isNaN(value);\n\t},\n\n\t//maximum value\n\tmax: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) <= parameters;\n\t},\n\n\t//minimum value\n\tmin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) >= parameters;\n\t},\n\n\t//starts with value\n\tstarts: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\n\t},\n\n\t//ends with value\n\tends: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\n\t},\n\n\n\t//minimum string length\n\tminLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length >= parameters;\n\t},\n\n\t//maximum string length\n\tmaxLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length <= parameters;\n\t},\n\n\t//in provided value list\n\tin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar reg = new RegExp(parameters);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//value must be unique in this column\n\tunique: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar unique = true;\n\n\t\tvar cellData = cell.getData();\n\t\tvar column = cell.getColumn()._getSelf();\n\n\t\tthis.table.rowManager.rows.forEach(function(row){\n\t\t\tvar data = row.getData();\n\n\t\t\tif(data !== cellData){\n\t\t\t\tif(value == column.getFieldValue(data)){\n\t\t\t\t\tunique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn unique;\n\t},\n\n\t//must have a value\n\trequired:function(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\n\t\t\t\tif(validator){\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;"],"names":["CoreFeature","constructor","table","this","reloadData","data","silent","columnsChanged","dataLoader","load","undefined","langText","modules","localize","getText","arguments","langBind","bind","langLocale","getLocale","commsConnections","comms","getConnections","commsSend","send","layoutMode","layout","getMode","layoutRefresh","force","subscribe","eventBus","unsubscribe","subscribed","key","subscriptionChange","dispatch","chain","confirm","dispatchExternal","externalEvents","subscribedExternal","subscriptionChangeExternal","options","setOption","value","deprecationCheck","oldOption","newOption","deprecationAdvisor","check","deprecationCheckMsg","msg","checkMsg","deprecationMsg","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","getTitleDownload","getCells","cells","forEach","cell","push","getComponent","isVisible","visible","show","isGroup","columns","hide","toggle","delete","getSubColumns","output","length","getParentColumn","parent","Column","_getSelf","scrollTo","position","ifVisible","columnManager","scrollToColumn","getTable","move","to","after","toColumn","findColumn","moveColumn","console","warn","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","updateDefinition","updates","getWidth","setWidth","width","result","reinitializeWidth","rerenderColumns","title","field","hozAlign","vertAlign","minWidth","maxWidth","maxInitialWidth","cssClass","variableHeight","headerVertical","headerHozAlign","headerWordWrap","editableTitle","CellComponent","_cell","getValue","getOldValue","getInitialValue","initialValue","getRow","row","getData","transform","getType","getColumn","setValue","mutate","restoreOldValue","setValueActual","restoreInitialValue","checkHeight","Cell","super","element","oldValue","height","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","style","textAlign","display","alignItems","top","bottom","middle","justifyContent","left","right","center","definition","split","classList","add","_generateContents","val","innerHTML","Node","firstChild","removeChild","appendChild","cellRendered","containerOnly","layoutElement","setValueProcessData","cellEdited","call","rowManager","changed","setFieldValue","widthStyled","clearWidth","offsetWidth","setMinWidth","minWidthStyled","setMaxWidth","maxWidthStyled","reinitializeHeight","clearHeight","setHeight","heightStyled","getHeight","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getIndex","getCellIndex","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","el","columnHeaderVertAlign","defaults","columnDefaults","optionsList","generate","defaultOptionList","checkDefinition","Object","keys","indexOf","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","parseInt","_buildColumnHeaderTitle","addEventListener","e","stopPropagation","focus","text","_formatColumnHeaderTitle","contents","dataObj","structure","columnRendered","verticalAlign","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","clearVerticalAlign","paddingTop","getFirstColumn","getLastColumn","getColumns","traverse","concat","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","child","index","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","checkCellHeights","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","getLeftOffset","offset","offsetLeft","ceil","getBoundingClientRect","Promise","resolve","reject","cellCount","deregisterColumn","generateCell","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","fitToData","setTo","error","assign","addColumn","then","defaultOptions","Helpers","static","box","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","OptionsList","msgType","registeredDefaults","register","option","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","initialize","clearRows","clearColumns","reinitializeColumnWidths","renderRows","renderColumns","rerenderRows","callback","update","blockRedraw","renderRowCells","rerenderRowCells","scrollColumns","dir","scrollRows","resize","scrollToRow","scrollToRowNearestTop","visibleRows","includingBuffer","getDisplayRows","styleRow","rowEl","remove","clear","render","rerender","scrollToRowPosition","rowIndex","scrollToRowIfVisible","elVisible","elOffset","scrollHeight","scrollTop","offsetTop","BasicHorizontal","inFragment","rowFrag","createDocumentFragment","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","windowBuffer","initialized","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","startsWith","clearVisRowCache","dataChange","scroll","calcWindowBuffer","buffer","columnsByIndex","old","cols","colPos","config","frozen","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","reinitializeRows","initializeRow","reinitializeRow","deinitialize","change","generateCells","colEnd","col","getVisibleRows","otherRows","getRows","filter","includes","diff","abs","addColRight","removeColLeft","addColLeft","removeColRight","colPositionAdjust","start","end","changes","working","getCell","insertBefore","nextSibling","fitDataColActualWidthCheck","ex","message","newWidth","widthDiff","frozenColumns","leftColumns","appendCell","rightColumns","ColumnManager","blockHozScrollEvent","headersElement","contentsElement","columnsByField","defaultColumnOptions","redrawBlockUpdate","renderer","initializeRenderer","createHeadersElement","createHeaderContentsElement","createHeaderElement","initializeScrollWheelWatcher","scrollHorizontal","padVerticalScrollbar","rtl","marginLeft","marginRight","renderClass","renderers","virtual","RendererVirtualDomHorizontal","basic","RendererBasicHorizontal","renderHorizontal","headerVisible","getContentsElement","deltaX","generateColumnsFromRowData","sorter","definitions","autoColumnsDefinitions","find","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","topColumn","parentIndex","nextEl","adjustTableSize","HTMLElement","getColumnByField","getColumnsByFieldRoot","root","matches","getFirstVisibleColumn","getRealColumns","getDefinitions","active","getDefinitionTree","getComponents","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","updateRows","toIndex","fromIndex","adjust","scrollToColumnPosition","scrollToColumnIfVisible","scrollWidth","getFlexBaseWidth","totalWidth","fixedWidth","colWidth","restoreRedraw","resetScroll","footerManager","RowComponent","_row","getPosition","watchPosition","moveToRow","updateData","normalizeHeight","reformat","getNextRow","nextRow","getPrevRow","prevRow","Row","manualHeight","outerHeight","positionWatchers","created","setData","create","detachElement","deleteCells","rowFormatter","rendered","deinitializeHeight","children","maxHeight","rowHeight","resizableRows","updatedData","newRowData","tempData","JSON","parse","attrname","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","detachModules","deleteRow","wipe","isDisplayed","setPosition","getGroup","group","BasicVertical","visibility","onlyGroupHeaders","tableFrag","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","tableEmpty","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","rowFragment","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","renderedRows","totalRowsRendered","rowsToRender","fixedHeight","containerHeight","avgRowHeight","resized","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholder","placeholderContents","firstRender","renderMode","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","displayPipeline","scrollbarWidth","initializePlaceholder","getTableElement","leftDir","topDir","_positionPlaceholder","getRowFromDataObject","getRowFromPosition","renderInPosition","pagination","_setDataActual","reRenderInPosition","autoColumns","_wipeElements","destroy","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowPositions","addRow","pos","addRowActual","addRows","refreshDisplayOnly","findAddRowPos","reverse","_clearPlaceholder","addRowPos","chainResult","moveRow","moveRowInArray","clearData","getRowIndex","findRowIndex","getDisplayRowIndex","rowOnly","getDataCount","registerDataPipelineHandler","handler","priority","sort","a","b","registerDisplayPipelineHandler","skipStage","stage","cascadeOrder","destroyed","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","viewable","scrollBarCheck","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","getRenderMode","_clearTable","renderEmptyScroll","_showPlaceholder","initialHeight","otherHeight","external","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","containerElement","createContainerElement","initializeElement","footerElement","querySelector","append","activate","prepend","deactivate","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","bindPseudoEvents","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","links","values","comp","subscriptionChanged","clearWatchers","added","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","elTargets","targetMatches","previousTarget","closest","ComponentFunctionBinder","bindings","funcName","debugInvalidComponentFuncs","DataLoader","requestOrder","loading","params","replace","requestNo","alertLoader","mapParams","dataSendParams","response","objectInvert","dataReceiveParams","rowData","clearAlert","catch","alertError","setTimeout","dataLoaderErrorTimeout","finally","map","blockActiveLoad","alertManager","alert","dataLoaderLoading","dataLoaderError","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","DeprecationAdvisor","_warnUser","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Popup","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","blurEventsBound","renderedCallback","hideable","blurEvent","escEvent","_escapeCheck","destroyBinding","tableDestroyed","popupContainer","_checkContainerIsParent","body","renderCallback","containerEventCoords","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","elementPositionCoords","containerOffset","origin","parentEl","coords","_fitToScreen","hideOnBlur","keyCode","blockHide","restoreHide","Module","_handler","registerTableOption","registerColumnOption","registerTableFunction","func","initGuard","registerComponentFunction","registerDataHandler","registerDisplayHandler","lookupIndex","refreshData","footerAppend","footerPrepend","footerRemove","popup","menuEl","menuContainer","content","forced","responsiveLayout","modExists","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","colsWidth","gap","lastCol","responsive","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Layout","mode","modes","initializeColumn","Number","dataChanged","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","getLang","default","headerFilters","_setLangProp","desiredLocale","navigator","language","toLowerCase","prefix","traverseLang","trans","prop","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","groups","items","page_size","page_title","first","first_title","last","last_title","prev","prev_title","next","next_title","all","counter","showing","of","pages","Comms","receive","selectors","connections","con","action","connection","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFunctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","registerModule","mod","registerModuleBinding","findTable","prototype","orderedStartMods","orderedEndMods","unOrderedMods","moduleCore","modulesCore","moduleInitOrder","modulesRegular","core","mods","Alert","_createAlertElement","msgElement","_createMsgElement","_typeClass","interactionMonitor","browserSlow","browserMobile","originalElement","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","_clearSelection","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","textDirection","direction","reactiveData","newElement","tagName","attributes","replaceChild","_detectBrowser","deregister","ua","userAgent","vendor","opera","test","stack","line","debugInitialization","Error","trim","replaceData","responses","addData","updateOrAddData","newRows","foundRows","updateOrAddRow","updateRow","fromRow","getRowPosition","getColumnDefinitions","showColumn","hideColumn","toggleColumn","deleteColumn","updateColumnDefinition","fromColumn","on","off","plugin","required","debugDeprecation","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","Accessor","allowedTypes","transformRow","accessor","charAt","toUpperCase","lookupAccessor","accessors","rowComponent","colComponent","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","method","json","headers","stringify","form","FormData","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","previousData","generateConfig","sendRequest","defaultConfig","ajaxRequesting","ajaxResponse","contentType","ajaxContentType","Accept","location","credentials","fetch","ok","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","export","generateExportList","clipboardCopyConfig","clipboardCopyStyled","generateHTMLTable","generatePlainContent","clipboardData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","edit","currentCell","insert","headerFindSuccess","columnMap","CalcComponent","avg","calcParams","precision","reduce","sum","toFixed","parseFloat","String","count","unique","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","recalcAfterBlock","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","adjustForScrollbar","resizeHolderWidth","getResults","userRecalc","recalc","blockCheck","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","reinitializeCalcs","rowsToData","generateRow","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","generateTopRow","generateBottomRow","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","formatter","getFormatter","paramKey","hasTopCalcs","hasBottomCalcs","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","tableRedrawing","reinitializeRowChildren","firstCol","dataTreeElementColumn","getTreeChildren","redrawNeeded","childArray","controlEl","generateControlElement","cloneNode","getPropertyValue","oldControl","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sub","childData","childRow","getTreeParentRoot","childIndex","findChildIndex","recurse","getChildField","csv","setFileContents","delimiter","fileContents","depth","bom","jsonLines","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","compression","compress","writeOptions","bookType","bookSST","generateSheet","merges","worksheet","s","c","r","j","Date","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","Download","mimeType","Blob","deprecatedOptionsCheck","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","blob","downloadEncoder","URL","createObjectURL","msSaveOrOpenBlob","click","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","ctrlKey","metaKey","maskAutoFill","defaultDownloaders","Edit","editor","onRendered","success","cancel","editorParams","_initializeParams","displayItems","currentItems","focusedItem","input","_createInputElement","listEl","_createListElement","initialValues","isFilter","filterTimeout","filtered","typing","listIteration","lastAction","filterTerm","actions","_deprecatedOptionsCheck","_initializeValue","_onRendered","listItemFormatter","sortValuesList","searchFunc","searchingPlaceholder","defaultValue","multiselect","headerFilterInitialListGen","cellEl","clickStop","preventScroll","_preventPopupBlur","_preventBlur","_inputKeyDown","_setListWidth","attribs","elementAttributes","clearable","padding","boxSizing","autocomplete","cursor","caretColor","getAttribute","_bindInputEvents","valueCheck","valueKeys","verticalNavigation","placeholderLoading","placeholderEmpty","filterDelay","emptyValue","freetext","filterFunc","filterRemote","allowEmpty","listOnEmpty","valuesLookup","valuesURL","_inputFocus","_inputClick","_inputBlur","_inputSearch","_inputKeyUp","rebuildOptionsList","_filter","clearTimeout","_filterList","_resolveValue","_clearChoices","_keyUp","_keyDown","_keySide","_keyEnter","_keyEsc","_keyHomeEnd","_keyTab","_keySelectLetter","_keyAutoCompLetter","_chooseItem","stopImmediatePropagation","_focusItem","_cancel","_scrollToValue","character","fromCharCode","label","scrollIntoView","behavior","block","inline","_generateOptions","_sortOptions","_buildList","_showList","isInteger","_filterOptions","iteration","_ajaxRequest","_uniqueColumnValues","valuesLookupField","_addPlaceholder","responseValues","_parseList","_clearList","term","urlBuilder","inputValues","entries","_parseListItem","_parseListGroup","itemParams","selected","original","_defaultSortFunction","_sortGroup","as","bs","a1","b1","L","rx","rd","emptyAlign","isFinite","_defaultFilterFunc","_filterItem","_buildItem","itemFormatter","_groupClick","_itemClick","_styleItem","startVis","blur","cellValue","search","onChange","selectContents","textarea","vertNav","whiteSpace","heightNow","shiftKey","shiftEnterSubmit","selectionStart","number","step","blurFunc","date","inputFormat","DT","DateTime","luxon","convertDate","isDateTime","fromISO","fromFormat","toFormat","luxDate","toISO","relatedTarget","rangeParent","explicitOriginalTarget","time","newDatetime","luxTime","datetime","luxDateTime","List","star","self","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","trueValueSet","falseValueSet","marginTop","checkedValue","checked","trueValue","falseValue","indeterminate","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellIsEdited","clearEdited","editCell","cellCancelEdit","bindEditor","updateCellClass","columnDeleteCheck","rowDeleteCheck","rowEditableCheck","cancelEdit","keybindingNavigateNext","newRow","edited","allowEdit","nextCell","findPrevEditableCell","findNextEditableCell","prevCell","editable","getCurrentCell","clearEditor","cellEditCancelled","contains","button","focusCellNoEvent","forceEdit","focusScrollAdjust","leftEdge","rightEdge","leftMargin","rightMargin","cellEditor","cellClick","cellEditing","validationMode","editIndex","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","generateTable","generateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","visProp","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","generateHeaderElement","generateGroupElement","generateCalcElement","generateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","cellStyle","cellWrapper","formatCells","formatExportValue","align","htmlOutputConfig","props","lookup","color","fromStyle","filterVal","rowVal","filterParams","regex","RegExp","like","keywords","separator","keyword","matchAll","starts","ends","endsWith","in","Filter","filterList","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","generatePlaceholder","filterMode","remoteFilterParams","initialFilter","setFilter","initialHeaderFilter","placeholderHeaderFilter","refreshFilter","addFilter","removeFilter","clearFilter","clearHeaderFilter","headerFilter","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","onRenderedCallback","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","sign","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","link","urlPrefix","labelField","labelTraverse","urlField","image","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","outputFormat","invalid","invalidPlaceholder","isValid","timezone","setZone","datetimediff","suffix","humanize","now","toHuman","traffic","percentValue","colors","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","innerText","responsiveCollapse","toggleList","isOpen","rowSelection","checkbox","selectableRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","initializationMode","layoutCell","reinitializeColumns","blockLayout","unblockLayout","edge","frozenCheck","layoutCalcRows","layoutGroupCalcs","groupList","layoutColumnPosition","allCells","leftParents","marginValue","getColGroupParentElement","_calcSpace","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","frozenRows","initializeRows","rowType","isFrozen","styleRows","GroupComponent","groupManager","getParentGroup","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","elementContents","arrowElement","createElements","addBindings","createValueGroups","elementsOnly","arrow","movableRows","initializeGroupHeader","allowedValues","_createGroup","groupToggleElement","groupID","groupKey","headerGenerator","insertRow","conformRowData","updateGroupRows","scrollHeader","removeRow","groupValues","generateGroupHeaderContents","removeGroup","getHeadersAndRows","_visSet","groupClosedShowCalcs","includeChildren","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","_blockRedrawing","_restore_redrawing","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","lookupFunc","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","countGroups","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","checkBasicModeGroupHeaderWidth","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","newValue","undoers","redoers","_rebindRow","oldRow","cellEdit","rowAdd","rowMove","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","optionsArr","attrib","_attribValue","_findCol","exists","textContent","replaceAll","inQuote","nextChar","array","Import","importFromFile","importFormat","loadDataCheck","loadData","importData","lookupImporter","structureData","err","importer","importers","extension","pickFile","extensions","accept","file","files","reader","FileReader","importReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","onload","onerror","parsedData","structureArrayToObject","structureArrayToColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowMouseDown","rowMouseUp","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellMouseDown","cellMouseUp","cellTap","cellDblTap","cellTapHold","headerClick","headerDblClick","headerContext","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","headerMouseDown","headerMouseUp","headerTap","headerDblTap","headerTapHold","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupMouseDown","groupMouseUp","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tap","tapDbl","tapHold","initializeExternalEvents","cellContentsSelectionFixer","clearTouchWatchers","selectNode","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","noTouch","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","mapBinding","symbolsList","ctrl","meta","code","checkBinding","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Menu","nestedMenuBlock","currentComponent","rootPopup","initializeRowWatchers","initializeGroupWatchers","rowContextMenu","loadMenuEvent","rowClickMenu","rowDblClickMenu","groupContextMenu","groupClickMenu","groupDblClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerDblClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","dblClickMenu","headerMenuEl","icon","headerMenuIcon","menu","loadMenu","parentPopup","itemEl","disabled","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","mousemove","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","passive","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","initializeCell","mouseup","tableRowDrop","previousSibling","rowHandle","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","pointerEvents","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","elementRowDrop","connectionTables","dropEvent","tabulatorElementDropEvent","connect","disconnect","dropComplete","sender","movableRowsSender","senders","movableRowsReceiver","receivers","fromTable","toTable","Mutator","enabled","transformCell","mutateLink","lookupMutator","mutators","mutatorEdit","linkCell","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","Page","progressiveLoad","pageCounterElement","pageCounter","page","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","footerRedraw","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","testElRow","testElCell","paginationSize","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","paginationInitialPage","paginationButtonCount","setMaxRows","trigger","_setPageCounter","_setPageButtons","leftSize","rightSize","_generatePageButton","actualStartRow","actualRowPageSize","actualRows","last_page","last_row","progressiveLoadDelay","footer","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","setItem","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","localStorageTest","testKey","removeItem","persistence","retrievedData","persistenceMode","persistenceID","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retrieveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","current","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","_componentPopupCall","loadPopupEvent","rowContextPopup","rowClickPopup","rowDblClickPopup","groupContextPopup","groupClickPopup","groupDblClickPopup","headerContextPopup","loadPopupTableColumnEvent","headerClickPopup","headerDblClickPopup","headerPopup","initializeColumnHeaderPopup","contextPopup","loadPopupTableCellEvent","clickPopup","dblClickPopup","headerPopupEl","headerPopupIcon","loadPopup","contentsEl","Print","manualBlock","beforeprintEventHandler","afterprintEventHandler","printAsHtml","replaceTable","cleanup","printFullscreen","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","pop","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","unwatchRow","ResizeColumns","startColumn","startWidth","latestX","initialNextColumn","layoutColumnHeader","initializeEventWatchers","layoutCellHandles","deInitializeComponent","resizeHandle","columnLayoutUpdated","deInitializeColumn","columnWidthUpdated","resizable","reinitializeColumn","frozenColumnOffset","frozenOffset","handleEl","nearestColumn","_checkResizability","handleDown","_mouseDown","oldWidth","parentElement","mouseMove","blockedBefore","blockedAfter","startDiff","moveDiff","resizableColumnFit","mouseUp","ResizeRows","startHeight","prevHandle","prevHandleDown","screenY","ResizeTable","visibilityObserver","resizeObserver","containerObserver","tableHeight","containerWidth","autoResize","initialRedraw","tableStyle","IntersectionObserver","ResizeObserver","initializeVisibilityObserver","entry","nodeHeight","contentRect","nodeWidth","redrawTable","observe","tableResized","isIntersecting","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","generateCollapsedRowContent","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","colCount","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","rowRetrieve","selectablePersistence","_deselectRow","prevSelected","_rowSelectionChanged","endSelect","checkRowSelectability","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","selectableCheck","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","deselected","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","string","localeCompare","boolean","calc","d","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortClickElement","headerSortElement","setColumnHeaderSortIcon","columnHeaderSortMulti","newSortList","findSorter","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","setColumnHeader","_sortItems","sortEl","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","Tooltip","tooltipSubscriber","headerSubscriber","timeout","popupInstance","headerTooltip","mousemoveCheck","mouseoutCheck","tooltip","clearPopup","loadTooltip","tooltipDelay","parameters","float","numeric","minLength","maxLength","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","editValidate","editorClear","editedClear","previousValue","validate","cancelled","validator","_extractValidator","substring","_buildValidator","validators","failedValidators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":";0OAAe,MAAMA,EAEpBC,YAAYC,GACXC,KAAKD,MAAQA,EAOdE,WAAWC,EAAMC,EAAQC,GACxB,OAAOJ,KAAKD,MAAMM,WAAWC,KAAKJ,OAAMK,OAAWA,OAAWA,EAAWJ,EAAQC,GAOlFI,WACC,OAAOR,KAAKD,MAAMU,QAAQC,SAASC,WAAWC,WAG/CC,WACC,OAAOb,KAAKD,MAAMU,QAAQC,SAASI,QAAQF,WAG5CG,aACC,OAAOf,KAAKD,MAAMU,QAAQC,SAASM,aAAaJ,WAQjDK,mBACC,OAAOjB,KAAKD,MAAMU,QAAQS,MAAMC,kBAAkBP,WAGnDQ,YACC,OAAOpB,KAAKD,MAAMU,QAAQS,MAAMG,QAAQT,WAOzCU,aACC,OAAOtB,KAAKD,MAAMU,QAAQc,OAAOC,UAGlCC,cAAcC,GACb,OAAO1B,KAAKD,MAAMU,QAAQc,OAAOA,OAAOG,GAQzCC,YACC,OAAO3B,KAAKD,MAAM6B,SAASD,aAAaf,WAGzCiB,cACC,OAAO7B,KAAKD,MAAM6B,SAASC,eAAejB,WAG3CkB,WAAWC,GACV,OAAO/B,KAAKD,MAAM6B,SAASE,WAAWC,GAGvCC,qBACC,OAAOhC,KAAKD,MAAM6B,SAASI,sBAAsBpB,WAGlDqB,WACC,OAAOjC,KAAKD,MAAM6B,SAASK,YAAYrB,WAGxCsB,QACC,OAAOlC,KAAKD,MAAM6B,SAASM,SAAStB,WAGrCuB,UACC,OAAOnC,KAAKD,MAAM6B,SAASO,WAAWvB,WAGvCwB,mBACC,OAAOpC,KAAKD,MAAMsC,eAAeJ,YAAYrB,WAG9C0B,mBAAmBP,GAClB,OAAO/B,KAAKD,MAAMsC,eAAeP,WAAWC,GAG7CQ,6BACC,OAAOvC,KAAKD,MAAMsC,eAAeL,sBAAsBpB,WAOxD4B,QAAQT,GACP,OAAO/B,KAAKD,MAAMyC,QAAQT,GAG3BU,UAAUV,EAAKW,GAKd,YAJoB,IAAVA,IACT1C,KAAKD,MAAMyC,QAAQT,GAAOW,GAGpB1C,KAAKD,MAAMyC,QAAQT,GAO3BY,iBAAiBC,EAAWC,GAC3B,OAAO7C,KAAKD,MAAM+C,mBAAmBC,MAAMH,EAAWC,GAGvDG,oBAAoBJ,EAAWK,GAC9B,OAAOjD,KAAKD,MAAM+C,mBAAmBI,SAASN,EAAWK,GAG1DE,eAAeF,GACd,OAAOjD,KAAKD,MAAM+C,mBAAmBG,IAAIA,GAM1CG,OAAOrB,GACN,OAAO/B,KAAKD,MAAMqD,OAAOrB,ICrIZ,MAAMsB,EACpBvD,YAAawD,GAIZ,OAHAtD,KAAKuD,QAAUD,EACftD,KAAKwD,KAAO,kBAEL,IAAIC,MAAMzD,KAAM,CACtB0D,IAAK,SAASC,EAAQC,EAAMC,GAC3B,YAA4B,IAAjBF,EAAOC,GACVD,EAAOC,GAEPD,EAAOJ,QAAQxD,MAAM+D,wBAAwBC,OAAO,SAAUJ,EAAOJ,QAASK,MAMzFI,aACC,OAAOhE,KAAKuD,QAAQS,aAGrBC,gBACC,OAAOjE,KAAKuD,QAAQU,gBAGrBC,WACC,OAAOlE,KAAKuD,QAAQW,WAGrBC,mBACC,OAAOnE,KAAKuD,QAAQY,mBAGrBC,WACC,IAAIC,EAAQ,GAMZ,OAJArE,KAAKuD,QAAQc,MAAMC,SAAQ,SAASC,GACnCF,EAAMG,KAAKD,EAAKE,mBAGVJ,EAGRK,YACC,OAAO1E,KAAKuD,QAAQoB,QAGrBC,OACI5E,KAAKuD,QAAQsB,QACf7E,KAAKuD,QAAQuB,QAAQR,SAAQ,SAAShB,GACrCA,EAAOsB,UAGR5E,KAAKuD,QAAQqB,OAIfG,OACI/E,KAAKuD,QAAQsB,QACf7E,KAAKuD,QAAQuB,QAAQR,SAAQ,SAAShB,GACrCA,EAAOyB,UAGR/E,KAAKuD,QAAQwB,OAIfC,SACIhF,KAAKuD,QAAQoB,QACf3E,KAAK+E,OAEL/E,KAAK4E,OAIPK,SACC,OAAOjF,KAAKuD,QAAQ0B,SAGrBC,gBACC,IAAIC,EAAS,GAQb,OANGnF,KAAKuD,QAAQuB,QAAQM,QACvBpF,KAAKuD,QAAQuB,QAAQR,SAAQ,SAAShB,GACrC6B,EAAOX,KAAKlB,EAAOmB,mBAIdU,EAGRE,kBACC,OAAOrF,KAAKuD,QAAQ+B,kBAAkBC,GAASvF,KAAKuD,QAAQ+B,OAAOb,eAGpEe,WACC,OAAOxF,KAAKuD,QAGbkC,SAASC,EAAUC,GAClB,OAAO3F,KAAKuD,QAAQxD,MAAM6F,cAAcC,eAAe7F,KAAKuD,QAASmC,EAAUC,GAGhFG,WACC,OAAO9F,KAAKuD,QAAQxD,MAGrBgG,KAAKC,EAAIC,GACR,IAAIC,EAAWlG,KAAKuD,QAAQxD,MAAM6F,cAAcO,WAAWH,GAExDE,EACFlG,KAAKuD,QAAQxD,MAAM6F,cAAcQ,WAAWpG,KAAKuD,QAAS2C,EAAUD,GAEpEI,QAAQC,KAAK,yCAA0CJ,GAIzDK,gBACC,IAAIC,EAAUxG,KAAKuD,QAAQkD,aAE3B,QAAOD,GAAUA,EAAQ/B,eAG1BiC,gBACC,IAAIC,EAAU3G,KAAKuD,QAAQqD,aAE3B,QAAOD,GAAUA,EAAQlC,eAG1BoC,iBAAiBC,GAChB,OAAO9G,KAAKuD,QAAQsD,iBAAiBC,GAGtCC,WACC,OAAO/G,KAAKuD,QAAQwD,WAGrBC,SAASC,GACR,IAAIC,EAUJ,OAPCA,GADY,IAAVD,EACQjH,KAAKuD,QAAQ4D,mBAAkB,GAE/BnH,KAAKuD,QAAQyD,SAASC,GAGjCjH,KAAKuD,QAAQxD,MAAM6F,cAAcwB,iBAAgB,GAE1CF,SCtJM,CACdG,WAAS9G,EACT+G,WAAS/G,EACTuE,aAAWvE,EACXoE,aAAWpE,EACXgH,cAAYhH,EACZiH,eAAajH,EACb0G,WAAS1G,EACTkH,SAAY,GACZC,cAAYnH,EACZoH,qBAAmBpH,EACnBqH,cAAYrH,EACZsH,oBAAkBtH,EAClBuH,oBAAkBvH,EAClBwH,oBAAkBxH,EAClByH,gBAAkB,EAClBC,mBAAiB1H,GCfH,MAAM2H,EAEpBpI,YAAayE,GAGZ,OAFAvE,KAAKmI,MAAQ5D,EAEN,IAAId,MAAMzD,KAAM,CACtB0D,IAAK,SAASC,EAAQC,EAAMC,GAC3B,YAA4B,IAAjBF,EAAOC,GACVD,EAAOC,GAEPD,EAAOwE,MAAMpI,MAAM+D,wBAAwBC,OAAO,OAAQJ,EAAOwE,MAAOvE,MAMnFwE,WACC,OAAOpI,KAAKmI,MAAMC,WAGnBC,cACC,OAAOrI,KAAKmI,MAAME,cAGnBC,kBACC,OAAOtI,KAAKmI,MAAMI,aAGnBvE,aACC,OAAOhE,KAAKmI,MAAMnE,aAGnBwE,SACC,OAAOxI,KAAKmI,MAAMM,IAAIhE,eAGvBiE,QAAQC,GACP,OAAO3I,KAAKmI,MAAMM,IAAIC,QAAQC,GAE/BC,UACC,MAAO,OAER1E,WACC,OAAOlE,KAAKmI,MAAM7E,OAAOY,WAG1B2E,YACC,OAAO7I,KAAKmI,MAAM7E,OAAOmB,eAG1BqE,SAASpG,EAAOqG,QACK,IAAVA,IACTA,GAAS,GAGV/I,KAAKmI,MAAMW,SAASpG,EAAOqG,GAG5BC,kBACChJ,KAAKmI,MAAMc,eAAejJ,KAAKmI,MAAME,eAGtCa,sBACClJ,KAAKmI,MAAMc,eAAejJ,KAAKmI,MAAMI,cAGtCY,cACCnJ,KAAKmI,MAAMgB,cAGZrD,WACC,OAAO9F,KAAKmI,MAAMpI,MAGnByF,WACC,OAAOxF,KAAKmI,OCzEC,MAAMiB,UAAavJ,EACjCC,YAAYwD,EAAQmF,GACnBY,MAAM/F,EAAOvD,OAEbC,KAAKD,MAAQuD,EAAOvD,MACpBC,KAAKsD,OAASA,EACdtD,KAAKyI,IAAMA,EACXzI,KAAKsJ,QAAU,KACftJ,KAAK0C,MAAQ,KACb1C,KAAKuI,aACLvI,KAAKuJ,SAAW,KAChBvJ,KAAKS,QAAU,GAEfT,KAAKwJ,OAAS,KACdxJ,KAAKiH,MAAQ,KACbjH,KAAKyH,SAAW,KAEhBzH,KAAKyJ,UAAY,KAEjBzJ,KAAK0J,QAAS,EAEd1J,KAAK2J,QAKNA,QACC3J,KAAK4J,kBAEL5J,KAAKgH,WAELhH,KAAK6J,iBAEL7J,KAAKiJ,eAAejJ,KAAKsD,OAAOwG,cAAc9J,KAAKyI,IAAIvI,OAEvDF,KAAKuI,aAAevI,KAAK0C,MAG1BkH,kBACC5J,KAAKsJ,QAAUS,SAASC,cAAc,OACtChK,KAAKsJ,QAAQW,UAAY,iBACzBjK,KAAKsJ,QAAQY,aAAa,OAAQ,YAGnCL,iBACC,IAAIP,EAAUtJ,KAAKsJ,QACnBhC,EAAQtH,KAAKsD,OAAOY,YAapBoF,EAAQa,MAAMC,UAAYpK,KAAKsD,OAAOiE,SAEnCvH,KAAKsD,OAAOkE,YACd8B,EAAQa,MAAME,QAAU,cAExBf,EAAQa,MAAMG,WAjBF,CACZC,IAAI,aACJC,OAAO,WACPC,OAAO,UAc+BzK,KAAKsD,OAAOkE,YAAc,GAE7DxH,KAAKsD,OAAOiE,WACd+B,EAAQa,MAAMO,eAfJ,CACXC,KAAK,aACLC,MAAM,WACNC,OAAO,UAYmC7K,KAAKsD,OAAOiE,WAAa,KAIjED,GACFgC,EAAQY,aAAa,kBAAmB5C,GAItCtH,KAAKsD,OAAOwH,WAAWlD,WACR5H,KAAKsD,OAAOwH,WAAWlD,SAASmD,MAAM,KAC5CzG,SAAS2F,IACnBX,EAAQ0B,UAAUC,IAAIhB,EAAU,IAIlCjK,KAAKiC,SAAS,YAAajC,MAGvBA,KAAKsD,OAAOqB,SACf3E,KAAK+E,OAKPmG,oBACC,IAAIC,EAMJ,cAJAA,EAAMnL,KAAKkC,MAAM,cAAelC,KAAM,MAAM,IACpCA,KAAKsJ,QAAQ8B,UAAYpL,KAAK0C,UAIrC,IAAK,SACJ,GAAGyI,aAAeE,KAAK,CAGtB,KAAMrL,KAAKsJ,QAAQgC,YAAYtL,KAAKsJ,QAAQiC,YAAYvL,KAAKsJ,QAAQgC,YAErEtL,KAAKsJ,QAAQkC,YAAYL,QAEzBnL,KAAKsJ,QAAQ8B,UAAY,GAEf,MAAPD,GACF9E,QAAQC,KAAK,iJAAkJ6E,GAGjK,MACD,IAAK,YACJnL,KAAKsJ,QAAQ8B,UAAY,GACzB,MACD,QACCpL,KAAKsJ,QAAQ8B,UAAYD,GAI5BM,eACCzL,KAAKiC,SAAS,gBAAiBjC,MAIhCgE,WAAW0H,GAQV,OAPI1L,KAAK0J,SACR1J,KAAK0J,QAAS,EACVgC,GACH1L,KAAK2L,iBAIA3L,KAAKsJ,QAGblB,WACC,OAAOpI,KAAK0C,MAGb2F,cACC,OAAOrI,KAAKuJ,SAIbT,SAASpG,EAAOqG,EAAQrH,GACT1B,KAAK4L,oBAAoBlJ,EAAOqG,EAAQrH,KAGrD1B,KAAKiC,SAAS,qBAAsBjC,MAEpCA,KAAKyL,eAEFzL,KAAKsD,OAAOwH,WAAWe,YACzB7L,KAAKsD,OAAOwH,WAAWe,WAAWC,KAAK9L,KAAKD,MAAOC,KAAKyE,gBAGzDzE,KAAKoC,iBAAiB,aAAcpC,KAAKyE,gBAEtCzE,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAepC,KAAKD,MAAMgM,WAAWrD,YAK9DkD,oBAAoBlJ,EAAOqG,EAAQrH,GAClC,IAAIsK,GAAU,EAiBd,OAfGhM,KAAK0C,QAAUA,GAAShB,KAE1BsK,GAAU,EAEPjD,IACFrG,EAAQ1C,KAAKkC,MAAM,sBAAuB,CAAClC,KAAM0C,GAAQ,KAAMA,KAIjE1C,KAAKiJ,eAAevG,GAEjBsJ,GACFhM,KAAKiC,SAAS,qBAAsBjC,MAG9BgM,EAGR/C,eAAevG,GACd1C,KAAKuJ,SAAWvJ,KAAK0C,MAErB1C,KAAK0C,MAAQA,EAEb1C,KAAKiC,SAAS,yBAA0BjC,MAExCA,KAAKsD,OAAO2I,cAAcjM,KAAKyI,IAAIvI,KAAMwC,GAEzC1C,KAAKiC,SAAS,wBAAyBjC,MAEpCA,KAAK0J,QACP1J,KAAK2L,gBAIPA,gBACC3L,KAAKkL,oBAELlL,KAAKiC,SAAS,cAAejC,MAG9BgH,WACChH,KAAKiH,MAAQjH,KAAKsD,OAAO2D,MACzBjH,KAAKsJ,QAAQa,MAAMlD,MAAQjH,KAAKsD,OAAO4I,YAGxCC,aACCnM,KAAKiH,MAAQ,GACbjH,KAAKsJ,QAAQa,MAAMlD,MAAQ,GAG5BF,WACC,OAAO/G,KAAKiH,OAASjH,KAAKsJ,QAAQ8C,YAGnCC,cACCrM,KAAKyH,SAAWzH,KAAKsD,OAAOmE,SAC5BzH,KAAKsJ,QAAQa,MAAM1C,SAAWzH,KAAKsD,OAAOgJ,eAG3CC,cACCvM,KAAK0H,SAAW1H,KAAKsD,OAAOoE,SAC5B1H,KAAKsJ,QAAQa,MAAMzC,SAAW1H,KAAKsD,OAAOkJ,eAG3CrD,cAECnJ,KAAKyI,IAAIgE,qBAGVC,cACC1M,KAAKsJ,QAAQa,MAAMX,OAAS,GAC5BxJ,KAAKwJ,OAAS,KAEdxJ,KAAKiC,SAAS,cAAejC,KAAM,IAGpC2M,YACC3M,KAAKwJ,OAASxJ,KAAKyI,IAAIe,OACvBxJ,KAAKsJ,QAAQa,MAAMX,OAASxJ,KAAKyI,IAAImE,aAErC5M,KAAKiC,SAAS,cAAejC,KAAMA,KAAKyI,IAAImE,cAG7CC,YACC,OAAO7M,KAAKwJ,QAAUxJ,KAAKsJ,QAAQwD,aAGpClI,OACC5E,KAAKsJ,QAAQa,MAAME,QAAUrK,KAAKsD,OAAOkE,UAAY,cAAgB,GAGtEzC,OACC/E,KAAKsJ,QAAQa,MAAME,QAAU,OAG9BpF,SACCjF,KAAKiC,SAAS,cAAejC,OAEzBA,KAAKD,MAAMgM,WAAWgB,aAAe/M,KAAKsJ,QAAQ0D,YACrDhN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAG1CtJ,KAAKsJ,SAAU,EACftJ,KAAKsD,OAAO2J,WAAWjN,MACvBA,KAAKyI,IAAIwE,WAAWjN,MACpBA,KAAKkN,MAAQ,GAGdC,WACC,OAAOnN,KAAKyI,IAAI2E,aAAapN,MAI9ByE,eAKC,OAJIzE,KAAKyJ,YACRzJ,KAAKyJ,UAAY,IAAIvB,EAAclI,OAG7BA,KAAKyJ,WC9Rd,MAAMlE,UAAe1F,EAEpBC,YAAYuN,EAAK/H,GAChB+D,MAAM/D,EAAOvF,OAEbC,KAAK8K,WAAauC,EAClBrN,KAAKsF,OAASA,EACdtF,KAAKwD,KAAO,SACZxD,KAAK8E,QAAU,GACf9E,KAAKqE,MAAQ,GACbrE,KAAKsJ,QAAUtJ,KAAKgK,gBACpBhK,KAAKsN,gBAAiB,EACtBtN,KAAKuN,oBAAqB,EAC1BvN,KAAKwN,cAAe,EACpBxN,KAAKyN,aAAezN,KAAK0N,qBACzB1N,KAAK6E,SAAU,EACf7E,KAAKuH,SAAW,GAChBvH,KAAKwH,UAAY,GAGjBxH,KAAKsH,MAAO,GACZtH,KAAK2N,eAAiB,GACtB3N,KAAK8J,cAAgB,GACrB9J,KAAKiM,cAAgB,GAErBjM,KAAK4N,cAAgB,KACrB5N,KAAK6N,wBAAyB,EAE9B7N,KAAK8N,iBAEL9N,KAAK+N,SAAS/N,KAAK8K,WAAWxD,OAE9BtH,KAAKS,QAAU,GAEfT,KAAKiH,MAAQ,KACbjH,KAAKkM,YAAc,GACnBlM,KAAK0H,SAAW,KAChB1H,KAAKwM,eAAiB,GACtBxM,KAAK2H,gBAAkB,KACvB3H,KAAKyH,SAAW,KAChBzH,KAAKsM,eAAiB,GACtBtM,KAAKgO,YAAa,EAElBhO,KAAK2E,SAAU,EAEf3E,KAAKyJ,UAAY,KAGdzJ,KAAK8K,WAAWhG,SAElB9E,KAAK6E,SAAU,EAEf7E,KAAK8K,WAAWhG,QAAQR,SAAQ,CAAC+I,EAAKY,KACrC,IAAIC,EAAS,IAAI3I,EAAO8H,EAAKrN,MAC7BA,KAAKmO,aAAaD,EAAO,IAG1BlO,KAAKoO,yBAEL9I,EAAO+I,oBAAoBrO,MAG5BA,KAAKsO,cAGNtE,gBACC,IAAIuE,EAAKxE,SAASC,cAAc,OAMhC,OAJAuE,EAAGvD,UAAUC,IAAI,iBACjBsD,EAAGrE,aAAa,OAAQ,gBACxBqE,EAAGrE,aAAa,YAAa,QAEtBlK,KAAKD,MAAMyC,QAAQgM,uBACzB,IAAK,SACJD,EAAGpE,MAAMO,eAAiB,SAC1B,MACD,IAAK,SACJ6D,EAAGpE,MAAMO,eAAiB,WAI5B,OAAO6D,EAGRb,qBACC,IAAIa,EAAKxE,SAASC,cAAc,OAIhC,OAFAuE,EAAGvD,UAAUC,IAAI,4BAEVsD,EAGRT,iBACC,IAAIW,EAAWzO,KAAKD,MAAMyC,QAAQkM,eAGlC,GAAGD,EACF,IAAI,IAAI1M,KAAO0M,OACqB,IAAzBzO,KAAK8K,WAAW/I,KACzB/B,KAAK8K,WAAW/I,GAAO0M,EAAS1M,IAKnC/B,KAAK8K,WAAa9K,KAAKD,MAAM6F,cAAc+I,YAAYC,SAASrJ,EAAOsJ,kBAAmB7O,KAAK8K,YAGhGgE,kBACCC,OAAOC,KAAKhP,KAAK8K,YAAYxG,SAASvC,KACS,IAA3CwD,EAAOsJ,kBAAkBI,QAAQlN,IACnCsE,QAAQC,KAAK,yCAA2CtG,KAAKsH,OAAStH,KAAK8K,WAAWzD,OAAS,YAAatF,MAK/GgM,SAASzG,GACRtH,KAAKsH,MAAQA,EACbtH,KAAK2N,eAAiBrG,EAAStH,KAAKD,MAAMyC,QAAQ0M,qBAAuB5H,EAAMyD,MAAM/K,KAAKD,MAAMyC,QAAQ0M,sBAAwB,CAAC5H,GAAU,GAC3ItH,KAAK8J,cAAgB9J,KAAK2N,eAAevI,OAAS,EAAIpF,KAAKmP,eAAiBnP,KAAKoP,aACjFpP,KAAKiM,cAAgBjM,KAAK2N,eAAevI,OAAS,EAAIpF,KAAKqP,eAAiBrP,KAAKsP,aAIlFC,uBAAuBjM,GACtBtD,KAAKsF,OAAOiK,uBAAuBjM,GAIpC+K,oBAAoB/K,GACnBtD,KAAKsF,OAAO+I,oBAAoB/K,GAIjCkM,qBACIxP,KAAK6E,QACP7E,KAAK8E,QAAQR,SAAQ,SAAShB,GAC7BA,EAAOkM,wBAGRxP,KAAKuP,uBAAuBvP,MAK9BsO,cAGC,IAFA,IAAIjB,EAAMrN,KAAK8K,WAET9K,KAAKsJ,QAAQgC,YAAYtL,KAAKsJ,QAAQiC,YAAYvL,KAAKsJ,QAAQgC,YAElE+B,EAAIvF,iBACN9H,KAAKsJ,QAAQ0B,UAAUC,IAAI,0BAED,SAAvBoC,EAAIvF,gBACN9H,KAAKsJ,QAAQ0B,UAAUC,IAAI,gCAI7BjL,KAAKsN,eAAiBtN,KAAKyP,4BAE3BzP,KAAKsJ,QAAQkC,YAAYxL,KAAKsN,gBAE3BtN,KAAK6E,QACP7E,KAAK0P,oBAEL1P,KAAK2P,qBAGN3P,KAAKiC,SAAS,cAAejC,MAI9B2P,qBACC,IAAItC,EAAMrN,KAAK8K,YAEf9K,KAAKiC,SAAS,gBAAiBjC,WAGN,IAAfqN,EAAI1I,UACV0I,EAAI1I,QACN3E,KAAK4E,MAAK,GAEV5E,KAAK+E,MAAK,IAKTsI,EAAIzF,WACWyF,EAAIzF,SAASmD,MAAM,KACzBzG,SAAS2F,IACnBjK,KAAKsJ,QAAQ0B,UAAUC,IAAIhB,EAAU,IAIpCoD,EAAI/F,OACNtH,KAAKsJ,QAAQY,aAAa,kBAAmBmD,EAAI/F,OAIlDtH,KAAKqM,YAAYuD,SAASvC,EAAI5F,WAE1B4F,EAAI1F,kBACP3H,KAAK2H,gBAAkBiI,SAASvC,EAAI1F,kBAGlC0F,EAAI3F,UACN1H,KAAKuM,YAAYqD,SAASvC,EAAI3F,WAG/B1H,KAAKmH,oBAGLnH,KAAKuH,SAAWvH,KAAK8K,WAAWvD,SAChCvH,KAAKwH,UAAYxH,KAAK8K,WAAWtD,UAEjCxH,KAAKwN,aAAarD,MAAMC,UAAYpK,KAAK8K,WAAW/C,eAGrD0H,4BACC,IAAInC,EAAiBvD,SAASC,cAAc,OAY5C,OAXAsD,EAAetC,UAAUC,IAAI,yBAE7BjL,KAAKuN,mBAAqBxD,SAASC,cAAc,OACjDhK,KAAKuN,mBAAmBvC,UAAUC,IAAI,8BAEtCqC,EAAe9B,YAAYxL,KAAKuN,oBAEhCvN,KAAKwN,aAAexN,KAAK6P,0BAEzB7P,KAAKuN,mBAAmB/B,YAAYxL,KAAKwN,cAElCF,EAIRuC,0BACC,IAAIxC,EAAMrN,KAAK8K,WAEXyC,EAAqBxD,SAASC,cAAc,OAOhD,GANAuD,EAAmBvC,UAAUC,IAAI,uBAE9BoC,EAAIrF,gBACNuF,EAAmBvC,UAAUC,IAAI,4BAG/BoC,EAAIpF,cAAc,CACpB,IAAIuF,EAAezD,SAASC,cAAc,SAC1CwD,EAAaxC,UAAUC,IAAI,0BAE3BuC,EAAasC,iBAAiB,SAAUC,IACvCA,EAAEC,kBACFxC,EAAayC,OAAO,IAGrBzC,EAAasC,iBAAiB,UAAU,KACvCzC,EAAIhG,MAAQmG,EAAa9K,MACzB1C,KAAKoC,iBAAiB,qBAAsBpC,KAAKyE,eAAe,IAGjE8I,EAAmB/B,YAAYgC,GAE5BH,EAAI/F,MACNtH,KAAKa,SAAS,WAAawM,EAAI/F,OAAQ4I,IACtC1C,EAAa9K,MAAQwN,GAAS7C,EAAIhG,OAAS,QAAS,IAGrDmG,EAAa9K,MAAS2K,EAAIhG,OAAS,cAIjCgG,EAAI/F,MACNtH,KAAKa,SAAS,WAAawM,EAAI/F,OAAQ4I,IACtClQ,KAAKmQ,yBAAyB5C,EAAoB2C,GAAS7C,EAAIhG,OAAS,SAAU,IAGnFrH,KAAKmQ,yBAAyB5C,EAAoBF,EAAIhG,OAAS,UAIjE,OAAOkG,EAGR4C,yBAAyB5B,EAAIlH,GAC5B,IAAI+I,EAAWpQ,KAAKkC,MAAM,gBAAiB,CAAClC,KAAMqH,EAAOkH,GAAK,MAAM,IAC5DlH,IAGR,cAAc+I,GACb,IAAK,SACDA,aAAoB/E,KACtBkD,EAAG/C,YAAY4E,IAEf7B,EAAGnD,UAAY,GACf/E,QAAQC,KAAK,uJAAwJ8J,IAEtK,MACD,IAAK,YACJ7B,EAAGnD,UAAY,GACf,MACD,QACCmD,EAAGnD,UAAYgF,GAKlBV,qBACC1P,KAAKsJ,QAAQ0B,UAAUC,IAAI,uBAC3BjL,KAAKsJ,QAAQY,aAAa,OAAQ,eAClClK,KAAKsJ,QAAQY,aAAa,aAAclK,KAAK8K,WAAWzD,OAGrDrH,KAAK8K,WAAWlD,WACD5H,KAAK8K,WAAWlD,SAASmD,MAAM,KACrCzG,SAAS2F,IACnBjK,KAAKsJ,QAAQ0B,UAAUC,IAAIhB,EAAU,IAIvCjK,KAAKwN,aAAarD,MAAMC,UAAYpK,KAAK8K,WAAW/C,eAEpD/H,KAAKsJ,QAAQkC,YAAYxL,KAAKyN,cAI/B2B,aAAalP,GACZ,OAAOA,EAAKF,KAAKsH,OAIlB6H,eAAejP,GACd,IAGAiF,EAHIkL,EAAUnQ,EACdoQ,EAAYtQ,KAAK2N,eACjBvI,EAASkL,EAAUlL,OAGnB,IAAI,IAAI6I,EAAI,EAAGA,EAAI7I,IAIlBD,EAFAkL,EAAUA,EAAQC,EAAUrC,IAIxBoC,GANsBpC,KAW3B,OAAO9I,EAIRmK,aAAapP,EAAMwC,GACf1C,KAAKsH,QACPpH,EAAKF,KAAKsH,OAAS5E,GAKrB2M,eAAenP,EAAMwC,GACpB,IAAI2N,EAAUnQ,EACdoQ,EAAYtQ,KAAK2N,eACjBvI,EAASkL,EAAUlL,OAEnB,IAAI,IAAI6I,EAAI,EAAGA,EAAI7I,EAAQ6I,IAE1B,GAAGA,GAAK7I,EAAQ,EACfiL,EAAQC,EAAUrC,IAAMvL,MACpB,CACJ,IAAI2N,EAAQC,EAAUrC,IAAI,CACzB,QAAoB,IAAVvL,EAGT,MAFA2N,EAAQC,EAAUrC,IAAM,GAM1BoC,EAAUA,EAAQC,EAAUrC,KAM/BE,aAAa7K,GACTtD,KAAKyN,cACPzN,KAAK8E,QAAQN,KAAKlB,GAClBtD,KAAKyN,aAAajC,YAAYlI,EAAOU,cAErCV,EAAOiN,kBAEPlK,QAAQC,KAAK,oFAKfkK,cAAcC,EAAWjH,GAGxB,IAAIkH,EAAe1Q,KAAKsF,OAAOT,QAAU7E,KAAKsF,OAAOqL,kBAAkBC,aAAgBpH,GAAUxJ,KAAKsF,OAAOuL,oBAAoBD,aAGjI5Q,KAAKsJ,QAAQa,MAAMX,OAASkH,EAAe,KAE3C1Q,KAAKiC,SAAS,gBAAiBjC,KAAMA,KAAKsJ,QAAQa,MAAMX,QAErDxJ,KAAK6E,UACP7E,KAAKyN,aAAatD,MAAM2G,UAAaJ,EAAe1Q,KAAKsN,eAAeR,aAAgB,MAYzF9M,KAAK8E,QAAQR,SAAQ,SAAShB,GAC7BA,EAAOkN,cAAcC,MAKvBM,qBACC/Q,KAAKsJ,QAAQa,MAAM6G,WAAa,GAChChR,KAAKsJ,QAAQa,MAAMX,OAAS,GAC5BxJ,KAAKsJ,QAAQa,MAAM2G,UAAY,GAC/B9Q,KAAKyN,aAAatD,MAAM2G,UAAY,GAEpC9Q,KAAK8E,QAAQR,SAAQ,SAAShB,GAC7BA,EAAOyN,wBAGR/Q,KAAKiC,SAAS,gBAAiBjC,KAAM,IAKtCgE,aACC,OAAOhE,KAAKsJ,QAIbqH,kBACC,OAAO3Q,KAAKyN,aAIbvJ,WACC,OAAOlE,KAAKsH,MAGbnD,mBACC,OAAOnE,KAAK4N,cAIbqD,iBACC,OAAIjR,KAAK6E,UAGL7E,KAAK8E,QAAQM,QACRpF,KAAK8E,QAAQ,GAAGmM,iBAHjBjR,KAWTkR,gBACC,OAAIlR,KAAK6E,UAGL7E,KAAK8E,QAAQM,QACRpF,KAAK8E,QAAQ9E,KAAK8E,QAAQM,OAAQ,GAAG8L,gBAHtClR,KAWTmR,WAAWC,GACV,IAAItM,EAAU,GAYd,OAVGsM,EACFpR,KAAK8E,QAAQR,SAAShB,IACrBwB,EAAQN,KAAKlB,GAEbwB,EAAUA,EAAQuM,OAAO/N,EAAO6N,YAAW,GAAM,IAGlDrM,EAAU9E,KAAK8E,QAGTA,EAIRV,WACC,OAAOpE,KAAKqE,MAIbiN,eACC,OAAGtR,KAAKsF,OAAOT,QACP7E,KAAKsF,OAAOgM,eAEZtR,KAKTiE,cAAcsN,GACb,IAAIC,EAAU,GAUd,OARGxR,KAAK6E,SAAW0M,IAClBvR,KAAK8E,QAAQR,SAAQ,SAAShB,GAC7BkO,EAAQhN,KAAKlB,EAAOW,eAAc,OAGnCjE,KAAK8K,WAAWhG,QAAU0M,GAGpBxR,KAAK8K,WAIbsD,wBACC,IAAIzJ,GAAU,EAEd3E,KAAK8E,QAAQR,SAAQ,SAAShB,GAC1BA,EAAOqB,UACTA,GAAU,MAITA,GACF3E,KAAK4E,OACL5E,KAAKoC,iBAAiB,0BAA2BpC,KAAKyE,gBAAgB,IAEtEzE,KAAK+E,OAKPH,KAAKzE,EAAQsR,GACRzR,KAAK2E,UACR3E,KAAK2E,SAAU,EAEf3E,KAAKsJ,QAAQa,MAAME,QAAU,GAE1BrK,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAO8I,wBAGbpO,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAKK,UAGF5E,KAAK6E,SAA0B,OAAf7E,KAAKiH,OACxBjH,KAAKmH,oBAGNnH,KAAKD,MAAM6F,cAAc8L,uBAEzB1R,KAAKiC,SAAS,cAAejC,KAAMyR,GAE/BtR,GACHH,KAAKoC,iBAAiB,0BAA2BpC,KAAKyE,gBAAgB,GAGpEzE,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAOqM,mBAGT3R,KAAKG,QACRH,KAAKD,MAAM6F,cAAcwB,mBAM5BrC,KAAK5E,EAAQsR,GACTzR,KAAK2E,UACP3E,KAAK2E,SAAU,EAEf3E,KAAKsJ,QAAQa,MAAME,QAAU,OAE7BrK,KAAKD,MAAM6F,cAAc8L,uBAEtB1R,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAO8I,wBAGbpO,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAKQ,UAGN/E,KAAKiC,SAAS,cAAejC,KAAMyR,GAE/BtR,GACHH,KAAKoC,iBAAiB,0BAA2BpC,KAAKyE,gBAAgB,GAGpEzE,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAOqM,mBAGT3R,KAAKG,QACRH,KAAKD,MAAM6F,cAAcwB,mBAK5BuK,mBACC,IAAIC,EAAa,EAEd5R,KAAKsN,gBAAkBtN,KAAK8E,QAAQM,SACtCpF,KAAK8E,QAAQR,SAAQ,SAAShB,GAC1BA,EAAOqB,UACTiN,GAActO,EAAOyD,eAIvB/G,KAAKsN,eAAenD,MAAMzC,SAAYkK,EAAa,EAAK,KAErD5R,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAOqM,oBAKfpG,YAAYsG,GACX,IAAIC,EAAQ9R,KAAK8E,QAAQmK,QAAQ4C,GAE9BC,GAAS,GACX9R,KAAK8E,QAAQiN,OAAOD,EAAO,GAGxB9R,KAAK8E,QAAQM,QAChBpF,KAAKiF,SAIP+B,SAASC,GACRjH,KAAKgO,YAAa,EAClBhO,KAAKgS,eAAe/K,GAGrB+K,eAAe/K,GACXgL,MAAMhL,KACRA,EAAQiL,KAAKC,MAAOnS,KAAKD,MAAMuJ,QAAQ8I,YAAY,IAAOxC,SAAS3I,KAGpEA,EAAQiL,KAAKG,IAAIrS,KAAKyH,SAAUR,GAE7BjH,KAAK0H,WACPT,EAAQiL,KAAKI,IAAItS,KAAK0H,SAAUT,IAGjCjH,KAAKiH,MAAQA,EACbjH,KAAKkM,YAAcjF,EAAQA,EAAQ,KAAO,GAE1CjH,KAAKsJ,QAAQa,MAAMlD,MAAQjH,KAAKkM,YAE5BlM,KAAK6E,SACR7E,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAKyC,cAIJhH,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAOqM,mBAGb3R,KAAKiC,SAAS,eAAgBjC,MAG/BuS,mBACC,IAAIC,EAAO,GAEXxS,KAAKqE,MAAMC,SAAQ,SAASC,GACxBA,EAAKkE,IAAIgK,oBAC+B,OAAvClO,EAAKkE,IAAIzE,aAAa0O,cACxBF,EAAKhO,KAAKD,EAAKkE,KACflE,EAAKkE,IAAIkK,mBAETpO,EAAKkE,IAAIgK,mBAAoB,MAKhCD,EAAKlO,SAAQ,SAASmE,GACrBA,EAAImK,gBAGLJ,EAAKlO,SAAQ,SAASmE,GACrBA,EAAIoK,mBAIN9L,WACC,IAAIE,EAAQ,EAYZ,OAVGjH,KAAK6E,QACP7E,KAAK8E,QAAQR,SAAQ,SAAShB,GAC1BA,EAAOqB,UACTsC,GAAS3D,EAAOyD,eAIlBE,EAAQjH,KAAKiH,MAGPA,EAGR6L,gBACC,IAAIC,EAAS/S,KAAKsJ,QAAQ0J,WAM1B,OAJGhT,KAAKsF,OAAOT,UACdkO,GAAU/S,KAAKsF,OAAOwN,iBAGhBC,EAGRlG,YACC,OAAOqF,KAAKe,KAAKjT,KAAKsJ,QAAQ4J,wBAAwB1J,QAGvD6C,YAAY5E,GACRzH,KAAK0H,UAAYD,EAAWzH,KAAK0H,WACnCD,EAAWzH,KAAK0H,SAEhBrB,QAAQC,KAAK,iBAAkBmB,EAAW,mBAAqBzH,KAAKsH,MAAQ,yCAA0CtH,KAAKwM,eAAiB,MAG7IxM,KAAKyH,SAAWA,EAChBzH,KAAKsM,eAAiB7E,EAAWA,EAAW,KAAO,GAEnDzH,KAAKsJ,QAAQa,MAAM1C,SAAWzH,KAAKsM,eAEnCtM,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAK8H,iBAIPE,YAAY7E,GACR1H,KAAKyH,UAAYC,EAAW1H,KAAKyH,WACnCC,EAAW1H,KAAKyH,SAEhBpB,QAAQC,KAAK,iBAAkBoB,EAAW,mBAAqB1H,KAAKsH,MAAQ,0CAA2CtH,KAAKsM,eAAiB,MAG9ItM,KAAK0H,SAAWA,EAChB1H,KAAKwM,eAAiB9E,EAAWA,EAAW,KAAO,GAEnD1H,KAAKsJ,QAAQa,MAAMzC,SAAW1H,KAAKwM,eAEnCxM,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAKgI,iBAIPtH,SACC,OAAO,IAAIkO,SAAQ,CAACC,EAASC,KACzBrT,KAAK6E,SACP7E,KAAK8E,QAAQR,SAAQ,SAAShB,GAC7BA,EAAO2B,YAITjF,KAAKiC,SAAS,gBAAiBjC,MAE/B,IAAIsT,EAAYtT,KAAKqE,MAAMe,OAE3B,IAAI,IAAI6I,EAAI,EAAGA,EAAIqF,EAAWrF,IAC7BjO,KAAKqE,MAAM,GAAGY,SAGZjF,KAAKsJ,QAAQ0D,YACfhN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAG1CtJ,KAAKsJ,SAAU,EACftJ,KAAKsN,gBAAiB,EACtBtN,KAAKwN,cAAe,EACpBxN,KAAKyN,cAAe,EAEjBzN,KAAKsF,OAAOT,SACd7E,KAAKsF,OAAOiG,YAAYvL,MAGzBA,KAAKD,MAAM6F,cAAc2N,iBAAiBvT,MAE1CA,KAAKD,MAAM6F,cAAcwB,iBAAgB,GAEzCgM,GAAS,IAIX7C,iBACIvQ,KAAK6N,wBACP7N,KAAK6N,yBAGN7N,KAAKiC,SAAS,kBAAmBjC,MAKlCwT,aAAa/K,GACZ,IAAIlE,EAAO,IAAI6E,EAAKpJ,KAAMyI,GAI1B,OAFAzI,KAAKqE,MAAMG,KAAKD,GAETA,EAGRkC,aACC,IAAIqL,EAAQ9R,KAAKD,MAAM6F,cAAc6N,gBAAgBzT,MACrD,OAAO8R,GAAS,GAAI9R,KAAK0T,mBAAmB5B,EAAQ,GAGrD4B,mBAAmB5B,GAClB,IAAIxO,EAAStD,KAAKD,MAAM6F,cAAc+N,iBAAiB7B,GACvD,OAAQxO,GAAUA,EAAOqB,QAAUrB,EAAStD,KAAK0T,mBAAmB5B,EAAQ,GAG7ElL,aACC,IAAIkL,EAAQ9R,KAAKD,MAAM6F,cAAc6N,gBAAgBzT,MACrD,OAAO8R,GAAS,GAAI9R,KAAK4T,mBAAmB9B,EAAQ,GAGrD8B,mBAAmB9B,GAClB,IAAIxO,EAAStD,KAAKD,MAAM6F,cAAc+N,iBAAiB7B,GACvD,OAAQxO,GAAUA,EAAOqB,QAAUrB,EAAStD,KAAK4T,mBAAmB9B,EAAQ,GAG7E3K,kBAAkBzF,GACjB1B,KAAKgO,YAAa,OAGkB,IAA1BhO,KAAK8K,WAAW7D,OAA0BvF,GAEnD1B,KAAKgH,SAAShH,KAAK8K,WAAW7D,OAG/BjH,KAAKiC,SAAS,0BAA2BjC,MAEzCA,KAAK6T,UAAUnS,GAEf1B,KAAKiC,SAAS,yBAA0BjC,MAIzC6T,UAAUnS,GACT,IAAG1B,KAAK6E,QAAR,CAII7E,KAAKgO,aACRhO,KAAKsJ,QAAQa,MAAMlD,MAAQ,GAE3BjH,KAAKqE,MAAMC,SAASC,IACnBA,EAAK4H,YAAY,KAInB,IAAIzE,EAAW1H,KAAKsJ,QAAQ8C,YAE5B,KAAIpM,KAAKiH,QAAUjH,KAAKgO,cACvBhO,KAAKqE,MAAMC,SAASC,IACnB,IAAI0C,EAAQ1C,EAAKwC,WAEdE,EAAQS,IACVA,EAAWT,MAIVS,GAAS,CACX,IAAIoM,EAAQpM,EAAW,EACnB1H,KAAK2H,kBAAoBjG,IAC5BoS,EAAQ5B,KAAKI,IAAIwB,EAAO9T,KAAK2H,kBAE9B3H,KAAKgS,eAAe8B,KAKvBjN,iBAAiBC,GAChB,IAAIgE,EAEJ,OAAI9K,KAAK6E,SACJ7E,KAAKsF,OAAOT,SAsBhBwB,QAAQ0N,MAAM,8FACPZ,QAAQE,OAAO,yGAtBrBvI,EAAaiE,OAAOiF,OAAO,GAAIhU,KAAKiE,iBACpC6G,EAAaiE,OAAOiF,OAAOlJ,EAAYhE,GAEhC9G,KAAKD,MAAM6F,cAAcqO,UAAUnJ,GAAY,EAAO9K,MAC3DkU,MAAM5Q,IAEHwH,EAAWxD,OAAStH,KAAKsH,QAC3BtH,KAAKsH,OAAQ,GAGPtH,KAAKiF,SACViP,MAAK,IACE5Q,EAAOmB,qBAcrBwI,WAAW1I,GACV,IAAIuN,EAAQ9R,KAAKqE,MAAM4K,QAAQ1K,GAE5BuN,GAAS,GACX9R,KAAKqE,MAAM0N,OAAOD,EAAO,GAK3BrN,eAKC,OAJIzE,KAAKyJ,YACRzJ,KAAKyJ,UAAY,IAAIpG,EAAgBrD,OAG/BA,KAAKyJ,WAIdlE,EAAOsJ,kBAAoBsF,ECl7BZ,MAAMC,EAEpBC,iBAAiB9F,GAChB,QAASA,EAAGnC,aAAe,GAAKmC,EAAGzB,cAAgB,GAGpDuH,gBAAgB9F,GACf,IAAI+F,EAAM/F,EAAG2E,wBAEb,MAAO,CACN3I,IAAK+J,EAAI/J,IAAMgK,OAAOC,YAAczK,SAAS0K,gBAAgBC,UAC7D/J,KAAM2J,EAAI3J,KAAO4J,OAAOI,YAAc5K,SAAS0K,gBAAgBG,YAIjEP,iBAAiBQ,EAAKC,EAAOC,EAAO,IACnC,IAAIC,EAAc,GAAGC,UACrBC,EAAa,GAAGD,UAMhB,IAAI,IAAIhH,KAJH6G,IACJA,EAAQ/F,OAAOiF,OAAOmB,MAAMC,QAAQP,GAAO,GAAK,GAAIA,IAGxCA,EAAK,CACjB,IACAQ,EAAOC,EADHC,EAAUV,EAAI5G,GAGJ,MAAXsH,GAAsC,iBAAZA,GAAyBA,EAAQN,YAAcD,GAAeO,EAAQN,YAAcC,IAChHG,EAAQN,EAAKS,WAAWC,GAChBA,EAAKF,UAAYA,IAGtBF,GAAS,EACXP,EAAM7G,GAAK8G,EAAKM,GAAOC,MAEvBA,EAAOvG,OAAOiF,OAAOmB,MAAMC,QAAQG,GAAW,GAAK,GAAIA,GAEvDR,EAAKW,QAAQ,CAACH,UAASD,SAEvBR,EAAM7G,GAAKjO,KAAK2V,UAAUJ,EAASD,EAAMP,KAK5C,OAAOD,GC5CM,MAAMc,EACpB9V,YAAYC,EAAO8V,EAASpH,EAAW,IACtCzO,KAAKD,MAAQA,EACbC,KAAK6V,QAAUA,EACf7V,KAAK8V,mBAAqB/G,OAAOiF,OAAO,GAAIvF,GAG7CsH,SAASC,EAAQtT,GAChB1C,KAAK8V,mBAAmBE,GAAUtT,EAGnCkM,SAASuF,EAAgB8B,EAAc,IACtC,IAAI9Q,EAAS4J,OAAOiF,OAAO,GAAIhU,KAAK8V,oBACpCxP,EAAOtG,KAAKD,MAAMyC,QAAQ0T,sBAA2D,IAApCD,EAAYC,oBAE7DnH,OAAOiF,OAAO7O,EAAQgP,GAEtB,IAAK,IAAIpS,KAAOkU,EACX9Q,EAAOgR,eAAepU,KACtBuE,GACFD,QAAQC,KAAK,WAAatG,KAAK6V,QAAU,WAAY9T,GAGtDoD,EAAOpD,GAAOkU,EAAYlU,KAK5B,IAAK,IAAIA,KAAOoD,EACZpD,KAAOkU,EACT9Q,EAAOpD,GAAOkU,EAAYlU,GAEvBoT,MAAMC,QAAQjQ,EAAOpD,IACvBoD,EAAOpD,GAAOgN,OAAOiF,OAAO,GAAI7O,EAAOpD,IACR,iBAAhBoD,EAAOpD,IAAqC,OAAhBoD,EAAOpD,GAClDoD,EAAOpD,GAAOgN,OAAOiF,OAAO,GAAI7O,EAAOpD,SACP,IAAhBoD,EAAOpD,WAChBoD,EAAOpD,GAKjB,OAAOoD,GCvCM,MAAMiR,UAAiBvW,EACrCC,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKqW,gBAAkBtW,EAAMgM,WAAWzC,QACxCtJ,KAAKsW,kBAAoBvW,EAAM6F,cAAc0D,QAC7CtJ,KAAKuW,aAAgBxW,EAAMgM,WAAWwK,aAEtCvW,KAAKwW,iBAAmB,MAQzBC,cAIAC,aAIAC,gBAKAC,yBAAyB9R,IAKzB+R,cAIAC,iBAIAC,aAAaC,GAETA,GACFA,IAIF5P,gBAAgB6P,EAAQC,IAIxBC,eAAe1O,IAIf2O,iBAAiB3O,EAAK/G,IAItB2V,cAAc1M,EAAM2M,IAIpBC,WAAWhN,EAAK+M,IAIhBE,UAIAC,YAAYhP,IAIZiP,sBAAsBjP,IAItBkP,YAAYC,GAEX,MAAO,GAORpF,OACC,OAAOxS,KAAKD,MAAMgM,WAAW8L,iBAG9BC,SAASrP,EAAKqJ,GACb,IAAIiG,EAAQtP,EAAIzE,aAEb8N,EAAQ,GACViG,EAAM/M,UAAUC,IAAI,sBACpB8M,EAAM/M,UAAUgN,OAAO,uBAEvBD,EAAM/M,UAAUC,IAAI,qBACpB8M,EAAM/M,UAAUgN,OAAO,uBASzBC,QAECjY,KAAK0W,YACL1W,KAAK2W,eAGNuB,SAEClY,KAAK6W,aACL7W,KAAK8W,gBAGNqB,SAASnB,GAERhX,KAAK+W,eACL/W,KAAKoH,kBAGNgR,oBAAoB3P,EAAK/C,EAAUC,GAClC,IAAI0S,EAAWrY,KAAKwS,OAAOvD,QAAQxG,GACnCsP,EAAQtP,EAAIzE,aACZ+O,EAAS,EAET,OAAO,IAAII,SAAQ,CAACC,EAASC,KAC5B,GAAGgF,GAAY,EAAE,CAOhB,QALwB,IAAd1S,IACTA,EAAY3F,KAAKD,MAAMyC,QAAQ8V,uBAI5B3S,GACAyO,EAAQmE,UAAUR,KACpBhF,EAASqB,EAAQoE,SAAST,GAAOxN,IAAM6J,EAAQoE,SAASxY,KAAKqW,iBAAiB9L,KAElE,GAAKwI,EAAS/S,KAAKqW,gBAAgBzF,aAAemH,EAAMjL,aAEnE,OADAsG,KACO,EAiBV,YAZuB,IAAb1N,IACTA,EAAW1F,KAAKD,MAAMyC,QAAQ4V,qBAGf,YAAb1S,IACFA,EAAW1F,KAAK0X,sBAAsBjP,GAAO,MAAQ,UAItDzI,KAAKyX,YAAYhP,GAGV/C,GACN,IAAK,SACL,IAAK,SAED1F,KAAKqW,gBAAgBoC,aAAezY,KAAKqW,gBAAgBqC,WAAa1Y,KAAKqW,gBAAgBzF,aAC7F5Q,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBqC,WAAaX,EAAMY,UAAY3Y,KAAKqW,gBAAgBqC,YAAe1Y,KAAKqW,gBAAgBoC,aAAeV,EAAMY,WAAa,EAEhL3Y,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBqC,UAAa1Y,KAAKqW,gBAAgBzF,aAAe,EAGxG,MAED,IAAK,SAED5Q,KAAKqW,gBAAgBoC,aAAezY,KAAKqW,gBAAgBqC,WAAa1Y,KAAKqW,gBAAgBzF,aAC7F5Q,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBqC,WAAa1Y,KAAKqW,gBAAgBoC,aAAeV,EAAMY,WAAaZ,EAAMjL,aAEhI9M,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBzF,aAAemH,EAAMjL,aAG7G,MAED,IAAK,MACJ9M,KAAKqW,gBAAgBqC,UAAYX,EAAMY,UAIzCvF,SAGA/M,QAAQC,KAAK,kCACb+M,EAAO,sCCrMI,MAAMuF,UAAwBxC,EAC5CtW,YAAYC,GACXsJ,MAAMtJ,GAGPoX,eAAe1O,EAAKoQ,GACnB,MAAMC,EAAU/O,SAASgP,yBACzBtQ,EAAIpE,MAAMC,SAASC,IAClBuU,EAAQtN,YAAYjH,EAAKP,aAAa,IAEvCyE,EAAIa,QAAQkC,YAAYsN,GAEpBD,GACHpQ,EAAIpE,MAAMC,SAASC,IAClBA,EAAKkH,cAAc,IAKtBmL,yBAAyB9R,GACxBA,EAAQR,SAAQ,SAAShB,GACxBA,EAAO6D,wBCrBK,MAAM6R,UAA6B5C,EACjDtW,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKiZ,QAAU,EACfjZ,KAAKkZ,SAAW,EAChBlZ,KAAKmZ,WAAa,EAElBnZ,KAAKoZ,kBAAoB,EACzBpZ,KAAKqZ,mBAAqB,EAE1BrZ,KAAKsZ,YAAc,EACnBtZ,KAAKuZ,aAAe,EAEpBvZ,KAAKwZ,cAAgB,EAErBxZ,KAAKyZ,aAAe,IAEpBzZ,KAAK2X,YAAc,KAEnB3X,KAAK0Z,aAAc,EACnB1Z,KAAK2Z,WAAY,EAEjB3Z,KAAK8E,QAAU,GAGhB2R,aACCzW,KAAK4Z,qBACL5Z,KAAK6Z,cACL7Z,KAAK8Z,mBAGNF,qBAC8B,gBAA1B5Z,KAAKwC,QAAQ,WACf6D,QAAQC,KAAK,0EAGXtG,KAAKwC,QAAQ,qBACf6D,QAAQC,KAAK,oEAGXtG,KAAKwC,QAAQ,QACf6D,QAAQC,KAAK,8EAIfuT,cACC7Z,KAAK2Z,UAAY3Z,KAAKwC,QAAQ,UAAUuX,WAAW,WAGpDD,mBACC9Z,KAAK2B,UAAU,kBAAmB3B,KAAKga,iBAAiBlZ,KAAKd,OAC7DA,KAAK2B,UAAU,iBAAkB3B,KAAKga,iBAAiBlZ,KAAKd,OAG7Dga,mBACCha,KAAK2X,YAAc,KAOpBb,cAAcrO,EAAK/G,GAClB1B,KAAKia,aAIN5C,cAAc1M,EAAM2M,GAChBtX,KAAKmZ,YAAcxO,IACrB3K,KAAKmZ,WAAaxO,EAElB3K,KAAKka,OAAOvP,GAAQ3K,KAAKoZ,kBAAoBpZ,KAAKyZ,gBAIpDU,mBACC,IAAIC,EAASpa,KAAKqW,gBAAgBjE,YAElCpS,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAShB,IAChD,GAAGA,EAAOqB,QAAQ,CACjB,IAAIsC,EAAQ3D,EAAOyD,WAEhBE,EAAQmT,IACVA,EAASnT,OAKZjH,KAAKyZ,aAAwB,EAATW,EAGrBhT,gBAAgB6P,EAAQC,GACvB,IAAIoD,EAAM,CACTC,KAAKva,KAAK8E,QACVmU,QAAQjZ,KAAKiZ,QACbC,SAASlZ,KAAKkZ,UAEfsB,EAAS,EAENvD,IAAWjX,KAAK0Z,cAInB1Z,KAAKiY,QAELjY,KAAKma,mBAELna,KAAKmZ,WAAanZ,KAAKqW,gBAAgB8C,WAEvCnZ,KAAKoZ,kBAAoBpZ,KAAKmZ,WAAanZ,KAAKyZ,aAChDzZ,KAAKqZ,mBAAqBrZ,KAAKmZ,WAAanZ,KAAKqW,gBAAgBjE,YAAcpS,KAAKyZ,aAEpFzZ,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAShB,IAChD,IACA2D,EADIwT,EAAS,GAGVnX,EAAOqB,UACLrB,EAAO7C,QAAQia,SAClBzT,EAAQ3D,EAAOyD,WAEf0T,EAAOE,QAAUH,EACjBC,EAAOG,SAAWJ,EAASvT,EAE3BwT,EAAOxT,MAAQA,EAEXjH,KAAK2Z,YACRc,EAAOI,cAAevX,EAAO7C,QAAQqa,SAAUxX,EAAO7C,QAAQqa,QAAQD,cAGnEL,EAASvT,EAAQjH,KAAKoZ,mBAAuBoB,EAASxa,KAAKqZ,qBAG1C,GAAjBrZ,KAAKiZ,UACPjZ,KAAKiZ,QAAUjZ,KAAK8E,QAAQM,OAC5BpF,KAAKsZ,YAAckB,GAGpBxa,KAAKkZ,SAAWlZ,KAAK8E,QAAQM,SAGR,IAAlBpF,KAAKiZ,UACPjZ,KAAKuZ,cAAgBtS,GAIvBjH,KAAK8E,QAAQN,KAAKlB,GAElBA,EAAO7C,QAAQqa,QAAUL,EAEzBD,GAAUvT,OAKbjH,KAAKuW,aAAapM,MAAM4Q,YAAc/a,KAAKsZ,YAAc,KACzDtZ,KAAKuW,aAAapM,MAAM6Q,aAAehb,KAAKuZ,aAAe,KAE3DvZ,KAAK0Z,aAAc,EAEfxC,GACCD,IAAUjX,KAAKib,cAAcX,IAChCta,KAAKkb,mBAIPlb,KAAKqW,gBAAgB8C,WAAanZ,KAAKmZ,YAGxChC,eAAe1O,GACd,GAAGzI,KAAK0Z,YACP1Z,KAAKmb,cAAc1S,OACf,CACJ,MAAMqQ,EAAU/O,SAASgP,yBACzBtQ,EAAIpE,MAAMC,SAASC,IAClBuU,EAAQtN,YAAYjH,EAAKP,aAAa,IAEvCyE,EAAIa,QAAQkC,YAAYsN,GAExBrQ,EAAIpE,MAAMC,SAASC,IAClBA,EAAKkH,cAAc,KAKtB2L,iBAAiB3O,EAAK/G,GACrB1B,KAAKob,gBAAgB3S,EAAK/G,GAG3BkV,yBAAyB9R,GACxB,IAAI,IAAImJ,EAAIjO,KAAKiZ,QAAShL,GAAKjO,KAAKkZ,SAAUjL,IAC7CjO,KAAK8E,QAAQmJ,GAAG9G,oBAQlBkU,eACCrb,KAAK0Z,aAAc,EAGpBzB,QACCjY,KAAK8E,QAAU,GAEf9E,KAAKiZ,SAAW,EAChBjZ,KAAKkZ,SAAW,EAEhBlZ,KAAKoZ,kBAAoB,EACzBpZ,KAAKqZ,mBAAqB,EAC1BrZ,KAAKsZ,YAAc,EACnBtZ,KAAKuZ,aAAe,EAGrBU,aACC,IACAxR,EAAKsP,EADDuD,GAAS,EAGb,GAAGtb,KAAK2Z,WAOP,GANA3Z,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAShB,KAC5CA,EAAOwH,WAAW7D,OAAS3D,EAAOqB,UACrC2W,GAAS,MAIRA,GAAUtb,KAAKD,MAAMgM,WAAW8L,iBAAiBzS,SACnDpF,KAAKqZ,mBAAqBrZ,KAAKmZ,WAAanZ,KAAKqW,gBAAgBjE,YAAcpS,KAAKyZ,aAEpFhR,EAAMzI,KAAKkC,MAAM,cAAe,CAAC,GAAI,IAAI,IACjClC,KAAKD,MAAMgM,WAAW8L,mBAC3B,IAEI,CACNE,EAAQtP,EAAIzE,aAEZyE,EAAI8S,gBAEJvb,KAAKuW,aAAa/K,YAAYuM,GAE9B,IAAI,IAAIyD,EAAS,EAAGA,EAAS/S,EAAIpE,MAAMe,OAAQoW,IAAS,CACvD,IAAIjX,EAAOkE,EAAIpE,MAAMmX,GACrBzD,EAAMvM,YAAYjH,EAAKP,cAEvBO,EAAKjB,OAAO6D,oBAGb4Q,EAAM/K,WAAWzB,YAAYwM,GAE7B/X,KAAKoH,iBAAgB,GAAO,QAIA,eAA3BpH,KAAKwC,QAAQ,YACfxC,KAAKyB,gBACLzB,KAAKoH,iBAAgB,GAAO,IAK/B6T,cAAcX,GACb,IAAIjF,GAAQ,EAEZ,OAAGiF,EAAIC,KAAKnV,SAAWpF,KAAK8E,QAAQM,QAAUkV,EAAIrB,UAAYjZ,KAAKiZ,SAAWqB,EAAIpB,WAAalZ,KAAKkZ,WAIpGoB,EAAIC,KAAKjW,SAAQ,CAACmX,EAAKxN,KACnBwN,IAAQzb,KAAK8E,QAAQmJ,KACvBoH,GAAQ,OAIFA,GAGT6F,mBACC,IAAIvD,EAAc3X,KAAK0b,iBACvBC,EAAY3b,KAAKD,MAAMgM,WAAW6P,UAAUC,QAAOpT,IAAQkP,EAAYmE,SAASrT,KAEhFkP,EAAYrT,SAASmE,IACpBzI,KAAKob,gBAAgB3S,GAAK,EAAK,IAGhCkT,EAAUrX,SAASmE,IAClBA,EAAI4S,cAAc,IAIpBK,iBAKC,OAJK1b,KAAK2X,cACT3X,KAAK2X,YAAc3X,KAAKD,MAAMgM,WAAW2P,kBAGnC1b,KAAK2X,YAGbuC,OAAO6B,GACN/b,KAAKoZ,mBAAqB2C,EAC1B/b,KAAKqZ,oBAAsB0C,EAExB7J,KAAK8J,IAAID,GAAS/b,KAAKyZ,aAAe,EACxCzZ,KAAKoH,kBAEF2U,EAAO,GAET/b,KAAKic,cACLjc,KAAKkc,kBAGLlc,KAAKmc,aACLnc,KAAKoc,kBAKRC,kBAAmBC,EAAOC,EAAKR,GAC9B,IAAI,IAAI9N,EAAIqO,EAAOrO,EAAIsO,EAAKtO,IAAI,CAC/B,IAAI3K,EAAStD,KAAK8E,QAAQmJ,GAE1B3K,EAAO7C,QAAQqa,QAAQH,SAAWoB,EAClCzY,EAAO7C,QAAQqa,QAAQF,UAAYmB,GAIrCE,cAIC,IAHA,IAAIO,GAAU,EACdC,GAAU,EAEJA,GAAQ,CAEb,IAAInZ,EAAStD,KAAK8E,QAAQ9E,KAAKkZ,SAAW,GAEvC5V,GACCA,EAAO7C,QAAQqa,QAAQH,SAAW3a,KAAKqZ,oBACzCmD,GAAU,EAEVxc,KAAK0b,iBAAiBpX,SAASmE,IAC9B,GAAgB,UAAbA,EAAIjF,KAAiB,CACvB,IAAIe,EAAOkE,EAAIiU,QAAQpZ,GACvBmF,EAAIzE,aAAa2Y,aAAapY,EAAKP,aAAcyE,EAAIiU,QAAQ1c,KAAK8E,QAAQ9E,KAAKkZ,WAAWlV,aAAa4Y,aACvGrY,EAAKkH,mBAIPzL,KAAK6c,2BAA2BvZ,GAEhCtD,KAAKkZ,WAELlZ,KAAK0b,iBAAiBpX,SAASmE,IACd,UAAbA,EAAIjF,OACNiF,EAAIhI,QAAQqa,QAAQ5B,SAAWlZ,KAAKkZ,aAInClZ,KAAKkZ,UAAalZ,KAAK8E,QAAQM,OAAS,EAC1CpF,KAAKuZ,aAAe,EAEpBvZ,KAAKuZ,cAAgBjW,EAAOyD,YAM9B0V,GAAU,EAITD,IACFxc,KAAKuW,aAAapM,MAAM6Q,aAAehb,KAAKuZ,aAAe,MAI7D4C,aAIC,IAHA,IAAIK,GAAU,EACdC,GAAU,EAEJA,GAAQ,CACb,IAAInZ,EAAStD,KAAK8E,QAAQ9E,KAAKiZ,QAAU,GAEzC,GAAG3V,EACF,GAAGA,EAAO7C,QAAQqa,QAAQF,UAAY5a,KAAKoZ,kBAAkB,CAC5DoD,GAAU,EAEVxc,KAAK0b,iBAAiBpX,SAASmE,IAC9B,GAAgB,UAAbA,EAAIjF,KAAiB,CACvB,IAAIe,EAAOkE,EAAIiU,QAAQpZ,GACvBmF,EAAIzE,aAAa2Y,aAAapY,EAAKP,aAAcyE,EAAIiU,QAAQ1c,KAAK8E,QAAQ9E,KAAKiZ,UAAUjV,cACzFO,EAAKkH,mBAIPzL,KAAKiZ,UAELjZ,KAAK0b,iBAAiBpX,SAASmE,IACd,UAAbA,EAAIjF,OACNiF,EAAIhI,QAAQqa,QAAQ7B,QAAUjZ,KAAKiZ,YAIlCjZ,KAAKiZ,SAAW,EAClBjZ,KAAKsZ,YAAc,EAEnBtZ,KAAKsZ,aAAehW,EAAOyD,WAG5B,IAAIgV,EAAO/b,KAAK6c,2BAA2BvZ,GAExCyY,IACF/b,KAAKmZ,WAAanZ,KAAKqW,gBAAgB8C,WAAanZ,KAAKqW,gBAAgB8C,WAAa4C,EACtF/b,KAAKuZ,cAAgBwC,QAItBU,GAAU,OAGXA,GAAU,EAITD,IACFxc,KAAKuW,aAAapM,MAAM4Q,YAAc/a,KAAKsZ,YAAc,MAI3D8C,iBAIC,IAHA,IAAII,GAAU,EACdC,GAAU,EAEJA,GAAQ,CACb,IAAInZ,EAAStD,KAAK8E,QAAQ9E,KAAKkZ,UAE5B5V,GACCA,EAAO7C,QAAQqa,QAAQH,QAAU3a,KAAKqZ,oBACxCmD,GAAU,EAEVxc,KAAK0b,iBAAiBpX,SAASmE,IAC9B,GAAgB,UAAbA,EAAIjF,KAAiB,CACvB,IAAIe,EAAOkE,EAAIiU,QAAQpZ,GAEvB,IACCmF,EAAIzE,aAAauH,YAAYhH,EAAKP,cACjC,MAAO8Y,GACRzW,QAAQC,KAAK,2BAA4BwW,EAAGC,cAK/C/c,KAAKuZ,cAAgBjW,EAAOyD,WAC5B/G,KAAKkZ,WAELlZ,KAAK0b,iBAAiBpX,SAASmE,IACd,UAAbA,EAAIjF,OACNiF,EAAIhI,QAAQqa,QAAQ5B,SAAWlZ,KAAKkZ,cAOvCuD,GAAU,EAITD,IACFxc,KAAKuW,aAAapM,MAAM6Q,aAAehb,KAAKuZ,aAAe,MAI7D2C,gBAIC,IAHA,IAAIM,GAAU,EACdC,GAAU,EAEJA,GAAQ,CACb,IAAInZ,EAAStD,KAAK8E,QAAQ9E,KAAKiZ,SAE5B3V,GACCA,EAAO7C,QAAQqa,QAAQF,SAAW5a,KAAKoZ,mBACzCoD,GAAU,EAEVxc,KAAK0b,iBAAiBpX,SAASmE,IAC9B,GAAgB,UAAbA,EAAIjF,KAAiB,CACvB,IAAIe,EAAOkE,EAAIiU,QAAQpZ,GAEvB,IACCmF,EAAIzE,aAAauH,YAAYhH,EAAKP,cACjC,MAAO8Y,GACRzW,QAAQC,KAAK,0BAA2BwW,EAAGC,cAK9C/c,KAAKsZ,aAAehW,EAAOyD,WAC3B/G,KAAKiZ,UAELjZ,KAAK0b,iBAAiBpX,SAASmE,IACd,UAAbA,EAAIjF,OACNiF,EAAIhI,QAAQqa,QAAQ7B,QAAUjZ,KAAKiZ,aAOtCwD,GAAU,EAITD,IACFxc,KAAKuW,aAAapM,MAAM4Q,YAAc/a,KAAKsZ,YAAc,MAI3DuD,2BAA2BvZ,GAC1B,IAAI0Z,EAAUC,EAiBd,OAfG3Z,EAAO7C,QAAQqa,QAAQD,eACzBvX,EAAO6D,qBAGP8V,GADAD,EAAW1Z,EAAOyD,YACKzD,EAAO7C,QAAQqa,QAAQ7T,SAG7C3D,EAAO7C,QAAQqa,QAAQF,UAAYqC,EACnC3Z,EAAO7C,QAAQqa,QAAQ7T,MAAQ+V,EAC/Bhd,KAAKqc,kBAAkBrc,KAAK8E,QAAQmK,QAAQ3L,GAAU,EAAGtD,KAAK8E,QAAQM,OAAQ6X,IAG/E3Z,EAAO7C,QAAQqa,QAAQD,cAAe,GAGhCoC,EAGR9B,cAAc1S,GACb,GAAgB,UAAbA,EAAIjF,KAAiB,CACvBiF,EAAIhI,QAAQqa,QAAU,CACrB7B,QAAQjZ,KAAKiZ,QACbC,SAASlZ,KAAKkZ,UAGZlZ,KAAKD,MAAMU,QAAQyc,eACrBld,KAAKD,MAAMU,QAAQyc,cAAcC,YAAY7Y,SAAShB,IACrDtD,KAAKod,WAAW3U,EAAKnF,EAAO,IAI9B,IAAI,IAAI2K,EAAIjO,KAAKiZ,QAAShL,GAAKjO,KAAKkZ,SAAUjL,IAC7CjO,KAAKod,WAAW3U,EAAKzI,KAAK8E,QAAQmJ,IAGhCjO,KAAKD,MAAMU,QAAQyc,eACrBld,KAAKD,MAAMU,QAAQyc,cAAcG,aAAa/Y,SAAShB,IACtDtD,KAAKod,WAAW3U,EAAKnF,EAAO,KAMhC8Z,WAAW3U,EAAKnF,GACf,GAAGA,GAAUA,EAAOqB,QAAQ,CAC3B,IAAIJ,EAAOkE,EAAIiU,QAAQpZ,GAEvBmF,EAAIzE,aAAawH,YAAYjH,EAAKP,cAClCO,EAAKkH,gBAIP2P,gBAAgB3S,EAAK/G,GACpB,GAAgB,UAAb+G,EAAIjF,OACH9B,IAAU+G,EAAIhI,QAAQqa,SAAWrS,EAAIhI,QAAQqa,QAAQ7B,UAAYjZ,KAAKiZ,SAAWxQ,EAAIhI,QAAQqa,QAAQ5B,WAAalZ,KAAKkZ,UAAS,CAGlI,IADA,IAAInB,EAAQtP,EAAIzE,aACV+T,EAAMzM,YAAYyM,EAAMxM,YAAYwM,EAAMzM,YAEhDtL,KAAKmb,cAAc1S,KCvjBR,MAAM6U,UAAsBzd,EAE1CC,YAAaC,GACZsJ,MAAMtJ,GAENC,KAAKud,qBAAsB,EAC3Bvd,KAAKwd,eAAiB,KACtBxd,KAAKyd,gBAAkB,KACvBzd,KAAKsJ,QAAU,KACftJ,KAAK8E,QAAU,GACf9E,KAAKqa,eAAiB,GACtBra,KAAK0d,eAAiB,GACtB1d,KAAKmZ,WAAa,EAClBnZ,KAAK2O,YAAc,IAAIiH,EAAY5V,KAAKD,MAAO,oBAAqB4d,GAEpE3d,KAAK+M,aAAc,EACnB/M,KAAK4d,kBAAoB,KAEzB5d,KAAK6d,SAAW,KAKjBpH,aACCzW,KAAK8d,qBAEL9d,KAAKwd,eAAiBxd,KAAK+d,uBAC3B/d,KAAKyd,gBAAkBzd,KAAKge,8BAC5Bhe,KAAKsJ,QAAUtJ,KAAKie,sBAEpBje,KAAKyd,gBAAgBd,aAAa3c,KAAKwd,eAAgBxd,KAAKyd,gBAAgBnS,YAC5EtL,KAAKsJ,QAAQqT,aAAa3c,KAAKyd,gBAAiBzd,KAAKsJ,QAAQgC,YAE7DtL,KAAKke,+BAELle,KAAK2B,UAAU,oBAAqB3B,KAAKme,iBAAiBrd,KAAKd,OAC/DA,KAAK2B,UAAU,qBAAsB3B,KAAKoe,qBAAqBtd,KAAKd,OAGrEoe,qBAAqBnX,GACjBjH,KAAKD,MAAMse,IACbre,KAAKwd,eAAerT,MAAMmU,WAAarX,EAAQ,KAE/CjH,KAAKwd,eAAerT,MAAMoU,YAActX,EAAQ,KAIlD6W,qBACC,IAAIU,EAEAC,EAAY,CACfC,QAAWC,EACXC,MAASC,IAITL,EADiD,iBAAxCxe,KAAKD,MAAMyC,QAAQsc,iBACdL,EAAUze,KAAKD,MAAMyC,QAAQsc,kBAE7B9e,KAAKD,MAAMyC,QAAQsc,mBAIjC9e,KAAK6d,SAAW,IAAIW,EAAYxe,KAAKD,MAAOC,KAAKsJ,QAAStJ,KAAKuW,cAC/DvW,KAAK6d,SAASpH,cAEdpQ,QAAQ0N,MAAM,oCAAqC/T,KAAKD,MAAMyC,QAAQsc,kBAKxEf,uBACC,IAAIxP,EAAKxE,SAASC,cAAc,OAKhC,OAHAuE,EAAGvD,UAAUC,IAAI,qBACjBsD,EAAGrE,aAAa,OAAQ,OAEjBqE,EAGRyP,8BACC,IAAIzP,EAAKxE,SAASC,cAAc,OAKhC,OAHAuE,EAAGvD,UAAUC,IAAI,6BACjBsD,EAAGrE,aAAa,OAAQ,YAEjBqE,EAGR0P,sBACC,IAAI1P,EAAKxE,SAASC,cAAc,OAShC,OAPAuE,EAAGvD,UAAUC,IAAI,oBACjBsD,EAAGrE,aAAa,OAAQ,YAEpBlK,KAAKD,MAAMyC,QAAQuc,eACtBxQ,EAAGvD,UAAUC,IAAI,2BAGXsD,EAIRvK,aACC,OAAOhE,KAAKsJ,QAIb0V,qBACC,OAAOhf,KAAKyd,gBAKb5M,oBACC,OAAO7Q,KAAKwd,eAIbW,iBAAiBxT,GAChB3K,KAAKyd,gBAAgBtE,WAAaxO,EAElC3K,KAAKmZ,WAAaxO,EAElB3K,KAAK6d,SAASxG,cAAc1M,GAG7BuT,+BACCle,KAAKyd,gBAAgB3N,iBAAiB,SAAUC,IAC/C,IAAIpF,EAEDoF,EAAEkP,SACJtU,EAAO3K,KAAKyd,gBAAgBtE,WAAapJ,EAAEkP,OAE3Cjf,KAAKD,MAAMgM,WAAWoS,iBAAiBxT,GACvC3K,KAAKD,MAAM6F,cAAcuY,iBAAiBxT,OAM7CuU,2BAA2Bhf,GAC1B,IAEAuI,EAAK0W,EAFD5E,EAAO,GACX6E,EAAcpf,KAAKD,MAAMyC,QAAQ6c,uBAGjC,GAAGnf,GAAQA,EAAKkF,OAAO,CAItB,IAAI,IAAIrD,KAFR0G,EAAMvI,EAAK,GAEQ,CAClB,IAAIub,EAAM,CACTnU,MAAMvF,EACNsF,MAAMtF,GAGHW,EAAQ+F,EAAI1G,GAEhB,cAAcW,GACb,IAAK,YACJyc,EAAS,SACT,MAED,IAAK,UACJA,EAAS,UACT,MAED,IAAK,SAEHA,EADEhK,MAAMC,QAAQ1S,GACP,QAEA,SAEV,MAED,QAKGyc,EAJElN,MAAMvP,IAAoB,KAAVA,EAGhBA,EAAM2S,MAAM,wCACL,WAEA,SALD,SAWZoG,EAAI0D,OAASA,EAEb5E,EAAK/V,KAAKiX,GAGX,GAAG2D,EAEF,cAAcA,GACb,IAAK,WACJpf,KAAKD,MAAMyC,QAAQsC,QAAUsa,EAAYtT,KAAK9L,KAAKD,MAAOwa,GAC1D,MAED,IAAK,SACDpF,MAAMC,QAAQgK,GAChB7E,EAAKjW,SAASmX,IACb,IAAIpG,EAAQ+J,EAAYE,MAAMjS,GACtBA,EAAI/F,QAAUmU,EAAInU,QAGvB+N,GACFtG,OAAOiF,OAAOyH,EAAKpG,MAKrBkF,EAAKjW,SAASmX,IACV2D,EAAY3D,EAAInU,QAClByH,OAAOiF,OAAOyH,EAAK2D,EAAY3D,EAAInU,WAKtCtH,KAAKD,MAAMyC,QAAQsC,QAAUyV,OAI/Bva,KAAKD,MAAMyC,QAAQsC,QAAUyV,EAG9Bva,KAAKuf,WAAWvf,KAAKD,MAAMyC,QAAQsC,UAIrCya,WAAWhF,EAAM9R,GAChB,KAAMzI,KAAKwd,eAAelS,YAAYtL,KAAKwd,eAAejS,YAAYvL,KAAKwd,eAAelS,YAE1FtL,KAAK8E,QAAU,GACf9E,KAAKqa,eAAiB,GACtBra,KAAK0d,eAAiB,GAEtB1d,KAAKiC,SAAS,mBAEdsY,EAAKjW,SAAQ,CAAC+I,EAAKY,KAClBjO,KAAKwf,WAAWnS,EAAI,IAGrBrN,KAAKyf,kBAELzf,KAAKiC,SAAS,kBAEdjC,KAAKoH,iBAAgB,GAAO,GAE5BpH,KAAK0f,QAAO,GAGbF,WAAW1U,EAAY6U,EAAQC,GAC9B,IAAItc,EAAS,IAAIiC,EAAOuF,EAAY9K,MACpC6f,EAAQvc,EAAOU,aACf8N,EAAQ8N,EAAe5f,KAAKyT,gBAAgBmM,GAAgBA,EAE5D,GAAGA,GAAgB9N,GAAS,EAAE,CAC7B,IAAIgO,EAAYF,EAAatO,eACzByO,EAAc/f,KAAK8E,QAAQmK,QAAQ6Q,GACnCE,EAASF,EAAU9b,aAEpB2b,GACF3f,KAAK8E,QAAQiN,OAAOgO,EAAa,EAAGzc,GACpC0c,EAAOhT,WAAW2P,aAAakD,EAAOG,KAEtChgB,KAAK8E,QAAQiN,OAAOgO,EAAc,EAAG,EAAGzc,GACxC0c,EAAOhT,WAAW2P,aAAakD,EAAOG,EAAOpD,mBAG3C+C,GACF3f,KAAK8E,QAAQ4Q,QAAQpS,GACrBtD,KAAKwd,eAAeb,aAAarZ,EAAOU,aAAchE,KAAKwd,eAAelS,cAE1EtL,KAAK8E,QAAQN,KAAKlB,GAClBtD,KAAKwd,eAAehS,YAAYlI,EAAOU,eAMzC,OAFAV,EAAOiN,iBAEAjN,EAGR+K,oBAAoBoN,GAChBA,EAAI3Q,WAAWxD,QACjBtH,KAAK0d,eAAejC,EAAI3Q,WAAWxD,OAASmU,GAI9ClM,uBAAuBkM,GACtBzb,KAAKqa,eAAe7V,KAAKiX,GAG1BgE,kBACCzf,KAAKqa,eAAiB,GAEtBra,KAAK8E,QAAQR,SAAQ,SAAShB,GAC7BA,EAAOkM,wBAKTkC,uBACC,IAAIZ,EAAY,EAEZ9Q,KAAK+M,cAER/M,KAAKwd,eAAerT,MAAMX,OAAO,GAEjCxJ,KAAK8E,QAAQR,SAAShB,IACrBA,EAAOyN,oBAAoB,IAG5B/Q,KAAK8E,QAAQR,SAAShB,IACrB,IAAIkG,EAASlG,EAAOuJ,YAEjBrD,EAASsH,IACXA,EAAYtH,MAIdxJ,KAAKwd,eAAerT,MAAMX,OAASsH,EAAY,KAE/C9Q,KAAK8E,QAAQR,SAAShB,IACrBA,EAAOkN,cAAcxQ,KAAKD,MAAMyC,QAAQgM,sBAAuBsC,EAAU,IAG1E9Q,KAAKD,MAAMgM,WAAWkU,mBAKxB9Z,WAAWoP,GACV,IAAIzQ,EAEJ,GAAqB,iBAAXyQ,EA2BT,OAAOvV,KAAK0d,eAAenI,KAAY,EAzBvC,GAAGA,aAAmBhQ,EAErB,OAAOgQ,EACF,GAAGA,aAAmBlS,EAE3B,OAAOkS,EAAQ/P,aAAc,EACxB,GAA0B,oBAAhB0a,aAA+B3K,aAAmB2K,YAAY,CAc7E,OAZApb,EAAU,GAEV9E,KAAK8E,QAAQR,SAAShB,IACrBwB,EAAQN,KAAKlB,GACbwB,EAAUA,EAAQuM,OAAO/N,EAAO6N,YAAW,GAAM,IAItCrM,EAAQwa,MAAMhc,GAClBA,EAAOgG,UAAYiM,MAGX,EASlB,OAAO,EAGR4K,iBAAiB7Y,GAChB,OAAOtH,KAAK0d,eAAepW,GAG5B8Y,sBAAsBC,GACrB,IAAIC,EAAU,GASd,OAPAvR,OAAOC,KAAKhP,KAAK0d,gBAAgBpZ,SAASgD,IACzBA,EAAMyD,MAAM,KAAK,KAChBsV,GAChBC,EAAQ9b,KAAKxE,KAAK0d,eAAepW,OAI5BgZ,EAGR3M,iBAAiB7B,GAChB,OAAO9R,KAAKqa,eAAevI,GAG5ByO,wBACC,IAAIzO,EAAQ9R,KAAKqa,eAAe7E,WAAWiG,GACnCA,EAAI9W,UAGZ,OAAOmN,GAAS,GAAI9R,KAAKqa,eAAevI,GAGzCX,aACC,OAAOnR,KAAK8E,QAGb2O,gBAAgBnQ,GACf,OAAOtD,KAAKqa,eAAe7E,WAAWiG,GAC9BnY,IAAWmY,IAKpB+E,iBACC,OAAOxgB,KAAKqa,eAIbjJ,SAAS4F,GACRhX,KAAKqa,eAAe/V,SAAQ,CAAChB,EAAO2K,KACnC+I,EAAS1T,EAAQ2K,EAAE,IAKrBwS,eAAeC,GACd,IAAIvb,EAAS,GAQb,OANAnF,KAAKqa,eAAe/V,SAAShB,MACxBod,GAAWA,GAAUpd,EAAOqB,UAC/BQ,EAAOX,KAAKlB,EAAOW,oBAIdkB,EAIRwb,oBACC,IAAIxb,EAAS,GAMb,OAJAnF,KAAK8E,QAAQR,SAAShB,IACrB6B,EAAOX,KAAKlB,EAAOW,eAAc,GAAM,IAGjCkB,EAGRyb,cAAcC,GACb,IAAI1b,EAAS,GAOb,OANU0b,EAAa7gB,KAAK8E,QAAU9E,KAAKqa,gBAEnC/V,SAAShB,IAChB6B,EAAOX,KAAKlB,EAAOmB,eAAe,IAG5BU,EAGR4B,WACC,IAAIE,EAAQ,EAQZ,OANAjH,KAAKqa,eAAe/V,SAAShB,IACzBA,EAAOqB,UACTsC,GAAS3D,EAAOyD,eAIXE,EAGRb,WAAW0a,EAAM9a,EAAIC,GACpBD,EAAGsD,QAAQ0D,WAAW2P,aAAamE,EAAKxX,QAAStD,EAAGsD,SAEjDrD,GACFD,EAAGsD,QAAQ0D,WAAW2P,aAAa3W,EAAGsD,QAASwX,EAAKxX,SAGrDtJ,KAAK+gB,iBAAiBD,EAAM9a,EAAIC,GAEhCjG,KAAK0R,uBAEL1R,KAAKD,MAAMgM,WAAWiV,eAGvBD,iBAAiBD,EAAM9a,EAAIC,GACvB6a,EAAKxb,OAAOT,QACd7E,KAAKihB,mBAAmBH,EAAKxb,OAAOR,QAASgc,EAAM9a,EAAIC,GAEvDjG,KAAKihB,mBAAmBjhB,KAAK8E,QAASgc,EAAM9a,EAAIC,GAGjDjG,KAAKihB,mBAAmBjhB,KAAKqa,eAAgByG,EAAM9a,EAAIC,GAAO,GAE9DjG,KAAKoH,iBAAgB,GAErBpH,KAAKiC,SAAS,eAAgB6e,EAAM9a,EAAIC,GAErCjG,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAe0e,EAAKrc,eAAgBzE,KAAKD,MAAM6F,cAAcgb,iBAIrFK,mBAAmBnc,EAASgc,EAAM9a,EAAIC,EAAOib,GAC5C,IACAC,EADIC,EAAYtc,EAAQmK,QAAQ6R,GAG5BM,GAAa,IAEhBtc,EAAQiN,OAAOqP,EAAW,IAE1BD,EAAUrc,EAAQmK,QAAQjJ,KAEX,EAEXC,IACFkb,GAAkB,GAInBA,EAAUC,EAGXtc,EAAQiN,OAAOoP,EAAS,EAAGL,GAExBI,IAEKlhB,KAAKkC,MAAM,qBAAsB,CAAC4e,EAAM9a,EAAIC,GAAQ,KAAM,KAAO,IAE5DoL,OAAOrR,KAAKD,MAAMgM,WAAWyG,MAEpClO,SAAQ,SAASmE,GACrB,GAAGA,EAAIpE,MAAMe,OAAO,CACnB,IAAIb,EAAOkE,EAAIpE,MAAM0N,OAAOqP,EAAW,GAAG,GAC1C3Y,EAAIpE,MAAM0N,OAAOoP,EAAS,EAAG5c,QAQlCsB,eAAevC,EAAQoC,EAAUC,GAChC,IAAIgF,EAAO,EACXoI,EAASzP,EAAOwP,gBAChBuO,EAAS,EACTxB,EAAQvc,EAAOU,aAGf,OAAO,IAAImP,SAAQ,CAACC,EAASC,KAU5B,QARuB,IAAb3N,IACTA,EAAW1F,KAAKD,MAAMyC,QAAQ8e,6BAGP,IAAd3b,IACTA,EAAY3F,KAAKD,MAAMyC,QAAQ+e,yBAG7Bje,EAAOqB,QAAQ,CAGjB,OAAOe,GACN,IAAK,SACL,IAAK,SACJ2b,GAAUrhB,KAAKsJ,QAAQ8I,YAAc,EACrC,MAED,IAAK,QACJiP,EAASxB,EAAMzN,YAAcpS,KAAKwd,eAAepL,YAKnD,IAAIzM,GACAoN,EAAS,GAAKA,EAAS8M,EAAMzT,YAAcpM,KAAKsJ,QAAQ8I,YAC1D,OAAO,EAKTzH,EAAOoI,EAASsO,EAEhB1W,EAAOuH,KAAKG,IAAIH,KAAKI,IAAI3H,EAAM3K,KAAKD,MAAMgM,WAAWzC,QAAQkY,YAAcxhB,KAAKD,MAAMgM,WAAWzC,QAAQ8I,aAAa,GAEtHpS,KAAKD,MAAMgM,WAAWoS,iBAAiBxT,GACvC3K,KAAKme,iBAAiBxT,GAEtByI,SAEA/M,QAAQC,KAAK,qCACb+M,EAAO,wCAOVkI,cAAc9S,GACb,IAAIpE,EAAQ,GAMZ,OAJArE,KAAKqa,eAAe/V,SAAShB,IAC5Be,EAAMG,KAAKlB,EAAOkQ,aAAa/K,GAAK,IAG9BpE,EAIRod,mBACC,IAAIC,EAAa1hB,KAAKD,MAAMuJ,QAAQ8I,YACpCuP,EAAa,EA+Bb,OA5BG3hB,KAAKD,MAAMgM,WAAWzC,QAAQmP,aAAezY,KAAKD,MAAMgM,WAAWzC,QAAQsH,eAC7E8Q,GAAc1hB,KAAKD,MAAMgM,WAAWzC,QAAQ8C,YAAcpM,KAAKD,MAAMgM,WAAWzC,QAAQ8I,aAGzFpS,KAAKqa,eAAe/V,SAAQ,SAAShB,GACpC,IAAI2D,EAAOQ,EAAUma,EAElBte,EAAOqB,UAETsC,EAAQ3D,EAAOwH,WAAW7D,OAAS,EAEnCQ,EAAWmI,SAAStM,EAAOmE,UAIzBma,EAFkB,mBAChB3a,EAAMgI,QAAQ,MAAQ,EACZyS,EAAa,IAAO9R,SAAS3I,GAE9B2I,SAAS3I,GAGVA,EAGZ0a,GAAcC,EAAWna,EAAWma,EAAWna,MAK1Cka,EAGR1N,UAAUnJ,EAAY6U,EAAQC,GAC7B,OAAO,IAAIzM,SAAQ,CAACC,EAASC,KAC5B,IAAI/P,EAAStD,KAAKwf,WAAW1U,EAAY6U,EAAQC,GAEjD5f,KAAKyf,kBAELzf,KAAKiC,SAAS,aAAc6I,EAAY6U,EAAQC,GAExB,cAArB5f,KAAKsB,cACPgC,EAAO6D,oBAGRnH,KAAK0f,QAAO,GAEZ1f,KAAKD,MAAMgM,WAAWiV,eAEtBhhB,KAAKoH,kBAELgM,EAAQ9P,EAAO,IAKjBiQ,iBAAiBjQ,GAChB,IACAwO,EADIxK,EAAQhE,EAAOY,WAIhBoD,UACKtH,KAAK0d,eAAepW,IAI5BwK,EAAQ9R,KAAKqa,eAAepL,QAAQ3L,KAExB,GACXtD,KAAKqa,eAAetI,OAAOD,EAAO,IAInCA,EAAQ9R,KAAK8E,QAAQmK,QAAQ3L,KAEjB,GACXtD,KAAK8E,QAAQiN,OAAOD,EAAO,GAG5B9R,KAAK0R,uBAEL1R,KAAK0f,SAGNtY,gBAAgB6P,EAAQ9W,GACnBH,KAAK+M,cAGM,IAAXkK,IAAgC,IAAXA,GAA8C,OAA3BjX,KAAK4d,qBAC/C5d,KAAK4d,kBAAoB3G,GAH1BjX,KAAK6d,SAASzW,gBAAgB6P,EAAQ9W,GAQxC+W,cACClX,KAAK+M,aAAc,EACnB/M,KAAK4d,kBAAoB,KAG1BiE,gBACC7hB,KAAK+M,aAAc,EACnB/M,KAAK0R,uBACL1R,KAAK6d,SAASzW,gBAAgBpH,KAAK4d,mBAKpC8B,OAAOhe,GACH0S,EAAQmE,UAAUvY,KAAKsJ,UACzBtJ,KAAK0R,uBAGHhQ,IACF1B,KAAKD,MAAMgM,WAAW+V,cACtB9hB,KAAKD,MAAMgM,WAAWiV,gBAGnBhhB,KAAKmC,QAAQ,kBAAmBT,IACnC1B,KAAKyB,cAAcC,GAGpB1B,KAAKiC,SAAS,eAAgBP,GAE9B1B,KAAKD,MAAMgiB,cAAcrC,UCtuBZ,MAAMsC,EAEpBliB,YAAa2I,GAGZ,OAFAzI,KAAKiiB,KAAOxZ,EAEL,IAAIhF,MAAMzD,KAAM,CACtB0D,IAAK,SAASC,EAAQC,EAAMC,GAC3B,YAA4B,IAAjBF,EAAOC,GACVD,EAAOC,GAEPD,EAAOse,KAAKliB,MAAM+D,wBAAwBC,OAAO,MAAOJ,EAAOse,KAAMre,MAMhF8E,QAAQC,GACP,OAAO3I,KAAKiiB,KAAKvZ,QAAQC,GAG1B3E,aACC,OAAOhE,KAAKiiB,KAAKje,aAGlBI,WACC,IAAIC,EAAQ,GAMZ,OAJArE,KAAKiiB,KAAK7d,WAAWE,SAAQ,SAASC,GACrCF,EAAMG,KAAKD,EAAKE,mBAGVJ,EAGRqY,QAAQpZ,GACP,IAAIiB,EAAOvE,KAAKiiB,KAAKvF,QAAQpZ,GAC7B,QAAOiB,GAAOA,EAAKE,eAGpB0I,WACC,OAAOnN,KAAKiiB,KAAKvZ,QAAQ,QAAQ1I,KAAKiiB,KAAKliB,MAAMyC,QAAQsP,OAG1DoQ,cACC,OAAOliB,KAAKiiB,KAAKC,cAGlBC,cAAcnL,GACb,OAAOhX,KAAKiiB,KAAKE,cAAcnL,GAGhC/R,SACC,OAAOjF,KAAKiiB,KAAKhd,SAGlBQ,SAASC,EAAUC,GAClB,OAAO3F,KAAKiiB,KAAKliB,MAAMgM,WAAW0L,YAAYzX,KAAKiiB,KAAMvc,EAAUC,GAGpEI,KAAKC,EAAIC,GACRjG,KAAKiiB,KAAKG,UAAUpc,EAAIC,GAGzBgR,OAAO/W,GACN,OAAOF,KAAKiiB,KAAKI,WAAWniB,GAG7BoiB,kBACCtiB,KAAKiiB,KAAKK,iBAAgB,GAG3B9c,WACC,OAAOxF,KAAKiiB,KAGbM,WACC,OAAOviB,KAAKiiB,KAAKjB,eAGlBlb,WACC,OAAO9F,KAAKiiB,KAAKliB,MAGlByiB,aACC,IAAI/Z,EAAMzI,KAAKiiB,KAAKQ,UACpB,OAAOha,EAAMA,EAAIhE,eAAiBgE,EAGnCia,aACC,IAAIja,EAAMzI,KAAKiiB,KAAKU,UACpB,OAAOla,EAAMA,EAAIhE,eAAiBgE,GCvFrB,MAAMma,UAAY/iB,EAChCC,YAAaI,EAAMoF,EAAQ9B,EAAO,OACjC6F,MAAM/D,EAAOvF,OAEbC,KAAKsF,OAASA,EACdtF,KAAKE,KAAO,GACZF,KAAKwD,KAAOA,EACZxD,KAAKsJ,SAAU,EACftJ,KAAKS,QAAU,GACfT,KAAKqE,MAAQ,GACbrE,KAAKwJ,OAAS,EACdxJ,KAAK4M,aAAe,GACpB5M,KAAK6iB,cAAe,EACpB7iB,KAAK8iB,YAAc,EACnB9iB,KAAK0Z,aAAc,EACnB1Z,KAAKyS,mBAAoB,EACzBzS,KAAK0F,SAAW,EAChB1F,KAAK+iB,iBAAmB,GAExB/iB,KAAKyJ,UAAY,KAEjBzJ,KAAKgjB,SAAU,EAEfhjB,KAAKijB,QAAQ/iB,GAGdgjB,SACKljB,KAAKgjB,UACRhjB,KAAKgjB,SAAU,EACfhjB,KAAK4J,mBAIPI,gBACC,IAAIuE,EAAKxE,SAASC,cAAc,OAEhCuE,EAAGvD,UAAUC,IAAI,iBACjBsD,EAAGrE,aAAa,OAAQ,OAExBlK,KAAKsJ,QAAUiF,EAGhBvK,aAEC,OADAhE,KAAKkjB,SACEljB,KAAKsJ,QAGb6Z,gBACKnjB,KAAKsJ,SAAWtJ,KAAKsJ,QAAQ0D,YAChChN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAI3CM,kBACC5J,KAAKgK,gBACLhK,KAAKiC,SAAS,WAAYjC,MAG3Bub,gBACCvb,KAAKqE,MAAQrE,KAAKD,MAAM6F,cAAc2V,cAAcvb,MAIrDyW,WAAW/U,EAAOmX,GAGjB,GAFA7Y,KAAKkjB,UAEDljB,KAAK0Z,aAAehY,EAAM,CAI7B,IAFA1B,KAAKojB,cAECpjB,KAAKsJ,QAAQgC,YAAYtL,KAAKsJ,QAAQiC,YAAYvL,KAAKsJ,QAAQgC,YAErEtL,KAAKiC,SAAS,oBAAqBjC,MAEnCA,KAAKub,gBAELvb,KAAK0Z,aAAc,EAEnB1Z,KAAKD,MAAM6F,cAAciY,SAAS1G,eAAenX,KAAM6Y,GAEpDnX,GACF1B,KAAKsiB,kBAGNtiB,KAAKiC,SAAS,aAAcjC,MAEzBA,KAAKD,MAAMyC,QAAQ6gB,cACrBrjB,KAAKD,MAAMyC,QAAQ6gB,aAAarjB,KAAKyE,gBAGtCzE,KAAKiC,SAAS,mBAAoBjC,WAElCA,KAAKD,MAAM6F,cAAciY,SAASzG,iBAAiBpX,KAAM6Y,GAI3DyK,WACCtjB,KAAKqE,MAAMC,SAASC,IACnBA,EAAKkH,cAAc,IAIrBgB,qBACCzM,KAAKyS,mBAAoB,EAEtBzS,KAAKsJ,SAAyC,OAA9BtJ,KAAKsJ,QAAQoJ,cAC/B1S,KAAKsiB,iBAAgB,GAIvBjH,eACCrb,KAAK0Z,aAAc,EAGpB6J,qBACCvjB,KAAKyS,mBAAoB,EAG1BuO,aAAawC,GACZxjB,KAAK0Z,aAAc,EACnB1Z,KAAKyS,mBAAoB,EAErBzS,KAAK6iB,eACR7iB,KAAKwJ,OAAS,EACdxJ,KAAK4M,aAAe,IAGlB5M,KAAKsJ,SAAyC,OAA9BtJ,KAAKsJ,QAAQoJ,cAC/B1S,KAAKyW,YAAW,GAGjBzW,KAAKiC,SAAS,eAAgBjC,MAI/B4S,WAAWlR,GACV,IACAoP,EADI2S,EAAY,EAGbzjB,KAAKD,MAAMyC,QAAQkhB,UACrB1jB,KAAKwJ,OAASxJ,KAAKD,MAAMyC,QAAQkhB,WAEjC5S,EAAY9Q,KAAKD,MAAMyC,QAAQmhB,cAAgB3jB,KAAKsJ,QAAQsH,aAAe,EAE3E5Q,KAAKqE,MAAMC,SAAQ,SAASC,GAC3B,IAAIiF,EAASjF,EAAKsI,YACfrD,EAASia,IACXA,EAAYja,MAKbxJ,KAAKwJ,OADH9H,EACYwQ,KAAKG,IAAIoR,EAAW3S,GAEpB9Q,KAAK6iB,aAAe7iB,KAAKwJ,OAAS0I,KAAKG,IAAIoR,EAAW3S,IAItE9Q,KAAK4M,aAAe5M,KAAKwJ,OAASxJ,KAAKwJ,OAAS,KAAO,GACvDxJ,KAAK8iB,YAAc9iB,KAAKsJ,QAAQwD,aAIjC+F,gBACC7S,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAKoI,eAGN3M,KAAKyS,mBAAoB,EAG1BE,kBACC3S,KAAKqE,MAAMC,SAAQ,SAASC,GAC3BA,EAAKmI,iBAKP4V,gBAAgB5gB,GACZA,IAAU1B,KAAKD,MAAMyC,QAAQkhB,WAC/B1jB,KAAK2S,kBAGN3S,KAAK4S,WAAWlR,GAEhB1B,KAAK6S,gBAINlG,UAAUnD,EAAQ9H,IACd1B,KAAKwJ,QAAUA,GAAU9H,KAE3B1B,KAAK6iB,cAAe,EAEpB7iB,KAAKwJ,OAASA,EACdxJ,KAAK4M,aAAepD,EAASA,EAAS,KAAO,GAE7CxJ,KAAK6S,gBAGL7S,KAAK8iB,YAAc9iB,KAAKsJ,QAAQwD,cAKlCD,YACC,OAAO7M,KAAK8iB,YAIb/b,WACC,OAAO/G,KAAKsJ,QAAQ8C,YAIrBa,WAAW1I,GACV,IAAIuN,EAAQ9R,KAAKqE,MAAM4K,QAAQ1K,GAE5BuN,GAAS,GACX9R,KAAKqE,MAAM0N,OAAOD,EAAO,GAK3BmR,QAAQ/iB,GACPF,KAAKE,KAAOF,KAAKkC,MAAM,uBAAwB,CAAClC,KAAME,QAAOK,EAAWL,GAExEF,KAAKiC,SAAS,sBAAuBjC,MAItCqiB,WAAWuB,GACV,IAEAC,EAFIlf,EAAU3E,KAAKsJ,SAAW8K,EAAQmE,UAAUvY,KAAKsJ,SACrDwa,EAAW,GAGX,OAAO,IAAI3Q,SAAQ,CAACC,EAASC,KAEF,iBAAhBuQ,IACTA,EAAcG,KAAKC,MAAMJ,IAG1B5jB,KAAKiC,SAAS,uBAAwBjC,MAEnCA,KAAK8B,WAAW,uBAClBgiB,EAAW/U,OAAOiF,OAAO8P,EAAU9jB,KAAKE,MACxC4jB,EAAW/U,OAAOiF,OAAO8P,EAAUF,IAGpCC,EAAa7jB,KAAKkC,MAAM,oBAAqB,CAAClC,KAAM8jB,EAAUF,GAAc,KAAMA,GAGlF,IAAK,IAAIK,KAAYJ,EACpB7jB,KAAKE,KAAK+jB,GAAYJ,EAAWI,GAGlCjkB,KAAKiC,SAAS,sBAAuBjC,MAGrC,IAAK,IAAIikB,KAAYL,EAAa,CAEnB5jB,KAAKD,MAAM6F,cAAcwa,sBAAsB6D,GAErD3f,SAAShB,IAChB,IAAIiB,EAAOvE,KAAK0c,QAAQpZ,EAAOY,YAE/B,GAAGK,EAAK,CACP,IAAI7B,EAAQY,EAAOwG,cAAc+Z,GAC9Btf,EAAK6D,aAAe1F,IACtB6B,EAAKqH,oBAAoBlJ,GAEtBiC,GACFJ,EAAKkH,oBAQP9G,GACF3E,KAAKsiB,iBAAgB,GAElBtiB,KAAKD,MAAMyC,QAAQ6gB,cACrBrjB,KAAKD,MAAMyC,QAAQ6gB,aAAarjB,KAAKyE,kBAGtCzE,KAAK0Z,aAAc,EACnB1Z,KAAKwJ,OAAS,EACdxJ,KAAK4M,aAAe,IAGrB5M,KAAKiC,SAAS,mBAAoBjC,KAAM2E,EAASif,GAIjD5jB,KAAKoC,iBAAiB,aAAcpC,KAAKyE,gBAEtCzE,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAepC,KAAKD,MAAMgM,WAAWrD,WAG5D0K,GAAS,IAIX1K,QAAQC,GACP,OAAGA,EACK3I,KAAKkC,MAAM,oBAAqB,CAAClC,KAAM2I,GAAY,KAAM3I,KAAKE,MAG/DF,KAAKE,KAGbwc,QAAQpZ,GAaP,OAVAA,EAAStD,KAAKD,MAAM6F,cAAcO,WAAW7C,GAEzCtD,KAAK0Z,aAAqC,IAAtB1Z,KAAKqE,MAAMe,QAClCpF,KAAKub,gBAGEvb,KAAKqE,MAAMib,MAAK,SAAS/a,GAChC,OAAOA,EAAKjB,SAAWA,KAMzB8J,aAAa8W,GACZ,OAAOlkB,KAAKqE,MAAMmR,WAAU,SAASjR,GACpC,OAAOA,IAAS2f,KAIlBA,SAAS3O,GACR,OAAOvV,KAAKqE,MAAMib,MAAM/a,GAChBA,EAAK+E,UAAYiM,IAI1BnR,WAKC,OAJIpE,KAAK0Z,aAAqC,IAAtB1Z,KAAKqE,MAAMe,QAClCpF,KAAKub,gBAGCvb,KAAKqE,MAGboe,UAEC,OADUziB,KAAKD,MAAMgM,WAAWoY,eAAenkB,MAAM,KACvC,EAGf2iB,UAEC,OADU3iB,KAAKD,MAAMgM,WAAWqY,eAAepkB,MAAM,KACvC,EAGfoiB,UAAUpc,EAAI2Z,GACb,IAAI0E,EAAQrkB,KAAKD,MAAMgM,WAAWuY,QAAQte,GAEvCqe,GACFrkB,KAAKD,MAAMgM,WAAWwY,cAAcvkB,KAAMqkB,GAAQ1E,GAClD3f,KAAKD,MAAMgM,WAAWyY,kBAAkB,WAAW,GAAO,IAE1Dne,QAAQC,KAAK,sCAAuCN,GAKtDf,SAKC,OAJAjF,KAAKiC,SAAS,aAAcjC,MAE5BA,KAAKykB,eAEEtR,QAAQC,UAGhBqR,aAAavN,GACZlX,KAAK0kB,gBAEL1kB,KAAKD,MAAMgM,WAAW4Y,UAAU3kB,KAAMkX,GAEtClX,KAAKojB,cAELpjB,KAAK0Z,aAAc,EACnB1Z,KAAKyS,mBAAoB,EACzBzS,KAAKsJ,SAAU,EAEftJ,KAAKiC,SAAS,cAAejC,MAG9B0kB,gBACC1kB,KAAKiC,SAAS,eAAgBjC,MAG/BojB,cACC,IAAI9P,EAAYtT,KAAKqE,MAAMe,OAE3B,IAAI,IAAI6I,EAAI,EAAGA,EAAIqF,EAAWrF,IAC7BjO,KAAKqE,MAAM,GAAGY,SAIhB2f,OAIC,GAHA5kB,KAAK0kB,gBACL1kB,KAAKojB,cAEFpjB,KAAKsJ,QAAQ,CACf,KAAMtJ,KAAKsJ,QAAQgC,YAAYtL,KAAKsJ,QAAQiC,YAAYvL,KAAKsJ,QAAQgC,YAElEtL,KAAKsJ,QAAQ0D,YACfhN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAI3CtJ,KAAKsJ,SAAU,EACftJ,KAAKS,QAAU,GAGhBokB,cACC,OAAO7kB,KAAKD,MAAMgM,WAAW8L,iBAAiBiE,SAAS9b,MAGxDkiB,cACC,QAAOliB,KAAK6kB,eAAgB7kB,KAAK0F,SAGlCof,YAAYpf,GACRA,GAAY1F,KAAK0F,WACnB1F,KAAK0F,SAAWA,EAEhB1F,KAAK+iB,iBAAiBze,SAAS0S,IAC9BA,EAAShX,KAAK0F,SAAS,KAK1Byc,cAAcnL,GACbhX,KAAK+iB,iBAAiBve,KAAKwS,GAE3BA,EAAShX,KAAK0F,UAGfqf,WACC,OAAO/kB,KAAKS,QAAQukB,QAAS,EAI9BvgB,eAKC,OAJIzE,KAAKyJ,YACRzJ,KAAKyJ,UAAY,IAAIuY,EAAahiB,OAG5BA,KAAKyJ,WCzcC,MAAMwb,UAAsB7O,EAC1CtW,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKwW,iBAAmB,OAExBxW,KAAK0Y,UAAY,EACjB1Y,KAAKmZ,WAAa,EAElBnZ,KAAK0Y,UAAY,EACjB1Y,KAAKmZ,WAAa,EAGnBzC,YAIC,IAHA,IAAIpN,EAAUtJ,KAAKuW,aAGbjN,EAAQgC,YAAYhC,EAAQiC,YAAYjC,EAAQgC,YAEtDhC,EAAQoP,UAAY,EACpBpP,EAAQ6P,WAAa,EAErB7P,EAAQa,MAAM1C,SAAW,GACzB6B,EAAQa,MAAM2G,UAAY,GAC1BxH,EAAQa,MAAME,QAAU,GACxBf,EAAQa,MAAM+a,WAAa,GAG5BrO,aACC,IAAIvN,EAAUtJ,KAAKuW,aACnB4O,GAAmB,EACnBC,EAAYrb,SAASgP,yBACrBvG,EAAOxS,KAAKwS,OAEZA,EAAKlO,SAAQ,CAACmE,EAAKqJ,KAClB9R,KAAK8X,SAASrP,EAAKqJ,GACnBrJ,EAAIgO,YAAW,GAAO,GAEL,UAAbhO,EAAIjF,OACP2hB,GAAmB,GAGpBC,EAAU5Z,YAAY/C,EAAIzE,aAAa,IAGxCsF,EAAQkC,YAAY4Z,GAEpB5S,EAAKlO,SAASmE,IACbA,EAAI6a,WAEA7a,EAAIgK,mBACPhK,EAAImK,YAAW,MAIjBJ,EAAKlO,SAASmE,IACTA,EAAIgK,mBACPhK,EAAIoK,mBAOLvJ,EAAQa,MAAM1C,SADZ0d,EACuBnlB,KAAKD,MAAM6F,cAAcmB,WAAa,KAEtC,GAK3BgQ,aAAaC,GACZhX,KAAK0W,YAEFM,GACFA,IAGDhX,KAAK6W,aAGNa,sBAAsBjP,GACrB,IAAI4c,EAASjR,EAAQoE,SAAS/P,EAAIzE,cAAcuG,IAEhD,QAAS2H,KAAK8J,IAAIhc,KAAKqW,gBAAgBqC,UAAY2M,GAAUnT,KAAK8J,IAAIhc,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBzF,aAAeyU,IAG5I5N,YAAYhP,GACX,IAAIsP,EAAQtP,EAAIzE,aAEhBhE,KAAKqW,gBAAgBqC,UAAYtE,EAAQoE,SAAST,GAAOxN,IAAM6J,EAAQoE,SAASxY,KAAKqW,iBAAiB9L,IAAMvK,KAAKqW,gBAAgBqC,UAGlIf,YAAYC,GACX,OAAO5X,KAAKwS,QC9FC,MAAM8S,UAA2BlP,EAC/CtW,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKwW,iBAAmB,OAExBxW,KAAK0Y,UAAY,EACjB1Y,KAAKmZ,WAAa,EAElBnZ,KAAKulB,cAAgB,GAErBvlB,KAAKwlB,QAAU,EACfxlB,KAAKylB,WAAa,EAElBzlB,KAAK0lB,iBAAmB,EACxB1lB,KAAK2lB,oBAAsB,EAE3B3lB,KAAK4lB,WAAa,EAClB5lB,KAAK6lB,cAAgB,EAErB7lB,KAAK8lB,mBAAqB,GAE1B9lB,KAAK+lB,iBAAmB,EAExB/lB,KAAKgmB,uBAAyB,GAC9BhmB,KAAKimB,wBAA0B,EAE/BjmB,KAAKkmB,eAAiB,GACtBlmB,KAAKmmB,kBAAoB,GAO1BzP,YAIC,IAHA,IAAIpN,EAAUtJ,KAAKuW,aAGbjN,EAAQgC,YAAYhC,EAAQiC,YAAYjC,EAAQgC,YAEtDhC,EAAQa,MAAM6G,WAAa,GAC3B1H,EAAQa,MAAMic,cAAgB,GAC9B9c,EAAQa,MAAM2G,UAAY,GAC1BxH,EAAQa,MAAME,QAAU,GACxBf,EAAQa,MAAM+a,WAAa,GAE3BllB,KAAKqW,gBAAgBqC,UAAY,EACjC1Y,KAAKqW,gBAAgB8C,WAAa,EAElCnZ,KAAK0Y,UAAY,EACjB1Y,KAAKmZ,WAAa,EAElBnZ,KAAKwlB,QAAU,EACfxlB,KAAKylB,WAAa,EAClBzlB,KAAK4lB,WAAa,EAClB5lB,KAAK6lB,cAAgB,EACrB7lB,KAAK0lB,iBAAmB,EACxB1lB,KAAK2lB,oBAAsB,EAG5B9O,aACC7W,KAAKqmB,qBAGNtP,aAAaC,GASZ,IARA,IAAI0B,EAAY1Y,KAAKqW,gBAAgBqC,UACjC4N,GAAS,EACTC,GAAY,EAEZ5b,EAAO3K,KAAKD,MAAMgM,WAAWoN,WAE7B3G,EAAOxS,KAAKwS,OAERvE,EAAIjO,KAAKwlB,QAASvX,GAAKjO,KAAKylB,WAAYxX,IAE/C,GAAGuE,EAAKvE,GAAG,CACV,IAAI8N,EAAOrD,EAAYlG,EAAKvE,GAAGjK,aAAa2U,UAE5C,MAAiB,IAAd4N,GAAuBrU,KAAK8J,IAAID,GAAQwK,GAI1C,MAHAA,EAAYxK,EACZuK,EAASrY,EAOZuE,EAAKlO,SAASmE,IACbA,EAAI8a,oBAAoB,IAGtBvM,GACFA,IAGEhX,KAAKwS,OAAOpN,OACdpF,KAAKqmB,oBAA+B,IAAXC,EAAmBtmB,KAAKwS,KAAKpN,OAAS,EAAIkhB,GAAS,EAAMC,GAAa,IAE/FvmB,KAAKiY,QACLjY,KAAKD,MAAMgM,WAAWya,cAGvBxmB,KAAKqX,cAAc1M,GAGpB0M,cAAc1M,GACb3K,KAAKD,MAAMgM,WAAWoS,iBAAiBxT,GAGxC4M,WAAWhN,EAAK+M,GACf,IAAImP,EAAUlc,EAAMvK,KAAK0lB,iBACrBgB,EAAanc,EAAMvK,KAAK2lB,oBACxBgB,EAAiC,EAAxB3mB,KAAK+lB,iBACdvT,EAAOxS,KAAKwS,OAIhB,GAFAxS,KAAK0Y,UAAYnO,GAEbkc,EAAUE,GAAUD,EAAaC,EAAO,CAE3C,IAAIhc,EAAO3K,KAAKD,MAAMgM,WAAWoN,WACjCnZ,KAAKqmB,mBAAmBnU,KAAKC,MAAOnS,KAAKqW,gBAAgBqC,UAAY1Y,KAAKqW,gBAAgBoC,aAAgBjG,EAAKpN,SAC/GpF,KAAKqX,cAAc1M,QAGhB2M,GAECmP,EAAU,GACZzmB,KAAK4mB,WAAWpU,GAAOiU,GAGrBC,EAAa,IAEZ1mB,KAAK6mB,iBAAmB7mB,KAAK0Y,UAAY1Y,KAAK+lB,iBAChD/lB,KAAK8mB,iBAAiBtU,GAAOkU,GAE7B1mB,KAAK2lB,oBAAsB3lB,KAAK0Y,aAK/BgO,GAAc,GAChB1mB,KAAK+mB,cAAcvU,EAAMkU,GAIvBD,GAAW,IAEVzmB,KAAK0Y,UAAY1Y,KAAK+lB,iBACxB/lB,KAAKgnB,cAAcxU,EAAMiU,GAEzBzmB,KAAK0lB,iBAAmB1lB,KAAK0Y,YAOlClB,SACCxX,KAAK+lB,iBAAmB/lB,KAAKD,MAAMyC,QAAQykB,sBAAwBjnB,KAAKqW,gBAAgBzF,aAGzF8G,sBAAsBjP,GACrB,IAAI4P,EAAWrY,KAAKwS,OAAOvD,QAAQxG,GAEnC,QAASyJ,KAAK8J,IAAIhc,KAAKwlB,QAAUnN,GAAYnG,KAAK8J,IAAIhc,KAAKylB,WAAapN,IAGzEZ,YAAYhP,GACX,IAAIqJ,EAAQ9R,KAAKwS,OAAOvD,QAAQxG,GAE7BqJ,GAAS,GACX9R,KAAKqmB,mBAAmBvU,GAAO,GAIjC6F,YAAYC,GACX,IAAIsP,EAAUlnB,KAAKqW,gBAAgBqC,UACnCyO,EAAannB,KAAKqW,gBAAgBzF,aAAesW,EACjDE,GAAW,EACXd,EAAS,EACTe,EAAY,EACZ7U,EAAOxS,KAAKwS,OAEZ,GAAGoF,EACF0O,EAAStmB,KAAKwlB,QACd6B,EAAYrnB,KAAKylB,gBAEjB,IAAI,IAAIxX,EAAIjO,KAAKwlB,QAASvX,GAAKjO,KAAKylB,WAAYxX,IAC/C,GAAGuE,EAAKvE,GACP,GAAImZ,EAYC,CACJ,KAAGD,EAAa3U,EAAKvE,GAAGjK,aAAa2U,WAAa,GAGjD,MAFA0O,EAAYpZ,OAbb,GAAIiZ,EAAU1U,EAAKvE,GAAGjK,aAAa2U,WAAc,EAChD2N,EAASrY,MACL,CAGJ,GAFAmZ,GAAW,IAERD,EAAa3U,EAAKvE,GAAGjK,aAAa2U,WAAa,GAGjD,MAFA0O,EAAYpZ,EAgBlB,OAAOuE,EAAK8U,MAAMhB,EAAQe,EAAY,GAQvChB,mBAAmB3gB,EAAU6hB,EAAWxU,GACvC,IAWAtK,EACA+e,EAZIle,EAAUtJ,KAAKuW,aACnBkR,EAASznB,KAAKqW,gBACdqR,EAAS,EACTC,EAAa,EACbjE,EAAY,EACZkE,EAAiB,EACjBC,EAAe,EACf5Z,EAAI,EACJuE,EAAOxS,KAAKwS,OACZsV,EAAYtV,EAAKpN,OACjB0M,EAAQ,EAGRiW,EAAe,GACfC,EAAoB,EACpBC,EAAe,EACfC,EAAcloB,KAAKD,MAAMgM,WAAWmc,YACpCC,EAAkBnoB,KAAKqW,gBAAgBzF,aACvCwX,EAAepoB,KAAKD,MAAMyC,QAAQkhB,UAClC2E,GAAU,EAMV,GAFAtV,EAASA,GAAU,EAFnBrN,EAAWA,GAAY,EAMjB,CACL,KAAM4D,EAAQgC,YAAYhC,EAAQiC,YAAYjC,EAAQgC,aAGtDsc,GAAkBE,EAAYpiB,EAAW,GAAK1F,KAAKulB,eAE/B4C,IACnBziB,GAAYwM,KAAKe,MAAMkV,EAAkBP,GAAkB5nB,KAAKulB,gBAClD,IACb7f,EAAW,GAMbA,GADAgiB,EAASxV,KAAKI,IAAIJ,KAAKG,IAAIH,KAAKC,MAAMnS,KAAK+lB,iBAAmB/lB,KAAKulB,eAAiBvlB,KAAKimB,yBAA0BvgB,QAfnH1F,KAAKiY,QAmBN,GAAG6P,GAAa1T,EAAQmE,UAAUvY,KAAKqW,iBAAiB,CAcvD,IAbArW,KAAKwlB,QAAU9f,EACf1F,KAAKylB,WAAa/f,EAAU,EAEzBwiB,GAAeloB,KAAKD,MAAMyC,QAAQihB,WACjC2E,IACFH,EAAgBE,EAAkBC,EAAiBpoB,KAAK+lB,iBAAmBqC,GAE5EH,EAAe/V,KAAKG,IAAIrS,KAAKgmB,uBAAwB9T,KAAKe,KAAKgV,KAG/DA,EAAeH,GAGRG,GAAgBH,GAAaH,GAAcQ,EAAkBnoB,KAAK+lB,kBAAqBiC,EAAoBhoB,KAAKgmB,yBAA2BhmB,KAAKylB,WAAaqC,EAAW,GAAG,CAMlL,IALAC,EAAe,GACfP,EAAczd,SAASgP,yBAEvB9K,EAAI,EAEIA,EAAIga,GAAiBjoB,KAAKylB,WAAaqC,EAAW,GAEzDrf,EAAM+J,EADNV,EAAQ9R,KAAKylB,WAAa,GAG1BzlB,KAAK8X,SAASrP,EAAKqJ,GAEnBrJ,EAAIgO,YAAW,GAAO,GAClBhO,EAAIgK,mBAAsBzS,KAAKD,MAAMyC,QAAQkhB,WAChDjb,EAAIkK,kBAGL6U,EAAYhc,YAAY/C,EAAIzE,cAC5B+jB,EAAavjB,KAAKiE,GAClBzI,KAAKylB,aACLxX,IAGD,IAAI8Z,EAAa3iB,OAChB,MAGDkE,EAAQkC,YAAYgc,GAKpBO,EAAazjB,SAASmE,IACrBA,EAAI6a,WAEA7a,EAAIgK,mBACPhK,EAAImK,YAAW,MAIjBmV,EAAazjB,SAASmE,IACjBA,EAAIgK,mBACPhK,EAAIoK,mBAINkV,EAAazjB,SAASmE,IACrBib,EAAYjb,EAAIoE,YAEbmb,EAAoBN,EACtBG,GAAgBnE,EAEhBiE,GAAcjE,EAGZA,EAAY1jB,KAAK+lB,mBACnB/lB,KAAK+lB,iBAA+B,EAAZrC,GAEzBsE,GAAmB,IAGpBK,EAAUroB,KAAKD,MAAMgM,WAAWkU,kBAChCkI,EAAkBnoB,KAAKqW,gBAAgBzF,aACpCyX,IAAYH,GAAeloB,KAAKD,MAAMyC,QAAQihB,aAEhD2E,EAAeT,EAAaK,EAC5BC,EAAe/V,KAAKG,IAAIrS,KAAKgmB,uBAAwB9T,KAAKe,KAAMkV,EAAkBC,EAAiBpoB,KAAK+lB,iBAAmBqC,KAIzH1iB,GAQH1F,KAAK4lB,WAAc2B,EAA6CvnB,KAAKulB,cAAgBvlB,KAAKwlB,QAAWzS,EAAtE/S,KAAK0Y,UAAYmP,EAChD7nB,KAAK6lB,cAAgB7lB,KAAKylB,YAAcqC,EAAU,EAAI,EAAI5V,KAAKG,IAAIrS,KAAK6mB,iBAAmB7mB,KAAK4lB,WAAa+B,EAAaE,EAAc,KARxI7nB,KAAK4lB,WAAa,EAElB5lB,KAAKulB,cAAgBrT,KAAKC,OAAOwV,EAAaE,GAAgBG,GAC9DhoB,KAAK6lB,cAAgB7lB,KAAKulB,eAAiBuC,EAAY9nB,KAAKylB,WAAY,GAExEzlB,KAAK6mB,iBAAmBgB,EAAeF,EAAa3nB,KAAK6lB,cAAgBsC,GAM1E7e,EAAQa,MAAM6G,WAAahR,KAAK4lB,WAAW,KAC3Ctc,EAAQa,MAAMic,cAAgBpmB,KAAK6lB,cAAc,KAE9C0B,IACFvnB,KAAK0Y,UAAY1Y,KAAK4lB,aAA8B7S,GAAU/S,KAAKqW,gBAAgBmL,YAAcxhB,KAAKqW,gBAAgBjE,YAAcpS,KAAKqW,gBAAgBvJ,aAAeqb,EAAkB,IAG3LnoB,KAAK0Y,UAAYxG,KAAKI,IAAItS,KAAK0Y,UAAW1Y,KAAKqW,gBAAgBoC,aAAe0P,GAG3EnoB,KAAKqW,gBAAgBmL,YAAcxhB,KAAKqW,gBAAgBjE,aAAemV,IACzEvnB,KAAK0Y,WAAa1Y,KAAKqW,gBAAgBvJ,aAAeqb,GAGvDnoB,KAAK0lB,iBAAmB1lB,KAAK0Y,UAC7B1Y,KAAK2lB,oBAAsB3lB,KAAK0Y,UAEhC+O,EAAO/O,UAAY1Y,KAAK0Y,UAExB1Y,KAAKiC,SAAS,wBAIhB2kB,WAAWpU,EAAM8V,GAQhB,IAPA,IAAIvoB,EAAQC,KAAKuW,aACjBgS,EAAY,GACZC,EAAgB,EAChB1W,EAAQ9R,KAAKwlB,QAAS,EACtBvX,EAAI,EACJwO,GAAU,EAEJA,GACL,GAAGzc,KAAKwlB,QAAQ,CACf,IACA9B,EAAWhK,EADPjR,EAAM+J,EAAKV,GAGZrJ,GAAOwF,EAAIjO,KAAK8lB,oBAClBpC,EAAYjb,EAAIoE,aAAe7M,KAAKulB,cACpC7L,EAAcjR,EAAIiR,YAEf4O,GAAiB5E,GAEnB1jB,KAAK8X,SAASrP,EAAKqJ,GACnB/R,EAAM4c,aAAalU,EAAIzE,aAAcjE,EAAMuL,YAEvC7C,EAAIiR,aAAgBjR,EAAIgK,mBAC3B8V,EAAU/jB,KAAKiE,GAGhBA,EAAIgO,aAEAiD,IACHgK,EAAYjb,EAAIzE,aAAa8I,aAE1B4W,EAAY1jB,KAAK+lB,mBACnB/lB,KAAK+lB,iBAA+B,EAAZrC,IAI1B4E,GAAiB5E,EACjB8E,GAAiB9E,EAEjB1jB,KAAKwlB,UACL1T,IACA7D,KAGAwO,GAAU,GAIXA,GAAU,OAIXA,GAAU,EAIZ,IAAK,IAAIhU,KAAO8f,EACf9f,EAAIkK,kBAGL3S,KAAKyoB,yBAAyBF,GAE3BC,IACFxoB,KAAK4lB,YAAc4C,EAEhBxoB,KAAK4lB,WAAa,IACpB5lB,KAAK4lB,WAAa9T,EAAQ9R,KAAKulB,eAG7BzT,EAAQ,IACV9R,KAAK4lB,WAAa,GAGnB7lB,EAAMoK,MAAM6G,WAAahR,KAAK4lB,WAAa,KAC3C5lB,KAAK0lB,kBAAoB8C,GAI3BxB,cAAcxU,EAAM8V,GAMnB,IALA,IAAII,EAAgB,GACpBF,EAAgB,EAChBva,EAAI,EACJwO,GAAU,EAEJA,GAAQ,CACb,IACAiH,EADIjb,EAAM+J,EAAKxS,KAAKwlB,SAGjB/c,GAAOwF,EAAIjO,KAAK8lB,oBAClBpC,EAAYjb,EAAIoE,aAAe7M,KAAKulB,cAEjC+C,GAAiB5E,GACnB1jB,KAAKwlB,UAEL8C,GAAiB5E,EACjB8E,GAAiB9E,EAEjBgF,EAAclkB,KAAKiE,GACnBwF,KAEAwO,GAAU,GAGXA,GAAU,EAIZ,IAAK,IAAIhU,KAAOigB,EAAc,CAC7B,IAAI3Q,EAAQtP,EAAIzE,aAEb+T,EAAM/K,YACR+K,EAAM/K,WAAWzB,YAAYwM,GAI5ByQ,IACFxoB,KAAK4lB,YAAc4C,EACnBxoB,KAAKuW,aAAapM,MAAM6G,WAAahR,KAAK4lB,WAAa,KACvD5lB,KAAK0lB,kBAAoB1lB,KAAKwlB,QAAUgD,EAAgBA,EAAgBxoB,KAAK+lB,kBAI/EgB,cAAcvU,EAAM8V,GAQnB,IAPA,IAAIvoB,EAAQC,KAAKuW,aACjBgS,EAAY,GACZC,EAAgB,EAChB1W,EAAQ9R,KAAKylB,WAAa,EAC1BxX,EAAI,EACJwO,GAAU,EAEJA,GAAQ,CACb,IACAiH,EAAWhK,EADPjR,EAAM+J,EAAKV,GAGZrJ,GAAOwF,EAAIjO,KAAK8lB,oBAClBpC,EAAYjb,EAAIoE,aAAe7M,KAAKulB,cACpC7L,EAAcjR,EAAIiR,YAEf4O,GAAiB5E,GAEnB1jB,KAAK8X,SAASrP,EAAKqJ,GACnB/R,EAAMyL,YAAY/C,EAAIzE,cAElByE,EAAIiR,aAAgBjR,EAAIgK,mBAC3B8V,EAAU/jB,KAAKiE,GAGhBA,EAAIgO,aAEAiD,IACHgK,EAAYjb,EAAIzE,aAAa8I,aAE1B4W,EAAY1jB,KAAK+lB,mBACnB/lB,KAAK+lB,iBAA+B,EAAZrC,IAI1B4E,GAAiB5E,EACjB8E,GAAiB9E,EAEjB1jB,KAAKylB,aACL3T,IACA7D,KAEAwO,GAAU,GAGXA,GAAU,EAIZ,IAAK,IAAIhU,KAAO8f,EACf9f,EAAIkK,kBAGL3S,KAAKyoB,yBAAyBF,GAE3BC,IACFxoB,KAAK6lB,eAAiB2C,GAEnBxoB,KAAK6lB,cAAgB,GAAK/T,GAASU,EAAKpN,OAAQ,KAClDpF,KAAK6lB,cAAgB,GAGtB9lB,EAAMoK,MAAMic,cAAgBpmB,KAAK6lB,cAAgB,KACjD7lB,KAAK2lB,qBAAuB6C,GAI9B1B,iBAAiBtU,EAAM8V,GAMtB,IALA,IAAII,EAAgB,GACpBF,EAAgB,EAChBva,EAAI,EACJwO,GAAU,EAEJA,GAAQ,CACb,IACAiH,EADIjb,EAAM+J,EAAKxS,KAAKylB,YAGjBhd,GAAOwF,EAAIjO,KAAK8lB,oBAClBpC,EAAYjb,EAAIoE,aAAe7M,KAAKulB,cAEjC+C,GAAiB5E,GACnB1jB,KAAKylB,aAEL6C,GAAiB5E,EACjB8E,GAAiB9E,EAEjBgF,EAAclkB,KAAKiE,GACnBwF,KAEAwO,GAAU,GAGXA,GAAU,EAIZ,IAAK,IAAIhU,KAAOigB,EAAc,CAC7B,IAAI3Q,EAAQtP,EAAIzE,aAEb+T,EAAM/K,YACR+K,EAAM/K,WAAWzB,YAAYwM,GAI5ByQ,IACFxoB,KAAK6lB,eAAiB2C,EAEnBxoB,KAAK6lB,cAAgB,IACvB7lB,KAAK6lB,cAAgB,GAGtB7lB,KAAKuW,aAAapM,MAAMic,cAAgBpmB,KAAK6lB,cAAgB,KAC7D7lB,KAAK2lB,qBAAuB6C,GAI9BC,yBAAyBjW,GACxB,IAAI,IAAI/J,KAAO+J,EACd/J,EAAImK,aAGL,IAAI,IAAInK,KAAO+J,EACd/J,EAAIoK,iBCjnBQ,MAAM8V,UAAmB9oB,EAEvCC,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKsJ,QAAUtJ,KAAK4oB,sBACpB5oB,KAAKuW,aAAevW,KAAK6oB,qBACzB7oB,KAAK8oB,YAAc9oB,KAAK6oB,qBACxB7oB,KAAK+oB,YAAc,KACnB/oB,KAAKgpB,oBAAsB,KAE3BhpB,KAAKipB,aAAc,EACnBjpB,KAAKkpB,WAAa,UAClBlpB,KAAKkoB,aAAc,EAEnBloB,KAAKwS,KAAO,GACZxS,KAAKmpB,mBAAqB,GAC1BnpB,KAAKopB,WAAa,GAClBppB,KAAKqpB,gBAAkB,EAEvBrpB,KAAKspB,YAAc,GACnBtpB,KAAKupB,iBAAmB,EAExBvpB,KAAK0Y,UAAY,EACjB1Y,KAAKmZ,WAAa,EAElBnZ,KAAK+M,aAAc,EACnB/M,KAAKwpB,0BAA2B,EAChCxpB,KAAKypB,6BAA8B,EAEnCzpB,KAAK0pB,aAAe,GACpB1pB,KAAK2pB,gBAAkB,GAEvB3pB,KAAK4pB,eAAiB,EAEtB5pB,KAAK6d,SAAW,KAKjB+K,sBACC,IAAIra,EAAKxE,SAASC,cAAc,OAMhC,OAJAuE,EAAGvD,UAAUC,IAAI,yBACjBsD,EAAGrE,aAAa,WAAY,GAGrBqE,EAGRsa,qBACC,IAAIta,EAAKxE,SAASC,cAAc,OAKhC,OAHAuE,EAAGvD,UAAUC,IAAI,mBACjBsD,EAAGrE,aAAa,OAAQ,YAEjBqE,EAGRsb,wBACC,IAAId,EAAc/oB,KAAKD,MAAMyC,QAAQumB,YASrC,GAP0B,mBAAhBA,IACTA,EAAcA,EAAYjd,KAAK9L,KAAKD,QAGrCgpB,EAAc/oB,KAAKkC,MAAM,cAAe,CAAC6mB,GAAcA,EAAaA,IAAgBA,EAGrE,CACd,IAAIxa,EAAKxE,SAASC,cAAc,OAGhC,GAFAuE,EAAGvD,UAAUC,IAAI,yBAEQ,iBAAf8d,EAAwB,CACjC,IAAI3Y,EAAWrG,SAASC,cAAc,OACtCoG,EAASpF,UAAUC,IAAI,kCACvBmF,EAAShF,UAAY2d,EAErBxa,EAAG/C,YAAY4E,GAEfpQ,KAAKgpB,oBAAsB5Y,MAEI,oBAAhB8P,aAA+B6I,aAAuB7I,aAErE3R,EAAG/C,YAAYud,GACf/oB,KAAKgpB,oBAAsBD,IAE3B1iB,QAAQC,KAAK,+DAAgEyiB,GAE7E/oB,KAAKuO,GAAK,MAGXvO,KAAK+oB,YAAcxa,GAKrBvK,aACC,OAAOhE,KAAKsJ,QAIbwgB,kBACC,OAAO9pB,KAAKuW,aAGbE,aACCzW,KAAK6pB,wBACL7pB,KAAK8d,qBAGL9d,KAAKsJ,QAAQkC,YAAYxL,KAAKuW,cAE9BvW,KAAKipB,aAAc,EAGnBjpB,KAAKsJ,QAAQwG,iBAAiB,UAAU,KACvC,IAAInF,EAAO3K,KAAKsJ,QAAQ6P,WACxB4Q,EAAU/pB,KAAKmZ,WAAaxO,EAC5BJ,EAAMvK,KAAKsJ,QAAQoP,UACnBsR,EAAShqB,KAAK0Y,UAAYnO,EAGvBvK,KAAKmZ,YAAcxO,IACrB3K,KAAKmZ,WAAaxO,EAElB3K,KAAKiC,SAAS,oBAAqB0I,EAAMof,GACzC/pB,KAAKoC,iBAAiB,mBAAoBuI,EAAMof,GAEhD/pB,KAAKiqB,wBAIHjqB,KAAK0Y,WAAanO,IACpBvK,KAAK0Y,UAAYnO,EAEjBvK,KAAK6d,SAAStG,WAAWhN,EAAKyf,GAE9BhqB,KAAKiC,SAAS,kBAAmBsI,EAAKyf,GACtChqB,KAAKoC,iBAAiB,iBAAkBmI,EAAKyf,OAMhD1F,QAAQ/O,GACP,GAAqB,iBAAXA,EAiBJ,SAAqB,IAAXA,EACf,OAAO,EAOP,OAJYvV,KAAKwS,KAAK8M,MAAM7W,GACpBA,EAAIvI,KAAKF,KAAKD,MAAMyC,QAAQsP,QAAUyD,MAG9B,EAxBhB,GAAGA,aAAmBqN,EAErB,OAAOrN,EACF,GAAGA,aAAmByM,EAE3B,OAAOzM,EAAQ/P,aAAc,EACxB,GAA0B,oBAAhB0a,aAA+B3K,aAAmB2K,YAAY,CAM7E,OAJYlgB,KAAKwS,KAAK8M,MAAM7W,GACpBA,EAAIzE,eAAiBuR,MAGb,EACX,OACE,EAiBV2U,qBAAqBhqB,GAKpB,OAJYF,KAAKwS,KAAK8M,MAAM7W,GACpBA,EAAIvI,OAASA,MAGL,EAGjBiqB,mBAAmBzkB,GAClB,OAAO1F,KAAK6X,iBAAiByH,MAAM7W,GAC3BA,EAAIyZ,gBAAkBxc,GAAY+C,EAAIoc,gBAI/CpN,YAAYhP,EAAK/C,EAAUC,GAC1B,OAAO3F,KAAK6d,SAASzF,oBAAoB3P,EAAK/C,EAAUC,GAIzDsd,QAAQ/iB,EAAMkqB,EAAkBhqB,GAC/B,OAAO,IAAI+S,SAAQ,CAACC,EAASC,KACzB+W,GAAoBpqB,KAAK6X,iBAAiBzS,OACzCpF,KAAKD,MAAMyC,QAAQ6nB,WACrBrqB,KAAKsqB,eAAepqB,GAAM,GAE1BF,KAAKuqB,oBAAmB,KACvBvqB,KAAKsqB,eAAepqB,EAAK,KAIxBF,KAAKD,MAAMyC,QAAQgoB,aAAepqB,GAAkBJ,KAAKD,MAAM2Z,aACjE1Z,KAAKD,MAAM6F,cAAcsZ,2BAA2Bhf,GAErDF,KAAK8hB,cAEL9hB,KAAKsqB,eAAepqB,IAGrBkT,GAAS,IAIXkX,eAAepqB,EAAMkqB,GACpBpqB,KAAKoC,iBAAiB,iBAAkBlC,GAExCF,KAAKyqB,gBAEFtV,MAAMC,QAAQlV,IAChBF,KAAKiC,SAAS,kBAAmB/B,GAEjCA,EAAKoE,SAAQ,CAAC+I,EAAKY,KAClB,GAAGZ,GAAsB,iBAARA,EAAiB,CACjC,IAAI5E,EAAM,IAAIma,EAAIvV,EAAKrN,MACvBA,KAAKwS,KAAKhO,KAAKiE,QAEfpC,QAAQC,KAAK,+FAAgG+G,MAI/GrN,KAAKwkB,mBAAkB,GAAO,EAAO4F,GAErCpqB,KAAKiC,SAAS,iBAAkB/B,GAChCF,KAAKoC,iBAAiB,gBAAiBlC,IAEvCmG,QAAQ0N,MAAM,8GAA+G7T,EAAM,eAAgBA,GAIrJuqB,gBACCzqB,KAAKiC,SAAS,aAEdjC,KAAK0qB,UAEL1qB,KAAKigB,kBAELjgB,KAAKiC,SAAS,cAGfyoB,UACC1qB,KAAKwS,KAAKlO,SAASmE,IAClBA,EAAImc,MAAM,IAGX5kB,KAAKwS,KAAO,GACZxS,KAAKopB,WAAa,GAClBppB,KAAKmpB,mBAAqB,GAC1BnpB,KAAKqpB,gBAAkB,EACvBrpB,KAAKspB,YAAc,GACnBtpB,KAAKupB,iBAAmB,EAGzB5E,UAAUlc,EAAKyO,GACd,IAAIyT,EAAW3qB,KAAKwS,KAAKvD,QAAQxG,GACjCmiB,EAAc5qB,KAAKopB,WAAWna,QAAQxG,GAEnCmiB,GAAe,GACjB5qB,KAAKopB,WAAWrX,OAAO6Y,EAAa,GAGlCD,GAAY,GACd3qB,KAAKwS,KAAKT,OAAO4Y,EAAU,GAG5B3qB,KAAK6qB,cAAc7qB,KAAKopB,YAExBppB,KAAK8qB,oBAAoBtY,IACxB,IAAIuY,EAAevY,EAAKvD,QAAQxG,GAE7BsiB,GAAgB,GAClBvY,EAAKT,OAAOgZ,EAAc,MAIxB7T,GACHlX,KAAKuqB,qBAGNvqB,KAAKgrB,yBAELhrB,KAAKoC,iBAAiB,aAAcqG,EAAIhE,gBAEpCzE,KAAKupB,kBACRvpB,KAAKwmB,aAGHxmB,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAepC,KAAK0I,WAI5CuiB,OAAO/qB,EAAMgrB,EAAKpZ,EAAOoF,GAExB,OADUlX,KAAKmrB,aAAajrB,EAAMgrB,EAAKpZ,EAAOoF,GAK/CkU,QAAQlrB,EAAMgrB,EAAKpZ,EAAOuZ,GACzB,IAAI7Y,EAAO,GAEX,OAAO,IAAIW,SAAQ,CAACC,EAASC,KAC5B6X,EAAMlrB,KAAKsrB,cAAcJ,GAErB/V,MAAMC,QAAQlV,KACjBA,EAAO,CAACA,UAGW,IAAT4R,GAAwBoZ,QAA0B,IAAVpZ,IAA0BoZ,IAC5EhrB,EAAKqrB,UAGNrrB,EAAKoE,SAAQ,CAACmR,EAAMxH,KACnB,IAAIxF,EAAMzI,KAAKirB,OAAOxV,EAAMyV,EAAKpZ,GAAO,GACxCU,EAAKhO,KAAKiE,GACVzI,KAAKiC,SAAS,YAAawG,EAAKgN,EAAMyV,EAAKpZ,EAAM,IAGlD9R,KAAKwkB,oBAAkB6G,GAAqB,mBAA2B,GAAO,GAE9ErrB,KAAKgrB,yBAEFxY,EAAKpN,QACPpF,KAAKwrB,oBAGNpY,EAAQZ,EAAK,IAIf8Y,cAAcJ,GAab,YAZkB,IAARA,IACTA,EAAMlrB,KAAKD,MAAMyC,QAAQipB,WAGf,QAARP,IACFA,GAAM,GAGI,WAARA,IACFA,GAAM,GAGAA,EAGRC,aAAajrB,EAAMgrB,EAAKpZ,EAAOoF,GAC9B,IAGA0T,EAAac,EAHTjjB,EAAMvI,aAAgB0iB,EAAM1iB,EAAO,IAAI0iB,EAAI1iB,GAAQ,GAAIF,MAC3DuK,EAAMvK,KAAKsrB,cAAcJ,GACzBP,GAAY,EAqEZ,OAlEI7Y,IACH4Z,EAAc1rB,KAAKkC,MAAM,sBAAuB,CAACuG,EAAK8B,GAAM,KAAM,CAACuH,QAAOvH,QAE1EuH,EAAQ4Z,EAAY5Z,MACpBvH,EAAMmhB,EAAYnhB,UAGC,IAAVuH,IACTA,EAAQ9R,KAAKskB,QAAQxS,KAGtBA,EAAQ9R,KAAKkC,MAAM,mBAAoB,CAACuG,EAAKqJ,EAAOvH,GAAM,KAAMuH,MAG/D6Y,EAAW3qB,KAAKwS,KAAKvD,QAAQ6C,IAG3BA,GAAS6Y,GAAY,GACvBC,EAAc5qB,KAAKopB,WAAWna,QAAQ6C,GAEtC9R,KAAK8qB,oBAAmB,SAAStY,GAChC,IAAIuY,EAAevY,EAAKvD,QAAQ6C,GAE7BiZ,GAAgB,GAClBvY,EAAKT,OAAQxH,EAAMwgB,EAAeA,EAAe,EAAI,EAAGtiB,MAIvDmiB,GAAe,GACjB5qB,KAAKopB,WAAWrX,OAAQxH,EAAMqgB,EAAcA,EAAc,EAAI,EAAGniB,GAGlEzI,KAAKwS,KAAKT,OAAQxH,EAAMogB,EAAWA,EAAW,EAAI,EAAGliB,IAIlD8B,GAEFvK,KAAK8qB,oBAAmB,SAAStY,GAChCA,EAAKkD,QAAQjN,MAGdzI,KAAKopB,WAAW1T,QAAQjN,GACxBzI,KAAKwS,KAAKkD,QAAQjN,KAElBzI,KAAK8qB,oBAAmB,SAAStY,GAChCA,EAAKhO,KAAKiE,MAGXzI,KAAKopB,WAAW5kB,KAAKiE,GACrBzI,KAAKwS,KAAKhO,KAAKiE,IAIjBzI,KAAK6qB,cAAc7qB,KAAKopB,YAExBppB,KAAKoC,iBAAiB,WAAYqG,EAAIhE,gBAEnCzE,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAepC,KAAKD,MAAMgM,WAAWrD,WAGxDwO,GACHlX,KAAKuqB,qBAGC9hB,EAGRkjB,QAAQ7K,EAAM9a,EAAIC,GACjBjG,KAAKiC,SAAS,WAAY6e,EAAM9a,EAAIC,GAEpCjG,KAAKukB,cAAczD,EAAM9a,EAAIC,GAE7BjG,KAAKgrB,yBAELhrB,KAAKiC,SAAS,YAAa6e,EAAM9a,EAAIC,GACrCjG,KAAKoC,iBAAiB,WAAY0e,EAAKrc,gBAGxC8f,cAAczD,EAAM9a,EAAIC,GACvBjG,KAAK4rB,eAAe5rB,KAAKwS,KAAMsO,EAAM9a,EAAIC,GACzCjG,KAAK4rB,eAAe5rB,KAAKopB,WAAYtI,EAAM9a,EAAIC,GAE/CjG,KAAK8qB,oBAAoBtY,IACxBxS,KAAK4rB,eAAepZ,EAAMsO,EAAM9a,EAAIC,EAAM,IAG3CjG,KAAKiC,SAAS,aAAc6e,EAAM9a,EAAIC,GAGvC2lB,eAAepZ,EAAMsO,EAAM9a,EAAIC,GAC9B,IAAImb,EAAWD,EAAgB5E,EAE/B,GAAGuE,IAAS9a,KAEXob,EAAY5O,EAAKvD,QAAQ6R,KAER,IAEhBtO,EAAKT,OAAOqP,EAAW,IAEvBD,EAAU3O,EAAKvD,QAAQjJ,KAER,EAEXC,EACFuM,EAAKT,OAAOoP,EAAQ,EAAG,EAAGL,GAE1BtO,EAAKT,OAAOoP,EAAS,EAAGL,GAIzBtO,EAAKT,OAAOqP,EAAW,EAAGN,IAKzBtO,IAASxS,KAAK6X,kBAAiB,CAGjC0E,EAAM4E,EAAUC,EAAYD,EAAUC,EAAW,EAEjD,IAAI,IAAInT,EAHAmT,EAAYD,EAAUC,EAAYD,EAGvBlT,GAAKsO,EAAKtO,IACzBuE,EAAKvE,IACPjO,KAAK8X,SAAStF,EAAKvE,GAAIA,IAO5B4d,YACC7rB,KAAKijB,QAAQ,IAGd6I,YAAYrjB,GACX,OAAOzI,KAAK+rB,aAAatjB,EAAKzI,KAAKwS,MAGpCwZ,mBAAmBvjB,GAClB,IAAIqJ,EAAQ9R,KAAK6X,iBAAiB5I,QAAQxG,GAC1C,OAAOqJ,GAAS,GAAIA,EAGrBqS,eAAe1b,EAAKwjB,GACnB,IAAIna,EAAQ9R,KAAKgsB,mBAAmBvjB,GACpCga,GAAU,EAOV,OAJa,IAAV3Q,GAAmBA,EAAQ9R,KAAKupB,iBAAkB,IACpD9G,EAAUziB,KAAK6X,iBAAiB/F,EAAM,KAGpC2Q,GAAcA,aAAmBG,GAAwB,OAAhBH,EAAQjf,KAI7Cif,EAHCziB,KAAKmkB,eAAe1B,EAASwJ,GAMtC7H,eAAe3b,EAAKwjB,GACnB,IAAIna,EAAQ9R,KAAKgsB,mBAAmBvjB,GACpCka,GAAU,EAMV,OAJG7Q,IACF6Q,EAAU3iB,KAAK6X,iBAAiB/F,EAAM,KAGpCma,IAAWtJ,GAAcA,aAAmBC,GAAwB,OAAhBD,EAAQnf,KAIxDmf,EAHC3iB,KAAKokB,eAAezB,EAASsJ,GAMtCF,aAAatjB,EAAKsM,GACjB,IAAIsD,EAIJ,UAFA5P,EAAMzI,KAAKskB,QAAQ7b,MAGlB4P,EAAWtD,EAAK9F,QAAQxG,KAET,IACP4P,EAOV3P,QAAQgY,EAAQ/X,GACf,IAAIxD,EAAS,GASb,OAROnF,KAAK4b,QAAQ8E,GAEfpc,SAAQ,SAASmE,GACN,OAAZA,EAAIjF,MACN2B,EAAOX,KAAKiE,EAAIC,QAAQC,GAAa,YAIhCxD,EAGRyb,cAAcF,GACb,IAAIvb,EAAS,GAOb,OANOnF,KAAK4b,QAAQ8E,GAEfpc,SAAQ,SAASmE,GACrBtD,EAAOX,KAAKiE,EAAIhE,mBAGVU,EAGR+mB,aAAaxL,GAGZ,OAFW1gB,KAAK4b,QAAQ8E,GAEZtb,OAGb+Y,iBAAiBxT,GAChB3K,KAAKmZ,WAAaxO,EAClB3K,KAAKsJ,QAAQ6P,WAAaxO,EAE1B3K,KAAKiC,SAAS,oBAAqB0I,GAGpCwhB,4BAA4BC,EAASC,QACb,IAAbA,GACTrsB,KAAK0pB,aAAallB,KAAK,CAAC4nB,UAASC,aACjCrsB,KAAK0pB,aAAa4C,MAAK,CAACC,EAAGC,IACnBD,EAAEF,SAAWG,EAAEH,YAGvBhmB,QAAQ0N,MAAM,yEAIhB0Y,+BAA+BL,EAASC,QAChB,IAAbA,GACTrsB,KAAK2pB,gBAAgBnlB,KAAK,CAAC4nB,UAASC,aACpCrsB,KAAK2pB,gBAAgB2C,MAAK,CAACC,EAAGC,IACtBD,EAAEF,SAAWG,EAAEH,YAGvBhmB,QAAQ0N,MAAM,4EAKhByQ,kBAAkB4H,EAASM,EAAWtC,GACrC,IAAIrqB,EAAQC,KAAKD,MACjB4sB,EAAQ,GACR7a,EAAQ,EACR8a,EAAe,CAAC,MAAO,eAAgB,UAAW,kBAAmB,OAErE,IAAI5sB,KAAKD,MAAM8sB,UAAU,CACxB,GAAsB,mBAAZT,EAKT,IAJAta,EAAQ9R,KAAK0pB,aAAalU,WAAWC,GAC7BA,EAAK2W,UAAYA,MAGb,EACXO,EAAQ,eAELD,IACC5a,GAAS9R,KAAK0pB,aAAatkB,OAAS,EACtCunB,EAAQ,UAER7a,SAGE,CAKJ,MAJAA,EAAQ9R,KAAK2pB,gBAAgBnU,WAAWC,GAChCA,EAAK2W,UAAYA,MAGb,GAYX,YADA/lB,QAAQ0N,MAAM,mDAAoDqY,GAVlEO,EAAQ,kBAELD,IACC5a,GAAS9R,KAAK2pB,gBAAgBvkB,OAAS,EACzCunB,EAAQ,MAER7a,UASJ6a,EAAQP,GAAW,MACnBta,EAAQ,EAGT,GAAG9R,KAAK+M,YAWP,cAVI/M,KAAKwpB,0BAA6BxpB,KAAKwpB,2BAA8BxpB,KAAKwpB,yBAAyBmD,QAAUA,GAAS7a,EAAQ9R,KAAKwpB,yBAAyB1X,OAAW8a,EAAa3d,QAAQ0d,GAASC,EAAa3d,QAAQjP,KAAKwpB,yBAAyBmD,WAC3P3sB,KAAKwpB,yBAA2B,CAC/B4C,QAASA,EACTM,UAAWA,EACXtC,iBAAkBA,EAClBuC,MAAMA,EACN7a,MAAMA,KAMLsC,EAAQmE,UAAUvY,KAAKsJ,SACtB8gB,EACFpqB,KAAKuqB,mBAAmBvqB,KAAK8sB,iBAAiBhsB,KAAKd,KAAMosB,EAASO,EAAO7a,EAAOsY,KAEhFpqB,KAAK8sB,iBAAiBV,EAASO,EAAO7a,EAAOsY,GAEzCgC,GACHpsB,KAAKD,MAAM6F,cAAciY,SAAS/G,gBAGnC9W,KAAK+sB,cAEFhtB,EAAMyC,QAAQwqB,wBAChBhtB,KAAKD,MAAM6F,cAAc8Z,QAAO,IAIlC1f,KAAK8sB,iBAAiBV,EAASO,EAAO7a,EAAOsY,GAG9CpqB,KAAKiC,SAAS,mBAKjB6qB,iBAAiBV,EAASO,EAAO7a,EAAOsY,GAQvC,OAPApqB,KAAKiC,SAAS,mBAEVmqB,IACHpsB,KAAKmpB,mBAAmB,GAAKnpB,KAAKwS,KAAK8U,MAAM,IAIvCqF,GACN,IAAK,MAGL,IAAK,eAEJ,IAAI,IAAI1e,EAAI6D,EAAO7D,EAAIjO,KAAK0pB,aAAatkB,OAAQ6I,IAAI,CACpD,IAAI/G,EAASlH,KAAK0pB,aAAazb,GAAGme,QAAQpsB,KAAKmpB,mBAAmBlb,GAAGqZ,MAAM,IAE3EtnB,KAAKmpB,mBAAmBlb,EAAI,GAAK/G,GAAUlH,KAAKmpB,mBAAmBlb,GAAGqZ,MAAM,GAG7EtnB,KAAK6qB,cAAc7qB,KAAKmpB,mBAAmBnpB,KAAK0pB,aAAatkB,SAE9D,IAAK,UACJ0M,EAAQ,EACR9R,KAAKitB,mBAEN,IAAK,kBACJ,IAAI,IAAIhf,EAAI6D,EAAO7D,EAAIjO,KAAK2pB,gBAAgBvkB,OAAQ6I,IAAI,CACvD,IAAI/G,EAASlH,KAAK2pB,gBAAgB1b,GAAGme,SAASne,EAAIjO,KAAK6X,eAAe5J,EAAI,GAAKjO,KAAKopB,YAAY9B,MAAM,GAAI8C,GAE1GpqB,KAAKktB,eAAehmB,GAAUlH,KAAK6X,eAAe5J,EAAI,GAAGqZ,MAAM,GAAIrZ,GAGrE,IAAK,MAEJjO,KAAKgrB,yBAGJhrB,KAAK6X,iBAAiBzS,QACxBpF,KAAKwrB,oBAKPR,yBACC,IAAIxY,EAAOxS,KAAK6X,iBACZ/F,EAAQ,EAEZU,EAAKlO,SAASmE,IACI,QAAbA,EAAIjF,OACPiF,EAAIqc,YAAYhT,GAChBA,QAKH+Y,cAAczB,GACbppB,KAAKopB,WAAappB,KAAKopB,WAAara,OAAOiF,OAAO,GAAIoV,GACtDppB,KAAKqpB,gBAAkBrpB,KAAKopB,WAAWhkB,OAIxC6nB,mBACCjtB,KAAKspB,YAAc,GAEnBtpB,KAAKspB,YAAY9kB,KAAKxE,KAAKopB,WAAW9B,MAAM,IAE5CtnB,KAAKupB,iBAAmBvpB,KAAKspB,YAAY,GAAGlkB,OAI7C8nB,eAAe5D,EAAaxX,GAC3B9R,KAAKspB,YAAYxX,GAASwX,EAEvBxX,GAAS9R,KAAKspB,YAAYlkB,OAAQ,IACpCpF,KAAKupB,iBAAmBvpB,KAAKspB,YAAYtpB,KAAKspB,YAAYlkB,OAAQ,GAAGA,QAIvEyS,eAAe/F,GACd,YAAmB,IAATA,EACF9R,KAAKspB,YAAYlkB,OAASpF,KAAKspB,YAAYtpB,KAAKspB,YAAYlkB,OAAQ,GAAK,GAEzEpF,KAAKspB,YAAYxX,IAAU,GAIpC4J,eAAexZ,EAAOirB,GACrB,IAAI3a,EAAQzD,OAAOiF,OAAO,GAAIhU,KAAK6d,SAASlG,aAAawV,IAMzD,OAJGjrB,IACFsQ,EAAOxS,KAAKkC,MAAM,eAAgB,CAACirB,GAAW3a,EAAMA,IAG9CA,EAIRsY,mBAAmB9T,GAClBhX,KAAKmpB,mBAAmB7kB,QAAQ0S,GAChChX,KAAKspB,YAAYhlB,QAAQ0S,GAEzBhX,KAAKupB,iBAAmBvpB,KAAKspB,YAAYtpB,KAAKspB,YAAYlkB,OAAQ,GAAGA,OAItEwW,QAAQpY,GACP,IAAIgP,EAAO,GAEX,OAAOhP,GACN,IAAK,SACJgP,EAAOxS,KAAKopB,WACZ,MAED,IAAK,UACJ5W,EAAOxS,KAAKD,MAAMgM,WAAW8L,iBAC7B,MAED,IAAK,UACJrF,EAAOxS,KAAK0b,gBAAe,GAAO,GAClC,MAED,QACClJ,EAAOxS,KAAKkC,MAAM,gBAAiBsB,EAAM,KAAMxD,KAAKwS,OAASxS,KAAKwS,KAGpE,OAAOA,EAKR+X,mBAAmBvT,GACfhX,KAAK+M,YACJiK,EACFA,IAEAhX,KAAKypB,6BAA8B,GAGpCzpB,KAAKoC,iBAAiB,iBAEtBpC,KAAK6d,SAAS9G,aAAaC,GAEvBhX,KAAKkoB,aACRloB,KAAKigB,kBAGNjgB,KAAKotB,iBAELptB,KAAKoC,iBAAiB,mBAIxBgrB,iBACC,IAAIxD,EAAiB,EAGlB5pB,KAAKsJ,QAAQmP,aAAezY,KAAKsJ,QAAQsH,eAC3CgZ,EAAiB5pB,KAAKsJ,QAAQ8C,YAAcpM,KAAKsJ,QAAQ8I,aAGvDwX,IAAmB5pB,KAAK4pB,iBAC1B5pB,KAAK4pB,eAAiBA,EACtB5pB,KAAKiC,SAAS,qBAAsB2nB,IAItC9L,qBACC,IAAIU,EAEAC,EAAY,CACfC,QAAW2O,EACXzO,MAAS0O,IAIT9O,EAD+C,iBAAtCxe,KAAKD,MAAMyC,QAAQ+qB,eACd9O,EAAUze,KAAKD,MAAMyC,QAAQ+qB,gBAE7BvtB,KAAKD,MAAMyC,QAAQ+qB,iBAIjCvtB,KAAKkpB,WAAalpB,KAAKD,MAAMyC,QAAQ+qB,eAErCvtB,KAAK6d,SAAW,IAAIW,EAAYxe,KAAKD,MAAOC,KAAKsJ,QAAStJ,KAAKuW,cAC/DvW,KAAK6d,SAASpH,cAEVzW,KAAKD,MAAMuJ,QAAQsH,eAAgB5Q,KAAKD,MAAMyC,QAAQgH,QAAaxJ,KAAKD,MAAMyC,QAAQsO,WAAa9Q,KAAKD,MAAMyC,QAAQihB,UAGzHzjB,KAAKkoB,aAAc,EAFnBloB,KAAKkoB,aAAc,GAKpB7hB,QAAQ0N,MAAM,oCAAqC/T,KAAKD,MAAMyC,QAAQ+qB,gBAIxEC,gBACC,OAAOxtB,KAAKkpB,WAGb6D,cACC/sB,KAAKoC,iBAAiB,iBAEtBpC,KAAKsJ,QAAQoP,UAAY,EAEzB1Y,KAAKytB,cAEFztB,KAAKupB,kBACPvpB,KAAK6d,SAAShH,aAEX7W,KAAKipB,cACPjpB,KAAKipB,aAAc,EAEfjpB,KAAKkoB,aACRloB,KAAKigB,kBAGNjgB,KAAKyB,eAAc,KAGpBzB,KAAK0tB,oBAGF1tB,KAAKkoB,aACRloB,KAAKigB,kBAGNjgB,KAAKiC,SAAS,gBAEVjC,KAAKupB,kBACRvpB,KAAK2tB,mBAGN3tB,KAAKotB,iBAELptB,KAAKoC,iBAAiB,kBAIvBsrB,oBACI1tB,KAAK+oB,YACP/oB,KAAKuW,aAAapM,MAAME,QAAU,OAElCrK,KAAKuW,aAAapM,MAAM1C,SAAWzH,KAAKD,MAAM6F,cAAcmB,WAAa,KAM3E0mB,cACCztB,KAAKwrB,oBAELxrB,KAAK0Y,UAAY,EACjB1Y,KAAKmZ,WAAa,EAElBnZ,KAAK6d,SAASnH,YAGf8P,aACCxmB,KAAK0tB,oBACL1tB,KAAK2tB,mBAGNA,mBACI3tB,KAAK+oB,cACJ/oB,KAAK+oB,aAAe/oB,KAAK+oB,YAAY/b,YACvChN,KAAK+oB,YAAY/b,WAAWzB,YAAYvL,KAAK+oB,aAG9C/oB,KAAK6pB,wBAEL7pB,KAAK+oB,YAAY7e,aAAa,wBAAyBlK,KAAKkpB,YAE5DlpB,KAAKgE,aAAawH,YAAYxL,KAAK+oB,aACnC/oB,KAAKiqB,uBAELjqB,KAAKigB,mBAIPuL,oBACIxrB,KAAK+oB,aAAe/oB,KAAK+oB,YAAY/b,YACvChN,KAAK+oB,YAAY/b,WAAWzB,YAAYvL,KAAK+oB,aAI9C/oB,KAAKuW,aAAapM,MAAM1C,SAAW,GACnCzH,KAAKuW,aAAapM,MAAME,QAAU,GAGnC4f,uBACIjqB,KAAK+oB,aAAe/oB,KAAK+oB,YAAY/b,aACvChN,KAAK+oB,YAAY5e,MAAMlD,MAAQjH,KAAKD,MAAM6F,cAAcmB,WAAa,KACrE/G,KAAKgpB,oBAAoB7e,MAAMlD,MAAQjH,KAAKD,MAAMgM,WAAWzC,QAAQ8I,YAAc,KACnFpS,KAAKgpB,oBAAoB7e,MAAMmU,WAAate,KAAKmZ,WAAa,MAIhErB,SAASrP,EAAKqJ,GACb,IAAIiG,EAAQtP,EAAIzE,aAEb8N,EAAQ,GACViG,EAAM/M,UAAUC,IAAI,sBACpB8M,EAAM/M,UAAUgN,OAAO,uBAEvBD,EAAM/M,UAAUC,IAAI,qBACpB8M,EAAM/M,UAAUgN,OAAO,uBAKzBsK,kBACCtiB,KAAKopB,WAAW9kB,SAAQ,SAASmE,GAChCA,EAAI6Z,qBAKNrC,kBACC,IAA+CnP,EAA3C8c,EAAgB5tB,KAAKsJ,QAAQsH,aAC7ByX,GAAU,EAEd,GAAsC,SAAnCroB,KAAK6d,SAASrH,iBAA4B,CAC5C,IAAIqX,EAAe3b,KAAKC,MAAMnS,KAAKD,MAAM6F,cAAc5B,aAAakP,wBAAwB1J,QAAUxJ,KAAKD,MAAMgiB,eAAiB/hB,KAAKD,MAAMgiB,cAAcrB,SAAW1gB,KAAKD,MAAMgiB,cAAc+L,SAAW9tB,KAAKD,MAAMgiB,cAAc/d,aAAakP,wBAAwB1J,OAAS,IAEjR,GAAGxJ,KAAKkoB,YAAY,CACnBpX,EAAYmB,MAAMjS,KAAKD,MAAMyC,QAAQsO,WAAa9Q,KAAKD,MAAMyC,QAAQsO,UAAY9Q,KAAKD,MAAMyC,QAAQsO,UAAY,KAEhH,MAAMtH,EAAS,eAAiBqkB,EAAc,MAC9C7tB,KAAKsJ,QAAQa,MAAM2G,UAAYA,GAAa,eAAiB+c,EAAc,MAC3E7tB,KAAKsJ,QAAQa,MAAMX,OAASA,EAC5BxJ,KAAKsJ,QAAQa,MAAMsZ,UAAYja,OAE/BxJ,KAAKsJ,QAAQa,MAAMX,OAAS,GAC5BxJ,KAAKsJ,QAAQa,MAAMX,OACnBxJ,KAAKD,MAAMuJ,QAAQsH,aAAeid,EAAc,KAChD7tB,KAAKsJ,QAAQoP,UAAY1Y,KAAK0Y,UAG/B1Y,KAAK6d,SAASrG,SAGVxX,KAAKkoB,aAAe0F,GAAiB5tB,KAAKsJ,QAAQsH,eACrDyX,GAAU,EACProB,KAAK8B,WAAW,gBAClB9B,KAAKiC,SAAS,gBAEdjC,KAAK0f,UAIP1f,KAAKotB,iBAIN,OADAptB,KAAKiqB,uBACE5B,EAIRrH,eACChhB,KAAKwS,KAAKlO,SAAQ,SAASmE,GAC1BA,EAAIuY,cAAa,MAKnB9J,cACClX,KAAK+M,aAAc,EACnB/M,KAAKwpB,0BAA2B,EAIjC3H,gBACC7hB,KAAK+M,aAAc,EAEhB/M,KAAKwpB,0BACPxpB,KAAKwkB,kBAAkBxkB,KAAKwpB,yBAAyB4C,QAASpsB,KAAKwpB,yBAAyBkD,UAAW1sB,KAAKwpB,yBAAyBY,kBAErIpqB,KAAKwpB,0BAA2B,GAE7BxpB,KAAKypB,6BACPzpB,KAAKuqB,qBAIPvqB,KAAKypB,6BAA8B,EAIpC/J,OAAQhe,GACP,MAAM2mB,EAAUroB,KAAKigB,kBACrBjgB,KAAKD,MAAMguB,WAAa/tB,KAAKD,MAAMuJ,QAAQ8I,YAEvC1Q,EAMH1B,KAAK+sB,eALF1E,GACFroB,KAAKuqB,qBAENvqB,KAAKme,iBAAiBne,KAAKmZ,aAM7B2I,cAIC,GAHA9hB,KAAKsJ,QAAQ6P,WAAa,EAC1BnZ,KAAKsJ,QAAQoP,UAAY,EAEC,OAAvB1Y,KAAKD,MAAMiuB,QAAiB,CAC9B,IAAIC,EAAQlkB,SAASmkB,YAAY,SACjCD,EAAME,UAAU,UAAU,GAAO,GACjCnuB,KAAKsJ,QAAQ8kB,cAAcH,QAE3BjuB,KAAKsJ,QAAQ8kB,cAAc,IAAIC,MAAM,YCpmCzB,MAAMC,UAAsBzuB,EAE1CC,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK0gB,QAAS,EACd1gB,KAAKsJ,QAAUtJ,KAAKgK,gBACpBhK,KAAKuuB,iBAAmBvuB,KAAKwuB,yBAC7BxuB,KAAK8tB,UAAW,EAGjBrX,aACCzW,KAAKyuB,oBAGNzkB,gBACC,IAAIuE,EAAKxE,SAASC,cAAc,OAIhC,OAFAuE,EAAGvD,UAAUC,IAAI,oBAEVsD,EAIRigB,yBACC,IAAIjgB,EAAKxE,SAASC,cAAc,OAMhC,OAJAuE,EAAGvD,UAAUC,IAAI,6BAEjBjL,KAAKsJ,QAAQkC,YAAY+C,GAElBA,EAGRkgB,oBACC,GAAGzuB,KAAKD,MAAMyC,QAAQksB,cAErB,GACM,iBADQ1uB,KAAKD,MAAMyC,QAAQksB,cAEY,MAAxC1uB,KAAKD,MAAMyC,QAAQksB,cAAc,GACnC1uB,KAAKuuB,iBAAiBnjB,UAAYpL,KAAKD,MAAMyC,QAAQksB,eAErD1uB,KAAK8tB,UAAW,EAChB9tB,KAAKuuB,iBAAmBxkB,SAAS4kB,cAAc3uB,KAAKD,MAAMyC,QAAQksB,qBAKnE1uB,KAAKsJ,QAAUtJ,KAAKD,MAAMyC,QAAQksB,cAMtC1qB,aACC,OAAOhE,KAAKsJ,QAGbslB,OAAOtlB,GACNtJ,KAAK6uB,WAEL7uB,KAAKuuB,iBAAiB/iB,YAAYlC,GAClCtJ,KAAKD,MAAMgM,WAAWkU,kBAGvB6O,QAAQxlB,GACPtJ,KAAK6uB,WAEL7uB,KAAKsJ,QAAQqT,aAAarT,EAAStJ,KAAKsJ,QAAQgC,YAChDtL,KAAKD,MAAMgM,WAAWkU,kBAGvBjI,OAAO1O,GACNA,EAAQ0D,WAAWzB,YAAYjC,GAC/BtJ,KAAK+uB,aAGNA,WAAWrtB,GACN1B,KAAKsJ,QAAQgC,aAAc5J,IAC1B1B,KAAK8tB,UACR9tB,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAE1CtJ,KAAK0gB,QAAS,GAIhBmO,WACK7uB,KAAK0gB,SACR1gB,KAAK0gB,QAAS,EACV1gB,KAAK8tB,WACR9tB,KAAKD,MAAMuJ,QAAQkC,YAAYxL,KAAKgE,cACpChE,KAAKD,MAAMuJ,QAAQa,MAAME,QAAU,KAKtCqV,SACC1f,KAAKiC,SAAS,kBChGD,MAAM+sB,UAA2BnvB,EAE/CC,YAAaC,GACZsJ,MAAMtJ,GAENC,KAAKuO,GAAK,KAEVvO,KAAKivB,aAAe,CAAC,oBAAqB,mBAE1CjvB,KAAKkvB,gBAAkB,GAEvBlvB,KAAKmvB,UAAY,CAChB,QACA,WACA,cACA,aACA,aACA,YACA,WACA,YACA,UACA,YACA,aACA,YAGDnvB,KAAKovB,aAAe,CACnB,iBAAiB,OACjB,gBAAgB,MAChB,kBAAkB,QAClB,gBAAgB,UAGjBpvB,KAAKqvB,eAAiB,CACrB5mB,IAAM,CACL6mB,WAAW,KACX3rB,OAAO,MAERY,KAAO,CACN+qB,WAAW,KACX3rB,OAAO,MAERqhB,MAAQ,CACPsK,WAAW,KACX3rB,OAAO,MAERL,OAAS,CACRgsB,WAAW,KACX3rB,OAAO,OAIT3D,KAAKuvB,gBAAiB,EAGvB9Y,aACCzW,KAAKuO,GAAKvO,KAAKD,MAAMuJ,QAErBtJ,KAAKwvB,mBACLxvB,KAAKyvB,2BAGND,mBACC,IAAIE,EAAc,GAElB1vB,KAAKmvB,UAAU7qB,SAASqrB,IACvBD,EAAYC,GAAY,CACvBvD,QAAQ,KACRwD,WAAW,GACX,IAGF5vB,KAAKmvB,UAAYO,EAGlBG,mBACC9gB,OAAOC,KAAKhP,KAAKqvB,gBAAgB/qB,SAASvC,IACzC/B,KAAKqvB,eAAettB,GAAKutB,WAAatvB,KAAK8vB,iBAAiBhvB,KAAKd,KAAM+B,GACvE/B,KAAK2B,UAAUI,EAAM,aAAc/B,KAAKqvB,eAAettB,GAAKutB,WAAW,IAGxEtvB,KAAKuvB,gBAAiB,EAGvBO,iBAAiB/tB,EAAKgO,EAAGpM,GACrB3D,KAAKqvB,eAAettB,GAAK4B,SAAWA,IAEnC3D,KAAKqvB,eAAettB,GAAK4B,QAC3B3D,KAAKiC,SAASF,EAAM,cAAegO,EAAG/P,KAAKqvB,eAAettB,GAAK4B,QAGhE3D,KAAK+vB,iBAAiBhuB,EAAKgO,GAE3B/P,KAAKqvB,eAAettB,GAAK4B,OAASA,EAElC3D,KAAKiC,SAASF,EAAM,cAAegO,EAAGpM,IAIxCosB,iBAAiBhuB,EAAKgO,GACrB,IAAIigB,EAAYjhB,OAAOC,KAAKhP,KAAKqvB,gBACjCY,EAAa,CACZxnB,IAAM,CAAC,QACPlE,KAAO,CAAC,SAGTyrB,EAAYA,EAAUnU,QAAQpG,IAC7B,IAAIya,EAAQD,EAAWluB,GACvB,OAAO0T,IAAS1T,KAASmuB,GAAUA,IAAUA,EAAMpU,SAASrG,GAAO,KAI1DnR,SAASvC,IAClB,IAAI4B,EAAS3D,KAAKqvB,eAAettB,GAAK4B,OAEnC3D,KAAKqvB,eAAettB,GAAK4B,SAC3B3D,KAAKiC,SAASF,EAAM,cAAegO,EAAGpM,GAEtC3D,KAAKqvB,eAAettB,GAAK4B,OAAS,SAMrC8rB,2BACC,IAAIN,EAAYpgB,OAAOC,KAAKhP,KAAKmvB,WACjCS,EAAa7gB,OAAOohB,OAAOnwB,KAAKovB,cAEhC,IAAI,IAAIgB,KAAQR,EACf,IAAI,IAAID,KAAYR,EAAU,CAC7B,IAAIptB,EAAMquB,EAAO,IAAMT,EAEvB3vB,KAAKgC,mBAAmBD,EAAK/B,KAAKqwB,oBAAoBvvB,KAAKd,KAAMowB,EAAMT,IAIzE3vB,KAAK2B,UAAU,gBAAiB3B,KAAKswB,cAAcxvB,KAAKd,OAGzDqwB,oBAAoB5mB,EAAW1H,EAAKwuB,GACnC,IAAIZ,EAAW3vB,KAAKmvB,UAAUptB,GAAK6tB,WACnC9d,EAAQ6d,EAAS1gB,QAAQxF,GACzBuC,GAAU,EAEPukB,GACY,IAAXze,IACF6d,EAASnrB,KAAKiF,GACduC,GAAU,GAGPhM,KAAK8B,WAAW2H,EAAY,IAAM1H,IAClC+P,GAAS,IACX6d,EAAS5d,OAAOD,EAAO,GACvB9F,GAAU,GAKD,eAARjK,GAAgC,eAARA,GAA0B/B,KAAKuvB,gBAC1DvvB,KAAK6vB,mBAGH7jB,GACFhM,KAAKwwB,uBAIPA,uBACC,IAAI,IAAIzuB,KAAO/B,KAAKmvB,UAAU,CAC7B,IAAIQ,EAAW3vB,KAAKmvB,UAAUptB,GAE3B4tB,EAASC,WAAWxqB,OAClBuqB,EAASvD,UACZuD,EAASvD,QAAUpsB,KAAKywB,MAAM3vB,KAAKd,KAAM+B,GACzC/B,KAAKuO,GAAGuB,iBAAiB/N,EAAK4tB,EAASvD,UAIrCuD,EAASvD,UACXpsB,KAAKuO,GAAGmiB,oBAAoB3uB,EAAK4tB,EAASvD,SAC1CuD,EAASvD,QAAU,OAMvBqE,MAAMjtB,EAAMuM,GACX,IAAI4gB,EAAQ5gB,EAAE6gB,cAAgB7gB,EAAE6gB,gBAAmB7gB,EAAE4gB,KAEjDE,EAAU7wB,KAAK8wB,YAAYH,GAC/BE,EAAU7wB,KAAK+wB,eAAevtB,EAAMqtB,GAEpC7wB,KAAKgxB,cAAcxtB,EAAMuM,EAAG8gB,IAEzB7wB,KAAKuvB,gBAA2B,aAAR/rB,GAA+B,cAARA,GAA0BuL,OAAOC,KAAK6hB,GAASzrB,QAChGpF,KAAK+vB,iBAAiB,OAAQhgB,GAIhC+gB,YAAYH,GACX,IAAIE,EAAU,GAEd,IAAIzB,EAAergB,OAAOC,KAAKhP,KAAKovB,cAEpC,IAAK,IAAI7gB,KAAMoiB,EAAM,CACpB,IAAI3lB,EAAYuD,EAAGvD,UAAY,IAAIuD,EAAGvD,WAAa,GAMnD,GAJYA,EAAU6Q,QAAQpG,GACtBzV,KAAKivB,aAAanT,SAASrG,KAG1BrQ,OACR,MAGD,IAAI6rB,EAAYjmB,EAAU6Q,QAAQpG,GAC1B2Z,EAAatT,SAASrG,KAG9B,IAAK,IAAI9R,KAAUstB,EACdJ,EAAQ7wB,KAAKovB,aAAazrB,MAC7BktB,EAAQ7wB,KAAKovB,aAAazrB,IAAW4K,GASxC,OAJGsiB,EAAQ7L,OAAS6L,EAAQ7L,QAAU6L,EAAQpoB,YACtCooB,EAAQpoB,IAGTooB,EAGRE,eAAevtB,EAAMqtB,GAEpB,IAAI7hB,EAAOD,OAAOC,KAAK6hB,GAAStF,UAChCoE,EAAW3vB,KAAKmvB,UAAU3rB,GAC1B8c,EAAU,GACV4Q,EAAgB,GAEhB,IAAI,IAAInvB,KAAOiN,EAAK,CACnB,IAAIvF,EACJ9F,EAASktB,EAAQ9uB,GACjBovB,EAAiBnxB,KAAKkvB,gBAAgBntB,GAEtC,GAAGovB,GAAkBA,EAAextB,SAAWA,EAC9C8F,EAAY0nB,EAAe1nB,eAE3B,OAAO1H,GACN,IAAK,MACL,IAAK,QACJ,GAAG4tB,EAASC,WAAW9T,SAAS,QAAU6T,EAASC,WAAW9T,SAAS,SAAW6T,EAASC,WAAW9T,SAAS,SAAS,CAGvHrS,EAFWzJ,KAAKD,MAAMgM,WAAW2P,gBAAe,GAE/B4D,MAAM7W,GACfA,EAAIzE,eAAiBL,IAG1BktB,EAAa,KAAKA,EAAa,IAAE7jB,YAAc6jB,EAAa,IAAE7jB,WAAWokB,QAAQ,oBACnFP,EAAQ9uB,IAAO,GAGjB,MAED,IAAK,SACD4tB,EAASC,WAAW9T,SAAS,YAC/BrS,EAAYzJ,KAAKD,MAAM6F,cAAcO,WAAWxC,IAEjD,MAED,IAAK,OACDgsB,EAASC,WAAW9T,SAAS,UAC5BwE,EAAa,eAAasC,EAC5BnZ,EAAY6W,EAAa,IAAE4D,SAASvgB,GAEjCktB,EAAa,KACfxqB,QAAQC,KAAK,kJAQhBmD,IACF6W,EAAQve,GAAO0H,EACfynB,EAAcnvB,GAAO,CACpB4B,OAAOA,EACP8F,UAAUA,IAOb,OAFAzJ,KAAKkvB,gBAAkBgC,EAEhB5Q,EAGR0Q,cAAcxtB,EAAMuM,EAAG8gB,GACtB,IAAIlB,EAAW3vB,KAAKmvB,UAAU3rB,GAE9B,IAAI,IAAIzB,KAAO8uB,EACXA,EAAQ9uB,IAAQ4tB,EAASC,WAAW9T,SAAS/Z,IAC/C/B,KAAKiC,SAASF,EAAM,IAAMyB,EAAMuM,EAAG8gB,EAAQ9uB,IAK9CuuB,gBACC,IAAI,IAAIvuB,KAAO/B,KAAKmvB,UAAU,CAC7B,IAAIQ,EAAW3vB,KAAKmvB,UAAUptB,GAE3B4tB,EAASvD,UACXpsB,KAAKuO,GAAGmiB,oBAAoB3uB,EAAK4tB,EAASvD,SAC1CuD,EAASvD,QAAU,QC7TR,MAAMiF,EAEpBvxB,YAAYC,GACXC,KAAKD,MAAQA,EAEbC,KAAKsxB,SAAW,GAGjBxwB,KAAK0C,EAAM+tB,EAAUnF,GAChBpsB,KAAKsxB,SAAS9tB,KACjBxD,KAAKsxB,SAAS9tB,GAAQ,IAGpBxD,KAAKsxB,SAAS9tB,GAAM+tB,GACtBlrB,QAAQC,KAAK,8EAA+E9C,EAAM+tB,EAAUnF,GAE5GpsB,KAAKsxB,SAAS9tB,GAAM+tB,GAAYnF,EAIlCroB,OAAOP,EAAMiG,EAAW7F,GACvB,GAAG5D,KAAKsxB,SAAS9tB,IAASxD,KAAKsxB,SAAS9tB,GAAMI,IAAmD,mBAAnC5D,KAAKsxB,SAAS9tB,GAAMI,GAAM9C,KACvF,OAAOd,KAAKsxB,SAAS9tB,GAAMI,GAAM9C,KAAK,KAAM2I,GAEhC,SAAT7F,GAAmC,iBAATA,GAAsBA,EAAKmW,WAAW,MAC/D/Z,KAAKD,MAAMyC,QAAQgvB,4BACrBnrB,QAAQ0N,MAAM,OAASvQ,EAAO,8BAAgCI,EAAO,sFCxB3D,MAAM6tB,UAAmB5xB,EACvCC,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK0xB,aAAe,EACpB1xB,KAAK2xB,SAAU,EAGhBlb,cAEAnW,KAAKJ,EAAM0xB,EAAQnX,EAAQoX,EAAS1xB,EAAQC,GAC3C,IAAI0xB,IAAc9xB,KAAK0xB,aAEvB,OAAG1xB,KAAKD,MAAM8sB,UACN1Z,QAAQC,WAGhBpT,KAAKoC,iBAAiB,cAAelC,IAGjCA,GAA8B,GAArBA,EAAK+O,QAAQ,MAAkC,GAArB/O,EAAK+O,QAAQ,OACnD/O,EAAO6jB,KAAKC,MAAM9jB,IAGhBF,KAAKmC,QAAQ,eAAgB,CAACjC,EAAM0xB,EAAQnX,EAAQta,KACtDH,KAAK2xB,SAAU,EAEXxxB,GACHH,KAAK+xB,cAINH,EAAS5xB,KAAKkC,MAAM,cAAe,CAAChC,EAAMua,EAAQta,GAASyxB,GAAU,GAAIA,GAAU,IAEnFA,EAAS5xB,KAAKgyB,UAAUJ,EAAQ5xB,KAAKD,MAAMyC,QAAQyvB,gBAEtCjyB,KAAKkC,MAAM,YAAa,CAAChC,EAAM0xB,EAAQnX,EAAQta,IAAS,EAAOgT,QAAQC,QAAQ,KAE9Ec,MAAMge,IACnB,GAAIlyB,KAAKD,MAAM8sB,UAkBdxmB,QAAQC,KAAK,6DAlBW,CACpB6O,MAAMC,QAAQ8c,IAAgC,iBAAZA,IACrCA,EAAWlyB,KAAKgyB,UAAUE,EAAUlyB,KAAKmyB,aAAanyB,KAAKD,MAAMyC,QAAQ4vB,qBAG1E,IAAIC,EAAUryB,KAAKkC,MAAM,cAAegwB,EAAU,KAAMA,GAErDJ,GAAa9xB,KAAK0xB,cACpB1xB,KAAKsyB,cAEU,IAAZD,IACFryB,KAAKoC,iBAAiB,aAAciwB,GACpCryB,KAAKD,MAAMgM,WAAWkX,QAAQoP,EAAUR,OAAmC,IAAnBzxB,GAAkCyxB,EAAUzxB,KAGrGiG,QAAQC,KAAK,gJAKbisB,OAAOxe,IACT1N,QAAQ0N,MAAM,oBAAqBA,GACnC/T,KAAKoC,iBAAiB,gBAAiB2R,GAEnC5T,GACHH,KAAKwyB,aAGNC,YAAW,KACVzyB,KAAKsyB,YAAY,GACftyB,KAAKD,MAAMyC,QAAQkwB,uBAAuB,IAE5CC,SAAQ,KACR3yB,KAAK2xB,SAAU,CAAK,MAGtB3xB,KAAKoC,iBAAiB,aAAclC,GAEhCA,IACHA,EAAO,IAGRF,KAAKD,MAAMgM,WAAWkX,QAAQ/iB,EAAM2xB,OAAmC,IAAnBzxB,GAAkCyxB,EAAUzxB,GACzF+S,QAAQC,YAIjB4e,UAAUJ,EAAQgB,GACjB,IAAIztB,EAAS,GAEb,IAAI,IAAIpD,KAAO6vB,EACdzsB,EAAOytB,EAAIzc,eAAepU,GAAO6wB,EAAI7wB,GAAOA,GAAO6vB,EAAO7vB,GAG3D,OAAOoD,EAGRgtB,aAAatd,GACZ,IAAI1P,EAAS,GAEb,IAAI,IAAIpD,KAAO8S,EACd1P,EAAO0P,EAAI9S,IAAQA,EAGpB,OAAOoD,EAGR0tB,kBACC7yB,KAAK0xB,eAGNK,eAC2D,mBAAlC/xB,KAAKD,MAAMyC,QAAQnC,WAA4BL,KAAKD,MAAMyC,QAAQnC,aAAeL,KAAKD,MAAMyC,QAAQnC,aAG3HL,KAAKD,MAAM+yB,aAAaC,MAAM/yB,KAAKD,MAAMyC,QAAQwwB,mBAAqBhzB,KAAKQ,SAAS,iBAItFgyB,aACCxyB,KAAKD,MAAM+yB,aAAaC,MAAM/yB,KAAKD,MAAMyC,QAAQywB,iBAAmBjzB,KAAKQ,SAAS,cAAe,SAGlG8xB,aACCtyB,KAAKD,MAAM+yB,aAAa7a,SC7HX,MAAMib,EAEpBpzB,YAAYC,EAAO4O,EAAawkB,GAC/BnzB,KAAKD,MAAQA,EACbC,KAAKozB,OAAS,GACdpzB,KAAK2O,YAAcA,GAAe,GAClC3O,KAAKqzB,sBAAwB,GAE7BrzB,KAAKiC,SAAWkxB,EAAQnzB,KAAKszB,eAAexyB,KAAKd,MAAQA,KAAKuzB,UAAUzyB,KAAKd,MAC7EA,KAAKmzB,MAAQA,EAGdnxB,mBAAmBD,EAAKiV,GACnBhX,KAAKqzB,sBAAsBtxB,KAC9B/B,KAAKqzB,sBAAsBtxB,GAAO,IAGnC/B,KAAKqzB,sBAAsBtxB,GAAKyC,KAAKwS,GAElChX,KAAK8B,WAAWC,IAClB/B,KAAKwzB,0BAA0BzxB,GAAK,GAItCJ,UAAUI,EAAKiV,GACVhX,KAAKozB,OAAOrxB,KACf/B,KAAKozB,OAAOrxB,GAAO,IAGpB/B,KAAKozB,OAAOrxB,GAAKyC,KAAKwS,GAEtBhX,KAAKwzB,0BAA0BzxB,GAAK,GAGrCF,YAAYE,EAAKiV,GAChB,IAAIlF,EAEJ,GAAG9R,KAAKozB,OAAOrxB,GAAf,CACC,GAAGiV,EAAS,CAKX,MAJAlF,EAAQ9R,KAAKozB,OAAOrxB,GAAKyT,WAAWC,GAC5BA,IAASuB,MAGL,GAIX,YADA3Q,QAAQC,KAAK,gDAAiDvE,EAAKiV,GAFnEhX,KAAKozB,OAAOrxB,GAAKgQ,OAAOD,EAAO,eAMzB9R,KAAKozB,OAAOrxB,GAOrB/B,KAAKwzB,0BAA0BzxB,GAAK,QAJnCsE,QAAQC,KAAK,yCAA0CvE,GAOzDD,WAAWC,GACV,OAAO/B,KAAKozB,OAAOrxB,IAAQ/B,KAAKozB,OAAOrxB,GAAKqD,OAG7CouB,0BAA0BzxB,EAAKD,GAC9B,IAAI2xB,EAAYzzB,KAAKqzB,sBAAsBtxB,GAExC0xB,GACFA,EAAUnvB,SAAS0S,IAClBA,EAASlV,EAAW,IAKvByxB,YACC,IAEArsB,EAFIwsB,EAAOve,MAAM2L,KAAKlgB,WACtBmB,EAAM2xB,EAAKC,QAaX,OAVG3zB,KAAKozB,OAAOrxB,IACd/B,KAAKozB,OAAOrxB,GAAKuC,SAAQ,CAAC0S,EAAU/I,KACnC,IAAI2lB,EAAa5c,EAAS6c,MAAM7zB,KAAKD,MAAO2zB,GAExCzlB,IACH/G,EAAS0sB,MAKL1sB,EAGRosB,iBACC,IAAII,EAAOve,MAAM2L,KAAKlgB,WACtBmB,EAAM2xB,EAAK,GAQX,OANAA,EAAK,GAAK,iBAAmBA,EAAK,KAEhB,IAAf1zB,KAAKmzB,OAAkBnzB,KAAKmzB,MAAMrX,SAAS/Z,KAC7CsE,QAAQytB,OAAOJ,GAGT1zB,KAAKuzB,aAAa3yB,YCtGZ,MAAMmzB,EAEpBj0B,YAAYqzB,GACXnzB,KAAKozB,OAAS,GACdpzB,KAAKqzB,sBAAwB,GAE7BrzB,KAAKiC,SAAWkxB,EAAQnzB,KAAKszB,eAAexyB,KAAKd,MAAQA,KAAKuzB,UAAUzyB,KAAKd,MAC7EA,KAAKkC,MAAQixB,EAAQnzB,KAAKg0B,YAAYlzB,KAAKd,MAAQA,KAAKi0B,OAAOnzB,KAAKd,MACpEA,KAAKmC,QAAUgxB,EAAQnzB,KAAKk0B,cAAcpzB,KAAKd,MAAQA,KAAKm0B,SAASrzB,KAAKd,MAC1EA,KAAKmzB,MAAQA,EAGdnxB,mBAAmBD,EAAKiV,GACnBhX,KAAKqzB,sBAAsBtxB,KAC9B/B,KAAKqzB,sBAAsBtxB,GAAO,IAGnC/B,KAAKqzB,sBAAsBtxB,GAAKyC,KAAKwS,GAElChX,KAAK8B,WAAWC,IAClB/B,KAAKwzB,0BAA0BzxB,GAAK,GAItCJ,UAAUI,EAAKiV,EAAUqV,EAAW,KAC/BrsB,KAAKozB,OAAOrxB,KACf/B,KAAKozB,OAAOrxB,GAAO,IAGpB/B,KAAKozB,OAAOrxB,GAAKyC,KAAK,CAACwS,WAAUqV,aAEjCrsB,KAAKozB,OAAOrxB,GAAKuqB,MAAK,CAACC,EAAGC,IAClBD,EAAEF,SAAWG,EAAEH,WAGvBrsB,KAAKwzB,0BAA0BzxB,GAAK,GAGrCF,YAAYE,EAAKiV,GAChB,IAAIlF,EAEJ,GAAG9R,KAAKozB,OAAOrxB,GAAf,CACC,GAAGiV,EAAS,CAKX,MAJAlF,EAAQ9R,KAAKozB,OAAOrxB,GAAKyT,WAAWC,GAC5BA,EAAKuB,WAAaA,MAGd,GAIX,YADA3Q,QAAQC,KAAK,gDAAiDvE,EAAKiV,GAFnEhX,KAAKozB,OAAOrxB,GAAKgQ,OAAOD,EAAO,GAWlC9R,KAAKwzB,0BAA0BzxB,GAAK,QAJnCsE,QAAQC,KAAK,yCAA0CvE,GAOzDD,WAAWC,GACV,OAAO/B,KAAKozB,OAAOrxB,IAAQ/B,KAAKozB,OAAOrxB,GAAKqD,OAG7C6uB,OAAOlyB,EAAK2xB,EAAMnrB,EAAc6rB,GAC/B,IAAI1xB,EAAQ6F,EAMZ,OAJI4M,MAAMC,QAAQse,KACjBA,EAAO,CAACA,IAGN1zB,KAAK8B,WAAWC,IAClB/B,KAAKozB,OAAOrxB,GAAKuC,SAAQ,CAACgrB,EAAYrhB,KACrCvL,EAAQ4sB,EAAWtY,SAAS6c,MAAM7zB,KAAM0zB,EAAKriB,OAAO,CAAC3O,IAAQ,IAGvDA,GAEoB,mBAAb0xB,EAA0BA,IAAaA,EAIvDD,SAASpyB,EAAK2xB,GACb,IAAIW,GAAY,EAchB,OAZIlf,MAAMC,QAAQse,KACjBA,EAAO,CAACA,IAGN1zB,KAAK8B,WAAWC,IAClB/B,KAAKozB,OAAOrxB,GAAKuC,SAAQ,CAACgrB,EAAYrhB,KAClCqhB,EAAWtY,SAAS6c,MAAM7zB,KAAM0zB,KAClCW,GAAY,MAKRA,EAGRb,0BAA0BzxB,EAAKD,GAC9B,IAAI2xB,EAAYzzB,KAAKqzB,sBAAsBtxB,GAExC0xB,GACFA,EAAUnvB,SAAS0S,IAClBA,EAASlV,EAAW,IAKvByxB,YACC,IAAIG,EAAOve,MAAM2L,KAAKlgB,WACtBmB,EAAM2xB,EAAKC,QAER3zB,KAAKozB,OAAOrxB,IACd/B,KAAKozB,OAAOrxB,GAAKuC,SAASgrB,IACzBA,EAAWtY,SAAS6c,MAAM7zB,KAAM0zB,EAAK,IAKxCJ,iBACC,IAAII,EAAOve,MAAM2L,KAAKlgB,WACtBmB,EAAM2xB,EAAK,GAQX,OANAA,EAAK,GAAK,iBAAmB3xB,IAEX,IAAf/B,KAAKmzB,OAAkBnzB,KAAKmzB,MAAMrX,SAAS/Z,KAC7CsE,QAAQytB,OAAOJ,GAGT1zB,KAAKuzB,aAAa3yB,WAG1BozB,cACC,IAAIN,EAAOve,MAAM2L,KAAKlgB,WACtBmB,EAAM2xB,EAAK,GAQX,OANAA,EAAK,GAAK,iBAAmB3xB,IAEX,IAAf/B,KAAKmzB,OAAkBnzB,KAAKmzB,MAAMrX,SAAS/Z,KAC7CsE,QAAQytB,OAAOJ,GAGT1zB,KAAKi0B,UAAUrzB,WAGvBszB,gBACC,IAAIR,EAAOve,MAAM2L,KAAKlgB,WACtBmB,EAAM2xB,EAAK,GAQX,OANAA,EAAK,GAAK,iBAAmB3xB,IAEX,IAAf/B,KAAKmzB,OAAkBnzB,KAAKmzB,MAAMrX,SAAS/Z,KAC7CsE,QAAQytB,OAAOJ,GAGT1zB,KAAKm0B,YAAYvzB,YC7JX,MAAM0zB,UAA2Bz0B,EAE/CC,YAAYC,GACXsJ,MAAMtJ,GAGPw0B,YACIv0B,KAAKwC,QAAQ,qBACf6D,QAAQC,QAAQ1F,WAIlBmC,MAAMH,EAAWC,GAChB,IAAII,EAAM,GAEV,YAAsC,IAA5BjD,KAAKwC,QAAQI,KACtBK,EAAM,0CAA4CL,EAAY,8BAE3DC,GACFI,EAAMA,EAAM,sBAAwBJ,EAAY,oBAChD7C,KAAKu0B,UAAUtxB,EAAK,qBAAsB,uBAAwB,qBAAsB,yBAExFjD,KAAKu0B,UAAUtxB,EAAK,qBAAsB,yBAGpC,GAMTC,SAASN,EAAWK,GACnB,YAAsC,IAA5BjD,KAAKwC,QAAQI,KACtB5C,KAAKu0B,UAAU,4CAA8C3xB,EAAY,iCAAmCK,EAAK,uBAAwB,qBAAsB,yBAExJ,GAMTA,IAAIA,GACHjD,KAAKu0B,UAAUtxB,IC1CjB,MAAMuxB,EAELngB,gBAAgBtU,GACfy0B,EAAcC,OAAOjwB,KAAKzE,GAG3BsU,kBAAkBtU,GACjB,IAAI+R,EAAQ0iB,EAAcC,OAAOxlB,QAAQlP,GAEtC+R,GAAS,GACX0iB,EAAcC,OAAO1iB,OAAOD,EAAO,GAIrCuC,mBAAmBqgB,EAAOv0B,GACzB,IACAmgB,EAASjL,EADLsf,EAAU,GAGd,GAAoB,iBAAVD,GAGT,IAFApU,EAAUvW,SAAS6qB,iBAAiBF,IAEzBtvB,OACV,IAAI,IAAI6I,EAAI,EAAGA,EAAIqS,EAAQlb,OAAQ6I,KAClCoH,EAAQmf,EAAcK,aAAavU,EAAQrS,MAG1C0mB,EAAQnwB,KAAK6Q,OAKgB,oBAAhB6K,aAA+BwU,aAAiBxU,aAAgBwU,aAAiBI,GACjGzf,EAAQmf,EAAcK,aAAaH,KAGlCC,EAAQnwB,KAAK6Q,GAENF,MAAMC,QAAQsf,GACtBA,EAAMpwB,SAAQ,SAASmR,GACtBkf,EAAUA,EAAQtjB,OAAOmjB,EAAcO,YAAYtf,OAGhDtV,GACHkG,QAAQC,KAAK,4CAA6CouB,GAI5D,OAAOC,EAGRtgB,oBAAoB/K,GACnB,OAAOkrB,EAAcC,OAAOnV,MAAK,SAASvf,GACzC,OAAOuJ,aAAmBwrB,EAAY/0B,IAAUuJ,EAAUvJ,EAAMuJ,UAAYA,MAK/EkrB,EAAcC,OAAS,GCxDR,MAAMO,UAAcn1B,EAClCC,YAAYC,EAAOuJ,EAAShE,GAC3B+D,MAAMtJ,GAENC,KAAKsJ,QAAUA,EACftJ,KAAKi1B,UAAYj1B,KAAKk1B,mBAEtBl1B,KAAKsF,OAASA,EAEdtF,KAAKm1B,WAAY,EACjBn1B,KAAKo1B,WAAa,KAClBp1B,KAAKq1B,UAAW,EAChBr1B,KAAKs1B,aAAe,KACpBt1B,KAAKu1B,iBAAkB,EACvBv1B,KAAKw1B,iBAAmB,KAExBx1B,KAAK2E,SAAU,EACf3E,KAAKy1B,UAAW,EAEhBz1B,KAAKsJ,QAAQ0B,UAAUC,IAAI,6BAE3BjL,KAAK01B,UAAY11B,KAAK+E,KAAKjE,KAAKd,MAAM,GACtCA,KAAK21B,SAAW31B,KAAK41B,aAAa90B,KAAKd,MAEvCA,KAAK61B,eAAiB71B,KAAK81B,eAAeh1B,KAAKd,MAC/CA,KAAK6sB,WAAY,EAGlBiJ,iBACC91B,KAAK6sB,WAAY,EACjB7sB,KAAK+E,MAAK,GAGXmwB,mBACC,IAAID,EAAYj1B,KAAKD,MAAMyC,QAAQuzB,eAqBnC,MAnBwB,iBAAdd,GACTA,EAAYlrB,SAAS4kB,cAAcsG,KAGlC5uB,QAAQC,KAAK,6DAA+DtG,KAAKD,MAAMyC,QAAQuzB,eAAiB,kCAE1F,IAAdd,IACTA,EAAYj1B,KAAKD,MAAMuJ,SAGrB2rB,IAAcj1B,KAAKg2B,wBAAwBf,KAC7CA,GAAY,EACZ5uB,QAAQC,KAAK,8DAAgEtG,KAAKD,MAAMyC,QAAQuzB,eAAiB,kCAG9Gd,IACHA,EAAYlrB,SAASksB,MAGfhB,EAGRe,wBAAwBf,EAAW3rB,EAAUtJ,KAAKD,MAAMuJ,SACvD,OAAG2rB,IAAc3rB,KAGTA,EAAQ0D,YAAahN,KAAKg2B,wBAAwBf,EAAW3rB,EAAQ0D,YAI9EkpB,eAAelf,GACdhX,KAAKw1B,iBAAmBxe,EAGzBmf,qBAAqBpmB,GACpB,IAAIqmB,IAAUrmB,aAAasmB,YAEvBC,EAAIF,EAAQrmB,EAAEwmB,QAAQ,GAAGC,MAAQzmB,EAAEymB,MACnCC,EAAIL,EAAQrmB,EAAEwmB,QAAQ,GAAGG,MAAQ3mB,EAAE2mB,MAEvC,GAAG12B,KAAKi1B,YAAclrB,SAASksB,KAAK,CACnC,IAAIU,EAAeviB,EAAQoE,SAASxY,KAAKi1B,WAEzCqB,GAAKK,EAAahsB,KAClB8rB,GAAKE,EAAapsB,IAGnB,MAAO,CAAC+rB,IAAGG,KAGZG,sBAAsBttB,EAAS5D,EAAW,SACzC,IACAmxB,EAAiBP,EAAGG,EADhB1jB,EAASqB,EAAQoE,SAASlP,GAU9B,OAPGtJ,KAAKi1B,YAAclrB,SAASksB,OAC9BY,EAAkBziB,EAAQoE,SAASxY,KAAKi1B,WAExCliB,EAAOpI,MAAQksB,EAAgBlsB,KAC/BoI,EAAOxI,KAAOssB,EAAgBtsB,KAGxB7E,GACN,IAAK,QACJ4wB,EAAIvjB,EAAOpI,KAAOrB,EAAQ8C,YAC1BqqB,EAAI1jB,EAAOxI,IAAM,EACjB,MAED,IAAK,SACJ+rB,EAAIvjB,EAAOpI,KACX8rB,EAAI1jB,EAAOxI,IAAMjB,EAAQwD,aACzB,MAED,IAAK,OACJwpB,EAAIvjB,EAAOpI,KACX8rB,EAAI1jB,EAAOxI,IAAM,EACjB,MAED,IAAK,MACJ+rB,EAAIvjB,EAAOpI,KACX8rB,EAAI1jB,EAAOxI,IACX,MAED,IAAK,SACJ+rB,EAAIvjB,EAAOpI,KAAQrB,EAAQ8C,YAAc,EACzCqqB,EAAI1jB,EAAOxI,IAAOjB,EAAQwD,aAAe,EAK3C,MAAO,CAACwpB,IAAGG,IAAG1jB,UAGfnO,KAAKkyB,EAAQpxB,GACZ,IAAI4wB,EAAGG,EAAGM,EAAUJ,EAAcK,EAElC,OAAGh3B,KAAK6sB,WAAa7sB,KAAKD,MAAM8sB,YAI7BiK,aAAkB5W,aACpB6W,EAAWD,EAGXH,GAFAK,EAASh3B,KAAK42B,sBAAsBE,EAAQpxB,IAEtBqN,OACtBujB,EAAIU,EAAOV,EACXG,EAAIO,EAAOP,GAEe,iBAAXK,GACfH,EAAe,CAACpsB,IAAI,EAAGI,KAAK,GAC5B2rB,EAAIQ,EACJL,EAAI/wB,IAIJ4wB,GAFAU,EAASh3B,KAAKm2B,qBAAqBW,IAExBR,EACXG,EAAIO,EAAOP,EAEXz2B,KAAKm1B,WAAY,GAGlBn1B,KAAKsJ,QAAQa,MAAMI,IAAMksB,EAAI,KAC7Bz2B,KAAKsJ,QAAQa,MAAMQ,KAAO2rB,EAAI,KAE9Bt2B,KAAKi1B,UAAUzpB,YAAYxL,KAAKsJ,SAEI,mBAA1BtJ,KAAKw1B,kBACdx1B,KAAKw1B,mBAGNx1B,KAAKi3B,aAAaX,EAAGG,EAAGM,EAAUJ,EAAcjxB,GAEhD1F,KAAK2E,SAAU,EAEf3E,KAAK2B,UAAU,gBAAiB3B,KAAK61B,gBAErC71B,KAAKsJ,QAAQwG,iBAAiB,aAAcC,IAC3CA,EAAEC,iBAAiB,KAxCZhQ,KA8CTi3B,aAAaX,EAAGG,EAAGM,EAAUJ,EAAcjxB,GAC1C,IAAIgT,EAAY1Y,KAAKi1B,YAAclrB,SAASksB,KAAOlsB,SAAS0K,gBAAgBiE,UAAY1Y,KAAKi1B,UAAUvc,UAgBvG,IAbI4d,EAAIt2B,KAAKsJ,QAAQ8C,aAAgBpM,KAAKi1B,UAAU7oB,aAAepM,KAAKm1B,aACvEn1B,KAAKsJ,QAAQa,MAAMQ,KAAO,GAGzB3K,KAAKsJ,QAAQa,MAAMS,MADjBmsB,EAC0B/2B,KAAKi1B,UAAU7oB,YAAcuqB,EAAahsB,KAAQ,KAElD3K,KAAKi1B,UAAU7oB,YAAckqB,EAAK,KAG/Dt2B,KAAKm1B,WAAY,GAIdsB,EAAIz2B,KAAKsJ,QAAQwD,aAAgBoF,KAAKG,IAAIrS,KAAKi1B,UAAUnoB,aAAc4L,EAAY1Y,KAAKi1B,UAAUxc,aAAe,GACpH,GAAGse,EACF,GACM,WADCrxB,EAEL1F,KAAKsJ,QAAQa,MAAMI,IAAOqF,SAAS5P,KAAKsJ,QAAQa,MAAMI,KAAOvK,KAAKsJ,QAAQwD,aAAeiqB,EAASjqB,aAAe,EAAK,UAItH9M,KAAKsJ,QAAQa,MAAMI,IAAOqF,SAAS5P,KAAKsJ,QAAQa,MAAMI,KAAOvK,KAAKsJ,QAAQwD,aAAeiqB,EAASjqB,aAAe,EAAK,UAIxH9M,KAAKsJ,QAAQa,MAAMI,IAAOqF,SAAS5P,KAAKsJ,QAAQa,MAAMI,KAAOvK,KAAKsJ,QAAQwD,aAAgB,KAK7FpI,YACC,OAAO1E,KAAK2E,QAGbuyB,WAAWlgB,GAqBV,OApBAhX,KAAKq1B,UAAW,EAEbr1B,KAAK2E,UACP8tB,YAAW,KACPzyB,KAAK2E,UACP3E,KAAKD,MAAMgM,WAAWzC,QAAQwG,iBAAiB,SAAU9P,KAAK01B,WAC9D11B,KAAK2B,UAAU,eAAgB3B,KAAK01B,WACpC3rB,SAASksB,KAAKnmB,iBAAiB,QAAS9P,KAAK01B,WAC7C3rB,SAASksB,KAAKnmB,iBAAiB,cAAe9P,KAAK01B,WACnD3rB,SAASksB,KAAKnmB,iBAAiB,YAAa9P,KAAK01B,WACjDnhB,OAAOzE,iBAAiB,SAAU9P,KAAK01B,WACvC3rB,SAASksB,KAAKnmB,iBAAiB,UAAW9P,KAAK21B,UAE/C31B,KAAKu1B,iBAAkB,KAEtB,KAEHv1B,KAAKs1B,aAAete,GAGdhX,KAGR41B,aAAa7lB,GACI,IAAbA,EAAEonB,SACJn3B,KAAK+E,OAIPqyB,YACCp3B,KAAKy1B,UAAW,EAGjB4B,cACCr3B,KAAKy1B,UAAW,EAGjB1wB,KAAK5E,GAAS,GAmCb,OAlCGH,KAAK2E,SAAW3E,KAAKy1B,WACpBz1B,KAAKq1B,UAAYr1B,KAAKu1B,kBACxBxrB,SAASksB,KAAKvF,oBAAoB,UAAW1wB,KAAK21B,UAClD5rB,SAASksB,KAAKvF,oBAAoB,QAAS1wB,KAAK01B,WAChD3rB,SAASksB,KAAKvF,oBAAoB,cAAe1wB,KAAK01B,WACtD3rB,SAASksB,KAAKvF,oBAAoB,YAAa1wB,KAAK01B,WACpDnhB,OAAOmc,oBAAoB,SAAU1wB,KAAK01B,WAC1C11B,KAAKD,MAAMgM,WAAWzC,QAAQonB,oBAAoB,SAAU1wB,KAAK01B,WACjE11B,KAAK6B,YAAY,eAAgB7B,KAAK01B,WAEtC11B,KAAKu1B,iBAAkB,GAGrBv1B,KAAKo1B,YACPp1B,KAAKo1B,WAAWrwB,OAGd/E,KAAKsF,SACPtF,KAAKsF,OAAO8vB,WAAa,MAGvBp1B,KAAKsJ,QAAQ0D,YACfhN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAG1CtJ,KAAK2E,SAAU,EAEZ3E,KAAKs1B,eAAiBn1B,GACxBH,KAAKs1B,eAGNt1B,KAAK6B,YAAY,gBAAiB7B,KAAK61B,iBAGjC71B,KAGR6R,MAAMvI,GAOL,OANGtJ,KAAKo1B,YACPp1B,KAAKo1B,WAAWrwB,OAGjB/E,KAAKo1B,WAAa,IAAIJ,EAAMh1B,KAAKD,MAAOuJ,EAAStJ,MAE1CA,KAAKo1B,YC3Sd,MAAMkC,UAAez3B,EAEpBC,YAAYC,EAAO6D,GAClByF,MAAMtJ,GAENC,KAAKu3B,SAAW,KAGjB9gB,cASA+gB,oBAAoBz1B,EAAKW,GACxB1C,KAAKD,MAAM4O,YAAYoH,SAAShU,EAAKW,GAGtC+0B,qBAAqB11B,EAAKW,GACzB1C,KAAKD,MAAM6F,cAAc+I,YAAYoH,SAAShU,EAAKW,GAOpDg1B,sBAAsB9zB,EAAM+zB,QACI,IAArB33B,KAAKD,MAAM6D,GACpB5D,KAAKD,MAAM6D,GAAQ,IAAI8vB,KACtB1zB,KAAKD,MAAM63B,UAAUh0B,GAEd+zB,KAAQjE,IAGhBrtB,QAAQC,KAAK,qDAAsD1C,GAIrEi0B,0BAA0BpuB,EAAWkuB,EAAMvL,GAC1C,OAAOpsB,KAAKD,MAAM+D,wBAAwBhD,KAAK2I,EAAWkuB,EAAMvL,GAOjE0L,oBAAoB1L,EAASC,GAC5BrsB,KAAKD,MAAMgM,WAAWogB,4BAA4BC,EAASC,GAC3DrsB,KAAKu3B,SAAWnL,EAGjB2L,uBAAuB3L,EAASC,GAC/BrsB,KAAKD,MAAMgM,WAAW0gB,+BAA+BL,EAASC,GAC9DrsB,KAAKu3B,SAAWnL,EAGjB9C,YAAYjI,GACX,IACA2W,EADIlmB,EAAQ9R,KAAKD,MAAMgM,WAAWud,YAAYlkB,OAAS,EAiBvD,GAdGpF,KAAKu3B,WACPS,EAAch4B,KAAKD,MAAMgM,WAAW4d,gBAAgBnU,WAAWC,GACvDA,EAAK2W,UAAYpsB,KAAKu3B,aAGZ,IACjBzlB,EAAQkmB,GAIP3W,IACFvP,GAAgBuP,GAGdrhB,KAAKu3B,SACP,OAAGzlB,GAAS,EACJ9R,KAAKD,MAAMgM,WAAW8L,eAAe/F,GAErC9R,KAAKopB,aAKfA,aACC,OAAOppB,KAAKD,MAAMgM,WAAWqd,WAG9B6O,YAAY7N,EAAkBgC,GACzBA,IACHA,EAAUpsB,KAAKu3B,UAGbnL,GACFpsB,KAAKD,MAAMgM,WAAWyY,kBAAkB4H,GAAS,EAAOhC,GAQ1D8N,aAAa5uB,GACZ,OAAOtJ,KAAKD,MAAMgiB,cAAc6M,OAAOtlB,GAGxC6uB,cAAc7uB,GACb,OAAOtJ,KAAKD,MAAMgiB,cAAc+M,QAAQxlB,GAGzC8uB,aAAa9uB,GACZ,OAAOtJ,KAAKD,MAAMgiB,cAAc/J,OAAO1O,GAOxC+uB,MAAMC,EAAQC,GACb,OAAO,IAAIvD,EAAMh1B,KAAKD,MAAOu4B,EAAQC,GAOtCxF,MAAMyF,EAASh1B,GACd,OAAOxD,KAAKD,MAAM+yB,aAAaC,MAAMyF,EAASh1B,GAG/C8uB,aACC,OAAOtyB,KAAKD,MAAM+yB,aAAa7a,SCvIlB,WAASnT,EAAS2zB,GAChC3zB,EAAQR,SAAQ,SAAShB,GACxBA,EAAO6D,uBAGLnH,KAAKD,MAAMyC,QAAQk2B,kBAAoB14B,KAAKD,MAAM44B,UAAU,oBAAoB,IAClF34B,KAAKD,MAAMU,QAAQi4B,iBAAiBzhB,QAEtC,OCJe,CACd2hB,QCLc,SAAS9zB,EAAS2zB,GAC7BA,GACFz4B,KAAKD,MAAM6F,cAAciY,SAASjH,yBAAyB9R,GAGzD9E,KAAKD,MAAMyC,QAAQk2B,kBAAoB14B,KAAKD,MAAM44B,UAAU,oBAAoB,IAClF34B,KAAKD,MAAMU,QAAQi4B,iBAAiBzhB,QAEtC,EDFC4hB,YAAYC,EACZC,aAAaD,EACbE,eERc,SAASl0B,EAAS2zB,GAChC,IAAIQ,EAAY,EAChBlL,EAAa/tB,KAAKD,MAAMgM,WAAWzC,QAAQ8I,YAC3C8mB,EAAM,EACNC,GAAU,EAEVr0B,EAAQR,SAAQ,CAAChB,EAAQ2K,KACpB3K,EAAO0K,YACV1K,EAAO6D,qBAGLnH,KAAKD,MAAMyC,QAAQk2B,iBAAmBp1B,EAAO7C,QAAQ24B,WAAWz0B,QAAUrB,EAAOqB,WACnFw0B,EAAU71B,GAGRA,EAAOqB,UACTs0B,GAAa31B,EAAOyD,eAInBoyB,GACFD,EAAMnL,EAAakL,EAAYE,EAAQpyB,WAEpC/G,KAAKD,MAAMyC,QAAQk2B,kBAAoB14B,KAAKD,MAAM44B,UAAU,oBAAoB,KAClFQ,EAAQnyB,SAAS,GACjBhH,KAAKD,MAAMU,QAAQi4B,iBAAiBzhB,UAGlCiiB,EAAM,EACRC,EAAQnyB,SAASkyB,GAEjBC,EAAQhyB,qBAGNnH,KAAKD,MAAMyC,QAAQk2B,kBAAoB14B,KAAKD,MAAM44B,UAAU,oBAAoB,IAClF34B,KAAKD,MAAMU,QAAQi4B,iBAAiBzhB,QAGvC,EF7BCoiB,WGTc,SAASv0B,EAAS2zB,GAChC,IAIIa,EAIAC,EARA7X,EAAa1hB,KAAKD,MAAMgM,WAAWzC,QAAQ4J,wBAAwBjM,MACnE0a,EAAa,EACb6X,EAAY,EACZC,EAAgB,EAEhBC,EAAc,GACdC,EAAqB,GACrBC,EAAkB,EAElBC,EAAU,EAEd,SAASC,EAAU7yB,GAalB,MAVoB,mBAChBA,EAAMgI,QAAQ,MAAQ,EACZyS,EAAa,IAAO9R,SAAS3I,GAE9B2I,SAAS3I,GAGVA,EAOb,SAAS8yB,EAAaj1B,EAASk1B,EAAWpY,EAAUqY,GACnD,IAAIC,EAAe,GACnBC,EAAgB,EAChBC,EAAiB,EACjBC,EAAe,EACfC,EAAyBb,EACzBP,EAAM,EACNqB,EAAc,EACdC,EAAgB,GAEhB,SAASC,EAAShf,GACjB,OAAQmG,GAAYnG,EAAInY,OAAOwH,WAAW4vB,WAAa,GAGxD,SAASC,EAAWlf,GACnB,OAASqe,EAAUre,EAAIxU,OAAU2a,GAAYnG,EAAInY,OAAOwH,WAAW8vB,aAAe,GA2CnF,OAxCA91B,EAAQR,SAAQ,SAASmX,EAAKxN,GAC7B,IAAIhH,EAAQgzB,EAAaU,EAAWlf,GAAOgf,EAAShf,GACjDA,EAAInY,OAAOmE,UAAYR,EACzBizB,EAAa11B,KAAKiX,GAEfA,EAAInY,OAAOoE,UAAY+T,EAAInY,OAAOoE,SAAWT,GAC/CwU,EAAIxU,MAAQwU,EAAInY,OAAOoE,SACvBsyB,GAAave,EAAInY,OAAOoE,UAExB4yB,GAA0BL,EAAcxe,EAAInY,OAAOwH,WAAW8vB,aAAe,EAAMnf,EAAInY,OAAOwH,WAAW4vB,WAAa,KAGrH9Y,EAAW1P,KAAKC,MAAM6nB,EAAUM,MAGjCE,EAAch2B,KAAKiX,GACnB8e,GAAeN,EAAcxe,EAAInY,OAAOwH,WAAW8vB,aAAe,EAAMnf,EAAInY,OAAOwH,WAAW4vB,WAAa,MAK3GR,EAAa90B,QACf80B,EAAa51B,SAAQ,SAASmX,GAC7B0e,GAAiBF,EAAcxe,EAAIxU,MAAQwU,EAAInY,OAAOmE,SAAWgU,EAAInY,OAAOmE,SAC5EgU,EAAIxU,MAAQwU,EAAInY,OAAOmE,YAGxB2yB,EAAiBJ,EAAYG,EAE7BE,EAAeE,EAAcroB,KAAKC,MAAMioB,EAAeG,GAAeH,EAEtElB,EAAMa,EAAaS,EAAeJ,EAAgBC,EAAcJ,KAEhEf,EAAMqB,EAAcP,EAAa9nB,KAAKC,MAAM6nB,EAAUO,GAAeA,EAAeP,EAEpFQ,EAAcl2B,SAAQ,SAAShB,GAC9BA,EAAO2D,MAAQgzB,EAAaU,EAAWr3B,GAAUm3B,EAASn3B,OAIrD41B,EAGLl5B,KAAKD,MAAMyC,QAAQk2B,kBAAoB14B,KAAKD,MAAM44B,UAAU,oBAAoB,IAClF34B,KAAKD,MAAMU,QAAQi4B,iBAAiBzhB,SAIlCjX,KAAKD,MAAMgM,WAAWzC,QAAQmP,aAAezY,KAAKD,MAAMgM,WAAWzC,QAAQsH,eAC7E8Q,GAAc1hB,KAAKD,MAAMgM,WAAWzC,QAAQ8C,YAAcpM,KAAKD,MAAMgM,WAAWzC,QAAQ8I,aAGzFtN,EAAQR,SAAQ,SAAShB,GACxB,IAAI2D,EAAOQ,EAAUma,EAElBte,EAAOqB,UAETsC,EAAQ3D,EAAOwH,WAAW7D,MAC1BQ,EAAYmI,SAAStM,EAAOmE,UAEzBR,GAEF2a,EAAWkY,EAAU7yB,GAErB0a,GAAcC,EAAWna,EAAWma,EAAWna,EAE5CnE,EAAOwH,WAAW8vB,cACpBjB,EAAmBn1B,KAAK,CACvBlB,OAAOA,EACP2D,MAAM2a,EAAWna,EAAWma,EAAWna,IAExCmyB,GAAmBt2B,EAAOwH,WAAW8vB,eAItClB,EAAYl1B,KAAK,CAChBlB,OAAOA,EACP2D,MAAM,IAEPwyB,GAAiBn2B,EAAOwH,WAAW4vB,WAAa,OAMnDlB,EAAY9X,EAAaC,EAGzB2X,EAAepnB,KAAKC,MAAMqnB,EAAYC,GAGtCI,EAAUE,EAAaL,EAAaF,EAAWF,GAAc,GAG1DI,EAAYt0B,QAAUy0B,EAAU,IAClCH,EAAYA,EAAYt0B,OAAO,GAAG6B,OAAS4yB,GAI5CH,EAAYp1B,SAAQ,SAASmX,GAC5B+d,GAAa/d,EAAIxU,UAGlBsyB,EAAgBrnB,KAAK8J,IAAI6d,GAAWL,GAGjB,GAAKI,IACvBC,EAAUE,EAAaJ,EAAoBJ,EAAernB,KAAKC,MAAMonB,EAAgBK,IAAkB,IAIrGC,GAAWF,EAAmBv0B,SAChCu0B,EAAmBA,EAAmBv0B,OAAO,GAAG6B,OAAS4yB,GAG1DH,EAAYp1B,SAAQ,SAASmX,GAC5BA,EAAInY,OAAO0D,SAASyU,EAAIxU,UAGzB0yB,EAAmBr1B,SAAQ,SAASmX,GACnCA,EAAInY,OAAO0D,SAASyU,EAAIxU,SAE1B,GCtKA,MAAM4zB,UAAevD,EAEpBx3B,YAAYC,GACXsJ,MAAMtJ,EAAO,UAEbC,KAAK86B,KAAO,KAEZ96B,KAAKw3B,oBAAoB,SAAU,WACnCx3B,KAAKw3B,oBAAoB,0BAA0B,GAEnDx3B,KAAKy3B,qBAAqB,aAC1Bz3B,KAAKy3B,qBAAqB,eAI3BhhB,aACC,IAAIlV,EAASvB,KAAKD,MAAMyC,QAAQjB,OAE7Bs5B,EAAOE,MAAMx5B,GACfvB,KAAK86B,KAAOv5B,GAEZ8E,QAAQC,KAAK,8DAAgE/E,GAC7EvB,KAAK86B,KAAO,WAGb96B,KAAKD,MAAMuJ,QAAQY,aAAa,mBAAoBlK,KAAK86B,MACzD96B,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OAG1Dg7B,iBAAiB13B,GACbA,EAAOwH,WAAW4vB,YACpBp3B,EAAOwH,WAAW4vB,UAAYO,OAAO33B,EAAOwH,WAAW4vB,YAErDp3B,EAAOwH,WAAW8vB,cACpBt3B,EAAOwH,WAAW8vB,YAAcK,OAAO33B,EAAOwH,WAAW8vB,cAI3Dp5B,UACC,OAAOxB,KAAK86B,KAIbv5B,OAAO25B,GACNl7B,KAAKiC,SAAS,qBACd44B,EAAOE,MAAM/6B,KAAK86B,MAAMhvB,KAAK9L,KAAMA,KAAKD,MAAM6F,cAAcyU,eAAgB6gB,GAC5El7B,KAAKiC,SAAS,qBAIhB44B,EAAOM,WAAa,SAGpBN,EAAOE,MAAQK,ECnDf,MAAMC,UAAiB/D,EAEtBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKs7B,OAAS,UACdt7B,KAAKu7B,MAAO,EACZv7B,KAAKsxB,SAAW,GAChBtxB,KAAKw7B,SAAW,GAEhBx7B,KAAKw3B,oBAAoB,UAAU,GACnCx3B,KAAKw3B,oBAAoB,QAAS,IAGnC/gB,aACCzW,KAAKw7B,SAAWpnB,EAAQuB,UAAU0lB,EAASI,QAEsB,IAA9Dz7B,KAAKD,MAAMyC,QAAQkM,eAAegtB,yBACpC17B,KAAK27B,2BAA2B37B,KAAKD,MAAMyC,QAAQkM,eAAegtB,yBAGnE,IAAI,IAAIJ,KAAUt7B,KAAKD,MAAMyC,QAAQi5B,MACpCz7B,KAAK47B,YAAYN,EAAQt7B,KAAKD,MAAMyC,QAAQi5B,MAAMH,IAGnDt7B,KAAK67B,UAAU77B,KAAKD,MAAMyC,QAAQ84B,QAElCt7B,KAAK03B,sBAAsB,YAAa13B,KAAK67B,UAAU/6B,KAAKd,OAC5DA,KAAK03B,sBAAsB,YAAa13B,KAAKgB,UAAUF,KAAKd,OAC5DA,KAAK03B,sBAAsB,UAAW13B,KAAK87B,QAAQh7B,KAAKd,OAIzD27B,2BAA2B5S,GAC1B/oB,KAAKw7B,SAASO,QAAQC,cAAcD,QAAUhT,EAI/C6S,YAAYN,EAAQC,GAChBv7B,KAAKw7B,SAASF,GAChBt7B,KAAKi8B,aAAaj8B,KAAKw7B,SAASF,GAASC,GAEzCv7B,KAAKw7B,SAASF,GAAUC,EAI1BU,aAAaV,EAAMpL,GAClB,IAAI,IAAIpuB,KAAOouB,EACXoL,EAAKx5B,IAA4B,iBAAbw5B,EAAKx5B,GAC3B/B,KAAKi8B,aAAaV,EAAKx5B,GAAMouB,EAAOpuB,IAEpCw5B,EAAKx5B,GAAOouB,EAAOpuB,GAMtB85B,UAAUK,GAuBT,IALqB,KAjBrBA,EAAgBA,GAAiB,YAiBJC,UAAUC,WAEtCF,EAAgBC,UAAUC,SAASC,eAGjCH,IAEEl8B,KAAKw7B,SAASU,GAAe,CAChC,IAAII,EAASJ,EAAcnxB,MAAM,KAAK,GAEnC/K,KAAKw7B,SAASc,IAChBj2B,QAAQC,KAAK,8EAA+E41B,EAAeI,GAC3GJ,EAAgBI,IAEhBj2B,QAAQC,KAAK,kEAAmE41B,GAChFA,EAAgB,WAKnBl8B,KAAKs7B,OAASY,EAGdl8B,KAAKu7B,KAAOnnB,EAAQuB,UAAU3V,KAAKw7B,SAASO,SAAW,IAEnC,WAAjBG,GAvCH,SAASK,EAAaC,EAAO7L,GAC5B,IAAI,IAAI8L,KAAQD,EACU,iBAAfA,EAAMC,IACX9L,EAAK8L,KACR9L,EAAK8L,GAAQ,IAEdF,EAAaC,EAAMC,GAAO9L,EAAK8L,KAE/B9L,EAAK8L,GAAQD,EAAMC,GAgCrBF,CAAav8B,KAAKw7B,SAASU,GAAgBl8B,KAAKu7B,MAGjDv7B,KAAKoC,iBAAiB,YAAapC,KAAKs7B,OAAQt7B,KAAKu7B,MAErDv7B,KAAK08B,mBAIN17B,UAAUs6B,GACT,OAAOt7B,KAAKs7B,OAIbQ,QAAQR,GACP,OAAOA,EAASt7B,KAAKw7B,SAASF,GAAUt7B,KAAKu7B,KAI9C56B,QAAQgwB,EAAMjuB,GACb,IACAi6B,GADej6B,EAAQiuB,EAAO,IAAMjuB,EAAQiuB,GACvB5lB,MAAM,KAO3B,OANO/K,KAAK48B,gBAAgBD,EAAW38B,KAAKs7B,SAM7B,GAIhBsB,gBAAgBjM,EAAM2K,GACrB,IAAIjb,EAAOrgB,KAAKu7B,KAgBhB,OAdA5K,EAAKrsB,SAAQ,SAASu4B,GACrB,IAAIC,EAEDzc,IACFyc,EAAWzc,EAAKwc,GAGfxc,OADqB,IAAZyc,GACFA,MAOHzc,EAIRvf,KAAK6vB,EAAM3Z,GACNhX,KAAKsxB,SAASX,KACjB3wB,KAAKsxB,SAASX,GAAQ,IAGvB3wB,KAAKsxB,SAASX,GAAMnsB,KAAKwS,GAEzBA,EAAShX,KAAKW,QAAQgwB,GAAO3wB,KAAKu7B,MAInCmB,mBACC,IAAI,IAAI/L,KAAQ3wB,KAAKsxB,SACpBtxB,KAAKsxB,SAASX,GAAMrsB,SAASy4B,IAC5BA,EAAQ/8B,KAAKW,QAAQgwB,GAAO3wB,KAAKu7B,KAAK,KAM1CF,EAASF,WAAa,WAGtBE,EAASI,MCvLM,CACdM,QAAU,CACTiB,OAAS,CACRvnB,KAAO,OACPwnB,MAAQ,SAETn4B,QAAU,GAEV5E,KAAO,CACNyxB,QAAU,UACV5d,MAAQ,SAETsW,WAAa,CACZ6S,UAAY,YACZC,WAAa,YACbC,MAAQ,QACRC,YAAc,aACdC,KAAO,OACPC,WAAa,YACbC,KAAO,OACPC,WAAa,YACbC,KAAO,OACPC,WAAa,YACbC,IAAM,MACNC,QAAU,CACTC,QAAW,UACXC,GAAM,KACNvrB,KAAQ,OACRwrB,MAAS,UAGXhC,cAAgB,CACfD,QAAU,mBACVj3B,QAAU,MC9Bb,MAAMm5B,UAAc3G,EAEnBx3B,YAAYC,GACXsJ,MAAMtJ,GAGP0W,aACCzW,KAAK03B,sBAAsB,aAAc13B,KAAKk+B,QAAQp9B,KAAKd,OAG5DmB,eAAeg9B,GACd,IAAIC,EAAc,GAWlB,OARa5J,EAAcO,YAAYoJ,GAE5B75B,SAAS+5B,IAChBr+B,KAAKD,QAAUs+B,GACjBD,EAAY55B,KAAK65B,MAIZD,EAGR/8B,KAAK88B,EAAW/6B,EAAQk7B,EAAQp+B,GAC/B,IAAIk+B,EAAcp+B,KAAKmB,eAAeg9B,GAEtCC,EAAY95B,SAASi6B,IACpBA,EAAWC,WAAWx+B,KAAKD,MAAMuJ,QAASlG,EAAQk7B,EAAQp+B,EAAK,KAG5Dk+B,EAAYh5B,QAAU+4B,GACzB93B,QAAQC,KAAK,6DAA8D63B,GAI7ED,QAAQn+B,EAAOqD,EAAQk7B,EAAQp+B,GAC9B,GAAGF,KAAKD,MAAM44B,UAAUv1B,GACvB,OAAOpD,KAAKD,MAAMU,QAAQ2C,GAAQq7B,cAAc1+B,EAAOu+B,EAAQp+B,GAE/DmG,QAAQC,KAAK,4CAA6ClD,IAK7D66B,EAAM9C,WAAa,4FC9CJ,MAAMuD,EAEpB5+B,YAAY6+B,EAAWl+B,GACtBT,KAAK4+B,wBAAwBD,GAC7B3+B,KAAK6+B,YAAYF,EAAWG,GAAa,GAEtCr+B,GACFT,KAAK6+B,YAAYF,EAAWl+B,GAI9Bm+B,wBAAwBD,GACvBA,EAAUI,eAAiB,GAE3BJ,EAAUK,aAAe,SAASp7B,EAAMq7B,EAAU9O,GACjD,GAAGwO,EAAUI,eAAen7B,GAAM,CACjC,IAAIs7B,EAASP,EAAUI,eAAen7B,GAAMq7B,GAE5C,GAAGC,EACF,GAAoB,iBAAV/O,EACT,IAAI,IAAIpuB,KAAOouB,EACd+O,EAAOn9B,GAAOouB,EAAOpuB,QAGtBsE,QAAQC,KAAK,gEAGdD,QAAQC,KAAK,0CAA2C24B,QAGzD54B,QAAQC,KAAK,wCAAyC1C,IAIxD+6B,EAAUQ,eAAiB,SAAS1+B,GAC/B0U,MAAMC,QAAQ3U,KACjBA,EAAU,CAACA,IAGZA,EAAQ6D,SAAS86B,IAChBT,EAAUU,sBAAsBD,EAAI,KAItCT,EAAUU,sBAAwB,SAASD,GAC1CT,EAAUI,eAAeK,EAAIjE,YAAciE,GAG5CT,EAAUW,UAAY,SAAS5K,GAC9B,IAAIC,EAAUH,EAAcO,YAAYL,GAAO,GAC/C,QAAOvf,MAAMC,QAAQuf,KAAaA,EAAQvvB,SAAiBuvB,GAI5DgK,EAAUY,UAAUV,YAAc,WACjC,IAAIW,EAAmB,GACvBC,EAAiB,GACjBC,EAAgB,GAIhB,IAAI,IAAI97B,KAFR5D,KAAKS,QAAU,GAECk+B,EAAUI,eAAe,CACxC,IAAIK,EAAMT,EAAUI,eAAen7B,GAC/BR,EAAS,IAAIg8B,EAAIp/B,MAErBA,KAAKS,QAAQmD,GAAQR,EAElBg8B,EAAIG,UAAUI,WAChB3/B,KAAK4/B,YAAYp7B,KAAKpB,GAEnBg8B,EAAIS,gBACHT,EAAIS,gBAAkB,EACxBL,EAAiBh7B,KAAKpB,GAEtBq8B,EAAej7B,KAAKpB,GAIrBs8B,EAAcl7B,KAAKpB,GAKtBo8B,EAAiBlT,MAAK,CAACC,EAAGC,IAAMD,EAAEsT,gBAAkBrT,EAAEqT,gBAAkB,GAAK,IAC7EJ,EAAenT,MAAK,CAACC,EAAGC,IAAMD,EAAEsT,gBAAkBrT,EAAEqT,gBAAkB,GAAK,IAE3E7/B,KAAK8/B,eAAiBN,EAAiBnuB,OAAOquB,EAAcruB,OAAOouB,KAIrEZ,YAAYF,EAAWl+B,EAASs/B,GAC/B,IAAIC,EAAOjxB,OAAOohB,OAAO1vB,GAEtBs/B,GACFC,EAAK17B,SAAS86B,IACbA,EAAIG,UAAUI,YAAa,CAAI,IAIjChB,EAAUQ,eAAea,ICpGZ,MAAMC,UAAcpgC,EAClCC,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKsJ,QAAUtJ,KAAKkgC,sBACpBlgC,KAAKmgC,WAAangC,KAAKogC,oBACvBpgC,KAAKwD,KAAO,KAEZxD,KAAKsJ,QAAQkC,YAAYxL,KAAKmgC,YAG/BD,sBACC,IAAI3xB,EAAKxE,SAASC,cAAc,OAEhC,OADAuE,EAAGvD,UAAUC,IAAI,mBACVsD,EAGR6xB,oBACC,IAAI7xB,EAAKxE,SAASC,cAAc,OAGhC,OAFAuE,EAAGvD,UAAUC,IAAI,uBACjBsD,EAAGrE,aAAa,OAAQ,SACjBqE,EAGR8xB,aACC,MAAO,yBAA2BrgC,KAAKwD,KAGxCuvB,MAAMyF,EAASh1B,EAAO,OACrB,GAAGg1B,EAAQ,CAKV,IAJAx4B,KAAKiY,QAELjY,KAAKwD,KAAOA,EAENxD,KAAKmgC,WAAW70B,YAAYtL,KAAKmgC,WAAW50B,YAAYvL,KAAKmgC,WAAW70B,YAE9EtL,KAAKmgC,WAAWn1B,UAAUC,IAAIjL,KAAKqgC,cAEb,mBAAZ7H,IACTA,EAAUA,KAGRA,aAAmBtY,YACrBlgB,KAAKmgC,WAAW30B,YAAYgtB,GAE5Bx4B,KAAKmgC,WAAW/0B,UAAYotB,EAG7Bx4B,KAAKD,MAAMuJ,QAAQkC,YAAYxL,KAAKsJ,UAItC2O,QACIjY,KAAKsJ,QAAQ0D,YACfhN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAG1CtJ,KAAKmgC,WAAWn1B,UAAUgN,OAAOhY,KAAKqgC,eCnCxC,MAAMvL,EAELh1B,YAAYwJ,EAAS9G,GAEpBxC,KAAKwC,QAAU,GAEfxC,KAAK4F,cAAgB,KACrB5F,KAAK+L,WAAa,KAClB/L,KAAK+hB,cAAgB,KACrB/hB,KAAK8yB,aAAe,KACpB9yB,KAAK8a,QAAW,KAChB9a,KAAKqC,eAAiB,KACtBrC,KAAK4B,SAAW,KAChB5B,KAAKsgC,oBAAqB,EAC1BtgC,KAAKguB,QAAU,GACfhuB,KAAKugC,aAAc,EACnBvgC,KAAKwgC,eAAgB,EACrBxgC,KAAKqe,KAAM,EACXre,KAAKygC,gBAAkB,KAEvBzgC,KAAK8D,wBAA0B,IAAIutB,EAAwBrxB,MAC3DA,KAAKK,YAAa,EAElBL,KAAKS,QAAU,GACfT,KAAK4/B,YAAc,GACnB5/B,KAAK8/B,eAAiB,GAEtB9/B,KAAK8C,mBAAqB,IAAIwxB,EAAmBt0B,MACjDA,KAAK2O,YAAc,IAAIiH,EAAY5V,KAAM,qBAEzCA,KAAK0Z,aAAc,EACnB1Z,KAAK6sB,WAAY,EAEd7sB,KAAKyuB,kBAAkBnlB,KAEzBtJ,KAAK0gC,sBAAsBl+B,GAG3BiwB,YAAW,KACVzyB,KAAK2gC,SAAS,KAIhBnM,EAAcze,SAAS/V,MAGxByuB,kBAAkBnlB,GACjB,MAA0B,oBAAhB4W,aAA+B5W,aAAmB4W,aAC3DlgB,KAAKsJ,QAAUA,GACR,GACoB,iBAAZA,GACftJ,KAAKsJ,QAAUS,SAAS4kB,cAAcrlB,KAEnCtJ,KAAKsJ,UAGPjD,QAAQ0N,MAAM,kEAAmEzK,IAC1E,KAGRjD,QAAQ0N,MAAM,uDAAwDzK,IAC/D,GAITo3B,sBAAsBl+B,GACrBxC,KAAK4F,cAAgB,IAAI0X,EAActd,MACvCA,KAAK+L,WAAa,IAAI4c,EAAW3oB,MACjCA,KAAK+hB,cAAgB,IAAIuM,EAActuB,MACvCA,KAAKK,WAAa,IAAIoxB,EAAWzxB,MACjCA,KAAK8yB,aAAe,IAAImN,EAAMjgC,MAE9BA,KAAK6+B,cAEL7+B,KAAKwC,QAAUxC,KAAK2O,YAAYC,SAASkmB,EAAU3gB,eAAgB3R,GAEnExC,KAAK4gC,uBAEL5gC,KAAK6gC,8BAEL7gC,KAAKqC,eAAiB,IAAI6wB,EAAiBlzB,KAAMA,KAAKwC,QAASxC,KAAKwC,QAAQs+B,qBAC5E9gC,KAAK4B,SAAW,IAAImyB,EAAiB/zB,KAAKwC,QAAQu+B,qBAElD/gC,KAAKsgC,mBAAqB,IAAIU,EAAmBhhC,MAEjDA,KAAKK,WAAWoW,aAGhBzW,KAAK+hB,cAActL,aAIpBoqB,+BAIAI,kBAECjhC,KAAKsJ,QAAQ0B,UAAUC,IAAI,0BAEvBsJ,OAAO2sB,aACN3sB,OAAO2sB,eAAeC,MACzB5sB,OAAO2sB,eAAeC,QACZ5sB,OAAO2sB,eAAeE,iBAChC7sB,OAAO2sB,eAAeE,kBAEbr3B,SAASs3B,WACnBt3B,SAASs3B,UAAUF,QAGpBnhC,KAAKsJ,QAAQ0B,UAAUgN,OAAO,0BAI/B2oB,UACC3gC,KAAKqC,eAAeJ,SAAS,iBAC7BjC,KAAK4B,SAASK,SAAS,kBAEvBjC,KAAKshC,YAELthC,KAAKuhC,gBAELvhC,KAAKwhC,mBAELxhC,KAAKyhC,mBAELzhC,KAAK0Z,aAAc,EAEnB1Z,KAAKqC,eAAeJ,SAAS,cAG9Bq/B,YACC,IAAIn3B,EAAQoK,OAAOmtB,iBAAiB1hC,KAAKsJ,SAEzC,OAAOtJ,KAAKwC,QAAQm/B,eACnB,IAAI,OACH,GAAuB,QAApBx3B,EAAMy3B,UACR,MAGF,IAAK,MACJ5hC,KAAKsJ,QAAQ0B,UAAUC,IAAI,iBAC3BjL,KAAKqe,KAAM,EACX,MAED,IAAK,MACJre,KAAKsJ,QAAQ0B,UAAUC,IAAI,iBAE5B,QACCjL,KAAKqe,KAAM,GAKduiB,uBACC5gC,KAAKwC,QAAQsC,QAAU9E,KAAKwC,QAAQsC,QAAQwiB,MAAM,GAE/CnS,MAAMC,QAAQpV,KAAKwC,QAAQtC,QAAUF,KAAKwC,QAAQq/B,eACpD7hC,KAAKwC,QAAQtC,KAAOF,KAAKwC,QAAQtC,KAAKonB,MAAM,IAK9Cia,gBACC,IAEAO,EAFIx4B,EAAUtJ,KAAKsJ,QACnB9G,EAAUxC,KAAKwC,QAGf,GAAuB,UAApB8G,EAAQy4B,QAAoB,CAC9B/hC,KAAKygC,gBAAkBzgC,KAAKsJ,QAC5Bw4B,EAAa/3B,SAASC,cAAc,OAGpC,IAAIg4B,EAAa14B,EAAQ04B,WAGzB,IAAI,IAAI/zB,KAAK+zB,EACe,iBAAjBA,EAAW/zB,IACpB6zB,EAAW53B,aAAa83B,EAAW/zB,GAAGrK,KAAMo+B,EAAW/zB,GAAGvL,OAK5D4G,EAAQ0D,WAAWi1B,aAAaH,EAAYx4B,GAE5CtJ,KAAKsJ,QAAUA,EAAUw4B,EAO1B,IAJAx4B,EAAQ0B,UAAUC,IAAI,aACtB3B,EAAQY,aAAa,OAAQ,QAGvBZ,EAAQgC,YAAYhC,EAAQiC,YAAYjC,EAAQgC,YAGnD9I,EAAQgH,SACVhH,EAAQgH,OAASyI,MAAMzP,EAAQgH,QAAUhH,EAAQgH,OAAShH,EAAQgH,OAAS,KAC3EF,EAAQa,MAAMX,OAAShH,EAAQgH,SAIP,IAAtBhH,EAAQsO,YACVtO,EAAQsO,UAAYmB,MAAMzP,EAAQsO,WAAatO,EAAQsO,UAAYtO,EAAQsO,UAAY,KACvFxH,EAAQa,MAAM2G,UAAYtO,EAAQsO,YAIV,IAAtBtO,EAAQihB,YACVjhB,EAAQihB,UAAYxR,MAAMzP,EAAQihB,WAAajhB,EAAQihB,UAAYjhB,EAAQihB,UAAY,KACvFna,EAAQa,MAAMsZ,UAAYjhB,EAAQihB,WAKpC+d,mBACC,IAAIl4B,EAAUtJ,KAAKsJ,QACnB9G,EAAUxC,KAAKwC,QAEfxC,KAAKsgC,mBAAmB7pB,aAExBzW,KAAK4F,cAAc6Q,aACnBzW,KAAK+L,WAAW0K,aAEhBzW,KAAKkiC,iBAGLliC,KAAK4/B,YAAYt7B,SAAS86B,IACzBA,EAAI3oB,YAAY,IAIjBnN,EAAQkC,YAAYxL,KAAK4F,cAAc5B,cACvCsF,EAAQkC,YAAYxL,KAAK+L,WAAW/H,cAEjCxB,EAAQksB,eACV1uB,KAAK+hB,cAAc8M,WAGjBrsB,EAAQgoB,aAAehoB,EAAQtC,MAEjCF,KAAK4F,cAAcsZ,2BAA2Blf,KAAKwC,QAAQtC,MAI5DF,KAAK8/B,eAAex7B,SAAS86B,IAC5BA,EAAI3oB,YAAY,IAGjBzW,KAAK4F,cAAc2Z,WAAW/c,EAAQsC,SAEtC9E,KAAK4B,SAASK,SAAS,eAGxBw/B,mBACCzhC,KAAKK,WAAWC,KAAKN,KAAKwC,QAAQtC,MAInCwqB,UACC,IAAIphB,EAAUtJ,KAAKsJ,QAYnB,IAVAtJ,KAAK6sB,WAAY,EAEjB2H,EAAc2N,WAAWniC,MAEzBA,KAAK4B,SAASK,SAAS,iBAGvBjC,KAAK+L,WAAW2e,UAGVphB,EAAQgC,YAAYhC,EAAQiC,YAAYjC,EAAQgC,YACtDhC,EAAQ0B,UAAUgN,OAAO,aAEzBhY,KAAKqC,eAAeJ,SAAS,kBAG9BigC,iBACC,IAAIE,EAAKjG,UAAUkG,WAAWlG,UAAUmG,QAAQ/tB,OAAOguB,MAEpDH,EAAGnzB,QAAQ,YAAc,GAC3BjP,KAAKguB,QAAU,KACfhuB,KAAKugC,aAAc,GACX6B,EAAGnzB,QAAQ,SAAW,GAC9BjP,KAAKguB,QAAU,OACfhuB,KAAKugC,aAAc,GACX6B,EAAGnzB,QAAQ,YAAc,GACjCjP,KAAKguB,QAAU,UACfhuB,KAAKugC,aAAc,GACX6B,EAAGnzB,QAAQ,WAAa,GAChCjP,KAAKguB,QAAU,SACfhuB,KAAKugC,aAAc,IAEnBvgC,KAAKguB,QAAU,QACfhuB,KAAKugC,aAAc,GAGpBvgC,KAAKwgC,cAAgB,sVAAsVgC,KAAKJ,IAAK,4hDAA4hDI,KAAKJ,EAAG9a,MAAM,EAAE,IAGl6DsQ,UAAUD,EAAM10B,GACf,IAAIw/B,EAAOC,EAkBX,OAhBG1iC,KAAKwC,QAAQmgC,sBAAwB3iC,KAAK0Z,cACxCie,IAMFA,EADa,MAFd+K,EAAmB,UAFnBD,GAAQ,IAAIG,OAAQH,MAAM13B,MAAM,OAEnB,GAAgB03B,EAAM,GAAKA,EAAM,IAEtC,GACAC,EAAKG,OAAO93B,MAAM,KAAK,GAAGA,MAAM,KAAK,GAErC23B,EAAKG,OAAO93B,MAAM,KAAK,IAIhC1E,QAAQC,KAAK,uCAAyCqxB,EAAO,uJAAyJ10B,EAAM,IAAMA,EAAM,MAGlOjD,KAAK0Z,YAKbxC,cACClX,KAAK43B,YAEL53B,KAAK4B,SAASK,SAAS,mBAEvBjC,KAAK+L,WAAWmL,cAChBlX,KAAK4F,cAAcsR,cAEnBlX,KAAK4B,SAASK,SAAS,kBAIxB4f,gBACC7hB,KAAK43B,YAEL53B,KAAK4B,SAASK,SAAS,oBAEvBjC,KAAK+L,WAAW8V,gBAChB7hB,KAAK4F,cAAcic,gBAEnB7hB,KAAK4B,SAASK,SAAS,mBAIxBghB,QAAQ/iB,EAAM0xB,EAAQnX,GAGrB,OAFAza,KAAK43B,WAAU,EAAO,gFAEf53B,KAAKK,WAAWC,KAAKJ,EAAM0xB,EAAQnX,GAAQ,GAInDoR,YACC7rB,KAAK43B,YAEL53B,KAAKK,WAAWwyB,kBAChB7yB,KAAK+L,WAAW8f,YAIjBnjB,QAAQgY,GACP,OAAO1gB,KAAK+L,WAAWrD,QAAQgY,GAIhCwL,aAAaxL,GACZ,OAAO1gB,KAAK+L,WAAWmgB,aAAaxL,GAIrCoiB,YAAY5iC,EAAM0xB,EAAQnX,GAGzB,OAFAza,KAAK43B,YAEE53B,KAAKK,WAAWC,KAAKJ,EAAM0xB,EAAQnX,GAAQ,GAAM,GAIzD4H,WAAWniB,GACV,IAAI6iC,EAAY,EAIhB,OAFA/iC,KAAK43B,YAEE,IAAIzkB,SAAQ,CAACC,EAASC,KAC5BrT,KAAKK,WAAWwyB,kBAEG,iBAAT3yB,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGhBA,GAAQA,EAAKkF,OAAS,EACxBlF,EAAKoE,SAASmR,IACb,IAAIhN,EAAMzI,KAAK+L,WAAWuY,QAAQ7O,EAAKzV,KAAKwC,QAAQsP,QAEjDrJ,GACFs6B,IAEAt6B,EAAI4Z,WAAW5M,GACbvB,MAAK,OACL6uB,GAGC3vB,OAGDmf,OAAOxiB,IACPsD,EAAO,sCAAuCoC,EAAM1F,EAAE,KAGxDsD,EAAO,oCAAqCoC,OAI9CpP,QAAQC,KAAK,mCACb+M,EAAO,uCAKV2vB,QAAQ9iC,EAAMgrB,EAAKpZ,GAGlB,OAFA9R,KAAK43B,YAEE,IAAIzkB,SAAQ,CAACC,EAASC,KAC5BrT,KAAKK,WAAWwyB,kBAEG,iBAAT3yB,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGhBA,EACFF,KAAK+L,WAAWqf,QAAQlrB,EAAMgrB,EAAKpZ,GACjCoC,MAAM1B,IACN,IAAIrN,EAAS,GAEbqN,EAAKlO,SAAQ,SAASmE,GACrBtD,EAAOX,KAAKiE,EAAIhE,mBAGjB2O,EAAQjO,EAAO,KAGjBkB,QAAQC,KAAK,mCACb+M,EAAO,uCAMV4vB,gBAAgB/iC,GACf,IAAIsS,EAAO,GACXuwB,EAAY,EAIZ,OAFA/iC,KAAK43B,YAEE,IAAIzkB,SAAQ,CAACC,EAASC,KAC5BrT,KAAKK,WAAWwyB,kBAEG,iBAAT3yB,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGhBA,GAAQA,EAAKkF,OAAS,EACxBlF,EAAKoE,SAASmR,IACb,IAAIhN,EAAMzI,KAAK+L,WAAWuY,QAAQ7O,EAAKzV,KAAKwC,QAAQsP,QAEpDixB,IAEGt6B,EACFA,EAAI4Z,WAAW5M,GACbvB,MAAK,KACL6uB,IACAvwB,EAAKhO,KAAKiE,EAAIhE,gBAEVs+B,GACH3vB,EAAQZ,MAIXxS,KAAK+L,WAAWqf,QAAQ3V,GACtBvB,MAAMgvB,IACNH,IACAvwB,EAAKhO,KAAK0+B,EAAQ,GAAGz+B,gBAEjBs+B,GACH3vB,EAAQZ,UAMbnM,QAAQC,KAAK,mCACb+M,EAAO,uCAMV7K,OAAOsJ,GACN,IAAIrJ,EAAMzI,KAAK+L,WAAWuY,QAAQxS,GAElC,OAAGrJ,EACKA,EAAIhE,gBAEX4B,QAAQC,KAAK,sCAAuCwL,IAC7C,GAKTqY,mBAAmBzkB,GAClB,IAAI+C,EAAMzI,KAAK+L,WAAWoe,mBAAmBzkB,GAE7C,OAAG+C,EACKA,EAAIhE,gBAEX4B,QAAQC,KAAK,sCAAuCZ,IAC7C,GAKTif,UAAU7S,GACT,IAAIqxB,EAAY,GAEhBnjC,KAAK43B,YAEDziB,MAAMC,QAAQtD,KACjBA,EAAQ,CAACA,IAIV,IAAI,IAAI2D,KAAQ3D,EAAM,CACrB,IAAIrJ,EAAMzI,KAAK+L,WAAWuY,QAAQ7O,GAAM,GAExC,IAAGhN,EAIF,OADApC,QAAQ0N,MAAM,wCAAyC0B,GAChDtC,QAAQE,OAAO,wCAHtB8vB,EAAU3+B,KAAKiE,GAmBjB,OAXA06B,EAAU7W,MAAK,CAACC,EAAGC,IACXxsB,KAAK+L,WAAWyG,KAAKvD,QAAQsd,GAAKvsB,KAAK+L,WAAWyG,KAAKvD,QAAQud,GAAK,GAAK,IAIjF2W,EAAU7+B,SAASmE,IAClBA,EAAIxD,QAAQ,IAGbjF,KAAK+L,WAAWwe,qBAETpX,QAAQC,UAIhB6X,OAAO/qB,EAAMgrB,EAAKpZ,GAOjB,OANA9R,KAAK43B,YAEc,iBAAT13B,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGZF,KAAK+L,WAAWqf,QAAQlrB,EAAMgrB,EAAKpZ,GAAO,GAC/CoC,MAAM1B,GACCA,EAAK,GAAG/N,iBAKlB2+B,eAAetxB,EAAO5R,GACrB,IAAIuI,EAAMzI,KAAK+L,WAAWuY,QAAQxS,GAQlC,OANA9R,KAAK43B,YAEc,iBAAT13B,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGhBuI,EACKA,EAAI4Z,WAAWniB,GACpBgU,MAAK,IACEzL,EAAIhE,iBAGNzE,KAAK+L,WAAWqf,QAAQlrB,GAC7BgU,MAAM1B,GACCA,EAAK,GAAG/N,iBAMnB4+B,UAAUvxB,EAAO5R,GAChB,IAAIuI,EAAMzI,KAAK+L,WAAWuY,QAAQxS,GAQlC,OANA9R,KAAK43B,YAEc,iBAAT13B,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGhBuI,EACKA,EAAI4Z,WAAWniB,GACpBgU,MAAK,IACEf,QAAQC,QAAQ3K,EAAIhE,mBAG7B4B,QAAQC,KAAK,wCAAyCwL,GAC/CqB,QAAQE,OAAO,yCAKxBoE,YAAY3F,EAAOpM,EAAUC,GAC5B,IAAI8C,EAAMzI,KAAK+L,WAAWuY,QAAQxS,GAElC,OAAGrJ,EACKzI,KAAK+L,WAAW0L,YAAYhP,EAAK/C,EAAUC,IAElDU,QAAQC,KAAK,wCAAyCwL,GAC/CqB,QAAQE,OAAO,yCAIxBsY,QAAQ7K,EAAM9a,EAAIC,GACjB,IAAIq9B,EAAUtjC,KAAK+L,WAAWuY,QAAQxD,GAEtC9gB,KAAK43B,YAEF0L,EACFA,EAAQlhB,UAAUpc,EAAIC,GAEtBI,QAAQC,KAAK,sCAAuCwa,GAItDlF,QAAQ8E,GACP,OAAO1gB,KAAK+L,WAAW6U,cAAcF,GAItC6iB,eAAezxB,GACd,IAAIrJ,EAAMzI,KAAK+L,WAAWuY,QAAQxS,GAElC,OAAGrJ,EACKA,EAAIyZ,eAEX7b,QAAQC,KAAK,0CAA2CwL,IACjD,GAKTyN,WAAWzU,GACV9K,KAAK43B,WAAU,EAAO,qFAEtB53B,KAAK4F,cAAc2Z,WAAWzU,GAG/BqG,WAAW0P,GACV,OAAO7gB,KAAK4F,cAAcgb,cAAcC,GAGzChY,UAAUvB,GACT,IAAIhE,EAAStD,KAAK4F,cAAcO,WAAWmB,GAE3C,OAAGhE,EACKA,EAAOmB,gBAEd4B,QAAQC,KAAK,yCAA0CgB,IAChD,GAITk8B,uBACC,OAAOxjC,KAAK4F,cAAc+a,oBAG3B8iB,WAAWn8B,GACV,IAAIhE,EAAStD,KAAK4F,cAAcO,WAAWmB,GAI3C,GAFAtH,KAAK43B,aAEFt0B,EAIF,OADA+C,QAAQC,KAAK,gDAAiDgB,IACvD,EAHPhE,EAAOsB,OAOT8+B,WAAWp8B,GACV,IAAIhE,EAAStD,KAAK4F,cAAcO,WAAWmB,GAI3C,GAFAtH,KAAK43B,aAEFt0B,EAIF,OADA+C,QAAQC,KAAK,gDAAiDgB,IACvD,EAHPhE,EAAOyB,OAOT4+B,aAAar8B,GACZ,IAAIhE,EAAStD,KAAK4F,cAAcO,WAAWmB,GAI3C,GAFAtH,KAAK43B,aAEFt0B,EAQF,OADA+C,QAAQC,KAAK,6DAA8DgB,IACpE,EAPJhE,EAAOqB,QACTrB,EAAOyB,OAEPzB,EAAOsB,OAQVqP,UAAUnJ,EAAY6U,EAAQrY,GAC7B,IAAIhE,EAAStD,KAAK4F,cAAcO,WAAWmB,GAI3C,OAFAtH,KAAK43B,YAEE53B,KAAK4F,cAAcqO,UAAUnJ,EAAY6U,EAAQrc,GACtD4Q,MAAM5Q,GACCA,EAAOmB,iBAIjBm/B,aAAat8B,GACZ,IAAIhE,EAAStD,KAAK4F,cAAcO,WAAWmB,GAI3C,OAFAtH,KAAK43B,YAEFt0B,EACKA,EAAO2B,UAEdoB,QAAQC,KAAK,kDAAmDgB,GACzD6L,QAAQE,UAIjBwwB,uBAAuBv8B,EAAOwD,GAC7B,IAAIxH,EAAStD,KAAK4F,cAAcO,WAAWmB,GAI3C,OAFAtH,KAAK43B,YAEFt0B,EACKA,EAAOuD,iBAAiBiE,IAE/BzE,QAAQC,KAAK,kDAAmDgB,GACzD6L,QAAQE,UAIjBjN,WAAW0a,EAAM9a,EAAIC,GACpB,IAAI69B,EAAa9jC,KAAK4F,cAAcO,WAAW2a,GAC/C5a,EAAWlG,KAAK4F,cAAcO,WAAWH,GAEzChG,KAAK43B,YAEFkM,EACC59B,EACFlG,KAAK4F,cAAcQ,WAAW09B,EAAY59B,EAAUD,GAEpDI,QAAQC,KAAK,yCAA0CJ,GAGxDG,QAAQC,KAAK,yCAA0Cwa,GAKzDjb,eAAeyB,EAAO5B,EAAUC,GAC/B,OAAO,IAAIwN,SAAQ,CAACC,EAASC,KAC5B,IAAI/P,EAAStD,KAAK4F,cAAcO,WAAWmB,GAE3C,OAAGhE,EACKtD,KAAK4F,cAAcC,eAAevC,EAAQoC,EAAUC,IAE3DU,QAAQC,KAAK,2CAA4CgB,GAClD6L,QAAQE,OAAO,+CAOzBqM,OAAOhe,GACN1B,KAAK43B,YAEL53B,KAAK4F,cAAc8Z,OAAOhe,GAC1B1B,KAAK+L,WAAW2T,OAAOhe,GAGxBiL,UAAUnD,GACTxJ,KAAKwC,QAAQgH,OAASyI,MAAMzI,GAAUA,EAASA,EAAS,KACxDxJ,KAAKsJ,QAAQa,MAAMX,OAASxJ,KAAKwC,QAAQgH,OACzCxJ,KAAK+L,WAAW+R,qBAChB9d,KAAK+L,WAAW2T,SAKjBqkB,GAAGhiC,EAAKiV,GACPhX,KAAKqC,eAAeV,UAAUI,EAAKiV,GAGpCgtB,IAAIjiC,EAAKiV,GACRhX,KAAKqC,eAAeR,YAAYE,EAAKiV,GAGtCoX,gBACYjZ,MAAM2L,KAAKlgB,WACjB+yB,QAEL3zB,KAAKqC,eAAeJ,YAAYrB,WAKjCmyB,MAAM3iB,EAAU5M,GACfxD,KAAK43B,YAEL53B,KAAK8yB,aAAaC,MAAM3iB,EAAU5M,GAGnC8uB,aACCtyB,KAAK43B,YAEL53B,KAAK8yB,aAAa7a,QAInB0gB,UAAUsL,EAAQC,GACjB,QAAGlkC,KAAKS,QAAQwjC,KAGZC,GACF79B,QAAQ0N,MAAM,mCAAqCkwB,IAE7C,GAIT7gC,OAAOrB,GACN,IAAIq9B,EAAMp/B,KAAKS,QAAQsB,GAMvB,OAJIq9B,GACH/4B,QAAQ0N,MAAM,mCAAqChS,GAG7Cq9B,GAKTtK,EAAU3gB,eCz3BK,CAEd2sB,qBAAoB,EACpBC,qBAAoB,EACpB7qB,qBAAoB,EACpBsb,4BAA2B,EAC3BmR,qBAAoB,EACpBwB,kBAAiB,EAEjB36B,QAAO,EACPsH,WAAU,EACV2S,WAAU,EAEVjV,sBAAsB,MAEtBunB,gBAAe,EAEfjxB,QAAQ,GACR4J,eAAe,GAEfxO,MAAK,EAELsqB,aAAY,EACZnL,wBAAuB,EAEvBnQ,qBAAqB,IAErBwf,eAAc,EAEd5c,MAAM,KAEN6vB,cAAc,OAEdlW,UAAU,SAEV1M,eAAc,EAEdwO,eAAe,UACfzO,iBAAiB,QACjBmI,qBAAqB,EAErB7O,oBAAoB,MACpBE,sBAAqB,EAErBgJ,uBAAuB,OACvBC,yBAAwB,EAExB8B,cAAa,EACb+gB,kBAAkB,KAClBC,sBAAsB,KACtBC,uBAAuB,KAEvB5gB,UAAU,KAEVqF,aAAY,EAEZ1oB,YAAW,EACX2yB,mBAAkB,EAClBC,iBAAgB,EAChBP,uBAAuB,IAEvBT,eAAe,GAEfG,kBAAkB,ID6zBnB,IAAIsM,EAAa5J,GEv3BjB,MAAMyP,UAAiBjN,EAEtBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKwkC,aAAe,CAAC,GAAI,OAAQ,WAAY,YAAa,QAAS,cAEnExkC,KAAKy3B,qBAAqB,YAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,gBAC1Bz3B,KAAKy3B,qBAAqB,sBAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,0BAC1Bz3B,KAAKy3B,qBAAqB,qBAC1Bz3B,KAAKy3B,qBAAqB,2BAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,uBAC1Bz3B,KAAKy3B,qBAAqB,sBAC1Bz3B,KAAKy3B,qBAAqB,4BAG3BhhB,aACCzW,KAAK2B,UAAU,gBAAiB3B,KAAKg7B,iBAAiBl6B,KAAKd,OAC3DA,KAAK2B,UAAU,oBAAqB3B,KAAKykC,aAAa3jC,KAAKd,OAI5Dg7B,iBAAiB13B,GAChB,IAAI+R,GAAQ,EACZoF,EAAS,GAETza,KAAKwkC,aAAalgC,SAASd,IAC1B,IACAkhC,EADI3iC,EAAM,YAAcyB,EAAKmhC,OAAO,GAAGC,cAAgBphC,EAAK8jB,MAAM,IAG/DhkB,EAAOwH,WAAW/I,KACpB2iC,EAAW1kC,KAAK6kC,eAAevhC,EAAOwH,WAAW/I,OAGhDsT,GAAQ,EAERoF,EAAO1Y,GAAO,CACb2iC,SAASA,EACT9S,OAAQtuB,EAAOwH,WAAW/I,EAAM,WAAa,QAM9CsT,IACF/R,EAAO7C,QAAQikC,SAAWjqB,GAI5BoqB,eAAeniC,GACd,IAAIgiC,GAAW,EAGf,cAAchiC,GACb,IAAK,SACD6hC,EAASO,UAAUpiC,GACrBgiC,EAAWH,EAASO,UAAUpiC,GAE9B2D,QAAQC,KAAK,sDAAuD5D,GAErE,MAED,IAAK,WACJgiC,EAAWhiC,EAIb,OAAOgiC,EAIRD,aAAah8B,EAAKjF,GACjB,IAAIzB,EAAM,YAAcyB,EAAKmhC,OAAO,GAAGC,cAAgBphC,EAAK8jB,MAAM,IAClEyd,EAAet8B,EAAIhE,eAGfvE,EAAOkU,EAAQuB,UAAUlN,EAAIvI,MAAQ,IAqBzC,OAnBAF,KAAKD,MAAM6F,cAAcwL,UAAS,SAAS9N,GAC1C,IAAIZ,EAAOgiC,EAAU9S,EAAQoT,EAE1B1hC,EAAO7C,QAAQikC,WAEjBA,EAAWphC,EAAO7C,QAAQikC,SAAS3iC,IAAQuB,EAAO7C,QAAQikC,SAASA,WAAY,IAKlE,cAFZhiC,EAAQY,EAAOwG,cAAc5J,MAG5B8kC,EAAe1hC,EAAOmB,eACtBmtB,EAAoC,mBAApB8S,EAAS9S,OAAwB8S,EAAS9S,OAAOlvB,EAAOxC,EAAMsD,EAAMwhC,EAAcD,GAAgBL,EAAS9S,OAC3HtuB,EAAO2I,cAAc/L,EAAMwkC,EAASA,SAAShiC,EAAOxC,EAAMsD,EAAMouB,EAAQoT,EAAcD,QAMnF7kC,GAKTqkC,EAASpJ,WAAa,WACtBoJ,EAASO,UCjHM,GCAf,SAASG,EAAmB/kC,EAAMo8B,GACjC,IAAIn3B,EAAS,GAIb,GAFAm3B,EAASA,GAAU,GAEhBnnB,MAAMC,QAAQlV,GAChBA,EAAKoE,SAAQ,CAACmR,EAAMxH,KACnB9I,EAASA,EAAOkM,OAAO4zB,EAAmBxvB,EAAM6mB,EAASA,EAAS,IAAMruB,EAAI,IAAMA,GAAG,SAEjF,GAAoB,iBAAT/N,EAChB,IAAK,IAAI6B,KAAO7B,EACfiF,EAASA,EAAOkM,OAAO4zB,EAAmB/kC,EAAK6B,GAAMu6B,EAASA,EAAS,IAAMv6B,EAAM,IAAMA,SAG1FoD,EAAOX,KAAK,CAACzC,IAAIu6B,EAAQ55B,MAAMxC,IAGhC,OAAOiF,CACR,CAEA,SAAS+/B,EAAgBtT,GACxB,IAAIzsB,EAAS8/B,EAAmBrT,GAChCuT,EAAU,GAMV,OAJAhgC,EAAOb,SAAQ,SAASmR,GACvB0vB,EAAQ3gC,KAAK4gC,mBAAmB3vB,EAAK1T,KAAO,IAAMqjC,mBAAmB3vB,EAAK/S,WAGpEyiC,EAAQE,KAAK,IACrB,CAEe,WAASC,EAAK7qB,EAAQmX,GAWpC,OAVG0T,GACC1T,GAAU7iB,OAAOC,KAAK4iB,GAAQxsB,SAC5BqV,EAAO8qB,QAAyC,OAA/B9qB,EAAO8qB,OAAOlJ,gBAClC5hB,EAAO8qB,OAAS,MAEhBD,IAAQA,EAAIxpB,SAAS,KAAO,IAAM,KAAOopB,EAAgBtT,KAKrD0T,CACR,CC3CA,SAASL,EAAmB/kC,EAAMo8B,GACjC,IAAIn3B,EAAS,GAIb,GAFAm3B,EAASA,GAAU,GAEhBnnB,MAAMC,QAAQlV,GAChBA,EAAKoE,SAAQ,CAACmR,EAAMxH,KACnB9I,EAASA,EAAOkM,OAAO4zB,EAAmBxvB,EAAM6mB,EAASA,EAAS,IAAMruB,EAAI,IAAMA,GAAG,SAEjF,GAAoB,iBAAT/N,EAChB,IAAK,IAAI6B,KAAO7B,EACfiF,EAASA,EAAOkM,OAAO4zB,EAAmB/kC,EAAK6B,GAAMu6B,EAASA,EAAS,IAAMv6B,EAAM,IAAMA,SAG1FoD,EAAOX,KAAK,CAACzC,IAAIu6B,EAAQ55B,MAAMxC,IAGhC,OAAOiF,CACR,OAEe,CACdqgC,KAAO,CACNC,QAAQ,CACP,eAAgB,oBAEjBxP,KAAK,SAASqP,EAAK7qB,EAAQmX,GAC1B,OAAO7N,KAAK2hB,UAAU9T,KAGxB+T,KAAO,CACNF,QAAQ,GAERxP,KAAK,SAASqP,EAAK7qB,EAAQmX,GAE1B,IAAIzsB,EAAS8/B,EAAmBrT,GAChC+T,EAAO,IAAIC,SAMX,OAJAzgC,EAAOb,SAAQ,SAASmR,GACvBkwB,EAAK/W,OAAOnZ,EAAK1T,IAAK0T,EAAK/S,UAGrBijC,KClCV,MAAME,UAAavO,EAElBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKya,OAAS,GACdza,KAAKslC,IAAM,GACXtlC,KAAK8lC,cAAe,EACpB9lC,KAAK4xB,QAAS,EAEd5xB,KAAK+lC,eAAgB,EAErB/lC,KAAKw3B,oBAAoB,WAAW,GACpCx3B,KAAKw3B,oBAAoB,oBAAoB,GAC7Cx3B,KAAKw3B,oBAAoB,aAAc,IACvCx3B,KAAKw3B,oBAAoB,aAAc,OACvCx3B,KAAKw3B,oBAAoB,kBAAmB,QAC5Cx3B,KAAKw3B,oBAAoB,mBAAmB,GAE5Cx3B,KAAKw3B,oBAAoB,kBAAkB,eAC3Cx3B,KAAKw3B,oBAAoB,gBAAgB,GAEzCx3B,KAAKgmC,sBAAwBH,EAAKG,sBAInCvvB,aACCzW,KAAK+lC,cAAgB/lC,KAAKD,MAAMyC,QAAQyjC,iBAAmBJ,EAAKK,qBAChElmC,KAAK8lC,aAAe9lC,KAAKD,MAAMyC,QAAQ2jC,kBAAoBN,EAAKO,oBAE7DpmC,KAAKD,MAAMyC,QAAQ6jC,SACrBrmC,KAAKsmC,OAAOtmC,KAAKD,MAAMyC,QAAQ6jC,SAIhCrmC,KAAKumC,iBAAiBvmC,KAAKD,MAAMyC,QAAQgkC,YAEzCxmC,KAAK03B,sBAAsB,aAAc13B,KAAKymC,OAAO3lC,KAAKd,OAE1DA,KAAK2B,UAAU,eAAgB3B,KAAK0mC,iBAAiB5lC,KAAKd,OAC1DA,KAAK2B,UAAU,cAAe3B,KAAK2mC,cAAc7lC,KAAKd,OACtDA,KAAK2B,UAAU,YAAa3B,KAAK4mC,YAAY9lC,KAAKd,OAGnD2mC,cAAczmC,EAAMua,EAAQta,EAAQyxB,GACnC,IAAIiV,EAAa7mC,KAAKD,MAAMyC,QAAQqkC,WAUpC,OARGA,IACuB,mBAAfA,IACTA,EAAaA,EAAW/6B,KAAK9L,KAAKD,QAGnC6xB,EAAS7iB,OAAOiF,OAAO4d,EAAQiV,IAGzBjV,EAGR8U,iBAAiBxmC,EAAM0xB,EAAQnX,EAAQta,GACtC,SAAYD,IAAQF,KAAKslC,MAAwB,iBAATplC,GAGzC0mC,YAAYtB,EAAK1T,EAAQnX,EAAQta,EAAQ2mC,GACxC,IAAIN,EAEJ,OAAIM,GAAgB9mC,KAAK0mC,iBAAiBpB,IACtCA,GACFtlC,KAAKsmC,OAAOhB,GAGbkB,EAAaxmC,KAAK+mC,eAAetsB,GAE1Bza,KAAKgnC,YAAYhnC,KAAKslC,IAAK1T,EAAQ4U,IAEnCM,EAITP,iBAAiB9rB,EAAS,IACzBza,KAAKya,OAAS1L,OAAOiF,OAAO,GAAI6xB,EAAKoB,eAEjB,iBAAVxsB,EACTza,KAAKya,OAAO8qB,OAAS9qB,EAErB1L,OAAOiF,OAAOhU,KAAKya,OAAQA,GAK7BssB,eAAetsB,EAAS,IACvB,IAAI+rB,EAAaz3B,OAAOiF,OAAO,GAAIhU,KAAKya,QAQxC,MANoB,iBAAVA,EACT+rB,EAAWjB,OAAS9qB,EAEpB1L,OAAOiF,OAAOwyB,EAAY/rB,GAGpB+rB,EAIRF,OAAOhB,GACNtlC,KAAKslC,IAAMA,EAIZmB,SACC,OAAOzmC,KAAKslC,IAIb0B,YAAY1B,EAAK1T,EAAQnX,GACxB,OAAuE,IAApEza,KAAKD,MAAMyC,QAAQ0kC,eAAep7B,KAAK9L,KAAKD,MAAOulC,EAAK1T,GACnD5xB,KAAK+lC,cAAcT,EAAK7qB,EAAQmX,GACrC1d,MAAMhU,IACHF,KAAKD,MAAMyC,QAAQ2kC,eACrBjnC,EAAOF,KAAKD,MAAMyC,QAAQ2kC,aAAar7B,KAAK9L,KAAKD,MAAOulC,EAAK1T,EAAQ1xB,IAG/DA,KAGFiT,QAAQE,UAKlBwyB,EAAK1K,WAAa,OAGlB0K,EAAKoB,cC1IU,CACd1B,OAAQ,OD0ITM,EAAKO,oBAAsBA,EAC3BP,EAAKK,qBE5IU,SAASZ,EAAK7qB,EAAQmX,GACpC,IAAIwV,EAEJ,OAAO,IAAIj0B,SAAQ,CAACC,EAASC,KAK5B,GAHAiyB,EAAMtlC,KAAK8lC,aAAah6B,KAAK9L,KAAKD,MAAOulC,EAAK7qB,EAAQmX,GAGpB,OAA/BnX,EAAO8qB,OAAOX,cAEhB,GADAwC,EAA4D,iBAAvCpnC,KAAKD,MAAMyC,QAAQ6kC,gBAAgCrnC,KAAKD,MAAMyC,QAAQ6kC,gBAAkBrnC,KAAKgmC,sBAAsBhmC,KAAKD,MAAMyC,QAAQ6kC,iBAC5I,CAEd,IAAI,IAAItlC,KAAOqlC,EAAY3B,QACtBhrB,EAAOgrB,UACVhrB,EAAOgrB,QAAU,SAGgB,IAAxBhrB,EAAOgrB,QAAQ1jC,KACxB0Y,EAAOgrB,QAAQ1jC,GAAOqlC,EAAY3B,QAAQ1jC,IAI5C0Y,EAAOwb,KAAOmR,EAAYnR,KAAKnqB,KAAK9L,KAAMslC,EAAK7qB,EAAQmX,QAGvDvrB,QAAQC,KAAK,8CAA+CtG,KAAKD,MAAMyC,QAAQ6kC,iBAI9E/B,QAE2B,IAAnB7qB,EAAOgrB,UAChBhrB,EAAOgrB,QAAU,SAGkB,IAA1BhrB,EAAOgrB,QAAQ6B,SACxB7sB,EAAOgrB,QAAQ6B,OAAS,yBAGwB,IAAvC7sB,EAAOgrB,QAAQ,sBACxBhrB,EAAOgrB,QAAQ,oBAAsB,uBAGZ,IAAhBhrB,EAAOqgB,OAChBrgB,EAAOqgB,KAAO,QAGG,QAAfrgB,EAAOqgB,WAC8B,IAA7BrgB,EAAOgrB,QAAgB,SAChChrB,EAAOgrB,QAAgB,OAAIlxB,OAAOgzB,SAASzQ,aAGX,IAAvBrc,EAAO+sB,cAChB/sB,EAAO+sB,YAAc,qBAGW,IAAvB/sB,EAAO+sB,cAChB/sB,EAAO+sB,YAAc,WAKvBC,MAAMnC,EAAK7qB,GACTvG,MAAMge,IACHA,EAASwV,GACXxV,EAASsT,OACPtxB,MAAMhU,IACNkT,EAAQlT,EAAK,IACXqyB,OAAOxe,IACTV,EAAOU,GACP1N,QAAQC,KAAK,0CAA2CyN,EAAM,KAGhE1N,QAAQ0N,MAAM,uCAAyCme,EAASyV,OAAQzV,EAAS0V,YACjFv0B,EAAO6e,OAGRK,OAAOxe,IACP1N,QAAQ0N,MAAM,uCAAwCA,GACtDV,EAAOU,EAAM,MAGf1N,QAAQC,KAAK,gCACb8M,EAAQ,OAGX,EFuDAyyB,EAAKG,sBAAwB6B,EGxI7B,MAAMC,UAAkBxQ,EAEvBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK86B,MAAO,EACZ96B,KAAK+nC,YAAc,aACnB/nC,KAAKgoC,YAAc,aACnBhoC,KAAKioC,iBAAkB,EACvBjoC,KAAKkoC,UAAW,EAChBloC,KAAKmoC,SAAU,EAEfnoC,KAAKw3B,oBAAoB,aAAa,GACtCx3B,KAAKw3B,oBAAoB,uBAAuB,GAChDx3B,KAAKw3B,oBAAoB,uBAAuB,GAChDx3B,KAAKw3B,oBAAoB,0BAA0B,GACnDx3B,KAAKw3B,oBAAoB,wBAAyB,UAClDx3B,KAAKw3B,oBAAoB,uBAAwB,SACjDx3B,KAAKw3B,oBAAoB,uBAAwB,UAEjDx3B,KAAKy3B,qBAAqB,aAC1Bz3B,KAAKy3B,qBAAqB,kBAG3BhhB,aACCzW,KAAK86B,KAAO96B,KAAKD,MAAMyC,QAAQ4lC,UAE/BpoC,KAAKkoC,SAAWloC,KAAKD,MAAMyC,QAAQ6lC,uBAElB,IAAdroC,KAAK86B,MAA+B,SAAd96B,KAAK86B,MAC7B96B,KAAKD,MAAMuJ,QAAQwG,iBAAiB,QAASC,IAC5C,IAAIu4B,EAAOC,EAAMxzB,EAEb/U,KAAKmoC,UACRp4B,EAAEy4B,iBAECxoC,KAAKioC,iBACPK,EAAQtoC,KAAKioC,gBAEVjoC,KAAKD,MAAMyC,QAAQimC,yBACrBH,EAAQtoC,KAAKD,MAAMyC,QAAQimC,uBAAuB,QAASH,MAI5DvzB,EAAO/U,KAAKD,MAAMU,QAAQioC,OAAOC,mBAAmB3oC,KAAKD,MAAMyC,QAAQomC,oBAAqB5oC,KAAKD,MAAMyC,QAAQqmC,oBAAqB7oC,KAAKkoC,SAAU,aAGnJI,GADAC,EAAOvoC,KAAKD,MAAMU,QAAQioC,OAAOI,kBAAkB/zB,IACpC/U,KAAK+oC,qBAAqBh0B,GAAQ,GAE9C/U,KAAKD,MAAMyC,QAAQimC,yBACrBH,EAAQtoC,KAAKD,MAAMyC,QAAQimC,uBAAuB,QAASH,GAC3DC,EAAOvoC,KAAKD,MAAMyC,QAAQimC,uBAAuB,OAAQF,KAIvDh0B,OAAOy0B,eAAiBz0B,OAAOy0B,cAAc/lB,QAChD1O,OAAOy0B,cAAc/lB,QAAQ,OAAQqlB,GAC3Bv4B,EAAEi5B,eAAiBj5B,EAAEi5B,cAAc/lB,SAC7ClT,EAAEi5B,cAAc/lB,QAAQ,aAAcqlB,GACnCC,GACFx4B,EAAEi5B,cAAc/lB,QAAQ,YAAaslB,IAE5Bx4B,EAAEk5B,eAAiBl5B,EAAEk5B,cAAcD,cAAc/lB,UAC3DlT,EAAEk5B,cAAcD,cAAc/lB,QAAQ,aAAcqlB,GACjDC,GACFx4B,EAAEk5B,cAAcD,cAAc/lB,QAAQ,YAAaslB,IAIrDvoC,KAAKoC,iBAAiB,kBAAmBkmC,EAAOC,GAEhDvoC,KAAKkpC,aAKS,IAAdlpC,KAAK86B,MAA+B,UAAd96B,KAAK86B,MAC7B96B,KAAKD,MAAMuJ,QAAQwG,iBAAiB,SAAUC,IAC7C/P,KAAKmpC,MAAMp5B,EAAE,IAIf/P,KAAKopC,eAAeppC,KAAKD,MAAMyC,QAAQ6mC,sBACvCrpC,KAAKspC,eAAetpC,KAAKD,MAAMyC,QAAQ+mC,sBAEvCvpC,KAAK03B,sBAAsB,kBAAmB13B,KAAKsV,KAAKxU,KAAKd,OAG9DkpC,QACClpC,KAAKmoC,SAAU,EACfnoC,KAAKioC,iBAAkB,EAGxBc,qBAAsBh0B,GACrB,IAAI5P,EAAS,GAsCb,OApCA4P,EAAKzQ,SAASmE,IACb,IAAI4pB,EAAU,GAEd5pB,EAAI3D,QAAQR,SAASmX,IACpB,IAAI/Y,EAAQ,GAEZ,GAAG+Y,EAMF,GAJgB,UAAbhT,EAAIjF,OACNiY,EAAI/Y,MAAQ+Y,EAAIhS,UAAU+/B,UAGV,OAAd/tB,EAAI/Y,MACNA,EAAQ,QAER,cAAc+Y,EAAI/Y,OACjB,IAAK,SACJA,EAAQqhB,KAAK2hB,UAAUjqB,EAAI/Y,OAC3B,MAED,IAAK,YACJA,EAAQ,GACR,MAED,QACCA,EAAQ+Y,EAAI/Y,MAKhB2vB,EAAQ7tB,KAAK9B,EAAM,IAGpByC,EAAOX,KAAK6tB,EAAQgT,KAAK,MAAM,IAGzBlgC,EAAOkgC,KAAK,MAGpB/vB,KAAMm0B,EAAOC,GACZ,IAAIC,EAAKC,EACT5pC,KAAKmoC,SAAU,EACfnoC,KAAKioC,iBAAkB,GAEL,IAAdjoC,KAAK86B,MAA+B,SAAd96B,KAAK86B,OAE9B96B,KAAKkoC,SAAWuB,GAASzpC,KAAKD,MAAMyC,QAAQ6lC,2BAEV,IAAvB9zB,OAAO2sB,mBAA8D,IAAxBn3B,SAAS8/B,cAChEJ,EAAQ1/B,SAAS8/B,eACXC,mBAAmB9pC,KAAKD,MAAMuJ,UACpCqgC,EAAMp1B,OAAO2sB,gBAEL6I,YAAcL,IACrB1pC,KAAKioC,gBAAkB0B,EAAII,YAG5BJ,EAAIvI,kBACJuI,EAAIK,SAASP,SAC0B,IAAtB1/B,SAASs3B,gBAAoE,IAAjCt3B,SAASksB,KAAKgU,mBAC3EL,EAAY7/B,SAASksB,KAAKgU,mBAChBC,kBAAkBlqC,KAAKD,MAAMuJ,SACvCsgC,EAAUO,UAGXpgC,SAASqgC,YAAY,QAEjBT,GACHA,EAAIvI,mBAMPkI,eAAehL,GAEd,cAAcA,GACb,IAAK,SACJt+B,KAAKgoC,YAAcF,EAAUuC,aAAa/L,GAEtCt+B,KAAKgoC,aACR3hC,QAAQC,KAAK,gDAAiDg4B,GAE/D,MAED,IAAK,WACJt+B,KAAKgoC,YAAc1J,GAKtB8K,eAAekB,GACd,cAAcA,GACb,IAAK,SACJtqC,KAAK+nC,YAAcD,EAAUyC,aAAaD,GAEtCtqC,KAAK+nC,aACR1hC,QAAQC,KAAK,gDAAiDgkC,GAE/D,MAED,IAAK,WACJtqC,KAAK+nC,YAAcuC,GAKtBnB,MAAMp5B,GACL,IAAI7P,EAAMmyB,EAAS7f,EAEhBxS,KAAKwqC,gBAAgBz6B,KAEvB7P,EAAOF,KAAKyqC,aAAa16B,IAEzBsiB,EAAUryB,KAAK+nC,YAAYj8B,KAAK9L,KAAME,KAGrC6P,EAAEy4B,iBAECxoC,KAAKD,MAAM44B,UAAU,aACvBtG,EAAUryB,KAAK0qC,WAAWrY,IAG3B7f,EAAOxS,KAAKgoC,YAAYl8B,KAAK9L,KAAMqyB,GAEnCryB,KAAKoC,iBAAiB,kBAAmBlC,EAAMmyB,EAAS7f,IAExDxS,KAAKoC,iBAAiB,sBAAuBlC,IAKhDwqC,WAAWxqC,GACV,IAAIiF,EAAS,GAUb,OARGgQ,MAAMC,QAAQlV,GAChBA,EAAKoE,SAASmE,IACbtD,EAAOX,KAAKxE,KAAKD,MAAMU,QAAQkqC,QAAQlG,aAAah8B,EAAK,aAAa,IAGvEtD,EAASjF,EAGHiF,EAIRqlC,gBAAgBz6B,GACf,IAAI66B,GAAQ,EAMZ,OAJuB,OAApB76B,EAAEpM,OAAOo+B,SAAoB/hC,KAAKD,MAAMU,QAAQoqC,KAAKC,eACvDF,GAAQ,GAGFA,EAGRH,aAAa16B,GACZ,IAAI7P,EAUJ,OARIqU,OAAOy0B,eAAiBz0B,OAAOy0B,cAActgC,QAChDxI,EAAOqU,OAAOy0B,cAActgC,QAAQ,QAC1BqH,EAAEi5B,eAAiBj5B,EAAEi5B,cAActgC,QAC7CxI,EAAO6P,EAAEi5B,cAActgC,QAAQ,cACrBqH,EAAEk5B,eAAiBl5B,EAAEk5B,cAAcD,cAActgC,UAC3DxI,EAAO6P,EAAEk5B,cAAcD,cAActgC,QAAQ,eAGvCxI,GAIT4nC,EAAU3M,WAAa,YAGvB2M,EAAUuC,aCpRK,CACdxY,QAAQ,SAASrf,GAChB,OAAOxS,KAAKD,MAAMkjB,QAAQzQ,IAE3ByE,OAAO,SAASzE,GACf,OAAOxS,KAAKD,MAAMkjC,gBAAgBzwB,IAEnCu4B,OAAO,SAASv4B,GACf,OAAOxS,KAAKD,MAAMijC,QAAQxwB,KD6Q5Bs1B,EAAUyC,aErRK,CACdxqC,MAAM,SAASqoC,GACd,IAAIloC,EAAO,GACX8qC,GAAoB,EACpBlmC,EAAU9E,KAAKD,MAAM6F,cAAcd,QACnCmmC,EAAY,GACZz4B,EAAO,GASP,OANA41B,EAAYA,EAAUr9B,MAAM,OAElBzG,SAAQ,SAASmE,GAC1BvI,EAAKsE,KAAKiE,EAAIsC,MAAM,aAGlB7K,EAAKkF,QAA4B,IAAhBlF,EAAKkF,QAAgBlF,EAAK,GAAGkF,OAAS,KAGzDlF,EAAK,GAAGoE,SAAQ,SAAS5B,GACxB,IAAIY,EAASwB,EAAQwa,MAAK,SAAShc,GAClC,OAAOZ,GAASY,EAAOwH,WAAWzD,OAAS3E,EAAMmgC,QAAUv/B,EAAOwH,WAAWzD,MAAMw7B,SAAWngC,EAAMmgC,UAGlGv/B,EACF2nC,EAAUzmC,KAAKlB,GAEf0nC,GAAoB,KAKlBA,IACHA,GAAoB,EACpBC,EAAY,GAEZ/qC,EAAK,GAAGoE,SAAQ,SAAS5B,GACxB,IAAIY,EAASwB,EAAQwa,MAAK,SAAShc,GAClC,OAAOZ,GAASY,EAAOgE,OAAS5E,EAAMmgC,QAAUv/B,EAAOgE,MAAMu7B,SAAWngC,EAAMmgC,UAG5Ev/B,EACF2nC,EAAUzmC,KAAKlB,GAEf0nC,GAAoB,KAIlBA,IACHC,EAAYjrC,KAAKD,MAAM6F,cAAcyU,iBAKpC2wB,GACF9qC,EAAKyzB,QAGNzzB,EAAKoE,SAAQ,SAASmR,GACrB,IAAIhN,EAAM,GAEVgN,EAAKnR,SAAQ,SAAS5B,EAAOuL,GACzBg9B,EAAUh9B,KACZxF,EAAIwiC,EAAUh9B,GAAG3G,OAAS5E,MAI5B8P,EAAKhO,KAAKiE,MAGJ+J,KCrEV,MAAM04B,EACLprC,YAAa2I,GAGZ,OAFAzI,KAAKiiB,KAAOxZ,EAEL,IAAIhF,MAAMzD,KAAM,CACtB0D,IAAK,SAASC,EAAQC,EAAMC,GAC3B,YAA4B,IAAjBF,EAAOC,GACVD,EAAOC,GAEPD,EAAOse,KAAKliB,MAAM+D,wBAAwBC,OAAO,MAAOJ,EAAOse,KAAMre,MAMhF8E,QAAQC,GACP,OAAO3I,KAAKiiB,KAAKvZ,QAAQC,GAG1B3E,aACC,OAAOhE,KAAKiiB,KAAKje,aAGlB8B,WACC,OAAO9F,KAAKiiB,KAAKliB,MAGlBqE,WACC,IAAIC,EAAQ,GAMZ,OAJArE,KAAKiiB,KAAK7d,WAAWE,SAAQ,SAASC,GACrCF,EAAMG,KAAKD,EAAKE,mBAGVJ,EAGRqY,QAAQpZ,GACP,IAAIiB,EAAOvE,KAAKiiB,KAAKvF,QAAQpZ,GAC7B,QAAOiB,GAAOA,EAAKE,eAGpBe,WACC,OAAOxF,KAAKiiB,YC3CC,CACdkpB,IAAM,SAAShb,EAAQjwB,EAAMkrC,GAC5B,IAAIjmC,EAAS,EACbkmC,OAA4C,IAAzBD,EAAWC,UAA4BD,EAAWC,UAAY,EAYjF,OAVGlb,EAAO/qB,SACTD,EAASgrB,EAAOmb,QAAO,SAASC,EAAK7oC,GACpC,OAAOu4B,OAAOsQ,GAAOtQ,OAAOv4B,MAG7ByC,GAAkBgrB,EAAO/qB,OAEzBD,GAAuB,IAAdkmC,EAAsBlmC,EAAOqmC,QAAQH,GAAalmC,GAGrDsmC,WAAWtmC,GAAQ4kC,YAE3B13B,IAAM,SAAS8d,EAAQjwB,EAAMkrC,GAC5B,IAAIjmC,EAAS,KACbkmC,OAA4C,IAAzBD,EAAWC,WAA4BD,EAAWC,UAWrE,OATAlb,EAAO7rB,SAAQ,SAAS5B,KAEvBA,EAAQu4B,OAAOv4B,IAEJyC,GAAqB,OAAXA,KACpBA,EAASzC,MAIO,OAAXyC,GAAiC,IAAdkmC,EAAsBlmC,EAAOqmC,QAAQH,GAAalmC,EAAU,IAEvFmN,IAAM,SAAS6d,EAAQjwB,EAAMkrC,GAC5B,IAAIjmC,EAAS,KACbkmC,OAA4C,IAAzBD,EAAWC,WAA4BD,EAAWC,UAWrE,OATAlb,EAAO7rB,SAAQ,SAAS5B,KAEvBA,EAAQu4B,OAAOv4B,IAEJyC,GAAqB,OAAXA,KACpBA,EAASzC,MAIO,OAAXyC,GAAiC,IAAdkmC,EAAsBlmC,EAAOqmC,QAAQH,GAAalmC,EAAU,IAEvFomC,IAAM,SAASpb,EAAQjwB,EAAMkrC,GAC5B,IAAIjmC,EAAS,EACbkmC,OAA4C,IAAzBD,EAAWC,WAA4BD,EAAWC,UAUrE,OARGlb,EAAO/qB,QACT+qB,EAAO7rB,SAAQ,SAAS5B,GACvBA,EAAQu4B,OAAOv4B,GAEfyC,GAAW8M,MAAMvP,GAAyB,EAAhBu4B,OAAOv4B,OAId,IAAd2oC,EAAsBlmC,EAAOqmC,QAAQH,GAAalmC,GAE1DkM,OAAS,SAAS8e,EAAQjwB,EAAMkrC,GAC/B,IAAIjmC,EAAS,EAQb,OANGgrB,EAAO/qB,SACTD,EAASgrB,EAAOmb,QAAO,SAASC,EAAK7oC,GACpC,OAAOgpC,OAAOH,GAAOG,OAAOhpC,OAIvByC,GAERwmC,MAAQ,SAASxb,EAAQjwB,EAAMkrC,GAC9B,IAAIjmC,EAAS,EAUb,OARGgrB,EAAO/qB,QACT+qB,EAAO7rB,SAAQ,SAAS5B,GACpBA,GACFyC,OAKIA,GAERymC,OAAS,SAASzb,EAAQjwB,EAAMkrC,GAK/B,OAJajb,EAAOtU,QAAO,CAACnZ,EAAOoP,KAC1Bqe,GAAoB,IAAVztB,IAAgBytB,EAAOlhB,QAAQvM,KAAWoP,IAG/C1M,SChFhB,MAAMymC,UAAoBvU,EAEzBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK8rC,SAAW,GAChB9rC,KAAK+rC,SAAW,GAChB/rC,KAAKgsC,WAAY,EACjBhsC,KAAKisC,WAAajsC,KAAKgK,gBACvBhK,KAAKksC,WAAalsC,KAAKgK,gBACvBhK,KAAKsmB,QAAS,EACdtmB,KAAKmsC,QAAS,EACdnsC,KAAKosC,gBAAiB,EACtBpsC,KAAKqsC,gBAAiB,EAEtBrsC,KAAKmoC,SAAU,EACfnoC,KAAKssC,kBAAmB,EAExBtsC,KAAKw3B,oBAAoB,eAAe,GAExCx3B,KAAKy3B,qBAAqB,WAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,0BAC1Bz3B,KAAKy3B,qBAAqB,cAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,uBAC1Bz3B,KAAKy3B,qBAAqB,6BAG3BztB,gBACC,IAAIuE,EAAKxE,SAASC,cAAc,OAEhC,OADAuE,EAAGvD,UAAUC,IAAI,0BACVsD,EAGRkI,aACCzW,KAAKgsC,UAAY,IAAIzmC,EAAO,CAAC+B,MAAM,SAAUtH,MAE7CA,KAAK2B,UAAU,qBAAsB3B,KAAKusC,iBAAiBzrC,KAAKd,OAChEA,KAAK2B,UAAU,cAAe3B,KAAKwsC,sBAAsB1rC,KAAKd,OAC9DA,KAAK2B,UAAU,cAAe3B,KAAKysC,YAAY3rC,KAAKd,OACpDA,KAAK2B,UAAU,oBAAqB3B,KAAKme,iBAAiBrd,KAAKd,OAC/DA,KAAK2B,UAAU,YAAa3B,KAAKysC,YAAY3rC,KAAKd,OAClDA,KAAK2B,UAAU,eAAgB3B,KAAK0sC,iBAAiB5rC,KAAKd,OAC1DA,KAAK2B,UAAU,aAAc3B,KAAK0sC,iBAAiB5rC,KAAKd,OACxDA,KAAK2B,UAAU,iBAAkB3B,KAAK2sC,wBAAwB7rC,KAAKd,OACnEA,KAAK2B,UAAU,eAAgB3B,KAAK4sC,YAAY9rC,KAAKd,OACrDA,KAAK2B,UAAU,eAAgB3B,KAAK2X,YAAY7W,KAAKd,OACrDA,KAAK2B,UAAU,qBAAsB3B,KAAK6sC,mBAAmB/rC,KAAKd,OAElEA,KAAK2B,UAAU,iBAAkB3B,KAAKkX,YAAYpW,KAAKd,OACvDA,KAAK2B,UAAU,kBAAmB3B,KAAK6hB,cAAc/gB,KAAKd,OAE1DA,KAAK2B,UAAU,kBAAmB3B,KAAK8sC,kBAAkBhsC,KAAKd,OAC9DA,KAAK2B,UAAU,iBAAkB3B,KAAK8sC,kBAAkBhsC,KAAKd,OAC7DA,KAAK2B,UAAU,cAAe3B,KAAK8sC,kBAAkBhsC,KAAKd,OAC1DA,KAAK2B,UAAU,cAAe3B,KAAK8sC,kBAAkBhsC,KAAKd,OAE1DA,KAAK03B,sBAAsB,iBAAkB13B,KAAK+sC,WAAWjsC,KAAKd,OAClEA,KAAK03B,sBAAsB,SAAU13B,KAAKgtC,WAAWlsC,KAAKd,OAG1DA,KAAK8sC,oBAGNA,oBACC9sC,KAAKisC,WAAW9hC,MAAM1C,SAAWzH,KAAKD,MAAM6F,cAAc4X,eAAepR,YAAc,KAIxFwgC,YAAYlrC,GACX1B,KAAKitC,OAAOjtC,KAAKD,MAAMgM,WAAWqd,YAE/B1nB,GACF1B,KAAK0f,SAIPxI,cACClX,KAAKmoC,SAAU,EACfnoC,KAAKssC,kBAAmB,EAIzBzqB,gBACC7hB,KAAKmoC,SAAU,EAEZnoC,KAAKssC,mBACPtsC,KAAKssC,kBAAmB,EACxBtsC,KAAK2sC,2BAOPK,aACChtC,KAAKitC,OAAOjtC,KAAKD,MAAMgM,WAAWqd,YAOnC8jB,aAKC,OAJGltC,KAAKmoC,UACPnoC,KAAKssC,kBAAmB,GAGlBtsC,KAAKmoC,QAGbxwB,YAAYwV,EAAU3a,GASrB,OARGxS,KAAKsmB,QACP9T,EAAKkD,QAAQ1V,KAAKsmB,QAGhBtmB,KAAKmsC,QACP35B,EAAKhO,KAAKxE,KAAKmsC,QAGT35B,EAGRi6B,YAAYhkC,GACRzI,KAAKD,MAAMyC,QAAQ2qC,QACrBntC,KAAKotC,eAAe3kC,GAEpBzI,KAAK0sC,mBAIPC,0BACI3sC,KAAKD,MAAMyC,QAAQ2qC,SAAWntC,KAAKD,MAAMyC,QAAQ6qC,uBAAyBrtC,KAAKD,MAAMyC,QAAQ8qC,SAC/FttC,KAAKutC,YAELvtC,KAAK0sC,mBAIPA,mBACC1sC,KAAKitC,OAAOjtC,KAAKD,MAAMgM,WAAWqd,YAGnCmjB,iBAAiBhoC,IACbA,EAAKjB,OAAOwH,WAAW0iC,SAAWjpC,EAAKjB,OAAOwH,WAAW2iC,cACxDztC,KAAKD,MAAMyC,QAAQ2qC,SACgB,SAAlCntC,KAAKD,MAAMyC,QAAQkrC,aAA4D,QAAlC1tC,KAAKD,MAAMyC,QAAQkrC,aAClE1tC,KAAK0sC,mBAG+B,SAAlC1sC,KAAKD,MAAMyC,QAAQkrC,aACrB1tC,KAAKotC,eAAe7oC,EAAKkE,MAG1BzI,KAAK0sC,oBAKRF,sBAAsBlpC,IAClBA,EAAOwH,WAAW0iC,SAAWlqC,EAAOwH,WAAW2iC,aACjDztC,KAAKg7B,iBAAiB13B,GAKxB03B,iBAAiB13B,GAChB,IAAI+J,EAAM/J,EAAOwH,WAEb2P,EAAS,CACZkzB,cAActgC,EAAIsgC,eAAiB,GACnCC,cAAcvgC,EAAIwgC,kBAAoB,IAGvC,GAAGxgC,EAAImgC,QAAQ,CAEd,cAAcngC,EAAImgC,SACjB,IAAK,SACD3B,EAAYiC,aAAazgC,EAAImgC,SAC/B/yB,EAAO+yB,QAAU3B,EAAYiC,aAAazgC,EAAImgC,SAE9CnnC,QAAQC,KAAK,4DAA6D+G,EAAImgC,SAE/E,MAED,IAAK,WACJ/yB,EAAO+yB,QAAUngC,EAAImgC,QAKpB/yB,EAAO+yB,UACTlqC,EAAO7C,QAAQitC,YAAcjzB,EAC7Bza,KAAK8rC,SAAStnC,KAAKlB,GAEkB,SAAlCtD,KAAKD,MAAMyC,QAAQkrC,aACrB1tC,KAAK+tC,oBAMR,GAAG1gC,EAAIogC,WAAW,CACjB,cAAcpgC,EAAIogC,YACjB,IAAK,SACD5B,EAAYiC,aAAazgC,EAAIogC,YAC/BhzB,EAAOuzB,QAAUnC,EAAYiC,aAAazgC,EAAIogC,YAE9CpnC,QAAQC,KAAK,4DAA6D+G,EAAIogC,YAE/E,MAED,IAAK,WACJhzB,EAAOuzB,QAAU3gC,EAAIogC,WAKpBhzB,EAAOuzB,UACT1qC,EAAO7C,QAAQitC,YAAcjzB,EAC7Bza,KAAK+rC,SAASvnC,KAAKlB,GAEkB,SAAlCtD,KAAKD,MAAMyC,QAAQkrC,aACrB1tC,KAAKiuC,wBAQT5/B,uBAEA6/B,cACC,IAAIliC,GAAU,EAEXhM,KAAKosC,iBACPpsC,KAAKosC,gBAAiB,EACtBpsC,KAAKisC,WAAWj/B,WAAWzB,YAAYvL,KAAKisC,YAC5CjgC,GAAU,GAGRhM,KAAKqsC,iBACPrsC,KAAKqsC,gBAAiB,EACtBrsC,KAAKo4B,aAAap4B,KAAKksC,YACvBlgC,GAAU,GAGRA,GACFhM,KAAKD,MAAMgM,WAAWkU,kBAIxBkuB,oBACInuC,KAAK8rC,SAAS1mC,QAChBpF,KAAK+tC,mBAGH/tC,KAAK+rC,SAAS3mC,QAChBpF,KAAKiuC,sBAIPF,mBACK/tC,KAAKosC,iBACRpsC,KAAKD,MAAM6F,cAAcoZ,qBAAqBrC,aAAa3c,KAAKisC,WAAYjsC,KAAKD,MAAM6F,cAAc4X,eAAeZ,aACpH5c,KAAKosC,gBAAiB,GAIxB6B,sBACKjuC,KAAKqsC,iBACRrsC,KAAKm4B,cAAcn4B,KAAKksC,YACxBlsC,KAAKqsC,gBAAiB,GAIxBluB,iBAAiBxT,GACb3K,KAAKqsC,gBAAkBrsC,KAAKmsC,SAC9BnsC,KAAKksC,WAAW/yB,WAAaxO,GAI/BsiC,OAAOz6B,GACN,IAAItS,EAAMuI,EAEV,IAAIzI,KAAKktC,eACLltC,KAAKosC,gBAAkBpsC,KAAKqsC,gBAAe,CAG7C,GAFAnsC,EAAOF,KAAKouC,WAAW57B,GAEpBxS,KAAKosC,eAAe,CAOtB,IANGpsC,KAAKsmB,QACPtmB,KAAKsmB,OAAOlD,cAGb3a,EAAMzI,KAAKquC,YAAY,MAAOnuC,GAC9BF,KAAKsmB,OAAS7d,EACRzI,KAAKisC,WAAW3gC,YAAYtL,KAAKisC,WAAW1gC,YAAYvL,KAAKisC,WAAW3gC,YAC9EtL,KAAKisC,WAAWzgC,YAAY/C,EAAIzE,cAChCyE,EAAIgO,YAAW,GAGhB,GAAGzW,KAAKqsC,eAAe,CAOtB,IANGrsC,KAAKmsC,QACPnsC,KAAKmsC,OAAO/oB,cAGb3a,EAAMzI,KAAKquC,YAAY,SAAUnuC,GACjCF,KAAKmsC,OAAS1jC,EACRzI,KAAKksC,WAAW5gC,YAAYtL,KAAKksC,WAAW3gC,YAAYvL,KAAKksC,WAAW5gC,YAC9EtL,KAAKksC,WAAW1gC,YAAY/C,EAAIzE,cAChCyE,EAAIgO,YAAW,GAGhBzW,KAAKD,MAAMgM,WAAWkU,kBAGnBjgB,KAAKD,MAAM44B,UAAU,kBACvB34B,KAAKD,MAAMU,QAAQyc,cAAc3b,UAMrC6rC,eAAe3kC,GACdzI,KAAKsuC,YAAYtuC,KAAKD,MAAMU,QAAQ8tC,UAAUC,YAAY/lC,IAG3D8kC,aACIvtC,KAAK8rC,SAAS1mC,QAAUpF,KAAK+rC,SAAS3mC,UACF,UAAnCpF,KAAKD,MAAMyC,QAAQkrC,aACrB1tC,KAAK0sC,mBAGH1sC,KAAKD,MAAMyC,QAAQ2qC,SAA8C,UAAnCntC,KAAKD,MAAMyC,QAAQkrC,aAEtC1tC,KAAKD,MAAMU,QAAQ8tC,UAAUE,iBAEnCnqC,SAAS0gB,IACfhlB,KAAKsuC,YAAYtpB,EAAM,KAM3BspB,YAAYtpB,GACX,IAAI9kB,EAAMmyB,EAENryB,KAAKktC,cACLloB,GACCA,EAAM9X,QACL8X,EAAM9X,MAAM1C,SACdtK,EAAOF,KAAKouC,WAAWppB,EAAMxS,MAC7B6f,EAAUryB,KAAK0uC,gBAAgB,SAAUxuC,GAEzC8kB,EAAM9X,MAAM1C,OAAO6X,WAAWgQ,GAC9BrN,EAAM9X,MAAM1C,OAAOwW,gBAGjBgE,EAAM9X,MAAM3C,MACdrK,EAAOF,KAAKouC,WAAWppB,EAAMxS,MAC7B6f,EAAUryB,KAAK0uC,gBAAgB,MAAOxuC,GAEtC8kB,EAAM9X,MAAM3C,IAAI8X,WAAWgQ,GAC3BrN,EAAM9X,MAAM3C,IAAIyW,iBAQrB2tB,eAAen8B,GACd,OAAOxS,KAAKquC,YAAY,MAAOruC,KAAKouC,WAAW57B,IAGhDo8B,kBAAkBp8B,GACjB,OAAOxS,KAAKquC,YAAY,SAAUruC,KAAKouC,WAAW57B,IAGnD47B,WAAW57B,GACV,IAAItS,EAAO,GAaX,OAXAsS,EAAKlO,SAASmE,IAGb,GAFAvI,EAAKsE,KAAKiE,EAAIC,WAEX1I,KAAKD,MAAMyC,QAAQ8qC,UAAYttC,KAAKD,MAAMyC,QAAQqsC,0BACjDpmC,EAAIhI,QAAQ6sC,UAAY7kC,EAAIhI,QAAQ6sC,SAASwB,KAAK,CACpD,IAAItrB,EAAWxjB,KAAKouC,WAAWpuC,KAAKD,MAAMU,QAAQ6sC,SAASyB,wBAAwBtmC,IACnFvI,EAAOA,EAAKmR,OAAOmS,OAKftjB,EAIRmuC,YAAYnjB,EAAKhrB,GAChB,IACAuI,EADI4pB,EAAUryB,KAAK0uC,gBAAgBxjB,EAAKhrB,GAmExC,OAhEGF,KAAKD,MAAM44B,UAAU,YACvB34B,KAAKD,MAAMU,QAAQkqC,QAAQqE,UAG5BvmC,EAAM,IAAIma,EAAIyP,EAASryB,KAAM,QAE1BA,KAAKD,MAAM44B,UAAU,YACvB34B,KAAKD,MAAMU,QAAQkqC,QAAQsE,SAG5BxmC,EAAIzE,aAAagH,UAAUC,IAAI,kBAAmB,mBAAqBigB,GAEvEziB,EAAIgB,WAAY,EAEhBhB,EAAIhE,aAAe,KACdgE,EAAIgB,YACPhB,EAAIgB,UAAY,IAAIyhC,EAAcziC,IAG5BA,EAAIgB,WAGZhB,EAAI8S,cAAgB,KAEnB,IAAIlX,EAAQ,GAEZrE,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAShB,IAGhDtD,KAAKgsC,UAAUj+B,SAASzK,EAAOY,YAC/BlE,KAAKgsC,UAAUzkC,SAAWjE,EAAOiE,SAE9BjE,EAAOwH,WAAWogB,EAAM,kBAAoBlrB,KAAKD,MAAM44B,UAAU,UACnE34B,KAAKgsC,UAAUvrC,QAAQyuC,OAAS,CAC/BC,UAAWnvC,KAAKD,MAAMU,QAAQyuC,OAAOE,aAAa9rC,EAAOwH,WAAWogB,EAAM,kBAC1E0G,OAAQtuB,EAAOwH,WAAWogB,EAAM,wBAA0B,IAG3DlrB,KAAKgsC,UAAUvrC,QAAQyuC,OAAS,CAC/BC,UAAWnvC,KAAKD,MAAMU,QAAQyuC,OAAOE,aAAa,aAClDxd,OAAO,IAKT5xB,KAAKgsC,UAAUlhC,WAAWlD,SAAWtE,EAAOwH,WAAWlD,SAGvD,IAAIrD,EAAO,IAAI6E,EAAKpJ,KAAKgsC,UAAWvjC,GACpClE,EAAKP,aACLO,EAAKjB,OAASA,EACdiB,EAAKyC,WAEL1D,EAAOe,MAAMG,KAAKD,GAClBF,EAAMG,KAAKD,GAEPjB,EAAOqB,SACVJ,EAAKQ,UAIP0D,EAAIpE,MAAQA,CAAK,EAGXoE,EAIRimC,gBAAgBxjB,EAAKhrB,GACpB,IAGA0xB,EAAQyd,EAHJhd,EAAU,GACdnlB,EAAe,OAAPge,EAAelrB,KAAK8rC,SAAW9rC,KAAK+rC,SAC5CvoC,EAAc,OAAP0nB,EAAe,UAAY,UAkBlC,OAfAhe,EAAM5I,SAAQ,SAAShB,GACtB,IAAI6sB,EAAS,GAEV7sB,EAAO7C,QAAQitC,aAAepqC,EAAO7C,QAAQitC,YAAYlqC,KAC3DtD,EAAKoE,SAAQ,SAASmR,GACrB0a,EAAO3rB,KAAKlB,EAAOwG,cAAc2L,OAGlC45B,EAAW7rC,EAAO,SAClBouB,EAAyD,mBAAzCtuB,EAAO7C,QAAQitC,YAAY2B,GAA2B/rC,EAAO7C,QAAQitC,YAAY2B,GAAUlf,EAAQjwB,GAAQoD,EAAO7C,QAAQitC,YAAY2B,GAEtJ/rC,EAAO2I,cAAcomB,EAAS/uB,EAAO7C,QAAQitC,YAAYlqC,GAAM2sB,EAAQjwB,EAAM0xB,QAIxES,EAGRid,cACC,QAAUtvC,KAAK8rC,SAAe,OAG/ByD,iBACC,QAAUvvC,KAAK+rC,SAAe,OAI/BrsB,SACI1f,KAAKsmB,QACPtmB,KAAKsmB,OAAOhE,iBAAgB,GAE1BtiB,KAAKmsC,QACPnsC,KAAKmsC,OAAO7pB,iBAAgB,GAK9ByqB,aACC,IAAIpY,EAAU,GAgBd,OAbG30B,KAAKD,MAAMyC,QAAQ2qC,SAAWntC,KAAKD,MAAM44B,UAAU,aAC5C34B,KAAKD,MAAMU,QAAQ8tC,UAAUiB,WAAU,GAEzClrC,SAAS0gB,IACf2P,EAAQ3P,EAAMwkB,UAAYxpC,KAAKyvC,gBAAgBzqB,EAAM,IAGtD2P,EAAU,CACTpqB,IAAKvK,KAAKsmB,OAAStmB,KAAKsmB,OAAO5d,UAAY,GAC3C8B,OAAQxK,KAAKmsC,OAASnsC,KAAKmsC,OAAOzjC,UAAY,IAIzCisB,EAIR8a,gBAAgBzqB,GACf,IAAI0qB,EAAW1qB,EAAMxf,WACrBmqC,EAAY3qB,EAAM4qB,eAClBC,EAAkB,GAalB,OAVAF,EAAUrrC,SAASwrC,IAClBD,EAAgBC,EAAStG,UAAYxpC,KAAKyvC,gBAAgBK,EAAS,IAG1D,CACTvlC,IAAKmlC,EAASxiC,MAAM3C,IAAMmlC,EAASxiC,MAAM3C,IAAI7B,UAAY,GACzD8B,OAAQklC,EAASxiC,MAAM1C,OAASklC,EAASxiC,MAAM1C,OAAO9B,UAAY,GAClEs0B,OAAQ6S,GAMVhD,mBAAmB5lC,GACfjH,KAAKmsC,SACJnsC,KAAKD,MAAMse,IACbre,KAAKksC,WAAW/hC,MAAM4Q,YAAc9T,EAAQ,KAE5CjH,KAAKksC,WAAW/hC,MAAM6Q,aAAe/T,EAAQ,OAMjD4kC,EAAY1Q,WAAa,cAGzB0Q,EAAYiC,aAAeiC,EC7jB3B,MAAMC,UAAiB1Y,EAEtBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKiwC,OAAS,GACdjwC,KAAKsH,MAAQ,GACbtH,KAAKkwC,WAAa,KAClBlwC,KAAKmwC,SAAW,KAChBnwC,KAAKowC,SAAW,KAChBpwC,KAAKqwC,cAAe,EAEpBrwC,KAAKswC,UAAY,aAEjBtwC,KAAKw3B,oBAAoB,YAAY,GACrCx3B,KAAKw3B,oBAAoB,kBAAkB,GAC3Cx3B,KAAKw3B,oBAAoB,gBAAgB,GACzCx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,sBAAuB,GAChDx3B,KAAKw3B,oBAAoB,qBAAsB,aAC/Cx3B,KAAKw3B,oBAAoB,2BAA2B,GACpDx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,4BAA4B,GACrDx3B,KAAKw3B,oBAAoB,2BAA2B,GAGpDx3B,KAAK63B,0BAA0B,MAAO,eAAgB73B,KAAKuwC,YAAYzvC,KAAKd,OAC5EA,KAAK63B,0BAA0B,MAAO,aAAc73B,KAAKwwC,UAAU1vC,KAAKd,OACxEA,KAAK63B,0BAA0B,MAAO,aAAc73B,KAAKywC,UAAU3vC,KAAKd,OACxEA,KAAK63B,0BAA0B,MAAO,gBAAiB73B,KAAK0wC,cAAc5vC,KAAKd,OAC/EA,KAAK63B,0BAA0B,MAAO,kBAAmB73B,KAAK2wC,eAAe7vC,KAAKd,OAClFA,KAAK63B,0BAA0B,MAAO,eAAgB73B,KAAK4wC,gBAAgB9vC,KAAKd,OAChFA,KAAK63B,0BAA0B,MAAO,iBAAkB73B,KAAK6wC,cAAc/vC,KAAKd,OAGjFyW,aACC,GAAGzW,KAAKD,MAAMyC,QAAQ8qC,SAAS,CAC9B,IAAIwD,EAAU,KACdtuC,EAAUxC,KAAKD,MAAMyC,QA2DrB,OAzDAxC,KAAKsH,MAAQ9E,EAAQuuC,mBACrB/wC,KAAKiwC,OAASztC,EAAQwuC,oBAEnBhxC,KAAKwC,QAAQ,gBACf6D,QAAQC,KAAK,8HAGX9D,EAAQyuC,uBAE2B,IAAlCzuC,EAAQyuC,uBACVjxC,KAAKowC,SAAWrmC,SAASC,cAAc,OACvChK,KAAKowC,SAASplC,UAAUC,IAAI,+BAEgB,iBAAlCzI,EAAQyuC,wBACjBH,EAAU/mC,SAASC,cAAc,QACzBoB,UAAY5I,EAAQyuC,sBAC5BjxC,KAAKowC,SAAWU,EAAQxlC,YAExBtL,KAAKowC,SAAW5tC,EAAQyuC,uBAI1BjxC,KAAKowC,SAAWrmC,SAASC,cAAc,OACvChK,KAAKowC,SAASplC,UAAUC,IAAI,qCAG1BzI,EAAQ0uC,wBACoC,iBAApC1uC,EAAQ0uC,0BACjBJ,EAAU/mC,SAASC,cAAc,QACzBoB,UAAY5I,EAAQ0uC,wBAC5BlxC,KAAKkwC,WAAaY,EAAQxlC,YAE1BtL,KAAKkwC,WAAa1tC,EAAQ0uC,yBAG3BlxC,KAAKkwC,WAAanmC,SAASC,cAAc,OACzChK,KAAKkwC,WAAWllC,UAAUC,IAAI,+BAC9BjL,KAAKkwC,WAAWiB,SAAW,EAC3BnxC,KAAKkwC,WAAW9kC,UAAY,4DAG1B5I,EAAQ4uC,sBACkC,iBAAlC5uC,EAAQ4uC,wBACjBN,EAAU/mC,SAASC,cAAc,QACzBoB,UAAY5I,EAAQ4uC,sBAC5BpxC,KAAKmwC,SAAWW,EAAQxlC,YAExBtL,KAAKmwC,SAAW3tC,EAAQ4uC,uBAGzBpxC,KAAKmwC,SAAWpmC,SAASC,cAAc,OACvChK,KAAKmwC,SAASnlC,UAAUC,IAAI,+BAC5BjL,KAAKmwC,SAASgB,SAAW,EACzBnxC,KAAKmwC,SAAS/kC,UAAY,iEAIb5I,EAAQ6qC,uBACrB,IAAK,UACJrtC,KAAKswC,UAAY,SAAS7nC,EAAKqJ,GAC9B,OAAOtP,EAAQ6qC,uBAEhB,MAED,IAAK,WACJrtC,KAAKswC,UAAY9tC,EAAQ6qC,sBACzB,MAED,QACCrtC,KAAKswC,UAAY,SAAS7nC,EAAKqJ,GAC9B,OAAOtP,EAAQ6qC,sBAAsBv7B,IAKxC9R,KAAK2B,UAAU,WAAY3B,KAAKmb,cAAcra,KAAKd,OACnDA,KAAK2B,UAAU,mBAAoB3B,KAAKqxC,UAAUvwC,KAAKd,OACvDA,KAAK2B,UAAU,cAAe3B,KAAKsxC,UAAUxwC,KAAKd,MAAM,GACxDA,KAAK2B,UAAU,mBAAoB3B,KAAKuxC,eAAezwC,KAAKd,MAAO,IACnEA,KAAK2B,UAAU,qBAAsB3B,KAAKusC,iBAAiBzrC,KAAKd,OAChEA,KAAK2B,UAAU,iBAAkB3B,KAAKusC,iBAAiBzrC,KAAKd,OAC5DA,KAAK2B,UAAU,qBAAsB3B,KAAKwxC,aAAa1wC,KAAKd,OAC5DA,KAAK2B,UAAU,cAAe3B,KAAKyxC,uBAAuB3wC,KAAKd,OAC/DA,KAAK2B,UAAU,kBAAmB3B,KAAK0xC,eAAe5wC,KAAKd,OAE3DA,KAAK+3B,uBAAuB/3B,KAAK4b,QAAQ9a,KAAKd,MAAO,KAIvD0xC,eAAehwC,GAGXA,GACK1B,KAAKD,MAAMgM,WAAW6P,UAExBtX,SAASmE,IACbzI,KAAK2xC,wBAAwBlpC,EAAI,IAKpCgpC,yBACC,IAAIG,EAAW5xC,KAAKD,MAAM6F,cAAc2a,wBAExCvgB,KAAKqwC,aAAerwC,KAAKD,MAAMyC,QAAQqvC,yBAA0BD,GAAWA,EAAStqC,MAGtFqpC,eAAeloC,GACd,OAAOzI,KAAK8xC,gBAAgBrpC,GAAK,GAGlC+oC,eACC,IAAIh/B,EAAO,GAMX,OAJAxS,KAAKD,MAAMgM,WAAWyG,KAAKlO,SAASmE,IACnC+J,EAAOA,EAAKnB,OAAOrR,KAAK8xC,gBAAgBrpC,GAAK,GAAO,GAAM,IAGpD+J,EAGR++B,eAAe9oC,EAAK9D,EAASif,GACzB5jB,KAAK+xC,aAAanuB,KACpB5jB,KAAKmb,cAAc1S,GAEhB9D,IACF3E,KAAKqxC,UAAU5oC,GACfzI,KAAKi4B,aAAY,KAKpBsU,iBAAiBhoC,GACJA,EAAKjB,OAAOY,aAEXlE,KAAKqwC,cACjBrwC,KAAKqxC,UAAU9sC,EAAKkE,KAItB0S,cAAc1S,GACb,IAAIupC,EAAavpC,EAAIC,UAAU1I,KAAKsH,OAChC8N,EAAUD,MAAMC,QAAQ48B,GAExBxuB,EAAWpO,IAAaA,GAAiC,iBAAf48B,GAA0C,OAAfA,GAErExuB,GAAY/a,EAAIhI,QAAQ6sC,UAAY7kC,EAAIhI,QAAQ6sC,SAAS8C,UAC5D3nC,EAAIhI,QAAQ6sC,SAAS8C,SAASpjC,WAAWzB,YAAY9C,EAAIhI,QAAQ6sC,SAAS8C,WAGvE5sB,GAAY/a,EAAIhI,QAAQ6sC,UAAY7kC,EAAIhI,QAAQ6sC,SAAS2E,WAC5DxpC,EAAIhI,QAAQ6sC,SAAS2E,UAAUjlC,WAAWzB,YAAY9C,EAAIhI,QAAQ6sC,SAAS2E,WAG5ExpC,EAAIhI,QAAQ6sC,SAAW,CACtBx7B,MAAOrJ,EAAIhI,QAAQ6sC,SAAW7kC,EAAIhI,QAAQ6sC,SAASx7B,MAAQ,EAC3Dg9B,OAAMtrB,IAAY/a,EAAIhI,QAAQ6sC,SAAW7kC,EAAIhI,QAAQ6sC,SAASwB,KAAO9uC,KAAKswC,UAAU7nC,EAAIhE,eAAgB,IACxGwtC,aAAWxpC,EAAIhI,QAAQ6sC,WAAY9pB,IAAW/a,EAAIhI,QAAQ6sC,SAAS2E,UACnE7B,YAAU3nC,EAAIhI,QAAQ6sC,WAAY9pB,IAAW/a,EAAIhI,QAAQ6sC,SAAS8C,SAClE9qC,SAAQmD,EAAIhI,QAAQ6sC,UAAW7kC,EAAIhI,QAAQ6sC,SAAShoC,OACpDke,SAASA,GAIXmuB,wBAAwBlpC,GACRzI,KAAK8xC,gBAAgBrpC,GAAK,GAAO,GAEvCnE,SAAQ,SAASuN,GACzBA,EAAMmP,cAAa,MAIrBqwB,UAAU5oC,GACT,IACA8F,GADWvO,KAAKqwC,aAAe5nC,EAAIiU,QAAQ1c,KAAKqwC,cAAgB5nC,EAAIrE,WAAW,IACrEJ,aACVyW,EAAShS,EAAIhI,QAAQ6sC,SAElB7yB,EAAO21B,WACN31B,EAAO21B,SAASpjC,YAClByN,EAAO21B,SAASpjC,WAAWzB,YAAYkP,EAAO21B,UAE/C31B,EAAO21B,UAAW,GAGhB31B,EAAOw3B,YACNx3B,EAAOw3B,UAAUjlC,YACnByN,EAAOw3B,UAAUjlC,WAAWzB,YAAYkP,EAAOw3B,WAEhDx3B,EAAOw3B,WAAY,GAGpBjyC,KAAKkyC,uBAAuBzpC,EAAK8F,GAEjC9F,EAAIzE,aAAagH,UAAUC,IAAI,wBAA0BwP,EAAO3I,OAE7D2I,EAAO3I,QACN9R,KAAKowC,UACP31B,EAAO21B,SAAWpwC,KAAKowC,SAAS+B,WAAU,GAC1C5jC,EAAGoO,aAAalC,EAAO21B,SAAU7hC,EAAGjD,YAEjCtL,KAAKD,MAAMse,IACb5D,EAAO21B,SAASjmC,MAAMoU,aAAiB9D,EAAO21B,SAAShkC,YAAcqO,EAAO21B,SAASjmC,MAAMmU,aAAe7D,EAAO3I,MAAQ,GAAO2I,EAAO3I,MAAQ9R,KAAKiwC,OAAW,KAE/Jx1B,EAAO21B,SAASjmC,MAAMmU,YAAgB7D,EAAO21B,SAAShkC,YAAcqO,EAAO21B,SAASjmC,MAAMoU,cAAgB9D,EAAO3I,MAAQ,GAAO2I,EAAO3I,MAAQ9R,KAAKiwC,OAAW,MAI7JjwC,KAAKD,MAAMse,IACb9P,EAAGpE,MAAM6Q,aAAepL,SAAS2E,OAAOmtB,iBAAiBnzB,EAAI,MAAM6jC,iBAAiB,kBAAqB33B,EAAO3I,MAAQ9R,KAAKiwC,OAAU,KAEvI1hC,EAAGpE,MAAM4Q,YAAcnL,SAAS2E,OAAOmtB,iBAAiBnzB,EAAI,MAAM6jC,iBAAiB,iBAAoB33B,EAAO3I,MAAQ9R,KAAKiwC,OAAU,MAMzIiC,uBAAuBzpC,EAAK8F,GAC3B,IAAIkM,EAAShS,EAAIhI,QAAQ6sC,SACzB+E,EAAa53B,EAAOw3B,UAEpB1jC,EAAKA,GAAM9F,EAAIrE,WAAW,GAAGJ,cAEN,IAApByW,EAAO+I,WAEN/I,EAAOq0B,MACTr0B,EAAOw3B,UAAYjyC,KAAKkwC,WAAWiC,WAAU,GAC7C13B,EAAOw3B,UAAUniC,iBAAiB,SAAUC,IAC3CA,EAAEC,kBACFhQ,KAAKuwC,YAAY9nC,EAAI,MAGtBgS,EAAOw3B,UAAYjyC,KAAKmwC,SAASgC,WAAU,GAC3C13B,EAAOw3B,UAAUniC,iBAAiB,SAAUC,IAC3CA,EAAEC,kBACFhQ,KAAKwwC,UAAU/nC,EAAI,KAIrBgS,EAAOw3B,UAAUniC,iBAAiB,aAAcC,IAC/CA,EAAEC,iBAAiB,IAGjBqiC,GAAcA,EAAWrlC,aAAeuB,EAC1C8jC,EAAWrlC,WAAWi1B,aAAaxnB,EAAOw3B,UAAUI,GAEpD9jC,EAAGoO,aAAalC,EAAOw3B,UAAW1jC,EAAGjD,aAKxCsQ,QAAQpJ,GACP,IAAIrN,EAAS,GAwBb,OAtBAqN,EAAKlO,SAAQ,CAACmE,EAAKwF,KAClB,IAAIwM,EAEJtV,EAAOX,KAAKiE,GAETA,aAAema,IAEjBna,EAAIya,UAEJzI,EAAShS,EAAIhI,QAAQ6sC,UAEVx7B,QAA6B,IAApB2I,EAAO+I,UACfxjB,KAAKsyC,YAAY7pC,GAEnBnE,SAASuN,IACjBA,EAAMqR,SACN/d,EAAOX,KAAKqN,EAAM,QAMf1M,EAGRmtC,YAAY7pC,EAAK8pC,GAChB,IAAI93B,EAAShS,EAAIhI,QAAQ6sC,SACzB9pB,EAAW,GACXre,EAAS,GA4BT,OA1BuB,IAApBsV,EAAO+I,WAAuB/I,EAAOq0B,MAAQyD,KAC3Cp9B,MAAMC,QAAQqF,EAAO+I,YACxB/I,EAAO+I,SAAWxjB,KAAKwyC,iBAAiB/pC,IAIxC+a,EADExjB,KAAKD,MAAM44B,UAAU,WAAa34B,KAAKD,MAAMyC,QAAQiwC,eAC5CzyC,KAAKD,MAAMU,QAAQob,OAAOA,OAAOpB,EAAO+I,UAExC/I,EAAO+I,SAGhBxjB,KAAKD,MAAM44B,UAAU,SAAW34B,KAAKD,MAAMyC,QAAQkwC,cACrD1yC,KAAKD,MAAMU,QAAQ6rB,KAAKA,KAAK9I,GAG9BA,EAASlf,SAASuN,IACjB1M,EAAOX,KAAKqN,GAEM7R,KAAKsyC,YAAYzgC,GAEvBvN,SAASquC,IACpBxtC,EAAOX,KAAKmuC,EAAI,GACf,KAIGxtC,EAGRqtC,iBAAiB/pC,GAChB,IAAI+a,EAAW,GAEXwuB,EAAavpC,EAAIC,UAAU1I,KAAKsH,OAoBpC,OAlBI6N,MAAMC,QAAQ48B,KACjBA,EAAa,CAACA,IAGfA,EAAW1tC,SAASsuC,IACnB,IAAIC,EAAW,IAAIjwB,EAAIgwB,GAAa,GAAI5yC,KAAKD,MAAMgM,YAEnD8mC,EAAS3vB,SAET2vB,EAASpyC,QAAQ6sC,SAASx7B,MAAQrJ,EAAIhI,QAAQ6sC,SAASx7B,MAAQ,EAC/D+gC,EAASpyC,QAAQ6sC,SAAShoC,OAASmD,EAEhCoqC,EAASpyC,QAAQ6sC,SAAS9pB,WAC5BqvB,EAASpyC,QAAQ6sC,SAASwB,KAAO9uC,KAAKswC,UAAUuC,EAASpuC,eAAgBouC,EAASpyC,QAAQ6sC,SAASx7B,QAEpG0R,EAAShf,KAAKquC,EAAS,IAGjBrvB,EAGRgtB,UAAU/nC,EAAKtI,GACd,IAAIsa,EAAShS,EAAIhI,QAAQ6sC,UAEF,IAApB7yB,EAAO+I,WACT/I,EAAOq0B,MAAO,EAEdrmC,EAAIuY,eAEJhhB,KAAKi4B,aAAY,GAEjBj4B,KAAKoC,iBAAiB,sBAAuBqG,EAAIhE,eAAgBgE,EAAIhI,QAAQ6sC,SAASx7B,QAIxFy+B,YAAY9nC,GACX,IAAIgS,EAAShS,EAAIhI,QAAQ6sC,UAEF,IAApB7yB,EAAO+I,WACT/I,EAAOq0B,MAAO,EAEdrmC,EAAIuY,eAEJhhB,KAAKi4B,aAAY,GAEjBj4B,KAAKoC,iBAAiB,uBAAwBqG,EAAIhE,eAAgBgE,EAAIhI,QAAQ6sC,SAASx7B,QAIzF2+B,UAAUhoC,GACT,IAAIgS,EAAShS,EAAIhI,QAAQ6sC,UAEF,IAApB7yB,EAAO+I,WACN/I,EAAOq0B,KACT9uC,KAAKuwC,YAAY9nC,GAEjBzI,KAAKwwC,UAAU/nC,IAKlBooC,cAAcpoC,GACb,OAAOA,EAAIhI,QAAQ6sC,SAASwB,KAG7B4B,cAAcjoC,GACb,QAAOA,EAAIhI,QAAQ6sC,SAAShoC,QAASmD,EAAIhI,QAAQ6sC,SAAShoC,OAAOb,eAGlEquC,kBAAkBrqC,GACjB,OAAOA,EAAIhI,QAAQ6sC,UAAY7kC,EAAIhI,QAAQ6sC,SAAShoC,OAAStF,KAAK8yC,kBAAkBrqC,EAAIhI,QAAQ6sC,SAAShoC,QAAUmD,EAGpHsmC,wBAAwBtmC,GACvB,IAAIgS,EAAShS,EAAIhI,QAAQ6sC,SACzBnoC,EAAS,GAqBT,OAnBGsV,EAAO+I,WAELrO,MAAMC,QAAQqF,EAAO+I,YACxB/I,EAAO+I,SAAWxjB,KAAKwyC,iBAAiB/pC,KAGtCzI,KAAKD,MAAM44B,UAAU,WAAa34B,KAAKD,MAAMyC,QAAQiwC,eAC5CzyC,KAAKD,MAAMU,QAAQob,OAAOA,OAAOpB,EAAO+I,UAExC/I,EAAO+I,UAGVlf,SAASuuC,IACdA,aAAoBjwB,GACtBzd,EAAOX,KAAKquC,OAKR1tC,EAGRmsC,UAAU7oC,GACT,IACAsqC,EADIztC,EAASmD,EAAIhI,QAAQ6sC,SAAShoC,OAG/BA,KAGgB,KAFlBytC,EAAa/yC,KAAKgzC,eAAevqC,EAAKnD,KAGrCA,EAAOpF,KAAKF,KAAKsH,OAAOyK,OAAOghC,EAAY,GAGxCztC,EAAOpF,KAAKF,KAAKsH,OAAOlC,eACpBE,EAAOpF,KAAKF,KAAKsH,OAGzBtH,KAAKmb,cAAc7V,GACnBtF,KAAKqxC,UAAU/rC,IAGhBtF,KAAKi4B,aAAY,GAGlB2Y,gBAAgBnoC,EAAKvI,EAAMqK,EAAKuH,GAC/B,IAAIihC,GAAa,EAEE,iBAAT7yC,IACTA,EAAO6jB,KAAKC,MAAM9jB,IAGfiV,MAAMC,QAAQ3M,EAAIvI,KAAKF,KAAKsH,UAC/BmB,EAAIvI,KAAKF,KAAKsH,OAAS,GAEvBmB,EAAIhI,QAAQ6sC,SAASwB,KAAO9uC,KAAKswC,UAAU7nC,EAAIhE,eAAgBgE,EAAIhI,QAAQ6sC,SAASx7B,aAGjE,IAAVA,IAGS,KAFlBihC,EAAa/yC,KAAKgzC,eAAelhC,EAAOrJ,KAGvCA,EAAIvI,KAAKF,KAAKsH,OAAOyK,OAAQxH,EAAMwoC,EAAaA,EAAa,EAAI,EAAG7yC,IAIpD,IAAf6yC,IACCxoC,EACF9B,EAAIvI,KAAKF,KAAKsH,OAAOoO,QAAQxV,GAE7BuI,EAAIvI,KAAKF,KAAKsH,OAAO9C,KAAKtE,IAI5BF,KAAKmb,cAAc1S,GACnBzI,KAAKqxC,UAAU5oC,GAEfzI,KAAKi4B,aAAY,GAGlB+a,eAAez9B,EAASjQ,GACvB,IAAI+P,GAAQ,EA8CZ,MA5CqB,iBAAXE,EAENA,aAAmBqN,EAErBvN,EAAQE,EAAQrV,KACRqV,aAAmByM,EAE3B3M,EAAQE,EAAQ/P,WAAWtF,KACI,oBAAhBggB,aAA+B3K,aAAmB2K,YAC9D5a,EAAO7E,QAAQ6sC,WACjBj4B,EAAQ/P,EAAO7E,QAAQ6sC,SAAS9pB,SAASlE,MAAMuzB,GACvCA,aAAoBjwB,GAAMiwB,EAASvpC,UAAYiM,OAItDF,EAAQA,EAAMnV,MAGI,OAAZqV,IACRF,GAAQ,GAITA,OAD0B,IAAXE,GAIPjQ,EAAOpF,KAAKF,KAAKsH,OAAOgY,MAAM7W,GAC9BA,EAAIvI,KAAKF,KAAKD,MAAMyC,QAAQsP,QAAUyD,IAI5CF,IAECF,MAAMC,QAAQ9P,EAAOpF,KAAKF,KAAKsH,UACjC+N,EAAQ/P,EAAOpF,KAAKF,KAAKsH,OAAO2H,QAAQoG,KAG5B,GAAVA,IACFA,GAAQ,IAMHA,EAGRy8B,gBAAgBrpC,EAAKgB,EAAWwpC,GAC/B,IAAIx4B,EAAShS,EAAIhI,QAAQ6sC,SACzBnoC,EAAS,GAmBT,OAjBGsV,GAAUA,EAAO+I,WAEfrO,MAAMC,QAAQqF,EAAO+I,YACxB/I,EAAO+I,SAAWxjB,KAAKwyC,iBAAiB/pC,IAGzCgS,EAAO+I,SAASlf,SAASuuC,IACrBA,aAAoBjwB,IACtBzd,EAAOX,KAAKiF,EAAYopC,EAASpuC,eAAiBouC,GAE/CI,IACF9tC,EAASA,EAAOkM,OAAOrR,KAAK8xC,gBAAgBe,EAAUppC,EAAWwpC,UAM9D9tC,EAGR+tC,gBACC,OAAOlzC,KAAKsH,MAGbyqC,aAAa7xC,GACZ,QAAQF,KAAKsH,YAAoC,IAArBpH,EAAKF,KAAKsH,UAAoCtH,KAAKqwC,mBAAkD,IAA5BnwC,EAAKF,KAAKqwC,eAIjHL,EAAS7U,WAAa,iBCrlBP,CACdgY,ICRc,SAASp+B,EAAMvS,EAAU,GAAI4wC,GAC3C,IAAIC,EAAY7wC,EAAQ6wC,UAAY7wC,EAAQ6wC,UAAY,IACxDC,EAAe,GACf7N,EAAU,GAEV1wB,EAAKzQ,SAASmE,IACb,IAAIgN,EAAO,GAEX,OAAOhN,EAAIjF,MACV,IAAK,QACJ6C,QAAQC,KAAK,+DACb,MAED,IAAK,OACJD,QAAQC,KAAK,wEACb,MAED,IAAK,SACJmC,EAAI3D,QAAQR,SAAQ,CAACmX,EAAKxN,KACtBwN,GAAqB,IAAdA,EAAI83B,QACb9N,EAAQx3B,QAAyB,IAAbwN,EAAI/Y,OAAuC,OAAd+Y,EAAI/Y,MAAiB,GAAM,IAAMgpC,OAAOjwB,EAAI/Y,OAAOqI,MAAM,KAAKs6B,KAAK,MAAQ,QAG9H,MAED,IAAK,MACJ58B,EAAI3D,QAAQR,SAASmX,IAEpB,GAAGA,EAAI,CAEN,cAAcA,EAAI/Y,OACjB,IAAK,SACJ+Y,EAAI/Y,MAAsB,OAAd+Y,EAAI/Y,MAAiBqhB,KAAK2hB,UAAUjqB,EAAI/Y,OAAS,GAC7D,MAED,IAAK,YACJ+Y,EAAI/Y,MAAQ,GAId+S,EAAKjR,KAAK,IAAMknC,OAAOjwB,EAAI/Y,OAAOqI,MAAM,KAAKs6B,KAAK,MAAQ,SAI5DiO,EAAa9uC,KAAKiR,EAAK4vB,KAAKgO,QAK5B5N,EAAQrgC,QACVkuC,EAAa59B,QAAQ+vB,EAAQJ,KAAKgO,IAGnCC,EAAeA,EAAajO,KAAK,MAE9B7iC,EAAQgxC,MACVF,EAAe,SAAWA,GAG3BF,EAAgBE,EAAc,WAC/B,EDnDC9N,KETc,SAASzwB,EAAMvS,EAAS4wC,GACtC,IAAIE,EAAe,GAEnBv+B,EAAKzQ,SAASmE,IACb,IAAIgN,EAAO,GAEX,OAAOhN,EAAIjF,MACV,IAAK,SACJ,MAED,IAAK,QACJ6C,QAAQC,KAAK,gEACb,MAED,IAAK,OACJD,QAAQC,KAAK,yEACb,MAED,IAAK,MACJmC,EAAI3D,QAAQR,SAASmX,IACjBA,IACFhG,EAAKgG,EAAIhS,UAAUtF,oBAAsBsX,EAAIhS,UAAUvF,YAAcuX,EAAI/Y,UAI3E4wC,EAAa9uC,KAAKiR,OAOrB29B,EAFAE,EAAevvB,KAAK2hB,UAAU4N,EAAc,KAAM,MAEpB,mBAC/B,EFvBCG,UGVc,SAAU1+B,EAAMvS,EAAS4wC,GACvC,MAAME,EAAe,GAErBv+B,EAAKzQ,SAASmE,IACb,MAAMgN,EAAO,GAEb,OAAQhN,EAAIjF,MACX,IAAK,SACJ,MAED,IAAK,QACJ6C,QAAQC,KAAK,gEACb,MAED,IAAK,OACJD,QAAQC,KAAK,yEACb,MAED,IAAK,MACJmC,EAAI3D,QAAQR,SAASmX,IAChBA,IACHhG,EAAKgG,EAAIhS,UAAUtF,oBAAsBsX,EAAIhS,UAAUvF,YAAcuX,EAAI/Y,UAI3E4wC,EAAa9uC,KAAKuf,KAAK2hB,UAAUjwB,QAKpC29B,EAAgBE,EAAajO,KAAK,MAAO,uBAC1C,EHpBCqO,IIXc,SAAS3+B,EAAMvS,EAAU,GAAI4wC,GAC3C,IAAIO,EAAS,GACb1d,EAAO,GACP2d,EAAkB,GAClBC,EAAiBrxC,EAAQqxC,gBAAkB,CAC1CC,UAAW,OACXC,SAAU,GACVC,YAAa,EACbC,UAAW,KAEZC,EAAgB1xC,EAAQ0xC,eAAiB,CACxCJ,UAAW,OACXC,SAAU,GACVC,YAAa,EACbC,UAAW,KAEZE,EAAc3xC,EAAQ4xC,OAAS,GAC/B/sC,EAAQ7E,EAAQ6E,MAAQ7E,EAAQ6E,MAAQ,GA+BxC,SAASgtC,EAAS5rC,EAAK6rC,GACtB,IAAIjiB,EAAU,GA8Bd,OA5BA5pB,EAAI3D,QAAQR,SAASmX,IACpB,IAAIlX,EAEJ,GAAGkX,EAAI,CACN,cAAcA,EAAI/Y,OACjB,IAAK,SACJ+Y,EAAI/Y,MAAsB,OAAd+Y,EAAI/Y,MAAiBqhB,KAAK2hB,UAAUjqB,EAAI/Y,OAAS,GAC7D,MAED,IAAK,YACJ+Y,EAAI/Y,MAAQ,GAId6B,EAAO,CACNi0B,QAAQ/c,EAAI/Y,MACZ6xC,QAAQ94B,EAAIxU,MACZutC,QAAQ/4B,EAAIjS,QAGV8qC,IACF/vC,EAAK+vC,OAASA,GAGfjiB,EAAQ7tB,KAAKD,OAIR8tB,EA5DJ8hB,EAAYM,cACfN,EAAYM,YAAcjyC,EAAQiyC,aAAe,aAG9CN,EAAYO,OACfP,EAAYO,KAAO,MAIpB3/B,EAAKzQ,SAASmE,IACb,OAAOA,EAAIjF,MACV,IAAK,SACJmwC,EAAOnvC,KAAK6vC,EAAS5rC,IACrB,MAED,IAAK,QACJwtB,EAAKzxB,KAAK6vC,EAAS5rC,EAAKorC,IACxB,MAED,IAAK,OACJ5d,EAAKzxB,KAAK6vC,EAAS5rC,EAAKyrC,IACxB,MAED,IAAK,MACJje,EAAKzxB,KAAK6vC,EAAS5rC,QAyCtB,IAAIksC,EAAM,IAAIC,MAAMR,MAAMD,GAEvB3xC,EAAQqyC,YAETjB,EAD+B,mBAAtBpxC,EAAQqyC,UACCryC,EAAQqyC,UAAUF,IAAQ,GAE1BnyC,EAAQqyC,WAIzBxtC,IACFusC,EAAgBkB,YAAc,SAAS50C,GACtCy0C,EAAIzkC,KAAK7I,EAAO,GAAI,MAItBusC,EAAgBmB,KAAOpB,EACvBC,EAAgB3d,KAAOA,EAEvB0e,EAAIE,UAAUjB,GAEXpxC,EAAQwyC,oBACVxyC,EAAQwyC,mBAAmBL,GAG5BvB,EAAgBuB,EAAIxvC,OAAO,eAAgB,kBAC5C,EJlGC8vC,KKVc,SAASlgC,EAAMvS,EAAS4wC,GACtC,IACA8B,EAAY1yC,EAAQ0yC,WAAa,SACjCC,EAAWC,KAAKC,MAAMC,WACtBC,EAAgB,IAAI11C,EAAYG,MAChCw1C,IAAe,aAAchzC,IAAUA,EAAQizC,SAC/CC,EAAelzC,EAAQkzC,cAAgB,CAACC,SAAS,OAAQC,SAAQ,EAAMJ,eAQvE,SAASK,IACR,IAAIrjC,EAAO,GACXsjC,EAAS,GACTC,EAAY,GACZtM,EAAQ,CAACuM,EAAG,CAACC,EAAE,EAAGC,EAAE,GAAInmC,EAAG,CAACkmC,EAAGlhC,EAAK,GAAKA,EAAK,GAAGjQ,QAAQwmC,QAAO,CAAC/e,EAAGC,IAAMD,GAAKC,GAAKA,EAAEvlB,MAAQulB,EAAEvlB,MAAQ,IAAI,GAAK,EAAIivC,EAAEnhC,EAAK3P,SAiC5H,OA9BA2P,EAAKzQ,SAAQ,CAACmE,EAAKwF,KAClB,IAAIokB,EAAU,GAEd5pB,EAAI3D,QAAQR,SAAQ,SAASmX,EAAK06B,GAE9B16B,GACF4W,EAAQ7tB,KAAOiX,EAAI/Y,iBAAiB0zC,MAA8B,iBAAd36B,EAAI/Y,MAAiD+Y,EAAI/Y,MAAhCqhB,KAAK2hB,UAAUjqB,EAAI/Y,SAE7F+Y,EAAIxU,MAAQ,GAAKwU,EAAIjS,QAAU,KAC9BiS,EAAIjS,OAAS,GAAKiS,EAAIxU,MAAQ,IAChC6uC,EAAOtxC,KAAK,CAACwxC,EAAE,CAACE,EAAEjoC,EAAEgoC,EAAEE,GAAGpmC,EAAE,CAACmmC,EAAEjoC,EAAIwN,EAAIjS,OAAS,EAAEysC,EAAEE,EAAI16B,EAAIxU,MAAQ,MAIrEorB,EAAQ7tB,KAAK,OAIfgO,EAAKhO,KAAK6tB,EAAQ,IAInB+iB,KAAKC,MAAMgB,cAAcN,EAAWvjC,GAEpCujC,EAAU,QAAUX,KAAKC,MAAMiB,aAAa7M,GAEzCqM,EAAO1wC,SACT2wC,EAAU,WAAaD,GAGjBC,EAGR,GA7CAL,EAAalyC,KAAO,SAEpB2xC,EAASoB,WAAa,GACtBpB,EAASqB,OAAS,GA0Cfh0C,EAAQi0C,UACVrD,EAAgByC,SADjB,CAKA,GAAGrzC,EAAQk0C,OACV,IAAI,IAAIC,KAASn0C,EAAQk0C,QAEK,IAA1Bl0C,EAAQk0C,OAAOC,IACjBxB,EAASoB,WAAW/xC,KAAKmyC,GACzBxB,EAASqB,OAAOG,GAASd,MAGzBV,EAASoB,WAAW/xC,KAAKmyC,GAEzBpB,EAAcn0C,UAAUoB,EAAQk0C,OAAOC,GAAQ,WAAY,YAAY,CACtEnzC,KAAK,OACLhB,QAAQ,CAACi0C,WAAU,GACnB/1B,OAvEO1gB,KAuEK0gB,OACZk2B,UAAU,SAAS12C,GAClBi1C,EAASqB,OAAOG,GAASz2C,WAM7Bi1C,EAASoB,WAAW/xC,KAAK0wC,GACzBC,EAASqB,OAAOtB,GAAaW,IAG3BrzC,EAAQwyC,qBACVG,EAAW3yC,EAAQwyC,mBAAmBG,IAavC/B,EATA,SAAc4C,GAGb,IAFA,IAAIa,EAAM,IAAIC,YAAYd,EAAE5wC,QACxB2xC,EAAO,IAAIC,WAAWH,GACjB5oC,EAAE,EAAGA,GAAG+nC,EAAE5wC,SAAU6I,EAAG8oC,EAAK9oC,GAAuB,IAAlB+nC,EAAEiB,WAAWhpC,GACvD,OAAO4oC,EAKQK,CAFP9B,KAAK+B,MAAMhC,EAAUO,IAEA,4BAC/B,ELxFCnN,KMbc,SAASxzB,EAAMvS,EAAS4wC,GACnCpzC,KAAK24B,UAAU,UAAU,IAC3Bya,EAAgBpzC,KAAKS,QAAQioC,OAAOI,kBAAkB/zB,GAAO,YAE/D,GCAA,MAAMqiC,UAAiB9f,EAEtBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKw3B,oBAAoB,mBAAmB,SAASt3B,EAAMm3C,GAC1D,OAAO,IAAIC,KAAK,CAACp3C,GAAM,CAACsD,KAAK6zC,OAE9Br3C,KAAKw3B,oBAAoB,qBAAiBj3B,GAC1CP,KAAKw3B,oBAAoB,iBAAkB,IAC3Cx3B,KAAKw3B,oBAAoB,mBAAoB,UAE7Cx3B,KAAKy3B,qBAAqB,YAC1Bz3B,KAAKy3B,qBAAqB,iBAG3BhhB,aACCzW,KAAKu3C,yBAELv3C,KAAK03B,sBAAsB,WAAY13B,KAAKw3C,SAAS12C,KAAKd,OAC1DA,KAAK03B,sBAAsB,gBAAiB13B,KAAKy3C,cAAc32C,KAAKd,OAGrEu3C,yBACCv3C,KAAK2C,iBAAiB,gBAAiB,mBAOxC80C,cAAcj0C,EAAMk0C,EAAUl1C,EAASke,GACtC1gB,KAAKw3C,SAASh0C,EAAMk0C,EAAUl1C,EAASke,GAAQ,GAQhD82B,SAASh0C,EAAMk0C,EAAUl1C,EAASinC,EAAOkO,GACxC,IAAIC,GAAe,EAyBnB,GAVkB,mBAARp0C,EACTo0C,EAAep0C,EAEZ4zC,EAASS,YAAYr0C,GACvBo0C,EAAeR,EAASS,YAAYr0C,GAEpC6C,QAAQC,KAAK,iDAAkD9C,GAI9Do0C,EAAa,CACf,IAAI7iC,EAAO/U,KAAK2oC,mBAAmBc,GAEnCmO,EAAa9rC,KAAK9L,KAAKD,MAAOgV,EAAOvS,GAAW,GA1BjD,SAAmBtC,EAAM43C,GACrBH,GACuB,IAAtBA,EACF33C,KAAK+3C,gBAAgB73C,EAAM43C,EAAMt0C,EAAMk0C,GAAU,GAEjDC,EAAkBz3C,GAInBF,KAAK+3C,gBAAgB73C,EAAM43C,EAAMt0C,EAAMk0C,IAiBsB52C,KAAKd,QAIrE2oC,mBAAmBc,GAClB,IAAI10B,EAAO/U,KAAKD,MAAMU,QAAQioC,OAAOC,mBAAmB3oC,KAAKD,MAAMyC,QAAQw1C,gBAAgB,EAAOvO,GAASzpC,KAAKD,MAAMyC,QAAQy1C,iBAAkB,YAG5IC,EAAcl4C,KAAKD,MAAMyC,QAAQ21C,oBAkBrC,OAhBGD,IAAgB/iC,MAAMC,QAAQ8iC,KAChCA,EAAc,CAACA,IAGhBnjC,EAAKzQ,SAASmE,IACb,IAAIuc,EAEY,UAAbvc,EAAIjF,OACNwhB,EAAQvc,EAAI3D,QAAQ,GAEjBozC,GAAeA,EAAYzvC,EAAIwnC,UACjCjrB,EAAMtiB,MAAQw1C,EAAYzvC,EAAIwnC,QAAQjrB,EAAMtiB,MAAO+F,EAAIgB,UAAU2uC,OAAOC,cAAe5vC,EAAIgB,UAAU2uC,OAAO1vC,UAAWD,EAAIgB,gBAKvHsL,EAGRgjC,gBAAgB73C,EAAM43C,EAAMt0C,EAAMk0C,EAAUY,GAC3C,IAAIhvC,EAAUS,SAASC,cAAc,KACrCuuC,EAAOv4C,KAAKD,MAAMyC,QAAQg2C,gBAAgBt4C,EAAM43C,GAE7CS,IACCD,EACF/jC,OAAOu6B,KAAKv6B,OAAOkkC,IAAIC,gBAAgBH,KAEvCb,EAAWA,GAAY,cAAgC,mBAATl0C,EAAsB,MAAQA,GAEzE24B,UAAUwc,iBACZxc,UAAUwc,iBAAiBJ,EAAMb,IAEjCpuC,EAAQY,aAAa,OAAQqK,OAAOkkC,IAAIC,gBAAgBH,IAGxDjvC,EAAQY,aAAa,WAAYwtC,GAGjCpuC,EAAQa,MAAME,QAAU,OACxBN,SAASksB,KAAKzqB,YAAYlC,GAC1BA,EAAQsvC,QAGR7uC,SAASksB,KAAK1qB,YAAYjC,KAI5BtJ,KAAKoC,iBAAiB,qBAIxBq8B,cAAc1+B,EAAOu+B,EAAQp+B,GAC5B,GACM,cADCo+B,EAELt+B,KAAKw3C,SAASt3C,EAAKsD,KAAM,GAAItD,EAAKsC,QAAStC,EAAKwgB,OAAQxgB,EAAK02C,YCzIlD,SAASiC,EAAUtqC,EAAI/L,GACrC,IAAIs2C,EAAOt2C,EAAQs2C,KACnBC,OAA+C,IAA3Bv2C,EAAQw2C,eAAiCx2C,EAAQw2C,eAAiB,IACtFC,OAA+C,IAA3Bz2C,EAAQ02C,eAAiC12C,EAAQ02C,eAAiB,IACtFC,OAAmD,IAA7B32C,EAAQ42C,iBAAmC52C,EAAQ42C,iBAAmB,IAE5F,SAASC,EAAYvnC,GACpB,IAAIwnC,EAASR,EAAKhnC,QACG,IAAXwnC,GAA0BA,IAAWH,GAAgBG,IAAWP,GAAcO,IAAWL,IAClG1qC,EAAG7L,MAAQ6L,EAAG7L,MAAQ,GAAK42C,EAC3BD,EAAYvnC,EAAM,IAIpBvD,EAAGuB,iBAAiB,WAAYC,IAC/B,IAAI+B,EAAQvD,EAAG7L,MAAM0C,OACrBm0C,EAAOxpC,EAAEhO,IAET,GAAGgO,EAAEonB,QAAU,KAAOpnB,EAAEypC,UAAYzpC,EAAE0pC,QAAQ,CAC7C,GAAG3nC,GAASgnC,EAAK1zC,OAGhB,OAFA2K,EAAEy4B,iBACFz4B,EAAEC,mBACK,EAEP,OAAO8oC,EAAKhnC,IACX,KAAKinC,EACJ,GAAGQ,EAAK3U,eAAiB2U,EAAKld,cAG7B,OAFAtsB,EAAEy4B,iBACFz4B,EAAEC,mBACK,EAER,MAED,KAAKipC,EACJ,GAAGhnC,MAAMsnC,GAGR,OAFAxpC,EAAEy4B,iBACFz4B,EAAEC,mBACK,EAER,MAED,KAAKmpC,EACJ,MAED,QACC,GAAGI,IAAST,EAAKhnC,GAGhB,OAFA/B,EAAEy4B,iBACFz4B,EAAEC,mBACK,OASbzB,EAAGuB,iBAAiB,SAAUC,IAC1BA,EAAEonB,QAAU,IACX30B,EAAQk3C,cACVL,EAAY9qC,EAAG7L,MAAM0C,WAMpBmJ,EAAGwa,cACNxa,EAAGwa,YAAc+vB,GAGft2C,EAAQk3C,cACVL,EAAY9qC,EAAG7L,MAAM0C,OAEvB,CDsEAgyC,EAASjc,WAAa,WAGtBic,EAASS,YAAc8B,EE/IR,MAAMC,EACpB95C,YAAY+5C,EAAQt1C,EAAMu1C,EAAYC,EAASC,EAAQC,GACtDj6C,KAAK6qC,KAAOgP,EACZ75C,KAAKD,MAAQ85C,EAAO95C,MACpBC,KAAKuE,KAAOA,EACZvE,KAAK4xB,OAAS5xB,KAAKk6C,kBAAkBD,GAErCj6C,KAAKE,KAAO,GACZF,KAAKm6C,aAAe,GACpBn6C,KAAKo6C,aAAe,GACpBp6C,KAAKq6C,YAAc,KAEnBr6C,KAAKs6C,MAAQt6C,KAAKu6C,sBAClBv6C,KAAKw6C,OAASx6C,KAAKy6C,qBAEnBz6C,KAAK06C,cAAgB,KAErB16C,KAAK26C,SAA8B,WAAnBp2C,EAAKqE,UAErB5I,KAAK46C,cAAgB,KACrB56C,KAAK66C,UAAW,EAChB76C,KAAK86C,QAAS,EAEd96C,KAAKmwB,OAAS,GACdnwB,KAAKq4B,MAAQ,KAEbr4B,KAAK+6C,cAAgB,EAErB/6C,KAAKg7C,WAAW,GAChBh7C,KAAKi7C,WAAW,GAEhBj7C,KAAKq1B,UAAW,EAEhBr1B,KAAKk7C,QAAU,CACdnB,QAAQA,EACRC,OAAOA,GAGRh6C,KAAKm7C,0BACLn7C,KAAKo7C,mBAELtB,EAAW95C,KAAKq7C,YAAYv6C,KAAKd,OAGlCm7C,0BACIn7C,KAAK4xB,OAAO0pB,mBACdt7C,KAAKuE,KAAKuB,WAAWhD,mBAAmBG,IAAI,0HAG1CjD,KAAK4xB,OAAO2pB,gBACdv7C,KAAKuE,KAAKuB,WAAWhD,mBAAmBG,IAAI,uHAG1CjD,KAAK4xB,OAAO4pB,YACdx7C,KAAKuE,KAAKuB,WAAWhD,mBAAmBG,IAAI,mHAG1CjD,KAAK4xB,OAAO6pB,sBACdz7C,KAAKuE,KAAKuB,WAAWhD,mBAAmBG,IAAI,6HAI9Cm4C,mBACC,IAAI7yC,EAAevI,KAAKuE,KAAK6D,gBAEF,IAAjBG,QAAoE,IAA7BvI,KAAK4xB,OAAO8pB,eAC5DnzC,EAAevI,KAAK4xB,OAAO8pB,cAG5B17C,KAAK06C,cAAgB16C,KAAK4xB,OAAO+pB,YAAcpzC,EAAe,CAACA,GAE5DvI,KAAK26C,WACP36C,KAAKs6C,MAAM53C,MAAQ1C,KAAK06C,cAAgB16C,KAAK06C,cAAcrV,KAAK,KAAO,GACvErlC,KAAK47C,8BAIPP,cACC,IAAIQ,EAAS77C,KAAKuE,KAAKP,aAEvB,SAAS83C,EAAU/rC,GAClBA,EAAEC,kBAGChQ,KAAK26C,WACR36C,KAAKs6C,MAAMnwC,MAAMX,OAAS,OAC1BxJ,KAAKs6C,MAAMrqC,MAAM,CAAC8rC,eAAe,KAIlCF,EAAO/rC,iBAAiB,QAASgsC,GAEjCrpB,YAAW,KACVopB,EAAOnrB,oBAAoB,QAASorB,EAAU,GAC5C,KAEH97C,KAAKs6C,MAAMxqC,iBAAiB,YAAa9P,KAAKg8C,kBAAkBl7C,KAAKd,OAGtEy6C,qBACC,IAAID,EAASzwC,SAASC,cAAc,OAMpC,OALAwwC,EAAOxvC,UAAUC,IAAI,uBAErBuvC,EAAO1qC,iBAAiB,YAAa9P,KAAKi8C,aAAan7C,KAAKd,OAC5Dw6C,EAAO1qC,iBAAiB,UAAW9P,KAAKk8C,cAAcp7C,KAAKd,OAEpDw6C,EAGR2B,gBACC,IAAI7yC,EAAUtJ,KAAK26C,SAAW36C,KAAKs6C,MAAQt6C,KAAKuE,KAAKP,aAErDhE,KAAKw6C,OAAOrwC,MAAM1C,SAAW6B,EAAQ8C,YAAc,KAEhDpM,KAAK4xB,OAAOlqB,YACc,IAAzB1H,KAAK4xB,OAAOlqB,SACd1H,KAAKw6C,OAAOrwC,MAAMzC,SAAW4B,EAAQ8C,YAAc,KACX,iBAAzBpM,KAAK4xB,OAAOlqB,SAC3B1H,KAAKw6C,OAAOrwC,MAAMzC,SAAW1H,KAAK4xB,OAAOlqB,SAAW,KAEpD1H,KAAKw6C,OAAOrwC,MAAMzC,SAAW1H,KAAK4xB,OAAOlqB,UAM5C6yC,sBACC,IAAI6B,EAAUp8C,KAAK4xB,OAAOyqB,kBACtB/B,EAAQvwC,SAASC,cAAc,SAcnC,GAZAswC,EAAMpwC,aAAa,OAAQlK,KAAK4xB,OAAO0qB,UAAY,SAAW,QAE9DhC,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAEpBx8C,KAAK4xB,OAAO6qB,eACfnC,EAAMnwC,MAAMuyC,OAAS,UACrBpC,EAAMnwC,MAAMwyC,WAAa,eAIvBP,GAA6B,iBAAXA,EACpB,IAAK,IAAIr6C,KAAOq6C,EACK,KAAjBr6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOq6C,EAAQ,IAAMr6C,KAEhEu4C,EAAMpwC,aAAanI,EAAKq6C,EAAQr6C,IAWnC,OANG/B,KAAK4xB,OAAOknB,MACdD,EAAUyB,EAAOt6C,KAAK4xB,QAGvB5xB,KAAK68C,iBAAiBvC,GAEfA,EAGRJ,kBAAkBtoB,GACjB,IACAkrB,EADIC,EAAY,CAAC,SAAU,YAAa,gBA6DxC,OA1DAnrB,EAAS7iB,OAAOiF,OAAO,GAAI4d,IAEpBorB,mBAAqBprB,EAAOorB,oBAAsB,SACzDprB,EAAOqrB,wBAA0D,IAA9BrrB,EAAOqrB,mBAAqC,gBAAkBrrB,EAAOqrB,mBACxGrrB,EAAOsrB,sBAAsD,IAA5BtrB,EAAOsrB,iBAAmC,mBAAqBtrB,EAAOsrB,iBACvGtrB,EAAOurB,iBAA4C,IAAvBvrB,EAAOurB,YAA8B,IAAMvrB,EAAOurB,YAE9EvrB,EAAOwrB,WAAaruC,OAAOC,KAAK4iB,GAAQ9V,SAAS,cAAgB8V,EAAOwrB,WAAa,IAErFN,EAAa/tC,OAAOC,KAAK4iB,GAAQ/V,QAAO9Z,GAAOg7C,EAAUjhC,SAAS/Z,KAAMqD,QAI/D03C,EAAa,GACrBz2C,QAAQC,KAAK,uHAFbD,QAAQC,KAAK,+FAKXsrB,EAAO6qB,aACN7qB,EAAO+pB,cACT/pB,EAAO+pB,aAAc,EACrBt1C,QAAQC,KAAK,iGAGXsrB,EAAOyrB,WACTzrB,EAAOyrB,UAAW,EAClBh3C,QAAQC,KAAK,8FAGXsrB,EAAO0rB,aACT1rB,EAAO0rB,YAAa,EACpBj3C,QAAQC,KAAK,gGAGXsrB,EAAO2rB,eACT3rB,EAAO2rB,cAAe,EACtBl3C,QAAQC,KAAK,kGAGXsrB,EAAOknB,OACTlnB,EAAOknB,MAAO,EACdzyC,QAAQC,KAAK,0FAGXsrB,EAAO4rB,aACT5rB,EAAO4rB,YAAa,EACpBn3C,QAAQC,KAAK,gGAGXsrB,EAAO6rB,cACT7rB,EAAO6rB,aAAc,EACrBp3C,QAAQC,KAAK,kGAIZsrB,EAAO2rB,cAAiD,mBAAxB3rB,EAAO8rB,eAA+B9rB,EAAO+rB,YAC/E/rB,EAAO2rB,cAAe,EACtBl3C,QAAQC,KAAK,0HAEPsrB,EAMRirB,iBAAiBvC,GAChBA,EAAMxqC,iBAAiB,QAAS9P,KAAK49C,YAAY98C,KAAKd,OACtDs6C,EAAMxqC,iBAAiB,QAAS9P,KAAK69C,YAAY/8C,KAAKd,OACtDs6C,EAAMxqC,iBAAiB,OAAQ9P,KAAK89C,WAAWh9C,KAAKd,OACpDs6C,EAAMxqC,iBAAiB,UAAW9P,KAAKk8C,cAAcp7C,KAAKd,OAC1Ds6C,EAAMxqC,iBAAiB,SAAU9P,KAAK+9C,aAAaj9C,KAAKd,OAErDA,KAAK4xB,OAAO6qB,cACdnC,EAAMxqC,iBAAiB,QAAS9P,KAAKg+C,YAAYl9C,KAAKd,OAKxD49C,YAAY7tC,GACX/P,KAAKi+C,qBAGNC,UACIl+C,KAAK4xB,OAAO2rB,cACdY,aAAan+C,KAAK46C,eAElB56C,KAAK46C,cAAgBnoB,YAAW,KAC/BzyB,KAAKi+C,oBAAoB,GACvBj+C,KAAK4xB,OAAOurB,cAEfn9C,KAAKo+C,cAIPP,YAAY9tC,GACXA,EAAEC,kBAGH8tC,WAAW/tC,GACP/P,KAAKq1B,WACJr1B,KAAKq4B,MACPr4B,KAAKq4B,MAAMtzB,OAEX/E,KAAKq+C,eAAc,IAKtBN,eACC/9C,KAAKs+C,gBAGNpC,cAAcnsC,GACb,OAAOA,EAAEonB,SAER,KAAK,GACJn3B,KAAKu+C,OAAOxuC,GACZ,MAED,KAAK,GACJ/P,KAAKw+C,SAASzuC,GACd,MAED,KAAK,GACL,KAAK,GACJ/P,KAAKy+C,SAAS1uC,GACd,MAED,KAAK,GACJ/P,KAAK0+C,YACL,MAED,KAAK,GACJ1+C,KAAK2+C,UACL,MAED,KAAK,GACL,KAAK,GACJ3+C,KAAK4+C,YAAY7uC,GACjB,MAED,KAAK,EACJ/P,KAAK6+C,QAAQ9uC,GACb,MAED,QACC/P,KAAK8+C,iBAAiB/uC,IAIzBiuC,YAAYjuC,GACX,OAAOA,EAAEonB,SACR,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACJ,MAED,QACCn3B,KAAK++C,mBAAmBhvC,IAI3BisC,oBACIh8C,KAAKq4B,OACPr4B,KAAKq4B,MAAMjB,YAGZ3E,YAAW,KACPzyB,KAAKq4B,OACPr4B,KAAKq4B,MAAMhB,gBAEV,IAGJ4kB,eACCj8C,KAAKq1B,UAAW,EAEhB5C,YAAW,KACVzyB,KAAKq1B,UAAW,CAAI,GAClB,IAOJwpB,QAAQ9uC,GACJ/P,KAAK4xB,OAAO6qB,cAAoC,WAApBz8C,KAAKg7C,WACnCh7C,KAAKq+C,eAAc,GAEhBr+C,KAAKq6C,aACPr6C,KAAKg/C,YAAYh/C,KAAKq6C,aAAa,GAKtCkE,OAAOxuC,GACN,IAAI+B,EAAQ9R,KAAKm6C,aAAalrC,QAAQjP,KAAKq6C,cAEN,UAAlCr6C,KAAK4xB,OAAOorB,oBAAqE,UAAlCh9C,KAAK4xB,OAAOorB,oBAAkClrC,KAC/F/B,EAAEkvC,2BACFlvC,EAAEC,kBACFD,EAAEy4B,iBAEC12B,EAAQ,GACV9R,KAAKk/C,WAAWl/C,KAAKm6C,aAAaroC,EAAQ,KAK7C0sC,SAASzuC,GACR,IAAI+B,EAAQ9R,KAAKm6C,aAAalrC,QAAQjP,KAAKq6C,cAEN,UAAlCr6C,KAAK4xB,OAAOorB,oBAAqE,UAAlCh9C,KAAK4xB,OAAOorB,oBAAkClrC,EAAQ9R,KAAKm6C,aAAa/0C,OAAS,KAClI2K,EAAEkvC,2BACFlvC,EAAEC,kBACFD,EAAEy4B,iBAEC12B,EAAQ9R,KAAKm6C,aAAa/0C,OAAS,KACxB,GAAV0M,EACF9R,KAAKk/C,WAAWl/C,KAAKm6C,aAAa,IAElCn6C,KAAKk/C,WAAWl/C,KAAKm6C,aAAaroC,EAAQ,MAM9C2sC,SAAS1uC,GACJ/P,KAAK4xB,OAAO6qB,eACf1sC,EAAEkvC,2BACFlvC,EAAEC,kBACFD,EAAEy4B,kBAIJkW,UAAU3uC,GACN/P,KAAK4xB,OAAO6qB,cAAoC,WAApBz8C,KAAKg7C,WACnCh7C,KAAKq+C,eAAc,GAEhBr+C,KAAKq6C,aACPr6C,KAAKg/C,YAAYh/C,KAAKq6C,aAKzBsE,QAAQ5uC,GACP/P,KAAKm/C,UAGNP,YAAY7uC,GACR/P,KAAK4xB,OAAO6qB,cAEd1sC,EAAEkvC,2BAIJH,iBAAiB/uC,GACZ/P,KAAK4xB,OAAO6qB,eAEf1sC,EAAEy4B,iBAGCz4B,EAAEonB,SAAW,IAAMpnB,EAAEonB,SAAW,IAClCn3B,KAAKo/C,eAAervC,EAAEonB,UAKzB4nB,mBAAmBhvC,GAClB/P,KAAKk+C,UACLl+C,KAAKg7C,WAAa,SAClBh7C,KAAK86C,QAAS,EAIfsE,eAAe7F,GACd4E,aAAan+C,KAAK46C,eAElB,IAAIyE,EAAY3T,OAAO4T,aAAa/F,GAAMld,cAC1Cr8B,KAAKi7C,YAAcoE,EAAUhjB,cAE7B,IAAIhnB,EAAQrV,KAAKm6C,aAAa76B,MAAM7J,QACN,IAAfA,EAAK8pC,OAAyB9pC,EAAK8pC,MAAMljB,cAActiB,WAAW/Z,KAAKi7C,cAGnF5lC,GACFrV,KAAKk/C,WAAW7pC,GAGjBrV,KAAK46C,cAAgBnoB,YAAW,KAC/BzyB,KAAKi7C,WAAa,EAAE,GAClB,KAGJiE,WAAWzpC,GACVzV,KAAKg7C,WAAa,QAEfh7C,KAAKq6C,aAAer6C,KAAKq6C,YAAY/wC,SACvCtJ,KAAKq6C,YAAY/wC,QAAQ0B,UAAUgN,OAAO,WAG3ChY,KAAKq6C,YAAc5kC,EAEhBA,GAAQA,EAAKnM,UACfmM,EAAKnM,QAAQ0B,UAAUC,IAAI,WAC3BwK,EAAKnM,QAAQk2C,eAAe,CAACC,SAAU,SAAUC,MAAO,UAAWC,OAAQ,WAQ7E/D,6BACC57C,KAAK4/C,kBAAiB,GAGvB3B,qBACCj+C,KAAK4/C,mBACH1rC,KAAKlU,KAAK6/C,aAAa/+C,KAAKd,OAC5BkU,KAAKlU,KAAK8/C,WAAWh/C,KAAKd,OAC1BkU,KAAKlU,KAAK+/C,UAAUj/C,KAAKd,OACzBuyB,OAAOxiB,IACHkrB,OAAO+kB,UAAUjwC,IACpB1J,QAAQ0N,MAAM,wBAAyBhE,MAK3CquC,cACCp+C,KAAK8/C,WAAW9/C,KAAKigD,kBACrBjgD,KAAK+/C,YAGNH,iBAAiBz/C,GAChB,IAAIgwB,EAAS,GACT+vB,IAAelgD,KAAK+6C,cAgBxB,OAdA/6C,KAAK66C,UAAW,EAEb76C,KAAK4xB,OAAOzB,OACdA,EAASnwB,KAAK4xB,OAAOzB,OACZnwB,KAAK4xB,OAAO+rB,UACrBxtB,EAASnwB,KAAKmgD,aAAangD,KAAK4xB,OAAO+rB,UAAW39C,KAAKs6C,MAAM53C,OAEtB,mBAA7B1C,KAAK4xB,OAAO8rB,aACrBvtB,EAASnwB,KAAK4xB,OAAO8rB,aAAa19C,KAAKuE,KAAMvE,KAAKs6C,MAAM53C,OAChD1C,KAAK4xB,OAAO8rB,eACpBvtB,EAASnwB,KAAKogD,oBAAoBpgD,KAAK4xB,OAAOyuB,oBAI7ClwB,aAAkBhd,SAChBhT,GACHH,KAAKsgD,gBAAgBtgD,KAAK4xB,OAAOqrB,oBAG3B9sB,EAAOjc,OACZA,MAAMqsC,GACHvgD,KAAK+6C,gBAAkBmF,EAClBlgD,KAAKwgD,WAAWD,GAEhBptC,QAAQE,OAAO6sC,MAIlB/sC,QAAQC,QAAQpT,KAAKwgD,WAAWrwB,IAIzCmwB,gBAAgBlwC,GACf,IAAI2Y,EAAchf,SAASC,cAAc,OAElB,mBAAboG,IACTA,EAAWA,EAASpQ,KAAKuE,KAAKE,eAAgBzE,KAAKw6C,SAGjDpqC,IACFpQ,KAAKygD,aAEFrwC,aAAoB8P,YACtB6I,EAAc3Y,GAEd2Y,EAAY/d,UAAUC,IAAI,mCAC1B8d,EAAY3d,UAAYgF,GAGzBpQ,KAAKw6C,OAAOhvC,YAAYud,GAExB/oB,KAAK+/C,aAIPI,aAAa7a,EAAKob,GAIjB,OAFApb,EAAMqb,EAAWrb,EAAK,GADTtlC,KAAK4xB,OAAO2rB,aAAe,CAACmD,KAAKA,GAAQ,IAG/CjZ,MAAMnC,GACXpxB,MAAMge,GACHA,EAASwV,GACJxV,EAASsT,OACdjT,OAAOxe,IACP1N,QAAQC,KAAK,+CAAgDyN,GACtDZ,QAAQE,OAAOU,OAGxB1N,QAAQ0N,MAAM,4CAA8Cme,EAASyV,OAAQzV,EAAS0V,YAC/Ez0B,QAAQE,OAAO6e,MAGvBK,OAAOxe,IACP1N,QAAQ0N,MAAM,4CAA6CA,GACpDZ,QAAQE,OAAOU,MAIzBqsC,oBAAoB94C,GACnB,IAEAhE,EAFI6B,EAAS,GACbjF,EAAOF,KAAKD,MAAM2I,QAAQ1I,KAAK4xB,OAAO8rB,cAsBtC,OAlBCp6C,EADEgE,EACOtH,KAAKD,MAAM6F,cAAcua,iBAAiB7Y,GAE1CtH,KAAKuE,KAAKsE,YAAYrD,YAI/BtF,EAAKoE,SAASmE,IACb,IAAI0C,EAAM7H,EAAOwG,cAAcrB,GAE5B0C,SAAsD,KAARA,IAChDhG,EAAOgG,IAAO,OAIhB9E,QAAQC,KAAK,+DAAgEgB,GAC7EnC,EAAS,IAGH4J,OAAOC,KAAK7J,GAIpBq7C,WAAWI,GACV,IAAI1gD,EAAO,GA8BX,OA5BIiV,MAAMC,QAAQwrC,KACjBA,EAAc7xC,OAAO8xC,QAAQD,GAAahuB,KAAI,EAAE7wB,EAAKW,MAC7C,CACN68C,MAAM78C,EACNA,MAAMX,OAKT6+C,EAAYt8C,SAAS5B,IACA,iBAAVA,IACTA,EAAQ,CACP68C,MAAM78C,EACNA,MAAMA,IAIR1C,KAAK8gD,eAAep+C,EAAOxC,EAAM,EAAE,KAGhCF,KAAKo6C,aAAah1C,QAAUpF,KAAK4xB,OAAOyrB,WAC3Cr9C,KAAKs6C,MAAM53C,MAAQ1C,KAAK06C,cACxB16C,KAAK86C,QAAS,EACd96C,KAAKg7C,WAAa,UAGnBh7C,KAAKE,KAAOA,EAELA,EAGR4gD,eAAe9qC,EAAQ9V,EAAM28B,GAC5B,IAAIpnB,EAAO,GAERO,EAAOxT,QACTiT,EAAOzV,KAAK+gD,gBAAgB/qC,EAAQ6mB,EAAQ,IAE5CpnB,EAAO,CACN8pC,MAAMvpC,EAAOupC,MACb78C,MAAMsT,EAAOtT,MACbs+C,WAAWhrC,EAAOgrC,WAClB3E,kBAAmBrmC,EAAOqmC,kBAC1B/yC,SAAQ,EACR23C,UAAS,EACTt8C,SAAQ,EACRk4B,MAAMA,EACNqkB,SAASlrC,GAGPhW,KAAK06C,eAAiB16C,KAAK06C,cAAczrC,QAAQ+G,EAAOtT,QAAU,GACpE1C,KAAKg/C,YAAYvpC,GAAM,IAIzBvV,EAAKsE,KAAKiR,GAGXsrC,gBAAgB/qC,EAAQ6mB,GACvB,IAAIpnB,EAAO,CACV8pC,MAAMvpC,EAAOupC,MACbv6B,OAAM,EACNg8B,WAAWhrC,EAAOgrC,WAClB3E,kBAAkBrmC,EAAOqmC,kBACzB/yC,SAAQ,EACR3E,SAAQ,EACRk4B,MAAMA,EACNr6B,QAAQ,GACR0+C,SAASlrC,GAOV,OAJAA,EAAOxT,QAAQ8B,SAASuN,IACvB7R,KAAK8gD,eAAejvC,EAAO4D,EAAKjT,QAASq6B,EAAM,IAGzCpnB,EAGRoqC,aAAar9C,GACZ,IAAI2c,EAQJ,OANGnf,KAAK4xB,OAAOtF,OACdnN,EAAqC,mBAArBnf,KAAK4xB,OAAOtF,KAAsBtsB,KAAK4xB,OAAOtF,KAAOtsB,KAAKmhD,qBAAqBrgD,KAAKd,MAEpGA,KAAKohD,WAAWjiC,EAAQ3c,IAGlBA,EAGR4+C,WAAWjiC,EAAQ3c,GAClBA,EAAQ8pB,MAAK,CAACC,EAAEC,IACRrN,EAAOoN,EAAEgzB,MAAO/yB,EAAE+yB,MAAOhzB,EAAE7pB,MAAO8pB,EAAE9pB,MAAO6pB,EAAE20B,SAAU10B,EAAE00B,YAGjE1+C,EAAQ8B,SAAS0R,IACbA,EAAOgP,OACThlB,KAAKohD,WAAWjiC,EAAQnJ,EAAOxT,YAKlC2+C,qBAAqBE,EAAIC,GACxB,IAAI/0B,EAAGC,EAAG+0B,EAAIC,EAAUC,EAANxzC,EAAG,EAAMyzC,EAAK,eAAgBC,EAAK,KACjDC,EAAa,EAOjB,GALwB,SAArB5hD,KAAK4xB,OAAOtF,QACb+0B,EAAIC,GAAM,CAACA,EAAID,IAIbA,GAAY,IAANA,EAEJ,IAAIC,GAAY,IAANA,EAEX,CACJ,GAAGO,SAASR,IAAOQ,SAASP,GAAK,OAAOD,EAAKC,EAG7C,IAFA/0B,EAAImf,OAAO2V,GAAIhlB,kBACf7P,EAAIkf,OAAO4V,GAAIjlB,eACH,OAAO,EACnB,IAAKslB,EAAGnf,KAAKjW,KAAMo1B,EAAGnf,KAAKhW,GAAK,OAAOD,EAAIC,EAAI,GAAK,EAIpD,IAHAD,EAAIA,EAAElX,MAAMqsC,GACZl1B,EAAIA,EAAEnX,MAAMqsC,GACZD,EAAIl1B,EAAEnnB,OAASonB,EAAEpnB,OAASonB,EAAEpnB,OAASmnB,EAAEnnB,OACjC6I,EAAIwzC,GAGT,IAFAF,EAAIh1B,EAAEte,OACNuzC,EAAIh1B,EAAEve,MAEL,OAAG4zC,SAASN,IAAOM,SAASL,IACP,MAAjBD,EAAG5c,OAAO,KAAY4c,EAAK,IAAMA,GAChB,MAAjBC,EAAG7c,OAAO,KAAY6c,EAAK,IAAMA,GAC7BD,EAAKC,GAEDD,EAAKC,EAAK,GAAK,EAI7B,OAAOj1B,EAAEnnB,OAASonB,EAAEpnB,OAvBpBw8C,EAAc,OAFdA,EAAeN,GAAY,IAANA,GAAe,EAAL,EA4BhC,OAAOM,EAGR3B,iBACC,IAAI3C,EAAat9C,KAAK4xB,OAAO0rB,YAAct9C,KAAK8hD,mBAChDpB,EAAO1gD,KAAKs6C,MAAM53C,MAYlB,OAVGg+C,GACF1gD,KAAK66C,UAAW,EAEhB76C,KAAKE,KAAKoE,SAASmR,IAClBzV,KAAK+hD,YAAYzE,EAAYoD,EAAMjrC,EAAK,KAGzCzV,KAAK66C,UAAW,EAGV76C,KAAKE,KAGb6hD,YAAYpqB,EAAM+oB,EAAMjrC,GACvB,IAAI6K,GAAU,EAcd,OAZI7K,EAAKuP,OAGRvP,EAAKjT,QAAQ8B,SAAS0R,IAClBhW,KAAK+hD,YAAYpqB,EAAM+oB,EAAM1qC,KAC/BsK,GAAU,MAIZ7K,EAAK9Q,QAAU2b,GARf7K,EAAK9Q,QAAUgzB,EAAK+oB,EAAMjrC,EAAK8pC,MAAO9pC,EAAK/S,MAAO+S,EAAKyrC,UAWjDzrC,EAAK9Q,QAGbm9C,mBAAmBpB,EAAMnB,EAAO78C,EAAO+S,GAGtC,OAFAirC,EAAOhV,OAAOgV,GAAMrkB,cAEjBkjB,UACC7T,OAAO6T,GAAOljB,cAAcptB,QAAQyxC,IAAS,GAAKhV,OAAOhpC,GAAO25B,cAAcptB,QAAQyxC,IAAS,GAYpGD,aACC,KAAMzgD,KAAKw6C,OAAOlvC,YAAYtL,KAAKw6C,OAAOjvC,YAAYvL,KAAKw6C,OAAOlvC,YAElEtL,KAAKm6C,aAAe,GAGrB2F,WAAW5/C,GACVF,KAAKygD,aAELvgD,EAAKoE,SAAS0R,IACbhW,KAAKgiD,WAAWhsC,EAAO,IAGpBhW,KAAKm6C,aAAa/0C,QACrBpF,KAAKsgD,gBAAgBtgD,KAAK4xB,OAAOsrB,kBAInC8E,WAAWvsC,GACV,IACArF,EADI7B,EAAKkH,EAAKnM,QAGd,IAAItJ,KAAK66C,UAAYplC,EAAK9Q,QAAQ,CAEjC,IAAI4J,EAAG,CAoBN,IAnBAA,EAAKxE,SAASC,cAAc,QACzBmnC,SAAW,GAEd/gC,EAAWpQ,KAAK4xB,OAAOqwB,cAAgBjiD,KAAK4xB,OAAOqwB,cAAcxsC,EAAK8pC,MAAO9pC,EAAK/S,MAAO+S,EAAKyrC,SAAU3yC,GAAMkH,EAAK8pC,iBAE5Fr/B,YACtB3R,EAAG/C,YAAY4E,GAEf7B,EAAGnD,UAAYgF,EAGbqF,EAAKuP,MACPzW,EAAGvD,UAAUC,IAAI,6BAEjBsD,EAAGvD,UAAUC,IAAI,4BAGlBsD,EAAGvD,UAAUC,IAAI,mCAAqCwK,EAAKonB,OAExDpnB,EAAK4mC,mBAAsD,iBAA1B5mC,EAAK4mC,kBACxC,IAAK,IAAIt6C,KAAO0T,EAAK4mC,kBACA,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChB/Y,EAAGrE,aAAanI,EAAK/B,KAAKs6C,MAAMsC,aAAa76C,GAAO0T,EAAK4mC,kBAAkB,IAAMt6C,KAEjFwM,EAAGrE,aAAanI,EAAK0T,EAAK4mC,kBAAkBt6C,IAK5C0T,EAAKuP,MACPzW,EAAGuB,iBAAiB,QAAS9P,KAAKkiD,YAAYphD,KAAKd,KAAMyV,IAEzDlH,EAAGuB,iBAAiB,QAAS9P,KAAKmiD,WAAWrhD,KAAKd,KAAMyV,IAGzDlH,EAAGuB,iBAAiB,YAAa9P,KAAKi8C,aAAan7C,KAAKd,OAExDyV,EAAKnM,QAAUiF,EAGhBvO,KAAKoiD,WAAW3sC,GAEhBzV,KAAKw6C,OAAOhvC,YAAY+C,GAErBkH,EAAKuP,MACPvP,EAAKjT,QAAQ8B,SAAS0R,IACrBhW,KAAKgiD,WAAWhsC,EAAO,IAGxBhW,KAAKm6C,aAAa31C,KAAKiR,IAK1BsqC,YACC,IAAIsC,EAAWriD,KAAKq4B,OAASr4B,KAAKq4B,MAAM3zB,YAExC,GAAG1E,KAAKs6C,MAAMttC,WAAW,CACxB,GAAGhN,KAAK4xB,OAAO6qB,cAAqC,KAArBz8C,KAAKs6C,MAAM53C,QAAiB1C,KAAK4xB,OAAO6rB,YAItE,YAHGz9C,KAAKq4B,OACPr4B,KAAKq4B,MAAMtzB,MAAK,IAKlB/E,KAAKm8C,gBAEDn8C,KAAKq4B,QACRr4B,KAAKq4B,MAAQr4B,KAAK6qC,KAAKxS,MAAMr4B,KAAKw6C,SAGnCx6C,KAAKq4B,MAAMzzB,KAAK5E,KAAKuE,KAAKP,aAAc,UAEpCq+C,GACH5vB,YAAW,KACVzyB,KAAKq4B,MAAMnB,WAAWl3B,KAAKq+C,cAAcv9C,KAAKd,MAAM,GAAM,GACxD,KAKNoiD,WAAW3sC,GACPA,GAAQA,EAAKnM,UACZmM,EAAKwrC,SACPxrC,EAAKnM,QAAQ0B,UAAUC,IAAI,UAE3BwK,EAAKnM,QAAQ0B,UAAUgN,OAAO,WASjCmqC,WAAW1sC,EAAM1F,GAChBA,EAAEC,kBAEFhQ,KAAKg/C,YAAYvpC,GAGlBysC,YAAYzsC,EAAM1F,GACjBA,EAAEC,kBAQHmvC,UACCn/C,KAAKq4B,MAAMtzB,MAAK,GAChB/E,KAAKk7C,QAAQlB,SAGdsE,gBACCt+C,KAAK86C,QAAS,EAEd96C,KAAKo6C,aAAa91C,SAASmR,IAC1BA,EAAKwrC,UAAW,EAChBjhD,KAAKoiD,WAAW3sC,EAAK,IAGtBzV,KAAKo6C,aAAe,GAEpBp6C,KAAKq6C,YAAc,KAGpB2E,YAAYvpC,EAAMtV,GACjB,IAAI2R,EAEJ9R,KAAK86C,QAAS,EAEX96C,KAAK4xB,OAAO+pB,cACd7pC,EAAQ9R,KAAKo6C,aAAanrC,QAAQwG,KAEtB,GACXzV,KAAKo6C,aAAaroC,OAAOD,EAAO,GAChC2D,EAAKwrC,UAAW,IAEhBjhD,KAAKo6C,aAAa51C,KAAKiR,GACvBA,EAAKwrC,UAAW,GAGjBjhD,KAAKs6C,MAAM53C,MAAQ1C,KAAKo6C,aAAaxnB,KAAInd,GAAQA,EAAK8pC,QAAOla,KAAK,KAElErlC,KAAKoiD,WAAW3sC,KAGhBzV,KAAKo6C,aAAe,CAAC3kC,GACrBA,EAAKwrC,UAAW,EAEhBjhD,KAAKs6C,MAAM53C,MAAQ+S,EAAK8pC,MAExBv/C,KAAKoiD,WAAW3sC,GAEZtV,GACHH,KAAKq+C,iBAIPr+C,KAAKk/C,WAAWzpC,GAGjB4oC,cAAciE,GACb,IAAIn9C,EAAQoD,EAMZ,GAJGvI,KAAKq4B,OACPr4B,KAAKq4B,MAAMtzB,MAAK,GAGd/E,KAAK4xB,OAAO+pB,YACdx2C,EAASnF,KAAKo6C,aAAaxnB,KAAInd,GAAQA,EAAK/S,aAE5C,GAAG4/C,GAAQtiD,KAAK4xB,OAAO6qB,cAAgBz8C,KAAK86C,OAAO,CAClD,KAAG96C,KAAK4xB,OAAOyrB,UAAar9C,KAAK4xB,OAAO4rB,YAAmC,KAArBx9C,KAAKs6C,MAAM53C,OAIhE,YADA1C,KAAKk7C,QAAQlB,SAFb70C,EAASnF,KAAKs6C,MAAM53C,WAOpByC,EADEnF,KAAKo6C,aAAa,GACXp6C,KAAKo6C,aAAa,GAAG13C,MAI3B6F,OAFHA,EAAe4M,MAAMC,QAAQpV,KAAK06C,eAAiB16C,KAAK06C,cAAc,GAAK16C,KAAK06C,gBAEI,KAAjBnyC,EACzDA,EAEAvI,KAAK4xB,OAAOwrB,WAOX,KAAXj4C,IACFA,EAASnF,KAAK4xB,OAAOwrB,YAGtBp9C,KAAKk7C,QAAQnB,QAAQ50C,GAElBnF,KAAK26C,WACP36C,KAAK06C,cAAgBv1C,IAAWgQ,MAAMC,QAAQjQ,GAAU,CAACA,GAAUA,EACnEnF,KAAKo6C,aAAe,WCrgCR,CACdE,MCZc,SAAS/1C,EAAMu1C,EAAYC,EAASC,EAAQC,GAE1D,IAAIsI,EAAYh+C,EAAK6D,WACrBkyC,EAAQvwC,SAASC,cAAc,SAQ/B,GANAswC,EAAMpwC,aAAa,OAAQ+vC,EAAauI,OAAS,SAAW,QAE5DlI,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAkB1D,SAAS0gD,EAAS1yC,GACb,MAACwyC,GAA2E,KAAhBjI,EAAM53C,OAAiB43C,EAAM53C,QAAU6/C,EACnGxI,EAAQO,EAAM53C,SAChB6/C,EAAYjI,EAAM53C,OAGnBs3C,IA+BF,OAlDAM,EAAM53C,WAA6B,IAAd6/C,EAA4BA,EAAY,GAE7DzI,GAAW,WACY,SAAnBv1C,EAAKqE,YACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,OAElBywC,EAAayI,gBACfpI,EAAMnQ,aAgBTmQ,EAAMxqC,iBAAiB,SAAU2yC,GACjCnI,EAAMxqC,iBAAiB,OAAQ2yC,GAG/BnI,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1C,OAAOA,EAAEonB,SAER,KAAK,GACJsrB,IACA,MAED,KAAK,GACJzI,IACA,MAED,KAAK,GACL,KAAK,GACJjqC,EAAEC,sBAKFiqC,EAAanB,MACfD,EAAUyB,EAAOL,GAGXK,CACR,ED5DCqI,SEbc,SAASp+C,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAAIsI,EAAYh+C,EAAK6D,WACrBw6C,EAAU3I,EAAa+C,oBAAsB,SAC7Ct6C,EAAQgpC,OAAO6W,QAA0DA,EAAY,IACrFjI,EAAQvwC,SAASC,cAAc,YAC/ByO,EAAe,EAWf,GARA6hC,EAAMnwC,MAAME,QAAU,QACtBiwC,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMX,OAAS,OACrB8wC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aACxBlC,EAAMnwC,MAAM04C,WAAa,WACzBvI,EAAMnwC,MAAMqN,OAAS,OAElByiC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAsB1D,SAAS0gD,EAAS1yC,GAEb,MAACwyC,GAA2E,KAAhBjI,EAAM53C,OAAiB43C,EAAM53C,QAAU6/C,GAEnGxI,EAAQO,EAAM53C,SAChB6/C,EAAYjI,EAAM53C,OAGnB+vB,YAAW,WACVluB,EAAKiE,SAAS8Z,oBACb,MAEF03B,IA8DF,OA3FAM,EAAM53C,MAAQA,EAEdo3C,GAAW,WACY,SAAnBv1C,EAAKqE,YACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,OAErB8wC,EAAM7hC,aACN6hC,EAAMnwC,MAAMX,OAAS8wC,EAAM7hC,aAAe,KAC1ClU,EAAKiE,SAAS8Z,kBAEX23B,EAAayI,gBACfpI,EAAMnQ,aAsBTmQ,EAAMxqC,iBAAiB,SAAU2yC,GACjCnI,EAAMxqC,iBAAiB,OAAQ2yC,GAE/BnI,EAAMxqC,iBAAiB,SAAS,WAE/BwqC,EAAMnwC,MAAMX,OAAS,GAErB,IAAIs5C,EAAYxI,EAAM7hC,aAEtB6hC,EAAMnwC,MAAMX,OAASs5C,EAAY,KAE9BA,GAAarqC,IACfA,EAAeqqC,EACfv+C,EAAKiE,SAAS8Z,sBAIhBg4B,EAAMxqC,iBAAiB,WAAW,SAASC,GAE1C,OAAOA,EAAEonB,SAER,KAAK,GACDpnB,EAAEgzC,UAAY9I,EAAa+I,kBAC7BP,IAED,MAED,KAAK,GACJzI,IACA,MAED,KAAK,IACU,UAAX4I,GAAmC,UAAXA,GAAuBtI,EAAM2I,kBACvDlzC,EAAEkvC,2BACFlvC,EAAEC,mBAGH,MAED,KAAK,IACU,UAAX4yC,GAAmC,UAAXA,GAAuBtI,EAAM2I,iBAAmB3I,EAAM53C,MAAM0C,UACtF2K,EAAEkvC,2BACFlvC,EAAEC,mBAEH,MAED,KAAK,GACL,KAAK,GACJD,EAAEC,sBAKFiqC,EAAanB,MACfD,EAAUyB,EAAOL,GAGXK,CACR,EFzGC4I,OGdc,SAAS3+C,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAAIsI,EAAYh+C,EAAK6D,WACrBw6C,EAAU3I,EAAa+C,oBAAsB,SAC7C1C,EAAQvwC,SAASC,cAAc,SAqB/B,GAnBAswC,EAAMpwC,aAAa,OAAQ,eAEG,IAApB+vC,EAAa5nC,KACtBioC,EAAMpwC,aAAa,MAAO+vC,EAAa5nC,UAGV,IAApB4nC,EAAa3nC,KACtBgoC,EAAMpwC,aAAa,MAAO+vC,EAAa3nC,UAGT,IAArB2nC,EAAakJ,MACtB7I,EAAMpwC,aAAa,OAAQ+vC,EAAakJ,MAIzC7I,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAK1Du4C,EAAM53C,MAAQ6/C,EAEd,IAAIa,EAAW,SAASrzC,GACvB0yC,KAoBD,SAASA,IACR,IAAI//C,EAAQ43C,EAAM53C,MAEduP,MAAMvP,IAAmB,KAATA,IACnBA,EAAQu4B,OAAOv4B,IAGbA,IAAU6/C,EACTxI,EAAQr3C,KACV6/C,EAAY7/C,GAGbs3C,IAmCF,OAhEAF,GAAW,WACY,SAAnBv1C,EAAKqE,YAEP0xC,EAAM5pB,oBAAoB,OAAQ0yB,GAElC9I,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,OAGrB8wC,EAAMxqC,iBAAiB,OAAQszC,GAE5BnJ,EAAayI,gBACfpI,EAAMnQ,aAsBTmQ,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1C,OAAOA,EAAEonB,SACR,KAAK,GAEJsrB,IACA,MAED,KAAK,GACJzI,IACA,MAED,KAAK,GACL,KAAK,GACU,UAAX4I,IACF7yC,EAAEkvC,2BACFlvC,EAAEC,mBAEH,MAED,KAAK,GACL,KAAK,GACJD,EAAEC,sBAKFiqC,EAAanB,MACfD,EAAUyB,EAAOL,GAGXK,CACR,EH3FC7Q,MIjBc,SAASllC,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAAIsI,EAAYh+C,EAAK6D,WACrBkyC,EAAQvwC,SAASC,cAAc,SAqB/B,GAnBAswC,EAAMpwC,aAAa,OAAQ,cAEI,IAApB+vC,EAAa5nC,KACvBioC,EAAMpwC,aAAa,MAAO+vC,EAAa5nC,UAGT,IAApB4nC,EAAa3nC,KACvBgoC,EAAMpwC,aAAa,MAAO+vC,EAAa3nC,UAGR,IAArB2nC,EAAakJ,MACvB7I,EAAMpwC,aAAa,OAAQ+vC,EAAakJ,MAIzC7I,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAc1D,SAAS0gD,IACR,IAAI//C,EAAQ43C,EAAM53C,MAEduP,MAAMvP,IAAmB,KAATA,IACnBA,EAAQu4B,OAAOv4B,IAGbA,GAAS6/C,EACRxI,EAAQr3C,KACV6/C,EAAY7/C,GAGbs3C,IAuBF,OA5CAM,EAAM53C,MAAQ6/C,EAEdzI,GAAW,WACY,SAAnBv1C,EAAKqE,YACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,WAqBvB8wC,EAAMxqC,iBAAiB,QAAQ,SAASC,GACvC0yC,OAIDnI,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1C,OAAOA,EAAEonB,SACR,KAAK,GAEJsrB,IACA,MAED,KAAK,GACJzI,QAKIM,CACR,EJ7DC+I,KKlBc,SAAS9+C,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAAIqJ,EAAcrJ,EAAa/K,OAC/B0T,EAAU3I,EAAa+C,oBAAsB,SAC7CuG,EAAKD,EAAe/uC,OAAOivC,UAAYC,MAAMD,SAAY,KAGrDjB,EAAYh+C,EAAK6D,WACrBkyC,EAAQvwC,SAASC,cAAc,SAE/B,SAAS05C,EAAYhhD,GAWpB,OARG6gD,EAAGI,WAAWjhD,GACFA,EACU,QAAhB4gD,EACMC,EAAGK,QAAQlY,OAAOhpC,IAElB6gD,EAAGM,WAAWnY,OAAOhpC,GAAQ4gD,IAGzBQ,SAAS,cAgB7B,GAbAxJ,EAAM92C,KAAO,OACb82C,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAa5nC,KACfioC,EAAMpwC,aAAa,MAAOo5C,EAAcI,EAAYzJ,EAAa5nC,KAAO4nC,EAAa5nC,KAGnF4nC,EAAa3nC,KACfgoC,EAAMpwC,aAAa,MAAOo5C,EAAcI,EAAYzJ,EAAa3nC,KAAO2nC,EAAa3nC,KAGnF2nC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IA4B1D,SAAS0gD,IACR,IACAsB,EADIrhD,EAAQ43C,EAAM53C,MAGlB,GAAI,MAAC6/C,GAAqE,KAAV7/C,GAAiBA,IAAU6/C,EAAU,CAEpG,GAAG7/C,GAAS4gD,EAGX,OAFAS,EAAUR,EAAGM,WAAWnY,OAAOhpC,GAAQ,cAEhC4gD,GACN,KAAK,EACJ5gD,EAAQqhD,EACR,MAED,IAAK,MACJrhD,EAAQqhD,EAAQC,QAChB,MAED,QACCthD,EAAQqhD,EAAQD,SAASR,GAIzBvJ,EAAQr3C,KACV6/C,EAAYjI,EAAM53C,YAGnBs3C,IAsCF,OAxFAuI,OAAiC,IAAdA,EAA4BA,EAAY,GAExDe,IACCC,EACFhB,EAAYmB,EAAYnB,GAExBl8C,QAAQ0N,MAAM,yEAIhBumC,EAAM53C,MAAQ6/C,EAEdzI,GAAW,WACY,SAAnBv1C,EAAKqE,YACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,OAElBywC,EAAayI,gBACfpI,EAAMnQ,aAqCTmQ,EAAMxqC,iBAAiB,QAAQ,SAASC,IACnCA,EAAEk0C,eAAiBl0C,EAAEm0C,aAAen0C,EAAEo0C,yBAA2B7J,IACpEmI,OAKFnI,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1C,OAAOA,EAAEonB,SAER,KAAK,GACJsrB,IACA,MAED,KAAK,GACJzI,IACA,MAED,KAAK,GACL,KAAK,GACJjqC,EAAEC,kBACF,MAED,KAAK,GACL,KAAK,GACU,UAAX4yC,IACF7yC,EAAEkvC,2BACFlvC,EAAEC,uBAMCsqC,CACR,ELrHC8J,KMnBc,SAAS7/C,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAGAoK,EAHIf,EAAcrJ,EAAa/K,OAC/B0T,EAAU3I,EAAa+C,oBAAsB,SAC7CuG,EAAKD,EAAe/uC,OAAOivC,UAAYC,MAAMD,SAAY,KAIrDjB,EAAYh+C,EAAK6D,WACrBkyC,EAAQvwC,SAASC,cAAc,SAO/B,GALAswC,EAAM92C,KAAO,OACb82C,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAqC1D,SAAS0gD,IACR,IACA6B,EADI5hD,EAAQ43C,EAAM53C,MAGlB,GAAI,MAAC6/C,GAAqE,KAAV7/C,GAAiBA,IAAU6/C,EAAU,CAEpG,GAAG7/C,GAAS4gD,EAGX,OAFAgB,EAAUf,EAAGM,WAAWnY,OAAOhpC,GAAQ,SAEhC4gD,GACN,KAAK,EACJ5gD,EAAQ4hD,EACR,MAED,IAAK,MACJ5hD,EAAQ4hD,EAAQN,QAChB,MAED,QACCthD,EAAQ4hD,EAAQR,SAASR,GAIzBvJ,EAAQr3C,KACV6/C,EAAYjI,EAAM53C,YAGnBs3C,IAsCF,OAjGAuI,OAAiC,IAAdA,EAA4BA,EAAY,GAExDe,IACCC,GAEDc,EADEd,EAAGI,WAAWpB,GACFA,EACU,QAAhBe,EACMC,EAAGK,QAAQlY,OAAO6W,IAElBgB,EAAGM,WAAWnY,OAAO6W,GAAYe,GAGhDf,EAAY8B,EAAYP,SAAS,UAGjCz9C,QAAQ0N,MAAM,yEAIhBumC,EAAM53C,MAAQ6/C,EAEdzI,GAAW,WACW,QAAlBv1C,EAAKqE,YACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,OAElBywC,EAAayI,gBACfpI,EAAMnQ,aAqCTmQ,EAAMxqC,iBAAiB,QAAQ,SAASC,IACnCA,EAAEk0C,eAAiBl0C,EAAEm0C,aAAen0C,EAAEo0C,yBAA2B7J,IACpEmI,OAKFnI,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1C,OAAOA,EAAEonB,SAER,KAAK,GACJsrB,IACA,MAED,KAAK,GACJzI,IACA,MAED,KAAK,GACL,KAAK,GACJjqC,EAAEC,kBACF,MAED,KAAK,GACL,KAAK,GACU,UAAX4yC,IACF7yC,EAAEkvC,2BACFlvC,EAAEC,uBAMCsqC,CACR,ENxGCiK,SOpBc,SAAShgD,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAGAoK,EAHIf,EAAcrJ,EAAa/K,OAC/B0T,EAAU3I,EAAa+C,oBAAsB,SAC7CuG,EAAKD,EAAe/uC,OAAOivC,UAAYC,MAAMD,SAAY,KAIrDjB,EAAYh+C,EAAK6D,WACrBkyC,EAAQvwC,SAASC,cAAc,SAO/B,GALAswC,EAAM92C,KAAO,iBACb82C,EAAMnwC,MAAMoyC,QAAU,MACtBjC,EAAMnwC,MAAMlD,MAAQ,OACpBqzC,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAoC1D,SAAS0gD,IACR,IACA+B,EADI9hD,EAAQ43C,EAAM53C,MAGlB,GAAI,MAAC6/C,GAAqE,KAAV7/C,GAAiBA,IAAU6/C,EAAU,CAEpG,GAAG7/C,GAAS4gD,EAGX,OAFAkB,EAAcjB,EAAGK,QAAQlY,OAAOhpC,IAEzB4gD,GACN,KAAK,EACJ5gD,EAAQ8hD,EACR,MAED,IAAK,MACJ9hD,EAAQ8hD,EAAYR,QACpB,MAED,QACCthD,EAAQ8hD,EAAYV,SAASR,GAI7BvJ,EAAQr3C,KACV6/C,EAAYjI,EAAM53C,YAGnBs3C,IAsCF,OAhGAuI,OAAiC,IAAdA,EAA4BA,EAAY,GAExDe,IACCC,GAEDc,EADEd,EAAGI,WAAWpB,GACFA,EACU,QAAhBe,EACMC,EAAGK,QAAQlY,OAAO6W,IAElBgB,EAAGM,WAAWnY,OAAO6W,GAAYe,GAGhDf,EAAY8B,EAAYP,SAAS,cAAiB,IAAMO,EAAYP,SAAS,UAE7Ez9C,QAAQ0N,MAAM,yEAIhBumC,EAAM53C,MAAQ6/C,EAEdzI,GAAW,WACY,SAAnBv1C,EAAKqE,YACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,IAC5BzB,EAAMnwC,MAAMX,OAAS,OAElBywC,EAAayI,gBACfpI,EAAMnQ,aAqCTmQ,EAAMxqC,iBAAiB,QAAQ,SAASC,IACnCA,EAAEk0C,eAAiBl0C,EAAEm0C,aAAen0C,EAAEo0C,yBAA2B7J,IACpEmI,OAKFnI,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1C,OAAOA,EAAEonB,SAER,KAAK,GACJsrB,IACA,MAED,KAAK,GACJzI,IACA,MAED,KAAK,GACL,KAAK,GACJjqC,EAAEC,kBACF,MAED,KAAK,GACL,KAAK,GACU,UAAX4yC,IACF7yC,EAAEkvC,2BACFlvC,EAAEC,uBAMCsqC,CACR,EPtGCnQ,OQpBc,SAAS5lC,EAAMu1C,EAAYC,EAASC,EAAQC,GAM1D,OAJAj6C,KAAKmD,eAAe,yEAET,IAAIshD,EAAKzkD,KAAMuE,EAAMu1C,EAAYC,EAASC,EAAQC,GAEjDK,KACb,ERcCvlC,KSrBc,SAASxQ,EAAMu1C,EAAYC,EAASC,EAAQC,GAG1D,OAFW,IAAIwK,EAAKzkD,KAAMuE,EAAMu1C,EAAYC,EAASC,EAAQC,GAEjDK,KACb,ETkBCmC,aUtBc,SAASl4C,EAAMu1C,EAAYC,EAASC,EAAQC,GAQ1D,OANAj6C,KAAKmD,eAAe,mHAEpB82C,EAAawC,cAAe,EAEjB,IAAIgI,EAAKzkD,KAAMuE,EAAMu1C,EAAYC,EAASC,EAAQC,GAEjDK,KACb,EVcCoK,KWxBc,SAASngD,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAAI0K,EAAO3kD,KACXsJ,EAAU/E,EAAKP,aACftB,EAAQ6B,EAAK6D,WACbw8C,EAAWt7C,EAAQu7C,qBAAqB,OAAOz/C,QAAU,EACzD0/C,EAAOx7C,EAAQu7C,qBAAqB,OAAO,GAAKv7C,EAAQu7C,qBAAqB,OAAO,GAAGjI,aAAa,SAAW,GAC/GmI,EAAQ,GACRC,EAAcj7C,SAASC,cAAc,OACrC06C,EAAO36C,SAASk7C,gBAAgB,6BAA8B,OAI9D,SAASC,EAAW/5C,GACnB45C,EAAMzgD,SAAQ,SAASogD,EAAMz2C,GACzBA,EAAI9C,GACmB,MAAtBw5C,EAAK5kD,MAAMiuB,QACb02B,EAAKx6C,aAAa,QAAS,yBAE3Bw6C,EAAK15C,UAAU6mB,QAAQ,0BAA2B,yBAGnD6yB,EAAKt5C,UAAY,4SAEQ,MAAtBu5C,EAAK5kD,MAAMiuB,QACb02B,EAAKx6C,aAAa,QAAS,2BAE3Bw6C,EAAK15C,UAAU6mB,QAAQ,wBAAyB,2BAGjD6yB,EAAKt5C,UAAY,8SAMpB,SAAS+5C,EAAUl3C,GAElB,IAAIm3C,EAAcr7C,SAASC,cAAc,QACrCq7C,EAAWX,EAAKvS,WAAU,GAE9B4S,EAAMvgD,KAAK6gD,GAEXD,EAAWt1C,iBAAiB,cAAc,SAASC,GAClDA,EAAEC,kBACFD,EAAEkvC,2BACFiG,EAAWj3C,MAGZm3C,EAAWt1C,iBAAiB,aAAa,SAASC,GACjDA,EAAEC,kBACFD,EAAEkvC,8BAGHmG,EAAWt1C,iBAAiB,SAAS,SAASC,GAC7CA,EAAEC,kBACFD,EAAEkvC,2BACFlF,EAAQ9rC,GACR3E,EAAQg5C,UAGT8C,EAAW55C,YAAY65C,GACvBL,EAAYx5C,YAAY45C,GAKzB,SAASE,EAAYn6C,GACpBzI,EAAQyI,EACR+5C,EAAW/5C,GAoBZ,GAhBA7B,EAAQa,MAAM04C,WAAa,SAC3Bv5C,EAAQa,MAAMo7C,SAAW,SACzBj8C,EAAQa,MAAMq7C,aAAe,WAG7BR,EAAY76C,MAAMqG,cAAgB,SAClCw0C,EAAY76C,MAAME,QAAU,eAC5B26C,EAAY76C,MAAMoyC,QAAU,MAG5BmI,EAAKx6C,aAAa,QAAS46C,GAC3BJ,EAAKx6C,aAAa,SAAU46C,GAC5BJ,EAAKx6C,aAAa,UAAW,eAC7Bw6C,EAAKx6C,aAAa,YAAa,YAC/Bw6C,EAAKv6C,MAAMoyC,QAAU,QAElBtC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChB09B,EAAY96C,aAAanI,EAAKijD,EAAYpI,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEnGijD,EAAY96C,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAMhE,IAAI,IAAIkM,EAAE,EAAEA,GAAI22C,EAAS32C,IACxBk3C,EAAUl3C,GA0CX,OAnCAi3C,EAHAxiD,EAAQwP,KAAKI,IAAI1C,SAASlN,GAAQkiD,IAKlCI,EAAYl1C,iBAAiB,aAAa,SAASC,GAClDm1C,EAAW,MAGZF,EAAYl1C,iBAAiB,SAAS,SAASC,GAC9CgqC,EAAQ,MAGTzwC,EAAQwG,iBAAiB,QAAQ,SAASC,GACzCiqC,OAID1wC,EAAQwG,iBAAiB,WAAW,SAASC,GAC5C,OAAOA,EAAEonB,SACR,KAAK,GACJmuB,EAAY5iD,EAAQ,GACpB,MAED,KAAK,GACJ4iD,EAAY5iD,EAAQ,GACpB,MAED,KAAK,GACJq3C,EAAQr3C,GACR,MAED,KAAK,GACJs3C,QAKIgL,CACR,EXvHCS,SYzBc,SAASlhD,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAOAyL,EAAWC,EAPPr8C,EAAU/E,EAAKP,aACnBqO,OAAkC,IAArB4nC,EAAa5nC,IAAwB/I,EAAQu7C,qBAAqB,OAAO,IAAMv7C,EAAQu7C,qBAAqB,OAAO,GAAGjI,aAAa,QAAW,IAAO3C,EAAa5nC,IAC/KC,OAAkC,IAArB2nC,EAAa3nC,IAAwBhJ,EAAQu7C,qBAAqB,OAAO,IAAMv7C,EAAQu7C,qBAAqB,OAAO,GAAGjI,aAAa,QAAW,EAAK3C,EAAa3nC,IAC7KszC,GAAWvzC,EAAMC,GAAO,IACxB5P,EAAQ6B,EAAK6D,YAAc,EAC3BrE,EAASgG,SAASC,cAAc,OAChC67C,EAAM97C,SAASC,cAAc,OAI7B,SAAS87C,IACR,IAAI37C,EAAQoK,OAAOmtB,iBAAiBp4B,EAAS,MAEzCy8C,EAAWH,EAAU1zC,KAAK8zC,MAAMH,EAAIz5C,cAAgB9C,EAAQ8I,YAAcxC,SAASzF,EAAMioC,iBAAiB,iBAAmBxiC,SAASzF,EAAMioC,iBAAiB,mBAAmB,MAAS9/B,EAC7LynC,EAAQgM,GACRz8C,EAAQY,aAAa,gBAAiB67C,GACtCz8C,EAAQY,aAAa,aAAcxH,GAuBpC,GAnBAqB,EAAOoG,MAAMzE,SAAW,WACxB3B,EAAOoG,MAAMS,MAAQ,IACrB7G,EAAOoG,MAAMI,IAAM,IACnBxG,EAAOoG,MAAMK,OAAS,IACtBzG,EAAOoG,MAAMlD,MAAQ,MACrBlD,EAAOiH,UAAUC,IAAI,6BAGrB46C,EAAI17C,MAAME,QAAU,eACpBw7C,EAAI17C,MAAMzE,SAAW,WAKrBmgD,EAAI17C,MAAMX,OAAS,OACnBq8C,EAAI17C,MAAM87C,gBAAkB,UAC5BJ,EAAI17C,MAAMzC,SAAW,OACrBm+C,EAAI17C,MAAM1C,SAAW,KAElBwyC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBu+B,EAAI37C,aAAanI,EAAK8jD,EAAIjJ,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEnF8jD,EAAI37C,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IA8ExD,OAxEAuH,EAAQa,MAAMoyC,QAAU,UAGxB75C,EAAQwP,KAAKI,IAAIm5B,WAAW/oC,GAAQ2P,GACpC3P,EAAQwP,KAAKG,IAAIo5B,WAAW/oC,GAAQ4P,GAGpC5P,EAAQwP,KAAK8zC,OAAOtjD,EAAQ4P,GAAOszC,GAEnCC,EAAI17C,MAAMlD,MAAQvE,EAAQ,IAE1B4G,EAAQY,aAAa,gBAAiBoI,GACtChJ,EAAQY,aAAa,gBAAiBmI,GAEtCwzC,EAAIr6C,YAAYzH,GAEhBA,EAAO+L,iBAAiB,aAAa,SAASC,GAC7C21C,EAAY31C,EAAEm2C,QACdP,EAAiBE,EAAIz5C,eAGtBrI,EAAO+L,iBAAiB,aAAa,WACpC/L,EAAOoG,MAAMuyC,OAAS,eAGvBpzC,EAAQwG,iBAAiB,aAAa,SAASC,GAC3C21C,IACFG,EAAI17C,MAAMlD,MAAS0+C,EAAiB51C,EAAEm2C,QAAUR,EAAa,SAI/Dp8C,EAAQwG,iBAAiB,WAAW,SAASC,GACzC21C,IACF31C,EAAEC,kBACFD,EAAEkvC,2BAEFyG,GAAY,EACZC,GAAiB,EAEjBG,QAKFx8C,EAAQwG,iBAAiB,WAAW,SAASC,GAC5C,OAAOA,EAAEonB,SACR,KAAK,GACJpnB,EAAEy4B,iBACFqd,EAAI17C,MAAMlD,MAAS4+C,EAAIzzC,YAAc9I,EAAQ8I,YAAY,IAAO,KAChE,MAED,KAAK,GACJrC,EAAEy4B,iBACFqd,EAAI17C,MAAMlD,MAAS4+C,EAAIzzC,YAAc9I,EAAQ8I,YAAY,IAAO,KAChE,MAED,KAAK,EACL,KAAK,GACJ0zC,IACA,MAED,KAAK,GACJ9L,QAMH1wC,EAAQwG,iBAAiB,QAAQ,WAChCkqC,OAGM6L,CACR,EZnGCM,Ua1Bc,SAAS5hD,EAAMu1C,EAAYC,EAASC,EAAQC,GAC1D,IAAIv3C,EAAQ6B,EAAK6D,WACjBkyC,EAAQvwC,SAASC,cAAc,SAC/Bo8C,EAAWnM,EAAamM,SACxBC,OAA2D,IAApCpM,EAAaqM,mBAAqC,KAAOrM,EAAaqM,mBAC7FC,GAAgB,EAChBC,EAAez3C,OAAOC,KAAKirC,GAAcn+B,SAAS,aAClD2qC,EAAgB13C,OAAOC,KAAKirC,GAAcn+B,SAAS,cAMnD,GAJAw+B,EAAMpwC,aAAa,OAAQ,YAC3BowC,EAAMnwC,MAAMu8C,UAAY,MACxBpM,EAAMnwC,MAAMqyC,UAAY,aAErBvC,EAAaoC,mBAA8D,iBAAlCpC,EAAaoC,kBACxD,IAAK,IAAIt6C,KAAOk4C,EAAaoC,kBACR,KAAjBt6C,EAAI4iC,OAAO,IACb5iC,EAAMA,EAAIulB,MAAM,GAChBgzB,EAAMpwC,aAAanI,EAAKu4C,EAAMsC,aAAa76C,GAAOk4C,EAAaoC,kBAAkB,IAAMt6C,KAEvFu4C,EAAMpwC,aAAanI,EAAKk4C,EAAaoC,kBAAkBt6C,IAsB1D,SAAS+G,EAASw5C,GACjB,IAAIqE,EAAerM,EAAMsM,QAQzB,OANGJ,GAAgBG,EAClBA,EAAe1M,EAAa4M,UACpBJ,IAAkBE,IAC1BA,EAAe1M,EAAa6M,YAG1BV,EACE9D,EAWAiE,EACKF,EAEAM,EAbLrM,EAAMsM,UAAYL,GACpBjM,EAAMsM,SAAU,EAChBtM,EAAMyM,eAAgB,EACtBR,GAAgB,EACTF,IAEPE,GAAgB,EACTI,GAUFA,EAuBT,OApEArM,EAAM53C,MAAQA,GAEX0jD,QAA8B,IAAV1jD,GAAyBA,IAAU2jD,GAA2B,KAAV3jD,IAC1E6jD,GAAgB,EAChBjM,EAAMyM,eAAgB,GAGE,WAAtB/mD,KAAKD,MAAMiuB,SAA8C,UAAtBhuB,KAAKD,MAAMiuB,SAChD8rB,GAAW,WACY,SAAnBv1C,EAAKqE,WACP0xC,EAAMrqC,MAAM,CAAC8rC,eAAe,OAK/BzB,EAAMsM,QAAUJ,EAAe9jD,IAAUu3C,EAAa4M,WAAuB,IAAVnkD,GAA4B,SAAVA,GAA8B,SAAVA,GAA8B,IAAVA,EAmC7H43C,EAAMxqC,iBAAiB,UAAU,SAASC,GACzCgqC,EAAQjxC,QAGTwxC,EAAMxqC,iBAAiB,QAAQ,SAASC,GACvCgqC,EAAQjxC,GAAS,OAIlBwxC,EAAMxqC,iBAAiB,WAAW,SAASC,GAC1B,IAAbA,EAAEonB,SACJ4iB,EAAQjxC,KAEO,IAAbiH,EAAEonB,SACJ6iB,OAIKM,CACR,GCzFA,MAAMV,UAAatiB,EAElBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK8qC,aAAc,EACnB9qC,KAAKgnD,YAAa,EAClBhnD,KAAKinD,gBAAiB,EACtBjnD,KAAKknD,aAAc,EACnBlnD,KAAKmnD,YAAc,GAEnBnnD,KAAKonD,QAAUxN,EAAKwN,QAEpBpnD,KAAKy3B,qBAAqB,YAC1Bz3B,KAAKy3B,qBAAqB,UAC1Bz3B,KAAKy3B,qBAAqB,gBAE1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,cAC1Bz3B,KAAKy3B,qBAAqB,qBAE1Bz3B,KAAK03B,sBAAsB,iBAAkB13B,KAAKqnD,eAAevmD,KAAKd,OACtEA,KAAK03B,sBAAsB,kBAAmB13B,KAAKsnD,gBAAgBxmD,KAAKd,OACxEA,KAAK03B,sBAAsB,eAAgB13B,KAAKunD,aAAazmD,KAAKd,OAClEA,KAAK03B,sBAAsB,eAAgB13B,KAAKwnD,aAAa1mD,KAAKd,OAClEA,KAAK03B,sBAAsB,eAAgB13B,KAAKynD,aAAa3mD,KAAKd,OAClEA,KAAK03B,sBAAsB,gBAAiB13B,KAAK0nD,cAAc5mD,KAAKd,OACpEA,KAAK03B,sBAAsB,aAAc13B,KAAK2nD,WAAW7mD,KAAKd,OAC9DA,KAAK03B,sBAAsB,eAAgB13B,KAAK4nD,aAAa9mD,KAAKd,OAElEA,KAAK63B,0BAA0B,OAAQ,WAAY73B,KAAK6nD,aAAa/mD,KAAKd,OAC1EA,KAAK63B,0BAA0B,OAAQ,cAAe73B,KAAK8nD,YAAYhnD,KAAKd,OAC5EA,KAAK63B,0BAA0B,OAAQ,OAAQ73B,KAAK+nD,SAASjnD,KAAKd,OAClEA,KAAK63B,0BAA0B,OAAQ,aAAc73B,KAAKgoD,eAAelnD,KAAKd,OAE9EA,KAAK63B,0BAA0B,OAAQ,eAAgB73B,KAAKunD,aAAazmD,KAAKd,OAC9EA,KAAK63B,0BAA0B,OAAQ,eAAgB73B,KAAKwnD,aAAa1mD,KAAKd,OAC9EA,KAAK63B,0BAA0B,OAAQ,eAAgB73B,KAAKynD,aAAa3mD,KAAKd,OAC9EA,KAAK63B,0BAA0B,OAAQ,gBAAiB73B,KAAK0nD,cAAc5mD,KAAKd,OAChFA,KAAK63B,0BAA0B,OAAQ,aAAc73B,KAAK2nD,WAAW7mD,KAAKd,OAC1EA,KAAK63B,0BAA0B,OAAQ,eAAgB73B,KAAK4nD,aAAa9mD,KAAKd,OAG/EyW,aACCzW,KAAK2B,UAAU,YAAa3B,KAAKioD,WAAWnnD,KAAKd,OACjDA,KAAK2B,UAAU,cAAe3B,KAAK8nD,YAAYhnD,KAAKd,OACpDA,KAAK2B,UAAU,qBAAsB3B,KAAKkoD,gBAAgBpnD,KAAKd,OAC/DA,KAAK2B,UAAU,gBAAiB3B,KAAKwsC,sBAAsB1rC,KAAKd,OAChEA,KAAK2B,UAAU,gBAAiB3B,KAAKmoD,kBAAkBrnD,KAAKd,OAC5DA,KAAK2B,UAAU,eAAgB3B,KAAKooD,eAAetnD,KAAKd,OACxDA,KAAK2B,UAAU,aAAc3B,KAAKqoD,iBAAiBvnD,KAAKd,OACxDA,KAAK2B,UAAU,kBAAmB3B,KAAKsoD,WAAWxnD,KAAKd,OAEvDA,KAAK2B,UAAU,sBAAuB3B,KAAKunD,aAAazmD,KAAKd,UAAMO,IACnEP,KAAK2B,UAAU,sBAAuB3B,KAAKuoD,uBAAuBznD,KAAKd,OACvEA,KAAK2B,UAAU,sBAAuB3B,KAAKynD,aAAa3mD,KAAKd,UAAMO,IACnEP,KAAK2B,UAAU,uBAAwB3B,KAAK0nD,cAAc5mD,KAAKd,UAAMO,IACrEP,KAAK2B,UAAU,oBAAqB3B,KAAK2nD,WAAW7mD,KAAKd,UAAMO,IAC/DP,KAAK2B,UAAU,sBAAuB3B,KAAK4nD,aAAa9mD,KAAKd,UAAMO,IAQpEgoD,uBAAuBx4C,GACtB,IAAIxL,EAAOvE,KAAK8qC,YAChB0d,EAASxoD,KAAKwC,QAAQ,gBAEnB+B,IACEvE,KAAKwnD,aAAajjD,EAAMwL,IACxBy4C,IACFjkD,EAAKP,aAAasH,WAAWg3C,QAG5BkG,GADa,IAAXA,EACOxoD,KAAKD,MAAMkrB,OAAO,IAEP,mBAAVu9B,EACAxoD,KAAKD,MAAMkrB,OAAOu9B,EAAOjkD,EAAKkE,IAAIhE,iBAElCzE,KAAKD,MAAMkrB,OAAOlc,OAAOiF,OAAO,GAAIw0C,KAIxCt0C,MAAK,KACXue,YAAW,KACVluB,EAAKE,eAAe+iD,cAAc,GACjC,MAWPK,aAAatjD,GACZ,QAAUA,EAAK9D,QAAQoqC,MAAQtmC,EAAK9D,QAAQoqC,KAAK4d,OAGlDT,eAAezjD,GACXA,IAASvE,KAAK8qC,YAChB9qC,KAAKD,MAAMU,QAAQoqC,KAAKyd,aAExBjiD,QAAQC,KAAK,kEAQf4hD,gBAAgB3jD,GACZvE,KAAK0oD,UAAUnkD,GACjBA,EAAKP,aAAagH,UAAUC,IAAI,sBAGhC1G,EAAKP,aAAagH,UAAUgN,OAAO,sBAIrCsvC,gBAAgBjjD,GACXA,IACHA,EAAQrE,KAAKD,MAAMU,QAAQoqC,KAAKwc,kBAG7BlyC,MAAMC,QAAQ/Q,KACjBA,EAAQ,CAACA,IAGVA,EAAMC,SAASC,IACdvE,KAAKD,MAAMU,QAAQoqC,KAAKid,YAAYvjD,EAAKiB,WAAW,IAItD+hD,aAAahjD,EAAOvE,KAAK8qC,YAAa/6B,GACrC,IAAI44C,EAAUhmC,EAEd,GAAGpe,EAAK,CAQP,GANGwL,GACFA,EAAEy4B,iBAGHmgB,EAAW3oD,KAAKynD,eAGf,OAAO,EAIP,IAFA9kC,EAAU3iB,KAAKD,MAAMgM,WAAWqY,eAAe7f,EAAKkE,KAAK,MAGxDkgD,EAAW3oD,KAAK4oD,qBAAqBjmC,EAASA,EAAQte,MAAMe,SAI3D,OADAujD,EAASlkD,eAAeomC,QACjB,EAMX,OAAO,EAGR2c,aAAajjD,EAAOvE,KAAK8qC,YAAa/6B,GACrC,IAAI44C,EAAUlmC,EAEd,GAAGle,EAAK,CAQP,GANGwL,GACFA,EAAEy4B,iBAGHmgB,EAAW3oD,KAAK0nD,gBAGf,OAAO,EAIP,IAFAjlC,EAAUziB,KAAKD,MAAMgM,WAAWoY,eAAe5f,EAAKkE,KAAK,MAGxDkgD,EAAW3oD,KAAK6oD,qBAAqBpmC,GAAU,IAI9C,OADAkmC,EAASlkD,eAAeomC,QACjB,EAMX,OAAO,EAGR4c,aAAaljD,EAAOvE,KAAK8qC,YAAa/6B,GACrC,IAAI+B,EAAO62C,EAEX,SAAGpkD,IAECwL,GACFA,EAAEy4B,iBAGH12B,EAAQvN,EAAK4I,WACbw7C,EAAW3oD,KAAK4oD,qBAAqBrkD,EAAKkE,IAAKqJ,OAG9C62C,EAASlkD,eAAeomC,QACjB,GAOV6c,cAAcnjD,EAAOvE,KAAK8qC,YAAa/6B,GACtC,IAAI+B,EAAO62C,EAEX,SAAGpkD,IAECwL,GACFA,EAAEy4B,iBAGH12B,EAAQvN,EAAK4I,WACbw7C,EAAW3oD,KAAK6oD,qBAAqBtkD,EAAKkE,IAAKqJ,OAG9C62C,EAASlkD,eAAeomC,QACjB,GAOV8c,WAAWpjD,EAAOvE,KAAK8qC,YAAa/6B,GACnC,IAAI+B,EAAO2Q,EAEX,SAAGle,IAECwL,GACFA,EAAEy4B,iBAGH12B,EAAQvN,EAAK4I,WACbsV,EAAUziB,KAAKD,MAAMgM,WAAWqY,eAAe7f,EAAKkE,KAAK,OAGxDga,EAAQpe,MAAMyN,GAAOrN,eAAeomC,QAC7B,GAOV+c,aAAarjD,EAAOvE,KAAK8qC,YAAa/6B,GACrC,IAAI+B,EAAO2Q,EAEX,SAAGle,IAECwL,GACFA,EAAEy4B,iBAGH12B,EAAQvN,EAAK4I,WACbsV,EAAUziB,KAAKD,MAAMgM,WAAWoY,eAAe5f,EAAKkE,KAAK,OAGxDga,EAAQpe,MAAMyN,GAAOrN,eAAeomC,QAC7B,GAOVge,qBAAqBpgD,EAAKqJ,GACzB,IAAI62C,GAAW,EAEf,GAAG72C,EAAQrJ,EAAIpE,MAAMe,OAAO,EAC3B,IAAI,IAAI6I,EAAI6D,EAAM,EAAG7D,EAAIxF,EAAIpE,MAAMe,OAAQ6I,IAAI,CAC9C,IAAI1J,EAAOkE,EAAIpE,MAAM4J,GAErB,GAAG1J,EAAKjB,OAAO7C,QAAQoqC,MAAQz2B,EAAQmE,UAAUhU,EAAKP,cAAc,CAGnE,GAFgBhE,KAAK0oD,UAAUnkD,GAElB,CACZokD,EAAWpkD,EACX,QAMJ,OAAOokD,EAGRC,qBAAqBngD,EAAKqJ,GACzB,IAAIg3C,GAAW,EAEf,GAAGh3C,EAAQ,EACV,IAAI,IAAI7D,EAAI6D,EAAM,EAAG7D,GAAK,EAAGA,IAAI,CAChC,IAAI1J,EAAOkE,EAAIpE,MAAM4J,GAErB,GAAG1J,EAAKjB,OAAO7C,QAAQoqC,MAAQz2B,EAAQmE,UAAUhU,EAAKP,cAAc,CAGnE,GAFgBhE,KAAK0oD,UAAUnkD,GAElB,CACZukD,EAAWvkD,EACX,QAMJ,OAAOukD,EAORtc,sBAAsBlpC,QACkB,IAA7BA,EAAOwH,WAAW+uC,QAC3B75C,KAAKg7B,iBAAiB13B,GAIxB6kD,kBAAkB7kD,GACdtD,KAAK8qC,aAAe9qC,KAAK8qC,YAAYxnC,SAAWA,GAClDtD,KAAKsoD,aAIPF,eAAe3/C,GACXzI,KAAK8qC,aAAe9qC,KAAK8qC,YAAYriC,MAAQA,GAC/CzI,KAAKsoD,aAIPD,iBAAiB5/C,GAChBA,EAAIrE,WAAWE,SAASC,IACpBA,EAAKjB,OAAO7C,QAAQoqC,MAAkD,mBAAnCtmC,EAAKjB,OAAO7C,QAAQoqC,KAAK9nC,OAC9D/C,KAAKkoD,gBAAgB3jD,MAMxBy2B,iBAAiB13B,GAChB,IAAImX,EAAS,CACZo/B,QAAO,EACP1R,SAAQ,EACRplC,MAAMO,EAAOwH,WAAWi+C,SACxBn3B,OAAOtuB,EAAOwH,WAAWmvC,cAAgB,IAI1C,cAAc32C,EAAOwH,WAAW+uC,QAC/B,IAAK,SACD75C,KAAKonD,QAAQ9jD,EAAOwH,WAAW+uC,QACjCp/B,EAAOo/B,OAAS75C,KAAKonD,QAAQ9jD,EAAOwH,WAAW+uC,QAE/CxzC,QAAQC,KAAK,wCAAyChD,EAAOwH,WAAW+uC,QAEzE,MAED,IAAK,WACJp/B,EAAOo/B,OAASv2C,EAAOwH,WAAW+uC,OAClC,MAED,IAAK,WAC4B,IAA7Bv2C,EAAOwH,WAAW+uC,SACsB,mBAAhCv2C,EAAOwH,WAAWqkC,UACxBnvC,KAAKonD,QAAQ9jD,EAAOwH,WAAWqkC,WACjC10B,EAAOo/B,OAAS75C,KAAKonD,QAAQ9jD,EAAOwH,WAAWqkC,WAE/C10B,EAAOo/B,OAAS75C,KAAKonD,QAAe,MAGrC/gD,QAAQC,KAAK,oEAAqEhD,EAAOwH,WAAWqkC,YAMrG10B,EAAOo/B,SACTv2C,EAAO7C,QAAQoqC,KAAOpwB,GAIxBuuC,iBACC,QAAOhpD,KAAK8qC,aAAc9qC,KAAK8qC,YAAYrmC,eAG5CwkD,YAAYjP,GACX,IACA6B,EADIt3C,EAAOvE,KAAK8qC,YAKhB,GAFA9qC,KAAKknD,aAAc,EAEhB3iD,EAAK,CASP,IARAvE,KAAK8qC,aAAc,EAEnB+Q,EAASt3C,EAAKP,aAEdhE,KAAKiC,SAAS,oBAAqBsC,EAAMy1C,GAEzC6B,EAAO7wC,UAAUgN,OAAO,qBAElB6jC,EAAOvwC,YAAYuwC,EAAOtwC,YAAYswC,EAAOvwC,YAEnD/G,EAAKkE,IAAIzE,aAAagH,UAAUgN,OAAO,qBAEvCzT,EAAKxE,MAAMuJ,QAAQ0B,UAAUgN,OAAO,sBAItCswC,aACC,GAAGtoD,KAAK8qC,YAAY,CACnB,IAAIvmC,EAAOvE,KAAK8qC,YACZrhC,EAAYzJ,KAAK8qC,YAAYrmC,eAEjCzE,KAAKipD,aAAY,GACjB1kD,EAAK0E,eAAe1E,EAAK6D,YACzB7D,EAAKkH,gBAE+B,YAAjClH,EAAKjB,OAAOwH,WAAW+uC,QAAwBt1C,EAAKjB,OAAOwH,WAAWjD,iBACxEtD,EAAKkE,IAAI6Z,iBAAgB,GAGvB/d,EAAKjB,OAAOwH,WAAWo+C,mBACzB3kD,EAAKjB,OAAOwH,WAAWo+C,kBAAkBp9C,KAAK9L,KAAKD,MAAO0J,GAG3DzJ,KAAKiC,SAAS,iBAAkBsC,GAChCvE,KAAKoC,iBAAiB,oBAAqBqH,IAK7Cw+C,WAAW1jD,GACV,GAAGA,EAAKjB,OAAO7C,QAAQoqC,KAAK,CAC3B,IAAI8Z,EAAO3kD,KACXsJ,EAAU/E,EAAKP,YAAW,GAE1BhE,KAAKkoD,gBAAgB3jD,GACrB+E,EAAQY,aAAa,WAAY,GAEjCZ,EAAQwG,iBAAiB,SAAS,SAASC,GACtCzG,EAAQ0B,UAAUm+C,SAAS,sBAC9B7/C,EAAQ2G,MAAM,CAAC8rC,eAAe,OAIhCzyC,EAAQwG,iBAAiB,aAAa,SAASC,GAC7B,IAAbA,EAAEq5C,OACLr5C,EAAEy4B,iBAEFmc,EAAKqC,YAAa,KAIpB19C,EAAQwG,iBAAiB,SAAS,SAASC,GACtC40C,EAAKsC,gBACRtC,EAAK9Z,KAAKtmC,EAAMwL,GAAG,OAMvBs5C,iBAAiB9kD,EAAMm7C,GACtB1/C,KAAKinD,gBAAiB,EAEjBvH,GAAgC,OAAvB1/C,KAAKD,MAAMiuB,SACxBzpB,EAAKP,aAAaiM,MAAM,CAAC8rC,eAAe,IAGzC/7C,KAAKinD,gBAAiB,EAGvBc,SAASxjD,EAAM+kD,GACdtpD,KAAKqpD,iBAAiB9kD,GACtBvE,KAAK6qC,KAAKtmC,GAAM,EAAO+kD,GAGxBC,kBAAkBhlD,GACjB,GAA4C,WAAzCvE,KAAKD,MAAMgM,WAAWyhB,gBAA6B,CACrD,IAAItG,EAAUlnB,KAAKD,MAAMgM,WAAWzC,QAAQoP,UAC5CyO,EAAannB,KAAKD,MAAMgM,WAAWzC,QAAQsH,aAAe5Q,KAAKD,MAAMgM,WAAWzC,QAAQoP,UACxFX,EAAQxT,EAAKkE,IAAIzE,aAEd+T,EAAMY,UAAYuO,EACpBlnB,KAAKD,MAAMgM,WAAWzC,QAAQoP,WAAcwO,EAAUnP,EAAMY,UAEzDZ,EAAMY,UAAYZ,EAAMjL,aAAgBqa,IAC1CnnB,KAAKD,MAAMgM,WAAWzC,QAAQoP,WAAcX,EAAMY,UAAYZ,EAAMjL,aAAeqa,GAIrF,IAAIqiC,EAAWxpD,KAAKD,MAAMgM,WAAWzC,QAAQ6P,WAC7CswC,EAAYzpD,KAAKD,MAAMgM,WAAWzC,QAAQ8I,YAAcpS,KAAKD,MAAMgM,WAAWzC,QAAQ6P,WACtF0iC,EAASt3C,EAAKP,aAEXhE,KAAKD,MAAM44B,UAAU,mBACvB6wB,GAAY55C,SAAS5P,KAAKD,MAAMU,QAAQyc,cAAcwsC,YAAc,GACpED,GAAa75C,SAAS5P,KAAKD,MAAMU,QAAQyc,cAAcysC,aAAe,IAG5B,YAAxC3pD,KAAKD,MAAMyC,QAAQsc,mBACrB0qC,GAAY55C,SAAS5P,KAAKD,MAAM6F,cAAciY,SAASvE,aACvDmwC,GAAa75C,SAAS5P,KAAKD,MAAM6F,cAAciY,SAASvE,cAGtDuiC,EAAO7oC,WAAaw2C,EACtBxpD,KAAKD,MAAMgM,WAAWzC,QAAQ6P,YAAeqwC,EAAW3N,EAAO7oC,WAE5D6oC,EAAO7oC,WAAa6oC,EAAOzvC,YAAeq9C,IAC5CzpD,KAAKD,MAAMgM,WAAWzC,QAAQ6P,YAAe0iC,EAAO7oC,WAAa6oC,EAAOzvC,YAAcq9C,IAM1Ff,UAAUnkD,GACT,IAAIxB,IAAQwB,EAAKjB,OAAO7C,QAAQoqC,KAEhC,GAAGtmC,EAAKjB,OAAO7C,QAAQoqC,KACtB,cAActmC,EAAKjB,OAAO7C,QAAQoqC,KAAK9nC,OACtC,IAAK,WACDwB,EAAKkE,IAAIiR,cACX3W,EAAQwB,EAAKjB,OAAO7C,QAAQoqC,KAAK9nC,MAAMwB,EAAKE,iBAE7C,MAED,IAAK,SACJ1B,IAAUwB,EAAKkE,IAAIvI,KAAKqE,EAAKjB,OAAO7C,QAAQoqC,KAAK9nC,OACjD,MAED,IAAK,UACJA,EAAQwB,EAAKjB,OAAO7C,QAAQoqC,KAAK9nC,MAKpC,OAAOA,EAGR8nC,KAAKtmC,EAAMwL,EAAGu5C,GACb,IAIAM,EAAYngD,EAAWmoB,EAJnB+yB,EAAO3kD,KAEXsjB,EAAW,aACXha,EAAU/E,EAAKP,aAKf,IAAGhE,KAAK8qC,YAAR,CAqDA,GAAIvmC,EAAKjB,OAAO7C,QAAQoqC,KAAK1C,QA2E5B,OAFAnoC,KAAKgnD,YAAa,EAClB19C,EAAQg5C,QACD,EApEP,GANGvyC,GACFA,EAAEC,kBAGShQ,KAAK0oD,UAAUnkD,IAEX+kD,EAAU,CA8BzB,GA5BA3E,EAAK2D,aAEL3D,EAAK7Z,YAAcvmC,EAEnBvE,KAAKupD,kBAAkBhlD,GAEvBkF,EAAYlF,EAAKE,eAEdzE,KAAKgnD,aACPhnD,KAAKgnD,YAAa,EAEfziD,EAAKjB,OAAOwH,WAAW++C,WACzBtlD,EAAKjB,OAAOwH,WAAW++C,UAAU/9C,KAAK9L,KAAKD,MAAOgQ,EAAGtG,IAIpDlF,EAAKjB,OAAOwH,WAAWg/C,aACzBvlD,EAAKjB,OAAOwH,WAAWg/C,YAAYh+C,KAAK9L,KAAKD,MAAO0J,GAGrDzJ,KAAKiC,SAAS,eAAgBsC,GAC9BvE,KAAKoC,iBAAiB,cAAeqH,GAErCmoB,EAAoD,mBAApCrtB,EAAKjB,OAAO7C,QAAQoqC,KAAKjZ,OAAwBrtB,EAAKjB,OAAO7C,QAAQoqC,KAAKjZ,OAAOnoB,GAAalF,EAAKjB,OAAO7C,QAAQoqC,KAAKjZ,OAEvIg4B,EAAarlD,EAAKjB,OAAO7C,QAAQoqC,KAAKgP,OAAO/tC,KAAK64C,EAAMl7C,GAtC1D,SAAoBuN,GACnBsM,EAAWtM,KA1CZ,SAAiBtU,GAChB,GAAGiiD,EAAK7Z,cAAgBvmC,EAAK,CAC5B,IAAIqmC,EAAQ+Z,EAAKziD,MAAM,eAAgB,CAACqC,EAAM7B,IAAQ,GAAM,GAE5D,OAAa,IAAVkoC,GAAwD,cAAtC+Z,EAAK5kD,MAAMyC,QAAQunD,gBACvCpF,EAAKsE,cAGD1kD,EAAK9D,QAAQoqC,OAChBtmC,EAAK9D,QAAQoqC,KAAO,IAGrBtmC,EAAK9D,QAAQoqC,KAAK4d,QAAS,GAEW,GAAnC9D,EAAKwC,YAAYl4C,QAAQ1K,IAC3BogD,EAAKwC,YAAY3iD,KAAKD,GAGvBA,EAAKuE,SAASpG,GAAO,IAEJ,IAAVkoC,IAEP+Z,EAAKuC,aAAc,EACnBvC,EAAK0E,iBAAiB9kD,GAAM,GAC5B+e,KACO,OAQV,WACIqhC,EAAK7Z,cAAgBvmC,GACvBogD,EAAK2D,eA4C2F12B,IAG7F5xB,KAAK8qC,cAA8B,IAAf8e,EA0BtB,OADAtgD,EAAQg5C,QACD,EAzBP,KAAGsH,aAAsBv+C,MAqBxB,OAFAhF,QAAQC,KAAK,8EAA+EsjD,GAC5FtgD,EAAQg5C,QACD,EAjBP,IAHAh5C,EAAQ0B,UAAUC,IAAI,qBACtB1G,EAAKkE,IAAIzE,aAAagH,UAAUC,IAAI,qBACpC1G,EAAKxE,MAAMuJ,QAAQ0B,UAAUC,IAAI,qBAC3B3B,EAAQgC,YAAYhC,EAAQiC,YAAYjC,EAAQgC,YACtDhC,EAAQkC,YAAYo+C,GAGpBtmC,IAKA,IAFA,IAAIE,EAAWla,EAAQka,SAEdvV,EAAI,EAAGA,EAAIuV,EAASpe,OAAQ6I,IACpCuV,EAASvV,GAAG6B,iBAAiB,SAAS,SAASC,GAC9CA,EAAEC,qBAaN,OAAO,EAIP,OAFAhQ,KAAKgnD,YAAa,EAClB19C,EAAQg5C,QACD,EA1HJtiD,KAAKknD,aAAelnD,KAAK8qC,cAAgBvmC,GAC5CvE,KAAKsoD,aAkIRjB,iBACC,IAAIliD,EAAS,GAMb,OAJAnF,KAAKmnD,YAAY7iD,SAASC,IACzBY,EAAOX,KAAKD,EAAKE,eAAe,IAG1BU,EAGR2iD,YAAYvjD,GACX,IAAIylD,EAEDzlD,EAAK9D,QAAQoqC,MAAQtmC,EAAK9D,QAAQoqC,KAAK4d,SACzClkD,EAAK9D,QAAQoqC,KAAK4d,QAAS,EAE3BzoD,KAAKiC,SAAS,oBAAqBsC,KAGpCylD,EAAYhqD,KAAKmnD,YAAYl4C,QAAQ1K,KAErB,GACfvE,KAAKmnD,YAAYp1C,OAAOi4C,EAAW,MAKjC7uB,WAAa,SAGbisB,QAAU6C,EC1tBf,MAAMC,GACLpqD,YAAY0D,EAAMsB,EAAS2E,EAAWwmC,GACrCjwC,KAAKwD,KAAOA,EACZxD,KAAK8E,QAAUA,EACf9E,KAAKyJ,UAAYA,IAAa,EAC9BzJ,KAAKiwC,OAASA,GAAU,GCL1B,MAAMka,GACLrqD,YAAY4C,EAAO+G,EAAWxC,EAAOuC,EAAQ+pC,GAC5CvzC,KAAK0C,MAAQA,EACb1C,KAAKyJ,UAAYA,IAAa,EAC9BzJ,KAAKiH,MAAQA,EACbjH,KAAKwJ,OAASA,EACdxJ,KAAKuzC,MAAQA,GCDf,MAAM6W,WAAe9yB,EAEpBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKya,OAAS,GACdza,KAAKqqD,iBAAkB,EACvBrqD,KAAKsqD,WAAa,GAElBtqD,KAAKw3B,oBAAoB,oBAAoB,GAE7Cx3B,KAAKy3B,qBAAqB,cAC1Bz3B,KAAKy3B,qBAAqB,mBAG3BhhB,aACCzW,KAAK03B,sBAAsB,UAAW13B,KAAKuqD,QAAQzpD,KAAKd,OAYzD2oC,mBAAmBluB,EAAQtQ,EAAOs/B,EAAO6gB,GACxCtqD,KAAKqqD,gBAAkBlgD,EACvBnK,KAAKya,OAASA,GAAU,GACxBza,KAAKsqD,WAAaA,EAElB,IAAI7kB,GAAwC,IAA9BzlC,KAAKya,OAAO+vC,cAA0BxqD,KAAKyqD,oBAAoBzqD,KAAK0qD,8BAAgC,GAC9Gz0B,EAAOj2B,KAAK2qD,iBAAiB3qD,KAAK4qD,UAAUnhB,IAEhD,OAAOhE,EAAQp0B,OAAO4kB,GAGvB40B,cAAcpwC,EAAQtQ,EAAOs/B,EAAO6gB,GACnC,IAAIv1C,EAAO/U,KAAK2oC,mBAAmBluB,EAAQtQ,EAAOs/B,EAAO6gB,GAEzD,OAAOtqD,KAAK8qD,qBAAqB/1C,GAGlC61C,UAAUnhB,GACT,IAAIj3B,EAAO,GAEX,GAAmB,mBAATi3B,EACTA,EAAM39B,KAAK9L,KAAKD,OAAOuE,SAASmE,KAC/BA,EAAMzI,KAAKD,MAAMgM,WAAWuY,QAAQ7b,KAGnC+J,EAAKhO,KAAKiE,WAIZ,OAAOghC,GACN,KAAK,EACL,IAAK,UACJj3B,EAAOxS,KAAKD,MAAMgM,WAAW2P,gBAAe,GAAO,GACnD,MAED,IAAK,MACJlJ,EAAOxS,KAAKD,MAAMgM,WAAWyG,KAC7B,MAED,IAAK,WACJA,EAAOxS,KAAKD,MAAMU,QAAQsqD,UAAUC,aACpC,MAGD,QAEEx4C,EADExS,KAAKD,MAAMyC,QAAQ6nB,WACdrqB,KAAKD,MAAMgM,WAAW8L,eAAe7X,KAAKD,MAAMgM,WAAWud,YAAYlkB,OAAS,GAEhFpF,KAAKD,MAAMgM,WAAW8L,iBAKjC,OAAO9I,OAAOiF,OAAO,GAAIxB,GAG1Bk4C,6BACC,IAAIvlD,EAAS,GAYb,QAV2C,IAA7BnF,KAAKya,OAAOwwC,aAAyBjrD,KAAKD,MAAM6F,cAAcd,QAAU9E,KAAKD,MAAM6F,cAAcyU,gBAEvG/V,SAAShB,IAChB,IAAI4nD,EAAUlrD,KAAKmrD,mBAAmB7nD,GAEnC4nD,GACF/lD,EAAOX,KAAK0mD,MAIP/lD,EAGRgmD,mBAAmB7nD,GAClB,IAAIqsC,EAAYrsC,EAAOwB,QACvBsmD,EAAW,EAGPC,EAAY,CACfhkD,MAHO/D,EAAOwH,WAAW,SAAW9K,KAAKsqD,WAAW3lB,OAAO,GAAGC,cAAgB5kC,KAAKsqD,WAAWhjC,MAAM,MAAQhkB,EAAOwH,WAAWzD,MAI9H/D,OAAOA,EACPiwC,MAAM,GAGP,GAAG5D,EAAUvqC,QAmBZ,GAlBAimD,EAAU1b,UAAY,GACtB0b,EAAUpkD,MAAQ,EAElB0oC,EAAUrrC,SAASgnD,IAClB,IAAIC,EAAevrD,KAAKmrD,mBAAmBG,GAExCC,IACFF,EAAUpkD,OAASskD,EAAatkD,MAChCokD,EAAU1b,UAAUnrC,KAAK+mD,GAEtBA,EAAahY,MAAQ6X,IACvBA,EAAWG,EAAahY,WAK3B8X,EAAU9X,OAAS6X,GAEfC,EAAUpkD,MACb,OAAO,MAEJ,CACJ,IAAGjH,KAAKwrD,eAAeloD,GAGtB,OAAO,EAFP+nD,EAAUpkD,MAAQ,EAMpB,OAAOokD,EAGRG,eAAeloD,GACd,IAAImoD,EAAUnoD,EAAOwH,WAAW9K,KAAKsqD,YAMrC,MAJsB,mBAAZmB,IACTA,EAAUA,EAAQ3/C,KAAK9L,KAAKD,MAAOuD,EAAOmB,kBAGxB,IAAZgnD,IAAsBnoD,EAAOqB,UAAarB,EAAOqB,SAAW8mD,GAGpEhB,oBAAoB3lD,GACnB,IAAI2gC,EAAU,GACdimB,EAAc,EACdC,EAAa,GAEb,SAASC,EAAiBtoD,EAAQu5B,GAEjC,IAAI0W,EAAQmY,EAAc7uB,EAU1B,QAR6B,IAAnB4I,EAAQ5I,KACjB4I,EAAQ5I,GAAS,IAGlBv5B,EAAOkG,OAASlG,EAAOqsC,UAAY,EAAK4D,EAAQjwC,EAAOiwC,MAAS,EAEhE9N,EAAQ5I,GAAOr4B,KAAKlB,GAEjBA,EAAOkG,OAAS,EAClB,IAAI,IAAIyE,EAAI,EAAGA,EAAI3K,EAAOkG,OAAQyE,SAEA,IAAvBw3B,EAAQ5I,EAAQ5uB,KACzBw3B,EAAQ5I,EAAQ5uB,GAAK,IAGtBw3B,EAAQ5I,EAAQ5uB,GAAGzJ,MAAK,GAI1B,GAAGlB,EAAO2D,MAAQ,EACjB,IAAI,IAAIgH,EAAI,EAAGA,EAAI3K,EAAO2D,MAAOgH,IAChCw3B,EAAQ5I,GAAOr4B,MAAK,GAInBlB,EAAOqsC,WACTrsC,EAAOqsC,UAAUrrC,SAAQ,SAASgnD,GACjCM,EAAiBN,EAAUzuB,EAAM,MA+BpC,OAzBA/3B,EAAQR,SAAQ,SAAShB,GACrBA,EAAOiwC,MAAQmY,IACjBA,EAAcpoD,EAAOiwC,UAIvBzuC,EAAQR,SAAQ,SAAShB,GACxBsoD,EAAiBtoD,EAAO,MAGzBmiC,EAAQnhC,SAASqvC,IAChB,IAAI7uC,EAAU,GAEd6uC,EAAOrvC,SAASmX,IACf,GAAGA,EAAI,CACN,IAAIpU,OAA6B,IAAdoU,EAAIpU,MAAwB,GAAKoU,EAAIpU,MACxDvC,EAAQN,KAAK,IAAI2lD,GAAa9iD,EAAOoU,EAAInY,OAAOmB,eAAgBgX,EAAIxU,MAAOwU,EAAIjS,OAAQiS,EAAI83B,aAE3FzuC,EAAQN,KAAK,SAIfmnD,EAAWnnD,KAAK,IAAI0lD,GAAU,SAAUplD,GAAS,IAG3C6mD,EAGRhB,iBAAiBn4C,GAEhB,IAAI1N,EAAU,GACV6mD,EAAa,GA2DjB,OAzDA3rD,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAShB,IAC5CtD,KAAKwrD,eAAeloD,IACvBwB,EAAQN,KAAKlB,EAAOmB,oBAIS,IAA5BzE,KAAKya,OAAOizB,aAAyB1tC,KAAKD,MAAM44B,UAAU,iBACzD34B,KAAKD,MAAMU,QAAQitC,YAAYtB,gBACjC55B,EAAKkD,QAAQ1V,KAAKD,MAAMU,QAAQitC,YAAYpnB,QAG1CtmB,KAAKD,MAAMU,QAAQitC,YAAYrB,gBACjC75B,EAAKhO,KAAKxE,KAAKD,MAAMU,QAAQitC,YAAYvB,UAI3C35B,EAAOA,EAAKqJ,QAAQpT,IACnB,OAAOA,EAAIjF,MACV,IAAK,QACJ,OAAiC,IAA1BxD,KAAKya,OAAOoxC,UAEpB,IAAK,OACJ,OAAmC,IAA5B7rD,KAAKya,OAAOizB,YAEpB,IAAK,MACJ,QAAS1tC,KAAKD,MAAMyC,QAAQ8qC,WAAqC,IAAzBttC,KAAKya,OAAO6yB,UAAsB7kC,EAAIhI,QAAQ6sC,SAAShoC,QAGjG,OAAO,CAAI,KAGPhB,SAAQ,CAACmE,EAAKwF,KAClB,IAAIokB,EAAU5pB,EAAIC,QAAQ1I,KAAKsqD,YAC3BwB,EAAa,GACb7b,EAAS,EAEb,OAAOxnC,EAAIjF,MACV,IAAK,QACJysC,EAASxnC,EAAIo0B,MACbivB,EAAWtnD,KAAK,IAAI2lD,GAAa1hD,EAAI1G,IAAK0G,EAAIhE,eAAgBK,EAAQM,OAAQ,IAC9E,MAED,IAAK,OACL,IAAK,MACJN,EAAQR,SAASmX,IAChBqwC,EAAWtnD,KAAK,IAAI2lD,GAAa1uC,EAAIlY,QAAQuG,cAAcuoB,GAAU5W,EAAK,EAAG,GAAG,IAG9Ezb,KAAKD,MAAMyC,QAAQ8qC,WAAqC,IAAzBttC,KAAKya,OAAO6yB,WAC7C2C,EAASxnC,EAAIhI,QAAQ6sC,SAASx7B,OAKjC65C,EAAWnnD,KAAK,IAAI0lD,GAAUzhD,EAAIjF,KAAMsoD,EAAYrjD,EAAIhE,eAAgBwrC,GAAQ,IAG1E0b,EAGRb,qBAAqB/1C,GACpB,IAAIhV,EAAQgK,SAASC,cAAc,SACnC+hD,EAAWhiD,SAASC,cAAc,SAClCgiD,EAASjiD,SAASC,cAAc,SAChCsqC,EAASt0C,KAAKisD,oBACd5oC,EAAerjB,KAAKD,MAAMyC,QAAQ,gBAAkBxC,KAAKsqD,WAAW3lB,OAAO,GAAGC,cAAgB5kC,KAAKsqD,WAAWhjC,MAAM,KACpH4kC,EAAQ,GAyDR,OAvDAA,EAAM7oC,aAAgC,OAAjBA,EAAwBA,EAAerjB,KAAKD,MAAMyC,QAAQ6gB,aAE5ErjB,KAAKD,MAAMyC,QAAQ8qC,WAAoC,IAAzBttC,KAAKya,OAAO6yB,UAAsBttC,KAAKD,MAAM44B,UAAU,iBACvFuzB,EAAMC,iBAAmBnsD,KAAKD,MAAMU,QAAQ6sC,SAAS+C,cAItD6b,EAAMhU,YAAcl4C,KAAKD,MAAMyC,QAAQ,eAAiBxC,KAAKsqD,WAAW3lB,OAAO,GAAGC,cAAgB5kC,KAAKsqD,WAAWhjC,MAAM,KAErH4kC,EAAMhU,cAAgB/iC,MAAMC,QAAQ82C,EAAMhU,eAC5CgU,EAAMhU,YAAc,CAACgU,EAAMhU,cAG5Bn4C,EAAMiL,UAAUC,IAAI,yBAEpBjL,KAAKosD,iBAAiBpsD,KAAKD,MAAM6F,cAAciL,oBAAqBk7C,EAAU,CAAC,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cAGrMh3C,EAAK3P,OAAS,KAChBiB,QAAQC,KAAK,4EAGdyO,EAAKzQ,SAAQ,CAACmE,EAAKwF,KAClB,IAAI8J,EAEJ,OAAOtP,EAAIjF,MACV,IAAK,SACJuoD,EAASvgD,YAAYxL,KAAKqsD,sBAAsB5jD,EAAKyjD,EAAO5X,IAC5D,MAED,IAAK,QACJ0X,EAAOxgD,YAAYxL,KAAKssD,qBAAqB7jD,EAAKyjD,EAAO5X,IACzD,MAED,IAAK,OACJ0X,EAAOxgD,YAAYxL,KAAKusD,oBAAoB9jD,EAAKyjD,EAAO5X,IACxD,MAED,IAAK,MACJv8B,EAAQ/X,KAAKwsD,mBAAmB/jD,EAAKyjD,EAAO5X,GAE5Ct0C,KAAKosD,iBAAmBn+C,EAAI,GAAMqmC,EAAOmY,QAAWnY,EAAOmY,QAAUnY,EAAOoY,OAAQ30C,EAAO,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBAC9Mi0C,EAAOxgD,YAAYuM,OAKnBg0C,EAAS3gD,WACXrL,EAAMyL,YAAYugD,GAGnBhsD,EAAMyL,YAAYwgD,GAGlBhsD,KAAKosD,iBAAiBpsD,KAAKD,MAAMuJ,QAASvJ,EAAO,CAAC,aAAc,cAAe,eAAgB,kBACxFA,EAGRksD,oBACC,IAAI3X,EAAS,GAiBb,OAdGt0C,KAAKqqD,iBAAmB91C,OAAOmtB,mBACjC4S,EAAOoY,OAAS1sD,KAAKD,MAAMuJ,QAAQqlB,cAAc,kEACjD2lB,EAAOmY,QAAUzsD,KAAKD,MAAMuJ,QAAQqlB,cAAc,mEAClD2lB,EAAOqY,QAAU3sD,KAAKD,MAAMuJ,QAAQqlB,cAAc,kCAClD2lB,EAAOsY,SAAW5sD,KAAKD,MAAMuJ,QAAQqlB,cAAc,8DACnD2lB,EAAOuY,WAAa7sD,KAAKD,MAAMuJ,QAAQwjD,uBAAuB,mBAAmB,GAE9ExY,EAAOsY,WACTtY,EAAOyY,WAAazY,EAAOsY,SAASE,uBAAuB,kBAC3DxY,EAAO0Y,UAAY1Y,EAAOyY,WAAW,GACrCzY,EAAO2Y,SAAW3Y,EAAOyY,WAAWzY,EAAOyY,WAAW3nD,OAAS,KAI1DkvC,EAGR+X,sBAAsB5jD,EAAKyjD,EAAO5X,GACjC,IAAIv8B,EAAQhO,SAASC,cAAc,MAuCnC,OArCAvB,EAAI3D,QAAQR,SAAShB,IACpB,GAAGA,EAAO,CACT,IAAIu4C,EAAS9xC,SAASC,cAAc,MAChCkjD,EAAa5pD,EAAOmG,UAAUlG,QAAQuH,WAAWlD,SAAWtE,EAAOmG,UAAUlG,QAAQuH,WAAWlD,SAASmD,MAAM,KAAO,GAE1H8wC,EAAOtH,QAAUjxC,EAAO2D,MACxB40C,EAAOrH,QAAUlxC,EAAOkG,OAExBqyC,EAAOzwC,UAAY9H,EAAOZ,MAEvB1C,KAAKqqD,kBACPxO,EAAO1xC,MAAMqyC,UAAY,cAG1B0Q,EAAW5oD,SAAQ,SAAS2F,GAC3B4xC,EAAO7wC,UAAUC,IAAIhB,MAGtBjK,KAAKosD,iBAAiB9oD,EAAOmG,UAAUzF,aAAc63C,EAAQ,CAAC,aAAc,aAAc,cAAe,eAAgB,gBAAiB,mBAAoB,QAAS,cAAe,cAAe,cACrM77C,KAAKosD,iBAAiB9oD,EAAOmG,UAAUlG,QAAQ+J,eAAgBuuC,EAAQ,CAAC,cAAe,eAAgB,gBAAiB,mBAErHv4C,EAAOmG,UAAUlG,QAAQoB,QAC3B3E,KAAKosD,iBAAiB9oD,EAAOmG,UAAUzF,aAAc63C,EAAQ,CAAC,UAE3Dv4C,EAAOmG,UAAUlG,QAAQuH,WAAW7D,QACtC40C,EAAO1xC,MAAMlD,MAAQ3D,EAAOmG,UAAUlG,QAAQuH,WAAW7D,MAAQ,MAIhE3D,EAAOmG,UAAUlG,QAAQ+B,QAC3BtF,KAAKosD,iBAAiB9oD,EAAOmG,UAAUlG,QAAQ+B,OAAOmI,aAAcouC,EAAQ,CAAC,eAG9E9jC,EAAMvM,YAAYqwC,OAIb9jC,EAGRu0C,qBAAqB7jD,EAAKyjD,EAAO5X,GAEhC,IAAIv8B,EAAQhO,SAASC,cAAc,MACnC6xC,EAAS9xC,SAASC,cAAc,MAChCgb,EAAQvc,EAAI3D,QAAQ,GA2BpB,OAzBAiT,EAAM/M,UAAUC,IAAI,6BAEjBihD,EAAMhU,aAAegU,EAAMhU,YAAYzvC,EAAIwnC,QAC7CjrB,EAAMtiB,MAAQwpD,EAAMhU,YAAYzvC,EAAIwnC,QAAQjrB,EAAMtiB,MAAO+F,EAAIgB,UAAU2uC,OAAOC,cAAe5vC,EAAIgB,UAAU2uC,OAAO1vC,UAAWD,EAAIgB,YAExG,IAAtByiD,EAAMhU,cACRlzB,EAAMtiB,MAAQ+F,EAAIgB,UAAU2uC,OAAO+U,UAAUnoC,EAAMtiB,MAAO+F,EAAIgB,UAAU2uC,OAAOC,cAAe5vC,EAAIgB,UAAU2uC,OAAO1vC,UAAWD,EAAIgB,YAIpIoyC,EAAOtH,QAAUvvB,EAAM/d,MACvB40C,EAAOzwC,UAAY4Z,EAAMtiB,MAEzBqV,EAAM/M,UAAUC,IAAI,+BACpB8M,EAAM/M,UAAUC,IAAI,yBAA2BxC,EAAIwnC,QAEhDjrB,EAAMvb,UAAU/E,aAClBqT,EAAM/M,UAAUC,IAAI,2BAGrBjL,KAAKosD,iBAAiB9X,EAAOuY,WAAY90C,EAAO,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBACnK/X,KAAKosD,iBAAiB9X,EAAOuY,WAAYhR,EAAQ,CAAC,cAAe,eAAgB,gBAAiB,mBAElG9jC,EAAMvM,YAAYqwC,GAEX9jC,EAGRw0C,oBAAoB9jD,EAAKyjD,EAAO5X,GAC/B,IAAIv8B,EAAQ/X,KAAKwsD,mBAAmB/jD,EAAKyjD,EAAO5X,GAKhD,OAHAv8B,EAAM/M,UAAUC,IAAI,+BACpBjL,KAAKosD,iBAAiB9X,EAAOqY,QAAS50C,EAAO,CAAC,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,qBAEzJA,EAGRy0C,mBAAmB/jD,EAAKyjD,EAAO5X,GAC9B,IAAIv8B,EAAQhO,SAASC,cAAc,MAgGnC,GA9FA+N,EAAM/M,UAAUC,IAAI,6BAEpBxC,EAAI3D,QAAQR,SAAQ,CAACmX,EAAKxN,KACzB,GAAGwN,EAAI,CACN,IAIA2xC,EAJIvR,EAAS9xC,SAASC,cAAc,MACpC1G,EAASmY,EAAIhS,UAAUlG,QACvBuO,EAAQ9R,KAAKD,MAAM6F,cAAc6N,gBAAgBnQ,GACjDZ,EAAQ+Y,EAAI/Y,MAGR2qD,EAAc,CACjB5sD,QAAQ,GACR2H,SAAS,WACR,OAAO1F,GAERwB,SAAS,WACR,OAAOZ,EAAOwH,WAAWxD,OAE1BtD,WAAW,WACV,OAAO63C,GAERjzC,QAAQ,WACP,MAAO,QAERC,UAAU,WACT,OAAOvF,EAAOmB,gBAEfiE,QAAQ,WACP,OAAOD,EAAIgB,UAAUf,WAEtBF,OAAO,WACN,OAAOC,EAAIgB,WAEZhF,aAAa,WACZ,OAAO4oD,GAER/pD,OAAOA,GASR,IANiBA,EAAOwH,WAAWlD,SAAWtE,EAAOwH,WAAWlD,SAASmD,MAAM,KAAO,IAE3EzG,SAAQ,SAAS2F,GAC3B4xC,EAAO7wC,UAAUC,IAAIhB,MAGnBjK,KAAKD,MAAM44B,UAAU,YAAyC,IAA5B34B,KAAKya,OAAO6yC,YAChD5qD,EAAQ1C,KAAKD,MAAMU,QAAQyuC,OAAOqe,kBAAkBF,EAAartD,KAAKsqD,iBAEtE,cAAc5nD,GACb,IAAK,SACJA,EAAkB,OAAVA,EAAiBqhB,KAAK2hB,UAAUhjC,GAAS,GACjD,MAED,IAAK,YACJA,EAAQ,GAKRA,aAAiB2I,KACnBwwC,EAAOrwC,YAAY9I,GAEnBm5C,EAAOzwC,UAAY1I,GAGpB0qD,EAAY9Y,EAAOyY,YAAczY,EAAOyY,WAAWj7C,GAASwiC,EAAOyY,WAAWj7C,GAASwiC,EAAO0Y,aAG7FhtD,KAAKosD,iBAAiBgB,EAAWvR,EAAQ,CAAC,cAAe,eAAgB,gBAAiB,iBAAkB,aAAc,cAAe,eAAgB,gBAAiB,QAAS,cAAe,cAAe,YAAa,eAE3Nv4C,EAAOwH,WAAW0iD,QACpB3R,EAAO1xC,MAAMC,UAAY9G,EAAOwH,WAAW0iD,QAI1CxtD,KAAKD,MAAMyC,QAAQ8qC,WAAqC,IAAzBttC,KAAKya,OAAO6yB,WACzC4e,EAAMC,kBAAoBD,EAAMC,kBAAoB7oD,EAAOgE,QAAY4kD,EAAMC,kBAAyB,GAALl+C,KACjGxF,EAAIgB,UAAUwY,KAAKxhB,QAAQ6sC,SAAS2E,WACtC4J,EAAOl/B,aAAalU,EAAIgB,UAAUwY,KAAKxhB,QAAQ6sC,SAAS2E,UAAUE,WAAU,GAAO0J,EAAOvwC,YAExF7C,EAAIgB,UAAUwY,KAAKxhB,QAAQ6sC,SAAS8C,UACtCyL,EAAOl/B,aAAalU,EAAIgB,UAAUwY,KAAKxhB,QAAQ6sC,SAAS8C,SAAS+B,WAAU,GAAO0J,EAAOvwC,aAK5FyM,EAAMvM,YAAYqwC,GAEfwR,EAAY5sD,QAAQyuC,QAAUme,EAAY5sD,QAAQyuC,OAAO1Z,kBAC3D63B,EAAY5sD,QAAQyuC,OAAO1Z,uBAK3B02B,EAAM7oC,cAA6B,QAAb5a,EAAIjF,OAA8C,IAA5BxD,KAAKya,OAAO6yC,YAAsB,CAC1Dv+C,OAAOiF,OAAOvL,EAAIgB,WAExBzF,WAAa,WAAW,OAAO+T,CAAM,EAErDm0C,EAAM7oC,aAAa5a,EAAIgB,WAGxB,OAAOsO,EAGR+wB,kBAAkB/zB,GACjB,IAAI0S,EAAS1d,SAASC,cAAc,OAIpC,OAFAyd,EAAOjc,YAAYxL,KAAK8qD,qBAAqB/1C,IAEtC0S,EAAOrc,UAGfm/C,QAAQ5lD,EAASwF,EAAOsQ,EAAQ6vC,GAC/B,IAAIv1C,EAAO/U,KAAK2oC,mBAAmBluB,GAAUza,KAAKD,MAAMyC,QAAQirD,iBAAkBtjD,EAAOxF,EAAS2lD,GAAc,cAEhH,OAAOtqD,KAAK8oC,kBAAkB/zB,GAG/Bq3C,iBAAiBtrC,EAAM9a,EAAI0nD,GAC1B,GAAG1tD,KAAKqqD,iBAAmBvpC,GAAQ9a,EAAG,CAErC,IAAI2nD,EAAS,CACZ,mBAAqB,kBACrBC,MAAU,YACV3mD,MAAU,QACV,cAAgB,aAChB,cAAgB,aAChB,YAAc,WACd,aAAe,YACf,aAAe,YACf,cAAgB,aAChB,eAAiB,cACjB,gBAAkB,eAClB,cAAgB,aAChB,eAAiB,cACjB,gBAAkB,eAClB,iBAAmB,iBAGpB,GAAGsN,OAAOmtB,iBAAiB,CAC1B,IAAImsB,EAAYt5C,OAAOmtB,iBAAiB5gB,GAExC4sC,EAAMppD,SAAQ,SAASm4B,GAClBz2B,EAAGmE,MAAMwjD,EAAOlxB,MACnBz2B,EAAGmE,MAAMwjD,EAAOlxB,IAASoxB,EAAUzb,iBAAiB3V,UAQ1D2tB,GAAOjvB,WAAa,gBC/mBL,CAGd,IAAI,SAAS2yB,EAAWC,EAAQ17B,EAAS27B,GACxC,OAAOD,GAAUD,GAIlB,IAAI,SAASA,EAAWC,EAAQ17B,EAAS27B,GACxC,OAAOD,EAASD,GAIjB,KAAK,SAASA,EAAWC,EAAQ17B,EAAS27B,GACzC,OAAOD,GAAUD,GAIlB,IAAI,SAASA,EAAWC,EAAQ17B,EAAS27B,GACxC,OAAOD,EAASD,GAIjB,KAAK,SAASA,EAAWC,EAAQ17B,EAAS27B,GACzC,OAAOD,GAAUD,GAIlB,KAAK,SAASA,EAAWC,EAAQ17B,EAAS27B,GACzC,OAAOD,GAAUD,GAGlBG,MAAQ,SAASH,EAAWC,EAAQ17B,EAAS27B,GAM5C,MAJuB,iBAAbF,IACTA,EAAY,IAAII,OAAOJ,IAGjBA,EAAUtrB,KAAKurB,IAIvBI,KAAO,SAASL,EAAWC,EAAQ17B,EAAS27B,GAC3C,OAAGF,QACKC,IAAWD,EAEf,MAAOC,GACFriB,OAAOqiB,GAAQ1xB,cAAcptB,QAAQ6+C,EAAUzxB,gBAAkB,GAS3E+xB,SAAW,SAASN,EAAWC,EAAQ17B,EAAS27B,GAC/C,IAAII,EAAWN,EAAUzxB,cAActxB,WAAwC,IAA3BijD,EAAaK,UAA4B,IAAML,EAAaK,WAChH3rD,EAAQgpC,OAAOqiB,QAAmD,GAAKA,GAAQ1xB,cAC/E/b,EAAU,GAQV,OANA8tC,EAAS9pD,SAASgqD,IACd5rD,EAAMoZ,SAASwyC,IACjBhuC,EAAQ9b,MAAK,MAIRwpD,EAAaO,SAAWjuC,EAAQlb,SAAWgpD,EAAShpD,SAAWkb,EAAQlb,QAI/EopD,OAAS,SAASV,EAAWC,EAAQ17B,EAAS27B,GAC7C,OAAGF,QACKC,IAAWD,EAEf,MAAOC,GACFriB,OAAOqiB,GAAQ1xB,cAActiB,WAAW+zC,EAAUzxB,gBAS5DoyB,KAAO,SAASX,EAAWC,EAAQ17B,EAAS27B,GAC3C,OAAGF,QACKC,IAAWD,EAEf,MAAOC,GACFriB,OAAOqiB,GAAQ1xB,cAAcqyB,SAASZ,EAAUzxB,gBAS1DsyB,GAAK,SAASb,EAAWC,EAAQ17B,EAAS27B,GACzC,OAAG74C,MAAMC,QAAQ04C,IACTA,EAAU1oD,QAAS0oD,EAAU7+C,QAAQ8+C,IAAW,GAEvD1nD,QAAQC,KAAK,+CAAgDwnD,IACtD,KCpGV,MAAMc,WAAet3B,EAEpBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK6uD,WAAa,GAClB7uD,KAAKg8B,cAAgB,GACrBh8B,KAAK8uD,oBAAsB,GAE3B9uD,KAAK+uD,4BAA8B,GACnC/uD,KAAK+uD,4BAA8B,KAEnC/uD,KAAKgM,SAAU,EACfhM,KAAKgvD,kBAAmB,EAExBhvD,KAAKw3B,oBAAoB,aAAc,SAEvCx3B,KAAKw3B,oBAAoB,iBAAiB,GAC1Cx3B,KAAKw3B,oBAAoB,uBAAuB,GAChDx3B,KAAKw3B,oBAAoB,8BAA+B,KACxDx3B,KAAKw3B,oBAAoB,2BAA2B,GAEpDx3B,KAAKy3B,qBAAqB,gBAC1Bz3B,KAAKy3B,qBAAqB,2BAC1Bz3B,KAAKy3B,qBAAqB,sBAC1Bz3B,KAAKy3B,qBAAqB,0BAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,0BAC1Bz3B,KAAKy3B,qBAAqB,0BAE1Bz3B,KAAK03B,sBAAsB,aAAc13B,KAAKivD,WAAWnuD,KAAKd,OAC9DA,KAAK03B,sBAAsB,aAAc13B,KAAKkvD,WAAWpuD,KAAKd,OAE9DA,KAAK03B,sBAAsB,YAAa13B,KAAKmvD,cAAcruD,KAAKd,OAChEA,KAAK03B,sBAAsB,gBAAiB13B,KAAKovD,kBAAkBtuD,KAAKd,OACxEA,KAAK03B,sBAAsB,YAAa13B,KAAKqvD,cAAcvuD,KAAKd,OAChEA,KAAK03B,sBAAsB,aAAc13B,KAAKsvD,WAAWxuD,KAAKd,OAC9DA,KAAK03B,sBAAsB,uBAAwB13B,KAAKuvD,yBAAyBzuD,KAAKd,OACtFA,KAAK03B,sBAAsB,uBAAwB13B,KAAKwvD,yBAAyB1uD,KAAKd,OACtFA,KAAK03B,sBAAsB,uBAAwB13B,KAAKyvD,yBAAyB3uD,KAAKd,OACtFA,KAAK03B,sBAAsB,mBAAoB13B,KAAK0vD,iBAAiB5uD,KAAKd,OAC1EA,KAAK03B,sBAAsB,eAAgB13B,KAAK2vD,iBAAiB7uD,KAAKd,OACtEA,KAAK03B,sBAAsB,cAAe13B,KAAK4vD,gBAAgB9uD,KAAKd,OACpEA,KAAK03B,sBAAsB,oBAAqB13B,KAAK6vD,sBAAsB/uD,KAAKd,OAEhFA,KAAK63B,0BAA0B,SAAU,oBAAqB73B,KAAK8vD,qBAAqBhvD,KAAKd,OAC7FA,KAAK63B,0BAA0B,SAAU,qBAAsB73B,KAAK+vD,mBAAmBjvD,KAAKd,OAC5FA,KAAK63B,0BAA0B,SAAU,uBAAwB73B,KAAKgwD,qBAAqBlvD,KAAKd,OAChGA,KAAK63B,0BAA0B,SAAU,uBAAwB73B,KAAKiwD,qBAAqBnvD,KAAKd,OAGjGyW,aACCzW,KAAK2B,UAAU,cAAe3B,KAAKkwD,6BAA6BpvD,KAAKd,OACrEA,KAAK2B,UAAU,0BAA2B3B,KAAKmwD,yBAAyBrvD,KAAKd,OAC7EA,KAAK2B,UAAU,yBAA0B3B,KAAKowD,yBAAyBtvD,KAAKd,OAC5EA,KAAK2B,UAAU,cAAe3B,KAAKqwD,WAAWvvD,KAAKd,OACnDA,KAAK2B,UAAU,cAAe3B,KAAKswD,oBAAoBxvD,KAAKd,OAEvB,WAAlCA,KAAKD,MAAMyC,QAAQ+tD,YACrBvwD,KAAK2B,UAAU,cAAe3B,KAAKwwD,mBAAmB1vD,KAAKd,OAG5DA,KAAK83B,oBAAoB93B,KAAK6b,OAAO/a,KAAKd,MAAO,IAGlDqwD,aACIrwD,KAAKD,MAAMyC,QAAQiuD,eACrBzwD,KAAK0wD,UAAU1wD,KAAKD,MAAMyC,QAAQiuD,eAGhCzwD,KAAKD,MAAMyC,QAAQmuD,qBACrB3wD,KAAKD,MAAMyC,QAAQmuD,oBAAoBrsD,SAASmR,IAE/C,IAAInS,EAAStD,KAAKD,MAAM6F,cAAcO,WAAWsP,EAAKnO,OAEtD,IAAGhE,EAIF,OADA+C,QAAQC,KAAK,kDAAmDmP,EAAKnO,QAC9D,EAHPtH,KAAKiwD,qBAAqB3sD,EAAQmS,EAAK/S,UAQ1C1C,KAAKgvD,kBAAmB,EAGzBwB,mBAAmBtwD,EAAMua,EAAQta,EAAQyxB,GAExC,OADAA,EAAO/V,OAAS7b,KAAKsvD,YAAW,GAAM,GAC/B19B,EAGR0+B,oBAAoBpgD,GACnB,GAAGlQ,KAAKD,MAAMyC,QAAQouD,yBAA2B7hD,OAAOC,KAAKhP,KAAKg8B,eAAe52B,OAChF,OAAOpF,KAAKD,MAAMyC,QAAQouD,wBAS5BzB,cAAc7nD,EAAO9D,EAAMd,EAAOkvB,GACjC5xB,KAAK0wD,UAAUppD,EAAO9D,EAAMd,EAAOkvB,GACnC5xB,KAAK6wD,gBAINzB,oBACCpvD,KAAK6wD,gBAINxB,cAAc/nD,EAAO9D,EAAMd,EAAOkvB,GACjC5xB,KAAK8wD,UAAUxpD,EAAO9D,EAAMd,EAAOkvB,GACnC5xB,KAAK6wD,gBAGNtB,yBAAyBjoD,GACxB,IAAIhE,EAAStD,KAAKD,MAAM6F,cAAcO,WAAWmB,GAEjD,IAAGhE,EAIF,OADA+C,QAAQC,KAAK,wDAAyDgB,IAC/D,EAHPtH,KAAK8vD,qBAAqBxsD,GAO5BksD,yBAAyBloD,GACxB,IAAIhE,EAAStD,KAAKD,MAAM6F,cAAcO,WAAWmB,GAEjD,GAAGhE,EACF,OAAOtD,KAAKgwD,qBAAqB1sD,GAEjC+C,QAAQC,KAAK,kDAAmDgB,GAIlEmoD,yBAAyBnoD,EAAO5E,GAC/B,IAAIY,EAAStD,KAAKD,MAAM6F,cAAcO,WAAWmB,GAEjD,IAAGhE,EAIF,OADA+C,QAAQC,KAAK,kDAAmDgB,IACzD,EAHPtH,KAAKiwD,qBAAqB3sD,EAAQZ,GAQpCitD,iBAAiBroD,EAAO9D,EAAMd,GAC7B1C,KAAK+wD,aAAazpD,EAAO9D,EAAMd,GAC/B1C,KAAK6wD,gBAINjB,gBAAgBhyB,GACf59B,KAAKgxD,YAAYpzB,GACjB59B,KAAK6wD,gBAINhB,wBACC7vD,KAAKixD,oBACLjxD,KAAK6wD,gBAKN5B,WAAW3nD,EAAO9D,EAAMd,GACvB,OAAO1C,KAAKwiD,OAAO,OAAQl7C,EAAO9D,EAAMd,GAIzCwsD,WAAW5nD,EAAO9D,EAAMd,GACvB,OAAO1C,KAAKwiD,OAAO,OAAQl7C,EAAO9D,EAAMd,GAOzCwtD,6BAA6B5sD,GAClBA,EAAOwH,WAEVomD,cACNlxD,KAAKg7B,iBAAiB13B,GAKxB03B,iBAAiB13B,EAAQZ,GACxB,IAAIiiD,EAAO3kD,KACXsH,EAAQhE,EAAOY,WA0FfZ,EAAO7C,QAAQob,OAAS,CACvBk+B,QAxFD,SAAiBr3C,GAChB,IAGA46C,EAHI6T,EAA+C,SAAjC7tD,EAAO7C,QAAQob,OAAOu1C,SAAwD,QAAlC9tD,EAAO7C,QAAQob,OAAOw1C,UAAwD,YAAjC/tD,EAAO7C,QAAQob,OAAOu1C,QAAwB,UAAY,QACrK5tD,EAAO,GACP8tD,EAAoB,GAGpB,QAAgD,IAAtChuD,EAAO7C,QAAQob,OAAO01C,aAA+BjuD,EAAO7C,QAAQob,OAAO01C,cAAgB7uD,EAAM,CAI1G,GAFAY,EAAO7C,QAAQob,OAAO01C,YAAc7uD,EAEhCY,EAAO7C,QAAQob,OAAO21C,UAAU9uD,UA2D5BiiD,EAAK3oB,cAAc10B,OA3DgB,CAG1C,OAFAhE,EAAO7C,QAAQob,OAAOnZ,MAAQA,SAEhBY,EAAOwH,WAAW2mD,kBAC/B,IAAK,SACD7C,GAAO8C,QAAQpuD,EAAOwH,WAAW2mD,mBACnCjuD,EAAOF,EAAOwH,WAAW2mD,iBACzBnU,EAAa,SAASp9C,GACrB,IAAI0xB,EAAStuB,EAAOwH,WAAW6mD,wBAA0B,GACrDC,EAAWtuD,EAAOwG,cAAc5J,GAIpC,OAFA0xB,EAA2B,mBAAXA,EAAwBA,EAAOlvB,EAAOkvD,EAAU1xD,GAAQ0xB,EAEjEg9B,GAAO8C,QAAQpuD,EAAOwH,WAAW2mD,kBAAkB/uD,EAAOkvD,EAAU1xD,EAAM0xB,KAGlFvrB,QAAQC,KAAK,6DAA8DhD,EAAOwH,WAAW2mD,kBAE9F,MAED,IAAK,WAUJjuD,EATA85C,EAAa,SAASp9C,GACrB,IAAI0xB,EAAStuB,EAAOwH,WAAW6mD,wBAA0B,GACrDC,EAAWtuD,EAAOwG,cAAc5J,GAIpC,OAFA0xB,EAA2B,mBAAXA,EAAwBA,EAAOlvB,EAAOkvD,EAAU1xD,GAAQ0xB,EAEjEtuB,EAAOwH,WAAW2mD,iBAAiB/uD,EAAOkvD,EAAU1xD,EAAM0xB,IAOpE,IAAI0rB,EACH,GACM,YADC6T,EAEL7T,EAAa,SAASp9C,GACrB,IAAI2xD,EAASvuD,EAAOwG,cAAc5J,GAElC,OAAG,MAAO2xD,GACFnmB,OAAOmmB,GAAQx1B,cAAcptB,QAAQy8B,OAAOhpC,GAAO25B,gBAAkB,GAK9E74B,EAAO,YAIP85C,EAAa,SAASp9C,GACrB,OAAOoD,EAAOwG,cAAc5J,IAASwC,GAEtCc,EAAO,IAIVmhD,EAAK3oB,cAAc10B,GAAS,CAAC5E,MAAMA,EAAOi1B,KAAK2lB,EAAY95C,KAAKA,GAKjEF,EAAO7C,QAAQob,OAAOnZ,MAAQA,EAE9B4uD,EAAoBvtC,KAAK2hB,UAAUif,EAAK3oB,eAErC2oB,EAAKoK,8BAAgCuC,IACvC3M,EAAKoK,4BAA8BuC,EAEnC3M,EAAKmN,eACLnN,EAAKkM,iBAIP,OAAO,GAKPQ,UAAS,EACTD,SAAQ,EACRI,WAAU,GAGXxxD,KAAK+xD,4BAA4BzuD,GAGlCyuD,4BAA4BzuD,EAAQiF,EAAcyY,GACjD,IAGAgxC,EAAenY,EAAQoY,EAAe5E,EAAa6E,EAAaC,EAAevgC,EAAQwgC,EAHnFzN,EAAO3kD,KACX+5C,EAAUz2C,EAAO7C,QAAQob,OAAOk+B,QAChCzyC,EAAQhE,EAAOY,WAgBf,GAbAZ,EAAO7C,QAAQob,OAAOnZ,MAAQ6F,EAS3BjF,EAAO7C,QAAQob,OAAOw2C,eAAiB/uD,EAAO7C,QAAQob,OAAOw2C,cAAcrlD,YAC7E1J,EAAOgK,eAAe/B,YAAYjI,EAAO7C,QAAQob,OAAOw2C,cAAcrlD,YAGpE1F,EAAM,CAWR,OARAhE,EAAO7C,QAAQob,OAAO21C,UAAYluD,EAAOwH,WAAWwnD,wBAA0B,SAAS5vD,GACtF,OAAQA,GAAmB,IAAVA,IAGlBsvD,EAAgBjoD,SAASC,cAAc,QACzBgB,UAAUC,IAAI,kCAGd3H,EAAOwH,WAAWomD,cAC/B,IAAK,SACDvM,EAAK5kD,MAAMU,QAAQoqC,KAAKuc,QAAQ9jD,EAAOwH,WAAWomD,eACpDrX,EAAS8K,EAAK5kD,MAAMU,QAAQoqC,KAAKuc,QAAQ9jD,EAAOwH,WAAWomD,cAEpB,SAAnC5tD,EAAOwH,WAAWomD,cAA8D,cAAnC5tD,EAAOwH,WAAWomD,cAAkC5tD,EAAOwH,WAAWwnD,yBACtHhvD,EAAO7C,QAAQob,OAAO21C,UAAY,SAAS9uD,GAC1C,OAAiB,IAAVA,IAA4B,IAAVA,KAI3B2D,QAAQC,KAAK,oEAAqEhD,EAAOwH,WAAW+uC,QAErG,MAED,IAAK,WACJA,EAASv2C,EAAOwH,WAAWomD,aAC3B,MAED,IAAK,UACD5tD,EAAO7C,QAAQoqC,MAAQvnC,EAAO7C,QAAQoqC,KAAKgP,OAC7CA,EAASv2C,EAAO7C,QAAQoqC,KAAKgP,OAE1Bv2C,EAAOwH,WAAWqkC,WAAawV,EAAK5kD,MAAMU,QAAQoqC,KAAKuc,QAAQ9jD,EAAOwH,WAAWqkC,YACnF0K,EAAS8K,EAAK5kD,MAAMU,QAAQoqC,KAAKuc,QAAQ9jD,EAAOwH,WAAWqkC,WAEvB,SAAhC7rC,EAAOwH,WAAWqkC,WAAwD,cAAhC7rC,EAAOwH,WAAWqkC,WAA+B7rC,EAAOwH,WAAWwnD,yBAChHhvD,EAAO7C,QAAQob,OAAO21C,UAAY,SAAS9uD,GAC1C,OAAiB,IAAVA,IAA4B,IAAVA,KAI3Bm3C,EAAS8K,EAAK5kD,MAAMU,QAAQoqC,KAAKuc,QAAe,MAMpD,GAAGvN,EAAO,CAoCT,GAlCAwT,EAAc,CACbjlD,SAAS,WACR,YAA+B,IAAjBG,EAA+BA,EAAe,IAE7DrE,SAAS,WACR,OAAOZ,EAAOwH,WAAWxD,OAE1BtD,WAAW,WACV,OAAOguD,GAERnpD,UAAU,WACT,OAAOvF,EAAOmB,gBAEfqB,SAAS,IACD9F,KAAKD,MAEb6I,QAAQ,IACA,SAERJ,OAAO,WACN,MAAO,CACN8Z,gBAAgB,gBASnBsP,EAA2B,mBAF3BA,EAAStuB,EAAOwH,WAAWynD,oBAAsB,IAET3gC,EAAO9lB,KAAK64C,EAAK5kD,MAAOstD,GAAez7B,IAE/EqgC,EAAgBpY,EAAO/tC,KAAK9L,KAAKD,MAAMU,QAAQoqC,KAAMwiB,GA3FvD,SAAoBr2C,GACnBo7C,EAAqBp7C,IA0F0D+iC,GA7FhF,cA6FiGnoB,IAI9F,YADAvrB,QAAQC,KAAK,uCAAyCgB,EAAQ,6CAI/D,KAAK2qD,aAAyB5mD,MAE7B,YADAhF,QAAQC,KAAK,uCAAyCgB,EAAQ,0EAA2E2qD,GAK1ItN,EAAK9jD,SAAS,yBAA2ByC,EAAOwH,WAAWxD,OAAO,SAAS5E,GAC1EuvD,EAAc/nD,aAAa,mBAAgC,IAAVxH,GAAyBA,EAAQA,EAASY,EAAOwH,WAAW4wB,yBAA2BipB,EAAKnkD,SAAS,6BAIvJyxD,EAAcniD,iBAAiB,SAAS,SAASC,GAChDA,EAAEC,kBACFiiD,EAAchiD,WAGfgiD,EAAcniD,iBAAiB,SAAUC,IACxC,IAAIpF,EAAO3K,KAAKD,MAAM6F,cAAc6X,gBAAgBtE,WAIjDxO,IAFa3K,KAAKD,MAAMgM,WAAWzC,QAAQ6P,aAG7CnZ,KAAKD,MAAMgM,WAAWoS,iBAAiBxT,GACvC3K,KAAKD,MAAM6F,cAAcuY,iBAAiBxT,OAK5CunD,GAAc,EAEdC,EAAgB,SAASpiD,GACrBmiD,GACF/T,aAAa+T,GAGdA,EAAcz/B,YAAW,WACxBsnB,EAAQkY,EAAcvvD,SACrBiiD,EAAK5kD,MAAMyC,QAAQgwD,8BAGtBlvD,EAAO7C,QAAQob,OAAOw2C,cAAgBJ,EACtC3uD,EAAO7C,QAAQob,OAAOw1C,SAAWY,EAAcQ,aAAa,QAAUR,EAAcrV,aAAa,QAAQvgB,cAAgB,GACzH/4B,EAAO7C,QAAQob,OAAOu1C,QAAUa,EAAclwB,QAAQ1F,eAEN,IAA7C/4B,EAAOwH,WAAW4nD,yBAIiB,iBAAnCpvD,EAAOwH,WAAWomD,cACiB,cAAnC5tD,EAAOwH,WAAWomD,eACa,iBAA7B5tD,EAAOwH,WAAW+uC,QACU,cAA7Bv2C,EAAOwH,WAAW+uC,SACgB,IAAnCv2C,EAAOwH,WAAWomD,gBAGnBe,EAAcniD,iBAAiB,QAASqiD,GACxCF,EAAcniD,iBAAiB,SAAUqiD,GAIJ,UAAlC7uD,EAAO7C,QAAQob,OAAOw1C,UACxBY,EAAcniD,iBAAiB,UAAU,SAASC,GACjDgqC,EAAQkY,EAAcvvD,UAKa,QAAlCY,EAAO7C,QAAQob,OAAOw1C,UAA6C,OAAvBrxD,KAAKD,MAAMiuB,SACzDikC,EAAc/nD,aAAa,OAAQ,WAOD,SAAjC5G,EAAO7C,QAAQob,OAAOu1C,SAAuD,UAAjC9tD,EAAO7C,QAAQob,OAAOu1C,SAAwD,YAAjC9tD,EAAO7C,QAAQob,OAAOu1C,SACjHa,EAAcniD,iBAAiB,aAAY,SAASC,GACnDA,EAAEC,sBAKLgiD,EAAcxmD,YAAYymD,GAE1B3uD,EAAOgK,eAAe9B,YAAYwmD,GAE9BhxC,GACH2jC,EAAKmK,oBAAoBtqD,KAAKlB,GAG5B8uD,GACFA,UAIF/rD,QAAQC,KAAK,oEAAqEhD,EAAOwH,WAAWzD,OAKtG8oD,2BACCnwD,KAAK8uD,oBAAoBxqD,SAAQ,SAAShB,GACtCA,EAAO7C,QAAQob,QAAUvY,EAAO7C,QAAQob,OAAOw2C,gBACjD/uD,EAAO7C,QAAQob,OAAOw2C,cAAcloD,MAAME,QAAU,WAMvD+lD,2BACCpwD,KAAK8uD,oBAAoBxqD,SAAQ,SAAShB,GACtCA,EAAO7C,QAAQob,QAAUvY,EAAO7C,QAAQob,OAAOw2C,gBACjD/uD,EAAO7C,QAAQob,OAAOw2C,cAAcloD,MAAME,QAAU,OAMvDylD,qBAAqBxsD,GACjBA,EAAO7C,QAAQob,QAAUvY,EAAO7C,QAAQob,OAAOw2C,cACjD/uD,EAAO7C,QAAQob,OAAOw2C,cAAcpiD,QAEpC5J,QAAQC,KAAK,8DAA+DhD,EAAOY,YAKrF8rD,qBAAqB1sD,GACpB,GAAGA,EAAO7C,QAAQob,QAAUvY,EAAO7C,QAAQob,OAAOw2C,cACjD,OAAO/uD,EAAO7C,QAAQob,OAAOnZ,MAE7B2D,QAAQC,KAAK,wDAAyDhD,EAAOY,YAK/E+rD,qBAAqB3sD,EAAQZ,GACxBY,IACAA,EAAO7C,QAAQob,QAAUvY,EAAO7C,QAAQob,OAAOw2C,eACjDryD,KAAK+xD,4BAA4BzuD,EAAQZ,GAAO,GAChDY,EAAO7C,QAAQob,OAAOk+B,QAAQr3C,IAE9B2D,QAAQC,KAAK,wDAAyDhD,EAAOY,aAKhF6rD,mBAAmBzsD,GACdA,IACAA,EAAO7C,QAAQob,QAAUvY,EAAO7C,QAAQob,OAAOw2C,cACjDryD,KAAK+xD,4BAA4BzuD,EAAQA,EAAO7C,QAAQob,OAAOnZ,OAAO,GAEtE2D,QAAQC,KAAK,wDAAyDhD,EAAOY,aAKhF2sD,gBACI7wD,KAAKgvD,mBAC8B,WAAlChvD,KAAKD,MAAMyC,QAAQ+tD,WACrBvwD,KAAKC,WAAW,MAAM,GAAO,GAE7BD,KAAKi4B,aAAY,IAUpB65B,eACC9xD,KAAKgM,SAAU,EACfhM,KAAKiC,SAAS,kBAIf0wD,aACC,IAAI3mD,EAAUhM,KAAKgM,QAEnB,OADAhM,KAAKgM,SAAU,EACRA,EAIR0kD,UAAUppD,EAAO9D,EAAMd,EAAOkvB,GAC7B5xB,KAAK6uD,WAAa,GAEd15C,MAAMC,QAAQ9N,KACjBA,EAAQ,CAAC,CAACA,MAAMA,EAAO9D,KAAKA,EAAMd,MAAMA,EAAOkvB,OAAOA,KAGvD5xB,KAAK8wD,UAAUxpD,GAIhBwpD,UAAUxpD,EAAO9D,EAAMd,EAAOkvB,GAC7B,IAAI5lB,GAAU,EAEVmJ,MAAMC,QAAQ9N,KACjBA,EAAQ,CAAC,CAACA,MAAMA,EAAO9D,KAAKA,EAAMd,MAAMA,EAAOkvB,OAAOA,KAGvDtqB,EAAMhD,SAASuX,KACdA,EAAS7b,KAAK4yD,WAAW/2C,MAGxB7b,KAAK6uD,WAAWrqD,KAAKqX,GACrB7P,GAAU,MAITA,GACFhM,KAAK8xD,eAIPc,WAAW/2C,GACV,IAAIvY,EAEJ,GAAG6R,MAAMC,QAAQyG,GAChB,OAAO7b,KAAK6yD,eAAeh3C,GAG5B,IAAIyhC,GAAa,EA8BjB,MA5B0B,mBAAhBzhC,EAAOvU,MAChBg2C,EAAa,SAASp9C,GACrB,OAAO2b,EAAOvU,MAAMpH,EAAM2b,EAAOrY,MAAQ,KAIvCorD,GAAO8C,QAAQ71C,EAAOrY,MAKvB85C,GAHDh6C,EAAStD,KAAKD,MAAM6F,cAAcua,iBAAiBtE,EAAOvU,QAG5C,SAASpH,GACrB,OAAO0uD,GAAO8C,QAAQ71C,EAAOrY,MAAMqY,EAAOnZ,MAAOY,EAAOwG,cAAc5J,GAAOA,EAAM2b,EAAO+V,QAAU,KAGxF,SAAS1xB,GACrB,OAAO0uD,GAAO8C,QAAQ71C,EAAOrY,MAAMqY,EAAOnZ,MAAOxC,EAAK2b,EAAOvU,OAAQpH,EAAM2b,EAAO+V,QAAU,KAM9FvrB,QAAQC,KAAK,uDAAwDuV,EAAOrY,MAI9EqY,EAAO8b,KAAO2lB,IAEPzhC,EAAO8b,MAAO9b,EAGtBg3C,eAAenB,GACd,IAAIvsD,EAAS,GAUb,OARAusD,EAAQptD,SAASuX,KAChBA,EAAS7b,KAAK4yD,WAAW/2C,KAGxB1W,EAAOX,KAAKqX,QAIP1W,EAAOC,QAASD,EAIxBmqD,WAAW1xB,EAAKk1B,GACf,IAAI3tD,EAAS,GAgBb,OAdGy4B,IACFz4B,EAASnF,KAAK0vD,oBAGZoD,GACF3tD,EAAOb,SAAQ,SAASmR,GACA,mBAAbA,EAAKjS,OACdiS,EAAKjS,KAAO,eAKf2B,EAASA,EAAOkM,OAAOrR,KAAK+yD,eAAe/yD,KAAK6uD,WAAYiE,IAM7DC,eAAelE,EAAYiE,GAC1B,IAAI3tD,EAAS,GAoBb,OAlBA0pD,EAAWvqD,SAASuX,IACnB,IAAIpG,EAEDN,MAAMC,QAAQyG,GAChB1W,EAAOX,KAAKxE,KAAK+yD,eAAel3C,EAAQi3C,KAExCr9C,EAAO,CAACnO,MAAMuU,EAAOvU,MAAO9D,KAAKqY,EAAOrY,KAAMd,MAAMmZ,EAAOnZ,OAExDowD,GACqB,mBAAbr9C,EAAKjS,OACdiS,EAAKjS,KAAO,YAId2B,EAAOX,KAAKiR,OAIPtQ,EAIRuqD,mBACC,IAAIvqD,EAAS,GAEb,IAAI,IAAIpD,KAAO/B,KAAKg8B,cACnB72B,EAAOX,KAAK,CAAC8C,MAAMvF,EAAKyB,KAAKxD,KAAKg8B,cAAcj6B,GAAKyB,KAAMd,MAAM1C,KAAKg8B,cAAcj6B,GAAKW,QAG1F,OAAOyC,EAIR4rD,aAAazpD,EAAO9D,EAAMd,GACrByS,MAAMC,QAAQ9N,KACjBA,EAAQ,CAAC,CAACA,MAAMA,EAAO9D,KAAKA,EAAMd,MAAMA,KAGzC4E,EAAMhD,SAASuX,IACd,IAAI/J,GAAS,GAGZA,EADyB,iBAAhB+J,EAAOvU,MACRtH,KAAK6uD,WAAWr5C,WAAWlM,GAC3BuS,IAAWvS,IAGXtJ,KAAK6uD,WAAWr5C,WAAWlM,GAC3BuS,EAAOvU,QAAUgC,EAAQhC,OAASuU,EAAOrY,OAAS8F,EAAQ9F,MAASqY,EAAOnZ,QAAU4G,EAAQ5G,UAIzF,EACX1C,KAAK6uD,WAAW98C,OAAOD,EAAO,GAE9BzL,QAAQC,KAAK,2DAA4DuV,EAAOrY,SAIlFxD,KAAK8xD,eAINd,YAAYpzB,GACX59B,KAAK6uD,WAAa,GAEfjxB,GACF59B,KAAKixD,oBAGNjxD,KAAK8xD,eAINb,oBACCjxD,KAAKg8B,cAAgB,GACrBh8B,KAAK+uD,4BAA8B,KAEnC/uD,KAAK8uD,oBAAoBxqD,SAAShB,SACS,IAAhCA,EAAO7C,QAAQob,OAAOnZ,cACxBY,EAAO7C,QAAQob,OAAOnZ,MAE9BY,EAAO7C,QAAQob,OAAO01C,iBAAchxD,EACpCP,KAAK+vD,mBAAmBzsD,EAAO,IAGhCtD,KAAK8xD,eAINtP,OAAQwQ,EAAY1rD,EAAO9D,EAAMd,GAChC,IAAI0mB,EAAa,GACjBylC,EAAa,GA6Bb,OA3BI15C,MAAMC,QAAQ9N,KACjBA,EAAQ,CAAC,CAACA,MAAMA,EAAO9D,KAAKA,EAAMd,MAAMA,KAGzC4E,EAAMhD,SAASuX,KACdA,EAAS7b,KAAK4yD,WAAW/2C,KAGxBgzC,EAAWrqD,KAAKqX,MAIlB7b,KAAKD,MAAMgM,WAAWyG,KAAKlO,SAASmE,IACnC,IAAI4M,GAAQ,EAEZw5C,EAAWvqD,SAASuX,IACf7b,KAAKizD,cAAcp3C,EAAQpT,EAAIC,aAClC2M,GAAQ,MAIPA,GACF+T,EAAW5kB,KAAoB,SAAfwuD,EAAwBvqD,EAAIC,QAAQ,QAAUD,EAAIhE,mBAK7D2kB,EAIRvN,OAAOq3C,EAASxB,GACf,IAAItoC,EAAa,GACjB+pC,EAAsB,GA2BtB,OAzBGnzD,KAAKsC,mBAAmB,kBAC1BtC,KAAKoC,iBAAiB,gBAAiBpC,KAAKsvD,YAAW,IAGnB,WAAlCtvD,KAAKD,MAAMyC,QAAQ+tD,aAA4BvwD,KAAK6uD,WAAWzpD,QAAU2J,OAAOC,KAAKhP,KAAKg8B,eAAe52B,QAE3G8tD,EAAQ5uD,SAASmE,IACbzI,KAAKozD,UAAU3qD,IACjB2gB,EAAW5kB,KAAKiE,MAKlB2gB,EAAa8pC,EAAQ5rC,MAAM,GAGzBtnB,KAAKsC,mBAAmB,kBAE1B8mB,EAAW9kB,SAASmE,IACnB0qD,EAAoB3uD,KAAKiE,EAAIhE,eAAe,IAG7CzE,KAAKoC,iBAAiB,eAAgBpC,KAAKsvD,YAAW,GAAO6D,IAGvD/pC,EAIRgqC,UAAU3qD,EAAKipD,GACd,IAAIr8C,GAAQ,EACZnV,EAAOuI,EAAIC,UASX,IAAI,IAAIpB,KAPRtH,KAAK6uD,WAAWvqD,SAASuX,IACpB7b,KAAKizD,cAAcp3C,EAAQ3b,KAC9BmV,GAAQ,MAKOrV,KAAKg8B,cACjBh8B,KAAKg8B,cAAc10B,GAAOqwB,KAAKz3B,KAClCmV,GAAQ,GAIV,OAAOA,EAGR49C,cAAcp3C,EAAQ3b,GACrB,IAAImV,GAAQ,EAYZ,OAVGF,MAAMC,QAAQyG,GAChBA,EAAOvX,SAAS+uD,IACZrzD,KAAKizD,cAAcI,EAAWnzD,KAChCmV,GAAQ,MAIVA,EAAQwG,EAAO8b,KAAKz3B,GAGdmV,GAITu5C,GAAOzzB,WAAa,SAGpByzB,GAAO8C,QAAU4B,UCh3BF,CACdC,UCtBc,SAAShvD,EAAMivD,EAAiB1Z,GAC9C,OAAO95C,KAAKyzD,aAAazzD,KAAK0zD,aAAanvD,EAAK6D,YACjD,EDqBCmgC,KEvBc,SAAShkC,EAAMivD,EAAiB1Z,GAC9C,OAAOv1C,EAAK6D,UACb,EFsBCu6C,SGxBc,SAASp+C,EAAMivD,EAAiB1Z,GAE9C,OADAv1C,EAAKP,aAAamG,MAAM04C,WAAa,WAC9B7iD,KAAKyzD,aAAazzD,KAAK0zD,aAAanvD,EAAK6D,YACjD,EHsBCurD,MIzBc,SAASpvD,EAAMivD,EAAiB1Z,GAC9C,IAEAoJ,EAAQ0Q,EAASC,EAASC,EAAKpxD,EAF3BqxD,EAAWtoB,WAAWlnC,EAAK6D,YAC/B4rD,EAAO,GAGHC,EAAaT,EAAgBK,SAAW,IACxCK,EAAcV,EAAgBW,UAAY,IAC1CC,EAAeZ,EAAgBY,cAAgB,IAC/C9a,EAASka,EAAgBla,QAAU,GACnCrzC,IAAUutD,EAAgBa,YAC1BhpB,OAAiD,IAA9BmoB,EAAgBnoB,UAA4BmoB,EAAgBnoB,UAAY,EAE/F,GAAGp5B,MAAM8hD,GACR,OAAO/zD,KAAKyzD,aAAazzD,KAAK0zD,aAAanvD,EAAK6D,aAcjD,GAXG2rD,EAAW,IACbA,EAAW7hD,KAAK8J,IAAI+3C,GACpBC,EAAOI,GAGRlR,GAAuB,IAAd7X,EAAsB0oB,EAASvoB,QAAQH,GAAa0oB,EAG7DH,GAFA1Q,EAASxX,OAAOwX,GAAQn4C,MAAM,MAEb,GACjB8oD,EAAU3Q,EAAO99C,OAAS,EAAI6uD,EAAa/Q,EAAO,GAAK,IAEtB,IAA7BsQ,EAAgBW,SAGnB,IAFAL,EAAM,eAECA,EAAItxB,KAAKoxB,IACfA,EAAUA,EAAQ/hC,QAAQiiC,EAAK,KAAOI,EAAc,MAMtD,OAFAxxD,EAAQkxD,EAAUC,GAEN,IAATG,GACFtxD,EAAQ,IAAMA,EAAS,IAChBuD,EAAQvD,EAAQ42C,EAASA,EAAS52C,GAElCuD,EAAQ+tD,EAAOtxD,EAAQ42C,EAAS0a,EAAO1a,EAAS52C,CAEzD,EJjBC4xD,KK1Bc,SAAS/vD,EAAMivD,EAAiB1Z,GAC9C,IAKA55C,EALIwC,EAAQ6B,EAAK6D,WACjBmsD,EAAYf,EAAgBe,WAAa,GACzC/c,EAAWgc,EAAgBhc,SAC3B+H,EAAQ78C,EACR6L,EAAKxE,SAASC,cAAc,KAmB5B,GALGwpD,EAAgBgB,aAClBt0D,EAAOqE,EAAKmE,UACZ62C,EAbD,SAASkV,EAAc9jC,EAAMzwB,GAC5B,IACAwC,EAAQxC,EADGywB,EAAKgD,SAGhB,OAAGhD,EAAKvrB,QAA2B,iBAAV1C,EACjB+xD,EAAc9jC,EAAMjuB,GAGrBA,EAKC+xD,CAAcjB,EAAgBgB,WAAWzpD,MAAM/K,KAAKD,MAAMyC,QAAQ0M,sBAAuBhP,IAG/FszD,EAAgBjU,MAClB,cAAciU,EAAgBjU,OAC7B,IAAK,SACJA,EAAQiU,EAAgBjU,MACxB,MAED,IAAK,WACJA,EAAQiU,EAAgBjU,MAAMh7C,GAKjC,GAAGg7C,EAAM,CAMR,GALGiU,EAAgBkB,WAElBhyD,GADAxC,EAAOqE,EAAKmE,WACC8qD,EAAgBkB,WAG3BlB,EAAgBluB,IAClB,cAAckuB,EAAgBluB,KAC7B,IAAK,SACJ5iC,EAAQ8wD,EAAgBluB,IACxB,MAED,IAAK,WACJ5iC,EAAQ8wD,EAAgBluB,IAAI/gC,GAwB/B,OAnBAgK,EAAGrE,aAAa,OAAQqqD,EAAY7xD,GAEjC8wD,EAAgB7vD,QAClB4K,EAAGrE,aAAa,SAAUspD,EAAgB7vD,QAGxC6vD,EAAgBhc,WAGjBA,EADqB,mBAAZA,EACEA,EAASjzC,IAEI,IAAbizC,EAAoB,GAAKA,EAGrCjpC,EAAGrE,aAAa,WAAYstC,IAG7BjpC,EAAGnD,UAAYpL,KAAKyzD,aAAazzD,KAAK0zD,aAAanU,IAE5ChxC,EAEP,MAAO,QAET,ELlDComD,MM3Bc,SAASpwD,EAAMivD,EAAiB1Z,GAC9C,IAAIvrC,EAAKxE,SAASC,cAAc,OAChC4qD,EAAMrwD,EAAK6D,WAYX,OAVGorD,EAAgBe,YAClBK,EAAMpB,EAAgBe,UAAYhwD,EAAK6D,YAGrCorD,EAAgBqB,YAClBD,GAAYpB,EAAgBqB,WAG7BtmD,EAAGrE,aAAa,MAAO0qD,UAETpB,EAAgBhqD,QAC7B,IAAK,SACJ+E,EAAGpE,MAAMX,OAASgqD,EAAgBhqD,OAAS,KAC3C,MAED,IAAK,SACJ+E,EAAGpE,MAAMX,OAASgqD,EAAgBhqD,OAIpC,cAAcgqD,EAAgBvsD,OAC7B,IAAK,SACJsH,EAAGpE,MAAMlD,MAAQusD,EAAgBvsD,MAAQ,KACzC,MAED,IAAK,SACJsH,EAAGpE,MAAMlD,MAAQusD,EAAgBvsD,MAQnC,OAJAsH,EAAGuB,iBAAiB,QAAQ,WAC3BvL,EAAKiE,SAAS8Z,qBAGR/T,CACR,ENXC43C,UO5Bc,SAAS5hD,EAAMivD,EAAiB1Z,GAC9C,IAAIp3C,EAAQ6B,EAAK6D,WACjBkB,EAAU/E,EAAKP,aACfm9B,EAAQqyB,EAAgBhW,WACxBsX,EAAStB,EAAgBuB,YACzBvO,EAAez3C,OAAOC,KAAKwkD,GAAiB13C,SAAS,aACrDk5C,OAA8C,IAAhCxB,EAAgByB,YAA8BzB,EAAgByB,YAAc,qkBAC1FC,OAAgD,IAAjC1B,EAAgB2B,aAA+B3B,EAAgB2B,aAAe,4rBAE7F,OAAI3O,GAAgB9jD,IAAU8wD,EAAgB3M,YAAgBL,IAAkBsO,GAAUpyD,IAAqB,IAAVA,GAA4B,SAAVA,GAA8B,SAAVA,GAA8B,IAAVA,GAAyB,MAAVA,IAC7K4G,EAAQY,aAAa,gBAAgB,GAC9B8qD,GAAQ,KAEZ7zB,GAAoB,SAAVz+B,GAA8B,KAAVA,SAAgBA,GAIhD4G,EAAQY,aAAa,gBAAgB,GAC9BgrD,GAAS,KAJhB5rD,EAAQY,aAAa,eAAgB,SAC9B,GAMV,EPQCq6C,SQ7Bc,SAAShgD,EAAMivD,EAAiB1Z,GAC9C,IAOKuK,EAPDd,EAAKhvC,OAAOivC,UAAYC,MAAMD,SAC9BF,EAAckQ,EAAgBlQ,aAAe,sBAC7C8R,EAAe5B,EAAgB4B,cAAgB,sBAC/CC,OAAwD,IAAvC7B,EAAgB8B,mBAAqC9B,EAAgB8B,mBAAqB,GAC3G5yD,EAAQ6B,EAAK6D,WAEjB,QAAgB,IAANm7C,EAWT,OAPCc,EADEd,EAAGI,WAAWjhD,GACFA,EACU,QAAhB4gD,EACMC,EAAGK,QAAQlY,OAAOhpC,IAElB6gD,EAAGM,WAAWnY,OAAOhpC,GAAQ4gD,IAG7BiS,SACX/B,EAAgBgC,WAClBnR,EAAcA,EAAYoR,QAAQjC,EAAgBgC,WAG5CnR,EAAYP,SAASsR,KAEb,IAAZC,GAAqB3yD,EAEI,mBAAZ2yD,EACRA,EAAQ3yD,GAER2yD,EAJA3yD,EAQT2D,QAAQ0N,MAAM,+DAEhB,ERNC2hD,aS9Bc,SAAUnxD,EAAMivD,EAAiB1Z,GAC/C,IAUKuK,EAVDd,EAAKhvC,OAAOivC,UAAYC,MAAMD,SAC9BF,EAAckQ,EAAgBlQ,aAAe,sBAC7C+R,OAAwD,IAAvC7B,EAAgB8B,mBAAqC9B,EAAgB8B,mBAAqB,GAC3GK,OAA2C,IAA3BnC,EAAgBmC,QAAyBnC,EAAgBmC,OACzEjhB,OAAuC,IAAzB8e,EAAgB9e,KAAuB8e,EAAgB9e,KAAO,OAC5EkhB,OAA+C,IAA7BpC,EAAgBoC,UAA2BpC,EAAgBoC,SAC7EvS,OAAuC,IAAzBmQ,EAAgBnQ,KAAuBmQ,EAAgBnQ,KAAOE,EAAGsS,MAC/EnzD,EAAQ6B,EAAK6D,WAEjB,QAAgB,IAANm7C,EAWT,OAPCc,EADEd,EAAGI,WAAWjhD,GACFA,EACU,QAAhB4gD,EACMC,EAAGK,QAAQlY,OAAOhpC,IAElB6gD,EAAGM,WAAWnY,OAAOhpC,GAAQ4gD,IAG5BiS,QACZK,EACKvR,EAAYtoC,KAAKsnC,EAAM3O,GAAMohB,WAAcH,EAAS,IAAMA,EAAS,IAEnE/lD,SAASy0C,EAAYtoC,KAAKsnC,EAAM3O,GAAMA,KAAUihB,EAAS,IAAMA,EAAS,KAIhE,IAAZN,EACI3yD,EACsB,mBAAZ2yD,EACVA,EAAQ3yD,GAER2yD,EAIThvD,QAAQ0N,MAAM,mEAEhB,ETTC45C,OU/Bc,SAAUppD,EAAMivD,EAAiB1Z,GAC/C,IAAIp3C,EAAQ6B,EAAK6D,WAEjB,YAAsC,IAA3BorD,EAAgB9wD,IAC1B2D,QAAQC,KAAK,6BAA+B5D,GACrCA,GAGD8wD,EAAgB9wD,EACxB,EVuBCgiD,KWhCc,SAASngD,EAAMivD,EAAiB1Z,GAC9C,IAAIp3C,EAAQ6B,EAAK6D,WACjBkB,EAAU/E,EAAKP,aACf4gD,EAAW4O,GAAmBA,EAAgBzO,MAAQyO,EAAgBzO,MAAQ,EAC9EA,EAAQh7C,SAASC,cAAc,QAC/B06C,EAAO36C,SAASk7C,gBAAgB,6BAA8B,OAK9DF,EAAM56C,MAAMqG,cAAgB,SAG5Bk0C,EAAKx6C,aAAa,QAAS,MAC3Bw6C,EAAKx6C,aAAa,SAAU,MAC5Bw6C,EAAKx6C,aAAa,UAAW,eAC7Bw6C,EAAKx6C,aAAa,YAAa,YAC/Bw6C,EAAKv6C,MAAMoyC,QAAU,QAErB75C,EAAQA,IAAUuP,MAAMvP,GAASkN,SAASlN,GAAS,EAEnDA,EAAQwP,KAAKG,IAAI,EAAGH,KAAKI,IAAI5P,EAAOkiD,IAEpC,IAAI,IAAI32C,EAAE,EAAEA,GAAI22C,EAAS32C,IAAI,CAC5B,IAAIo3C,EAAWX,EAAKvS,WAAU,GAC9BkT,EAASj6C,UAAY6C,GAAKvL,EAnBd,0SACE,0SAoBdqiD,EAAMv5C,YAAY65C,GASnB,OANA/7C,EAAQa,MAAM04C,WAAa,SAC3Bv5C,EAAQa,MAAMo7C,SAAW,SACzBj8C,EAAQa,MAAMq7C,aAAe,WAE7Bl8C,EAAQY,aAAa,aAAcxH,GAE5BqiD,CACR,EXJCgR,QYjCc,SAASxxD,EAAMivD,EAAiB1Z,GAC9C,IAMA8L,EAASoQ,EANLtzD,EAAQ1C,KAAK0zD,aAAanvD,EAAK6D,aAAe,EAClDmG,EAAKxE,SAASC,cAAc,QAC5BqI,EAAMmhD,GAAmBA,EAAgBnhD,IAAMmhD,EAAgBnhD,IAAM,IACrEC,EAAMkhD,GAAmBA,EAAgBlhD,IAAMkhD,EAAgBlhD,IAAM,EACrE2jD,EAASzC,QAAoD,IAA1BA,EAAgB5F,MAAwB4F,EAAgB5F,MAAQ,CAAC,MAAO,SAAU,SACrHA,EAAQ,UAGR,IAAG37C,MAAMvP,SAAqC,IAApB6B,EAAK6D,WAA/B,CAeA,OAXAmG,EAAGvD,UAAUC,IAAI,2BAGjB+qD,EAAevqB,WAAW/oC,IAAU2P,EAAMo5B,WAAW/oC,GAAS2P,EAC9D2jD,EAAevqB,WAAWuqB,IAAiB1jD,EAAMm5B,WAAWuqB,GAAgB1jD,EAG5EszC,GAAWvzC,EAAMC,GAAO,IACxB0jD,EAAe9jD,KAAK8zC,OAAOgQ,EAAe1jD,GAAOszC,UAGnCqQ,GACb,IAAK,SACJrI,EAAQqI,EACR,MACD,IAAK,WACJrI,EAAQqI,EAAOvzD,GACf,MACD,IAAK,SACJ,GAAGyS,MAAMC,QAAQ6gD,GAAQ,CACxB,IAAIvhB,EAAO,IAAMuhB,EAAO7wD,OACpB0M,EAAQI,KAAKC,MAAM6jD,EAAethB,GAEtC5iC,EAAQI,KAAKI,IAAIR,EAAOmkD,EAAO7wD,OAAS,GAExCwoD,EAAQqI,EADRnkD,EAAQI,KAAKG,IAAIP,EAAO,IAExB,OAMH,OAFAvD,EAAGpE,MAAM87C,gBAAkB2H,EAEpBr/C,EACR,EZZCk3C,SahCc,SAASlhD,EAAMivD,EAAkB,GAAI1Z,GACnD,IAKA8L,EAASoQ,EAAcpI,EAAOsI,EAAQC,EALlCzzD,EAAQ1C,KAAK0zD,aAAanvD,EAAK6D,aAAe,EAClDkB,EAAU/E,EAAKP,aACfqO,EAAMmhD,EAAgBnhD,IAAMmhD,EAAgBnhD,IAAM,IAClDC,EAAMkhD,EAAgBlhD,IAAMkhD,EAAgBlhD,IAAM,EAClD8jD,EAAc5C,EAAgB4C,YAAc5C,EAAgB4C,YAAc,SAY1E,OARAJ,EAAevqB,WAAW/oC,IAAU2P,EAAMo5B,WAAW/oC,GAAS2P,EAC9D2jD,EAAevqB,WAAWuqB,IAAiB1jD,EAAMm5B,WAAWuqB,GAAgB1jD,EAG5EszC,GAAWvzC,EAAMC,GAAO,IACxB0jD,EAAe9jD,KAAK8zC,OAAOgQ,EAAe1jD,GAAOszC,UAGnC4N,EAAgB5F,OAC7B,IAAK,SACJA,EAAQ4F,EAAgB5F,MACxB,MACD,IAAK,WACJA,EAAQ4F,EAAgB5F,MAAMlrD,GAC9B,MACD,IAAK,SACJ,GAAGyS,MAAMC,QAAQo+C,EAAgB5F,OAAO,CACvC,IAAIlZ,EAAO,IAAM8e,EAAgB5F,MAAMxoD,OACnC0M,EAAQI,KAAKC,MAAM6jD,EAAethB,GAEtC5iC,EAAQI,KAAKI,IAAIR,EAAO0hD,EAAgB5F,MAAMxoD,OAAS,GACvD0M,EAAQI,KAAKG,IAAIP,EAAO,GACxB87C,EAAQ4F,EAAgB5F,MAAM97C,GAC9B,MAEF,QACC87C,EAAQ,UAIV,cAAc4F,EAAgB0C,QAC7B,IAAK,SACJA,EAAS1C,EAAgB0C,OACzB,MACD,IAAK,WACJA,EAAS1C,EAAgB0C,OAAOxzD,GAChC,MACD,IAAK,UACJwzD,EAASxzD,EACT,MACD,QACCwzD,GAAS,EAIX,cAAc1C,EAAgB2C,aAC7B,IAAK,SACJA,EAAc3C,EAAgB2C,YAC9B,MACD,IAAK,WACJA,EAAc3C,EAAgB2C,YAAYzzD,GAC1C,MACD,IAAK,SACJ,GAAGyS,MAAMC,QAAQo+C,EAAgB2C,aAAa,CAC7C,IAAIzhB,EAAO,IAAM8e,EAAgB2C,YAAY/wD,OACzC0M,EAAQI,KAAKC,MAAM6jD,EAAethB,GAEtC5iC,EAAQI,KAAKI,IAAIR,EAAO0hD,EAAgB2C,YAAY/wD,OAAS,GAC7D0M,EAAQI,KAAKG,IAAIP,EAAO,GACxBqkD,EAAc3C,EAAgB2C,YAAYrkD,GAE3C,MACD,QACCqkD,EAAc,OAGhB7sD,EAAQa,MAAM1C,SAAW,OACzB6B,EAAQa,MAAMzE,SAAW,WAEzB4D,EAAQY,aAAa,aAAc8rD,GAEnC,IAAIK,EAAQtsD,SAASC,cAAc,OACnCqsD,EAAMlsD,MAAME,QAAU,eACtBgsD,EAAMlsD,MAAMlD,MAAQ+uD,EAAe,IACnCK,EAAMlsD,MAAM87C,gBAAkB2H,EAC9ByI,EAAMlsD,MAAMX,OAAS,OAErB6sD,EAAMnsD,aAAa,WAAYmI,GAC/BgkD,EAAMnsD,aAAa,WAAYoI,GAE/B,IAAIgkD,EAAevsD,SAASC,cAAc,OAK1C,GAJAssD,EAAansD,MAAMzE,SAAW,WAC9B4wD,EAAansD,MAAMlD,MAAQ,OAC3BqvD,EAAansD,MAAMX,OAAS,OAEzB0sD,EAAO,CACT,IAAIK,EAAWxsD,SAASC,cAAc,OACtCusD,EAASpsD,MAAMzE,SAAW,WAC1B6wD,EAASpsD,MAAMI,IAAM,EACrBgsD,EAASpsD,MAAMQ,KAAO,EACtB4rD,EAASpsD,MAAMC,UAAYgsD,EAC3BG,EAASpsD,MAAMlD,MAAQ,OACvBsvD,EAASpsD,MAAMyjD,MAAQuI,EACvBI,EAASnrD,UAAY8qD,EA2BtB,OAxBApc,GAAW,WAGV,KAAKv1C,aAAgB2D,GAAe,CACnC,IAAIsuD,EAAWzsD,SAASC,cAAc,OACtCwsD,EAASrsD,MAAMzE,SAAW,WAC1B8wD,EAASrsD,MAAMI,IAAM,MACrBisD,EAASrsD,MAAMK,OAAS,MACxBgsD,EAASrsD,MAAMQ,KAAO,MACtB6rD,EAASrsD,MAAMS,MAAQ,MAEvBtB,EAAQkC,YAAYgrD,GAEpBltD,EAAUktD,EAGXltD,EAAQkC,YAAY8qD,GACpBA,EAAa9qD,YAAY6qD,GAEtBH,GACFI,EAAa9qD,YAAY+qD,MAIpB,EACR,EbjGC3I,McnCc,SAASrpD,EAAMivD,EAAiB1Z,GAE9C,OADAv1C,EAAKP,aAAamG,MAAM87C,gBAAkBjmD,KAAK0zD,aAAanvD,EAAK6D,YAC1D,EACR,EdiCCquD,WepCc,SAASlyD,EAAMivD,EAAiB1Z,GAC9C,MAAO,okBACR,EfmCC4c,YgBrCc,SAASnyD,EAAMivD,EAAiB1Z,GAC9C,MAAO,0rBACR,EhBoCC6c,OiBtCc,SAASpyD,EAAMivD,EAAiB1Z,GAC9C,IAAIthB,EAAUzuB,SAASC,cAAc,QAOrC,OANUzF,EAAKiE,SAEX2Z,eAAezc,IAClB8yB,EAAQo+B,UAAYlxD,CAAQ,IAGtB8yB,CACR,EjB8BCz0B,OkBvCc,SAASQ,EAAMivD,EAAiB1Z,GAE9C,OADAv1C,EAAKP,aAAagH,UAAUC,IAAI,wBACzB,kLACR,ElBqCC4rD,mBmBxCc,SAAStyD,EAAMivD,EAAiB1Z,GAC9C,IAAIvrC,EAAKxE,SAASC,cAAc,OAChCyQ,EAASlW,EAAKiE,SAASyZ,KAAKxhB,QAAQi4B,iBAepC,SAASo+B,EAAWC,GACnB,IAAI7mB,EAAaz1B,EAAOnR,QAExBmR,EAAOq0B,KAAOioB,EAEX7mB,IAECz1B,EAAOq0B,MACTvgC,EAAGvD,UAAUC,IAAI,QACjBilC,EAAW/lC,MAAME,QAAU,KAE3BkE,EAAGvD,UAAUgN,OAAO,QACpBk4B,EAAW/lC,MAAME,QAAU,SAa9B,OAtCAkE,EAAGvD,UAAUC,IAAI,wCAEjBsD,EAAGnD,UAAY,gdASf7G,EAAKP,aAAagH,UAAUC,IAAI,wBAmBhCsD,EAAGuB,iBAAiB,SAAS,SAASC,GACrCA,EAAEkvC,2BACF6X,GAAYr8C,EAAOq0B,MACnBvqC,EAAKuB,WAAWiG,WAAWkU,qBAG5B62C,EAAWr8C,EAAOq0B,MAEXvgC,CACR,EnBFCyoD,aoBvCc,SAASzyD,EAAMivD,EAAiB1Z,GAC9C,IAAImd,EAAWltD,SAASC,cAAc,SAClCm+B,GAAU,EAMd,GAJA8uB,EAASzzD,KAAO,WAEhByzD,EAAS/sD,aAAa,aAAc,cAEjClK,KAAKD,MAAM44B,UAAU,aAAa,GAMpC,GAJAs+B,EAASnnD,iBAAiB,SAAUC,IACnCA,EAAEC,iBAAiB,IAGK,mBAAfzL,EAAKiE,OAAqB,CACnC,IAAIC,EAAMlE,EAAKiE,SAEZC,aAAeuZ,GAEjBi1C,EAASnnD,iBAAiB,UAAWC,IACU,UAA3C/P,KAAKD,MAAMyC,QAAQ00D,qBACjB/uB,EAGHA,GAAU,EAGX1/B,EAAI0uD,kBAIwC,UAA3Cn3D,KAAKD,MAAMyC,QAAQ00D,qBACrBD,EAASnnD,iBAAiB,SAAUC,IACnCo4B,GAAU,EACVnoC,KAAKD,MAAMU,QAAQsqD,UAAUqM,sBAAsB3uD,EAAIwZ,KAAMlS,EAAE,IAIjEknD,EAASrQ,QAAUn+C,EAAI4uD,YAAc5uD,EAAI4uD,aACzCr3D,KAAKD,MAAMU,QAAQsqD,UAAUuM,0BAA0B7uD,EAAKwuD,IAE5DA,EAAW,QAGZA,EAASnnD,iBAAiB,UAAWC,IACjC/P,KAAKD,MAAMU,QAAQsqD,UAAUC,aAAa5lD,OAC5CpF,KAAKD,MAAMw3D,cAEXv3D,KAAKD,MAAMgrD,UAAUyI,EAAgBtrB,aAIvCloC,KAAKD,MAAMU,QAAQsqD,UAAUyM,6BAA6BP,GAI5D,OAAOA,CACR,GCvDA,MAAMQ,WAAengC,EAEpBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKy3B,qBAAqB,aAC1Bz3B,KAAKy3B,qBAAqB,mBAE1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,wBAC1Bz3B,KAAKy3B,qBAAqB,sBAC1Bz3B,KAAKy3B,qBAAqB,4BAC1Bz3B,KAAKy3B,qBAAqB,uBAC1Bz3B,KAAKy3B,qBAAqB,6BAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,wBAG3BhhB,aACCzW,KAAK2B,UAAU,cAAe3B,KAAK03D,YAAY52D,KAAKd,OACpDA,KAAK2B,UAAU,gBAAiB3B,KAAKyL,aAAa3K,KAAKd,OACvDA,KAAK2B,UAAU,gBAAiB3B,KAAKg7B,iBAAiBl6B,KAAKd,OAC3DA,KAAK2B,UAAU,gBAAiB3B,KAAK23D,aAAa72D,KAAKd,OAIxDg7B,iBAAiB13B,GAChBA,EAAO7C,QAAQyuC,OAASlvC,KAAK43D,gBAAgBt0D,EAAQ,SAEN,IAArCA,EAAOwH,WAAW+sD,iBAC3Bv0D,EAAO7C,QAAQyuC,OAAO4oB,MAAQ93D,KAAK43D,gBAAgBt0D,EAAQ,eAGT,IAAzCA,EAAOwH,WAAWitD,qBAC3Bz0D,EAAO7C,QAAQyuC,OAAO9G,UAAYpoC,KAAK43D,gBAAgBt0D,EAAQ,mBAGZ,IAA1CA,EAAOwH,WAAWktD,sBAC3B10D,EAAO7C,QAAQyuC,OAAO+oB,WAAaj4D,KAAK43D,gBAAgBt0D,EAAQ,eAIlEs0D,gBAAgBt0D,EAAQE,GACvB,IAAIiX,EAAS,CAACmX,OAAOtuB,EAAOwH,WAAW,YAActH,EAAO,WAAa,IACzE2rC,EAAY7rC,EAAOwH,WAAW,YAActH,GAG5C,cAAc2rC,GACb,IAAK,SACDsoB,GAAOS,WAAW/oB,GACpB10B,EAAO00B,UAAYsoB,GAAOS,WAAW/oB,IAErC9oC,QAAQC,KAAK,8CAA+C6oC,GAC5D10B,EAAO00B,UAAYsoB,GAAOS,WAAW3E,WAEtC,MAED,IAAK,WACJ94C,EAAO00B,UAAYA,EACnB,MAED,QACC10B,EAAO00B,UAAYsoB,GAAOS,WAAW3E,UAIvC,OAAO94C,EAGRhP,aAAalH,GACTA,EAAK9D,QAAQyuC,QAAU3qC,EAAK9D,QAAQyuC,OAAO1Z,mBAAqBjxB,EAAK9D,QAAQyuC,OAAO5rB,WACtF/e,EAAK9D,QAAQyuC,OAAO1Z,mBACpBjxB,EAAK9D,QAAQyuC,OAAO5rB,UAAW,GAKjCq0C,aAAar0D,EAAQ+D,EAAOkH,GAC3B,IAAI4gC,EAAWvd,EAAQkoB,EAAYqe,EAEnC,OAAG70D,EAAOwH,WAAWstD,gBACpBjpB,EAAYnvC,KAAKovC,aAAa9rC,EAAOwH,WAAWstD,gBAEhDte,EAAc9iC,IACb1T,EAAOuK,uBAAyBmJ,CAAQ,EAGzCmhD,EAAW,CACV/vD,SAAS,WACR,OAAOf,GAERrD,WAAW,WACV,OAAOuK,GAER3F,QAAQ,WACP,MAAO,UAERC,UAAU,WACT,OAAOvF,EAAOmB,gBAEfqB,SAAS,IACD9F,KAAKD,OAMd6xB,EAA2B,mBAF3BA,EAAStuB,EAAOwH,WAAWutD,sBAAwB,IAEXzmC,IAAWA,EAE5Cud,EAAUrjC,KAAK9L,KAAMm4D,EAAUvmC,EAAQkoB,IAEvCzyC,EAMTqwD,YAAYnzD,GACX,IAAIkF,EAAYlF,EAAKE,eACrBmtB,EAAsD,mBAAtCrtB,EAAKjB,OAAO7C,QAAQyuC,OAAOtd,OAAwBrtB,EAAKjB,OAAO7C,QAAQyuC,OAAOtd,OAAOnoB,GAAalF,EAAKjB,OAAO7C,QAAQyuC,OAAOtd,OAW7I,OAAOrtB,EAAKjB,OAAO7C,QAAQyuC,OAAOC,UAAUrjC,KAAK9L,KAAMyJ,EAAWmoB,GATlE,SAAoB5a,GACfzS,EAAK9D,QAAQyuC,SAChB3qC,EAAK9D,QAAQyuC,OAAS,IAGvB3qC,EAAK9D,QAAQyuC,OAAO1Z,iBAAmBxe,EACvCzS,EAAK9D,QAAQyuC,OAAO5rB,UAAW,KAMjCiqC,kBAAkBhpD,EAAMf,GACvB,IACAouB,EADIud,EAAY5qC,EAAKjB,OAAO7C,QAAQyuC,OAAO1rC,GAG3C,GAAG2rC,EAAU,CAGZ,SAAS2K,EAAW9iC,GACfzS,EAAK9D,QAAQyuC,SAChB3qC,EAAK9D,QAAQyuC,OAAS,IAGvB3qC,EAAK9D,QAAQyuC,OAAO1Z,iBAAmBxe,EACvCzS,EAAK9D,QAAQyuC,OAAO5rB,UAAW,EAGhC,OAXAsO,EAAqC,mBAArBud,EAAUvd,OAAwBud,EAAUvd,OAAOrtB,EAAKE,gBAAkB0qC,EAAUvd,OAW7Fud,EAAUA,UAAUrjC,KAAK9L,KAAMuE,EAAKE,eAAgBmtB,EAAQkoB,GAGnE,OAAO95C,KAAK03D,YAAYnzD,GAI1BmvD,aAAahxD,GACZ,GAAGA,EAAM,CACR,IAAI41D,EAAY,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,UAGN,OAAO5sB,OAAOhpC,GAAOmvB,QAAQ,eAAe,SAAUmkB,GACrD,OAAOsiB,EAAUtiB,MAGlB,OAAOtzC,EAIT+wD,aAAa/wD,GACZ,OAAOA,SAA4D,KAAVA,EAAe,SAAWA,EAIpF0sC,aAAaD,GACZ,cAAcA,GACb,IAAK,SACDsoB,GAAOS,WAAW/oB,GACpBA,EAAYsoB,GAAOS,WAAW/oB,IAE9B9oC,QAAQC,KAAK,8CAA+C6oC,GAC5DA,EAAYsoB,GAAOS,WAAW3E,WAE/B,MAED,IAAK,WAEJ,MAED,QACCpkB,EAAYsoB,GAAOS,WAAW3E,UAIhC,OAAOpkB,GAITsoB,GAAOt8B,WAAa,SAGpBs8B,GAAOS,WAAaK,GCnNpB,MAAMC,WAAsBlhC,EAE3Bx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKmd,YAAc,GACnBnd,KAAKqd,aAAe,GACpBrd,KAAKy4D,mBAAqB,OAC1Bz4D,KAAK0gB,QAAS,EACd1gB,KAAKmoC,SAAU,EAEfnoC,KAAKy3B,qBAAqB,UAI3ByR,QACClpC,KAAKy4D,mBAAqB,OAC1Bz4D,KAAKmd,YAAc,GACnBnd,KAAKqd,aAAe,GACpBrd,KAAK0gB,QAAS,EAGfjK,aACCzW,KAAK2B,UAAU,cAAe3B,KAAK04D,WAAW53D,KAAKd,OACnDA,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OACzDA,KAAK2B,UAAU,eAAgB3B,KAAKuB,OAAOT,KAAKd,OAChDA,KAAK2B,UAAU,mBAAoB3B,KAAKqxC,UAAUvwC,KAAKd,OACvDA,KAAK2B,UAAU,eAAgB3B,KAAKuB,OAAOT,KAAKd,OAChDA,KAAK2B,UAAU,kBAAmB3B,KAAKkpC,MAAMpoC,KAAKd,OAElDA,KAAK2B,UAAU,aAAc3B,KAAK24D,oBAAoB73D,KAAKd,OAC3DA,KAAK2B,UAAU,gBAAiB3B,KAAK24D,oBAAoB73D,KAAKd,OAE9DA,KAAK2B,UAAU,eAAgB3B,KAAKuB,OAAOT,KAAKd,OAChDA,KAAK2B,UAAU,oBAAqB3B,KAAK44D,YAAY93D,KAAKd,OAC1DA,KAAK2B,UAAU,mBAAoB3B,KAAK64D,cAAc/3D,KAAKd,OAC3DA,KAAK2B,UAAU,qBAAsB3B,KAAK6sC,mBAAmB/rC,KAAKd,OAGnE44D,cACC54D,KAAKmoC,SAAU,EAGhB0wB,gBACC74D,KAAKmoC,SAAU,EAGhBuwB,WAAWn0D,GACVvE,KAAK2L,cAAcpH,EAAK+E,QAAS/E,EAAKjB,QAGvCq1D,sBACC34D,KAAKkpC,QAELlpC,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAShB,IAChDtD,KAAKg7B,iBAAiB13B,EAAO,IAK/B03B,iBAAiB13B,GAChB,IAAImX,EAAS,CAACkM,OAAO,EAAGmyC,MAAK,GAEzBx1D,EAAOuB,UAEP7E,KAAK+4D,YAAYz1D,IAEnBmX,EAAO/U,SAAW1F,KAAKy4D,mBAEO,QAA3Bz4D,KAAKy4D,mBACPz4D,KAAKmd,YAAY3Y,KAAKlB,GAEtBtD,KAAKqd,aAAa3H,QAAQpS,GAG3BtD,KAAK0gB,QAAS,EAEdpd,EAAO7C,QAAQia,OAASD,GAExBza,KAAKy4D,mBAAqB,SAK7BM,YAAYz1D,GAKX,OAJGA,EAAOgC,OAAOT,SAAWvB,EAAOwH,WAAW4P,QAC7CrU,QAAQC,KAAK,yGAGXhD,EAAOgC,OAAOT,QACT7E,KAAK+4D,YAAYz1D,EAAOgC,QAExBhC,EAAOwH,WAAW4P,OAK3Bs+C,iBACIh5D,KAAKD,MAAM44B,UAAU,iBACpB34B,KAAKD,MAAMU,QAAQitC,YAAYtB,gBAAkBpsC,KAAKD,MAAMU,QAAQitC,YAAYpnB,QAClFtmB,KAAKqxC,UAAUrxC,KAAKD,MAAMU,QAAQitC,YAAYpnB,QAG5CtmB,KAAKD,MAAMU,QAAQitC,YAAYrB,gBAAkBrsC,KAAKD,MAAMU,QAAQitC,YAAYvB,QAClFnsC,KAAKqxC,UAAUrxC,KAAKD,MAAMU,QAAQitC,YAAYvB,QAG5CnsC,KAAKD,MAAM44B,UAAU,cACvB34B,KAAKi5D,iBAAiBj5D,KAAKD,MAAMU,QAAQ8tC,UAAUiB,cAKtDypB,iBAAiBj8B,GAChBA,EAAO14B,SAAS0gB,IACZA,EAAM9X,MAAM3C,KACdvK,KAAKqxC,UAAUrsB,EAAM9X,MAAM3C,KAGzBya,EAAM9X,MAAM1C,QACdxK,KAAKqxC,UAAUrsB,EAAM9X,MAAM1C,QAGzBwa,EAAMk0C,WAAal0C,EAAMk0C,UAAU9zD,QACrCpF,KAAKi5D,iBAAiBj0C,EAAMk0C,cAM/BC,qBAAqBC,GACpB,IAAIC,EAAc,GAEd3P,EAAa,EACbC,EAAc,EAElB3pD,KAAKmd,YAAY7Y,SAAQ,CAAChB,EAAQ2K,KAcjC,GAbA3K,EAAO7C,QAAQia,OAAO4+C,YAAc5P,EACpCpmD,EAAO7C,QAAQia,OAAOiM,OAASrjB,EAAO7C,QAAQia,OAAO4+C,YAAc,KAEhEh2D,EAAOqB,UACT+kD,GAAcpmD,EAAOyD,YAGnBkH,GAAKjO,KAAKmd,YAAY/X,OAAS,EACjC9B,EAAO7C,QAAQia,OAAOo+C,MAAO,EAE7Bx1D,EAAO7C,QAAQia,OAAOo+C,MAAO,EAG3Bx1D,EAAOgC,OAAOT,QAAQ,CACxB,IAAIkyB,EAAW/2B,KAAKu5D,yBAAyBj2D,GACzC+1D,EAAYv9C,SAASib,KACxB/2B,KAAK2L,cAAcorB,EAAUzzB,GAC7B+1D,EAAY70D,KAAKuyB,IAGfzzB,EAAO7C,QAAQia,OAAOo+C,MACxB/hC,EAAS/rB,UAAUC,IAAI,oBAAsB3H,EAAO7C,QAAQia,OAAOhV,eAGpE1F,KAAK2L,cAAcrI,EAAOU,aAAcV,GAGtC81D,GACF91D,EAAOe,MAAMC,SAASC,IACrBvE,KAAK2L,cAAcpH,EAAKP,YAAW,GAAOV,EAAO,OAKpDtD,KAAKqd,aAAa/Y,SAAQ,CAAChB,EAAQ2K,KAElC3K,EAAO7C,QAAQia,OAAO4+C,YAAc3P,EACpCrmD,EAAO7C,QAAQia,OAAOiM,OAASrjB,EAAO7C,QAAQia,OAAO4+C,YAAc,KAEhEh2D,EAAOqB,UACTglD,GAAermD,EAAOyD,YAGpBkH,GAAKjO,KAAKqd,aAAajY,OAAS,EAClC9B,EAAO7C,QAAQia,OAAOo+C,MAAO,EAE7Bx1D,EAAO7C,QAAQia,OAAOo+C,MAAO,EAG3Bx1D,EAAOgC,OAAOT,QAChB7E,KAAK2L,cAAc3L,KAAKu5D,yBAAyBj2D,GAASA,GAE1DtD,KAAK2L,cAAcrI,EAAOU,aAAcV,GAGtC81D,GACF91D,EAAOe,MAAMC,SAASC,IACrBvE,KAAK2L,cAAcpH,EAAKP,YAAW,GAAOV,EAAO,OAMrDi2D,yBAAyBj2D,GACxB,OAAOA,EAAOgC,OAAOT,QAAU7E,KAAKu5D,yBAAyBj2D,EAAOgC,QAAUhC,EAAOU,aAItFzC,SACIvB,KAAK0gB,SAAW1gB,KAAKmoC,UAGvBnoC,KAAKm5D,uBAELn5D,KAAKkb,mBAELlb,KAAKg5D,kBAIP99C,mBACC,IAAIvD,EAAc3X,KAAKD,MAAMgM,WAAW2P,gBAAe,GACvC1b,KAAKD,MAAMgM,WAAW6P,UAAUC,QAAOpT,IAAQkP,EAAYmE,SAASrT,KAE1EnE,SAASmE,IAClBA,EAAI4S,cAAc,IAGnB1D,EAAYrT,SAASmE,IACJ,QAAbA,EAAIjF,MACNxD,KAAKqxC,UAAU5oC,MAKlB4oC,UAAU5oC,GACwB,gBAA9BzI,KAAKD,MAAMyC,QAAQjB,QAA4BvB,KAAKqd,aAAajY,SACnEpF,KAAKD,MAAMgM,WAAW+d,kBAAkB3f,MAAM1C,SAAW,eAAiBzH,KAAK2pD,YAAc,KAG9F3pD,KAAKmd,YAAY7Y,SAAShB,IACzB,IAAIiB,EAAOkE,EAAIiU,QAAQpZ,GAEpBiB,GACFvE,KAAK2L,cAAcpH,EAAKP,YAAW,GAAOV,MAI5CtD,KAAKqd,aAAa/Y,SAAShB,IAC1B,IAAIiB,EAAOkE,EAAIiU,QAAQpZ,GAEpBiB,GACFvE,KAAK2L,cAAcpH,EAAKP,YAAW,GAAOV,MAK7CqI,cAAcrC,EAAShG,GACtB,IAAIoC,EAEDpC,EAAO7C,QAAQia,QAAUpR,IAC3BA,EAAQa,MAAMzE,SAAW,SAGxBA,EADE1F,KAAKD,MAAMse,IACiC,SAAnC/a,EAAO7C,QAAQia,OAAOhV,SAAsB,QAAU,OAEtDpC,EAAO7C,QAAQia,OAAOhV,SAGlC4D,EAAQa,MAAMzE,GAAYpC,EAAO7C,QAAQia,OAAOiM,OAEhDrd,EAAQ0B,UAAUC,IAAI,oBAEnB3H,EAAO7C,QAAQia,OAAOo+C,MACxBxvD,EAAQ0B,UAAUC,IAAI,oBAAsB3H,EAAO7C,QAAQia,OAAOhV,WAKrEmnC,mBAAmB5lC,GACfjH,KAAKqd,aAAajY,SACpBpF,KAAKD,MAAM6F,cAAcoZ,qBAAqB7U,MAAMlD,MAAQ,eAAiBA,EAAQ,OAIvFuyD,WAAW10D,EAASgN,GACnB,IAAI7K,EAAQ,EAEZ,IAAK,IAAIgH,EAAI,EAAGA,EAAI6D,EAAO7D,IACvBnJ,EAAQmJ,GAAGtJ,UACbsC,GAASnC,EAAQmJ,GAAGlH,YAItB,OAAOE,GAITuxD,GAAcr9B,WAAa,gBCvS3B,MAAMs+B,WAAmBniC,EAExBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKisC,WAAaliC,SAASC,cAAc,OACzChK,KAAKwS,KAAO,GAGZxS,KAAK63B,0BAA0B,MAAO,SAAU73B,KAAK05D,UAAU54D,KAAKd,OACpEA,KAAK63B,0BAA0B,MAAO,WAAY73B,KAAK25D,YAAY74D,KAAKd,OACxEA,KAAK63B,0BAA0B,MAAO,WAAY73B,KAAK45D,YAAY94D,KAAKd,OAGxEA,KAAKw3B,oBAAoB,kBAAmB,MAC5Cx3B,KAAKw3B,oBAAoB,cAAc,GAGxC/gB,aACCzW,KAAKwS,KAAO,GAEZxS,KAAKisC,WAAWjhC,UAAUC,IAAI,gCAG9BjL,KAAKD,MAAM6F,cAAcoZ,qBAAqBrC,aAAa3c,KAAKisC,WAAYjsC,KAAKD,MAAM6F,cAAc4X,eAAeZ,aAEpH5c,KAAK2B,UAAU,eAAgB3B,KAAK65D,UAAU/4D,KAAKd,OACnDA,KAAK2B,UAAU,eAAgB3B,KAAK2X,YAAY7W,KAAKd,OAErDA,KAAK+3B,uBAAuB/3B,KAAK4b,QAAQ9a,KAAKd,MAAO,IAElDA,KAAKD,MAAMyC,QAAQs3D,aACrB95D,KAAK2B,UAAU,iBAAkB3B,KAAK+5D,eAAej5D,KAAKd,OAC1DA,KAAK2B,UAAU,YAAa3B,KAAKmb,cAAcra,KAAKd,OACpDA,KAAK2B,UAAU,kBAAmB3B,KAAK8sC,kBAAkBhsC,KAAKd,OAC9DA,KAAK2B,UAAU,iBAAkB3B,KAAK8sC,kBAAkBhsC,KAAKd,OAC7DA,KAAK2B,UAAU,cAAe3B,KAAK8sC,kBAAkBhsC,KAAKd,OAC1DA,KAAK2B,UAAU,cAAe3B,KAAK8sC,kBAAkBhsC,KAAKd,QAG3DA,KAAK8sC,oBAGNA,oBACC9sC,KAAKisC,WAAW9hC,MAAM1C,SAAWzH,KAAKD,MAAM6F,cAAc4X,eAAepR,YAAc,KAGxF2tD,iBACC/5D,KAAKD,MAAMgM,WAAW6P,UAAUtX,SAASmE,IACxCzI,KAAKmb,cAAc1S,EAAI,IAIzB0S,cAAc1S,GACb,IAAIqxD,EAAa95D,KAAKD,MAAMyC,QAAQs3D,WACpCE,SAAiBF,EAEF,WAAZE,EACCvxD,EAAIyZ,eAAkBzZ,EAAIyZ,cAAgBliB,KAAKwS,KAAKpN,QAAW00D,GACjE95D,KAAK05D,UAAUjxD,GAEI,aAAZuxD,EACLF,EAAWhuD,KAAK9L,KAAKD,MAAO0I,EAAIhE,iBAClCzE,KAAK05D,UAAUjxD,GAER0M,MAAMC,QAAQ0kD,IACnBA,EAAWh+C,SAASrT,EAAIvI,KAAKF,KAAKwC,QAAQ,sBAC5CxC,KAAK05D,UAAUjxD,GAKlBmxD,YAAYnxD,GAEX,OADYzI,KAAKwS,KAAKvD,QAAQxG,IACd,EAGjBwxD,WACC,QAASj6D,KAAKwS,KAAKpN,OAGpBuS,YAAYwV,EAAU3a,GAKrB,OAJAxS,KAAKwS,KAAKlO,SAASmE,IAClB+J,EAAKhO,KAAKiE,EAAI,IAGR+J,EAIRoJ,QAAQpJ,GACP,IAAIrN,EAASqN,EAAK8U,MAAM,GAUxB,OARAtnB,KAAKwS,KAAKlO,SAAQ,SAASmE,GAC1B,IAAIqJ,EAAQ3M,EAAO8J,QAAQxG,GAExBqJ,GAAS,GACX3M,EAAO4M,OAAOD,EAAO,MAIhB3M,EAGRu0D,UAAUjxD,GACLA,EAAIhI,QAAQia,OAefrU,QAAQC,KAAK,yCAdbmC,EAAIhI,QAAQia,QAAS,EACrB1a,KAAKisC,WAAWzgC,YAAY/C,EAAIzE,cAChCyE,EAAIgO,aACJhO,EAAI6Z,kBAEJtiB,KAAKwS,KAAKhO,KAAKiE,GAEfzI,KAAKi4B,aAAY,EAAO,WAExBj4B,KAAKD,MAAMgM,WAAWkU,kBAEtBjgB,KAAKk6D,aAOPP,YAAYlxD,GACRA,EAAIhI,QAAQia,QAEdjS,EAAIhI,QAAQia,QAAS,EAErB1a,KAAK65D,UAAUpxD,GAEfzI,KAAKD,MAAMgM,WAAWkU,kBAEtBjgB,KAAKi4B,aAAY,EAAO,WAErBj4B,KAAKwS,KAAKpN,QACZpF,KAAKk6D,aAIN7zD,QAAQC,KAAK,0CAIfuzD,UAAUpxD,GACT,IAAIqJ,EAAQ9R,KAAKwS,KAAKvD,QAAQxG,GAE9B,GAAGqJ,GAAS,EAAE,CACb,IAAIiG,EAAQtP,EAAIzE,aAEb+T,EAAM/K,YACR+K,EAAM/K,WAAWzB,YAAYwM,GAG9B/X,KAAKwS,KAAKT,OAAOD,EAAO,IAI1BooD,UAAUzxD,GACTzI,KAAKwS,KAAKlO,SAAQ,CAACmE,EAAKwF,KACvBjO,KAAKD,MAAMgM,WAAW+L,SAASrP,EAAKwF,EAAE,KAKzCwrD,GAAWt+B,WAAa,aCtKxB,MAAMg/B,GACLr6D,YAAaklB,GAIZ,OAHAhlB,KAAKo4C,OAASpzB,EACdhlB,KAAKwD,KAAO,iBAEL,IAAIC,MAAMzD,KAAM,CACtB0D,IAAK,SAASC,EAAQC,EAAMC,GAC3B,YAA4B,IAAjBF,EAAOC,GACVD,EAAOC,GAEPD,EAAOy0C,OAAOgiB,aAAar6D,MAAM+D,wBAAwBC,OAAO,QAASJ,EAAOy0C,OAAQx0C,MAMnG4lC,SACC,OAAOxpC,KAAKo4C,OAAOr2C,IAGpBmC,WACC,OAAOlE,KAAKo4C,OAAO9wC,MAGpBtD,aACC,OAAOhE,KAAKo4C,OAAO9uC,QAGpBsS,UACC,OAAO5b,KAAKo4C,OAAOx8B,SAAQ,GAG5Bg0B,eACC,OAAO5vC,KAAKo4C,OAAOxI,cAAa,GAGjCyqB,iBACC,QAAOr6D,KAAKo4C,OAAO9yC,QAAStF,KAAKo4C,OAAO9yC,OAAOb,eAGhDC,YACC,OAAO1E,KAAKo4C,OAAOzzC,QAGpBC,OACC5E,KAAKo4C,OAAOxzC,OAGbG,OACC/E,KAAKo4C,OAAOrzC,OAGbC,SACChF,KAAKo4C,OAAOkiB,mBAGb70D,SAASC,EAAUC,GAClB,OAAO3F,KAAKo4C,OAAOgiB,aAAar6D,MAAMgM,WAAW0L,YAAYzX,KAAKo4C,OAAQ1yC,EAAUC,GAGrFH,WACC,OAAOxF,KAAKo4C,OAGbtyC,WACC,OAAO9F,KAAKo4C,OAAOgiB,aAAar6D,OC9DlC,MAAMw6D,GAELz6D,YAAYs6D,EAAc90D,EAAQu3B,EAAO96B,EAAKuF,EAAO6lD,EAAWqN,GAC/Dx6D,KAAKo6D,aAAeA,EACpBp6D,KAAKsF,OAASA,EACdtF,KAAK+B,IAAMA,EACX/B,KAAK68B,MAAQA,EACb78B,KAAKsH,MAAQA,EACbtH,KAAKy6D,aAAe59B,EAASu9B,EAAaM,eAAet1D,OAAS,EAClEpF,KAAKirB,OAASjrB,KAAKy6D,aAAez6D,KAAK26D,eAAiB36D,KAAK46D,QAC7D56D,KAAKwD,KAAO,QACZxD,KAAKsa,IAAMkgD,EACXx6D,KAAKwS,KAAO,GACZxS,KAAKg9B,OAAS,GACdh9B,KAAKk5D,UAAY,GACjBl5D,KAAKmtD,UAAYA,EACjBntD,KAAKsJ,SAAU,EACftJ,KAAK66D,iBAAkB,EACvB76D,KAAKwJ,OAAS,EACdxJ,KAAK8iB,YAAc,EACnB9iB,KAAK0Z,aAAc,EACnB1Z,KAAKkN,MAAQ,GACblN,KAAK0Z,aAAc,EACnB1Z,KAAKS,QAAU,GACfT,KAAK86D,cAAe,EAEpB96D,KAAK2E,QAAU61D,EAAWA,EAAS71D,aAAoD,IAAlCy1D,EAAa9pB,UAAUzT,GAAyBu9B,EAAa9pB,UAAUzT,GAASu9B,EAAa9pB,UAAU,GAE5JtwC,KAAKyJ,UAAY,KAEjBzJ,KAAK+6D,iBACL/6D,KAAKg7D,cAELh7D,KAAKi7D,oBAGNr2C,KAAKs2C,GACAA,IACAl7D,KAAKk5D,UAAU9zD,OACjBpF,KAAKk5D,UAAU50D,SAAQ,SAAS0gB,GAC/BA,EAAMJ,UAGP5kB,KAAKwS,KAAKlO,SAASmE,IACfA,EAAIhI,gBACCgI,EAAIhI,QAAQukB,UAMvBhlB,KAAKsJ,SAAU,EACftJ,KAAK86D,cAAe,EACpB96D,KAAK66D,iBAAkB,EAGxBE,iBACC,IAAII,EAAQpxD,SAASC,cAAc,OACnCmxD,EAAMnwD,UAAUC,IAAI,mBAEpBjL,KAAKsJ,QAAUS,SAASC,cAAc,OACtChK,KAAKsJ,QAAQ0B,UAAUC,IAAI,iBAC3BjL,KAAKsJ,QAAQ0B,UAAUC,IAAI,mBAC3BjL,KAAKsJ,QAAQ0B,UAAUC,IAAI,yBAA2BjL,KAAK68B,OAC3D78B,KAAKsJ,QAAQY,aAAa,OAAQ,YAElClK,KAAK86D,aAAe/wD,SAASC,cAAc,OAC3ChK,KAAK86D,aAAa9vD,UAAUC,IAAI,0BAChCjL,KAAK86D,aAAatvD,YAAY2vD,IAGqB,IAAhDn7D,KAAKo6D,aAAar6D,MAAMyC,QAAQ44D,aAAyBp7D,KAAKo6D,aAAar6D,MAAM44B,UAAU,YAC7F34B,KAAKo6D,aAAar6D,MAAMU,QAAQkrB,QAAQ0vC,sBAAsBr7D,MAIhEi7D,oBACC,IAAIp+B,EAAQ78B,KAAK68B,MAAQ,EACtB78B,KAAKo6D,aAAakB,eAAiBt7D,KAAKo6D,aAAakB,cAAcz+B,IACrE78B,KAAKo6D,aAAakB,cAAcz+B,GAAOv4B,SAAS5B,IAC/C1C,KAAKu7D,aAAa74D,EAAOm6B,EAAM,IAKlCm+B,cAGIh7D,KAAKo6D,aAAar6D,MAAMyC,QAAQg5D,qBACoC,SAAtDx7D,KAAKo6D,aAAar6D,MAAMyC,QAAQg5D,mBAAgCx7D,KAAK86D,aAAe96D,KAAKsJ,SAE3FwG,iBAAiB,SAAUC,IACkB,UAAvD/P,KAAKo6D,aAAar6D,MAAMyC,QAAQg5D,qBAClCzrD,EAAEC,kBACFD,EAAEkvC,4BAIHxsB,YAAW,KACVzyB,KAAKs6D,kBAAkB,GACtB,IAKLiB,aAAaE,EAAS5+B,GACrB,IAAI6+B,EAAW7+B,EAAQ,IAAM4+B,EACzBz2C,EAAQ,IAAIu1C,GAAMv6D,KAAKo6D,aAAcp6D,KAAM68B,EAAO4+B,EAAUz7D,KAAKo6D,aAAaM,eAAe79B,GAAOv1B,MAAOtH,KAAKo6D,aAAauB,gBAAgB9+B,IAAU78B,KAAKo6D,aAAauB,gBAAgB,KAAI37D,KAAKsa,KAAMta,KAAKsa,IAAI0iB,OAAO0+B,IAE5N17D,KAAKg9B,OAAO0+B,GAAY12C,EACxBhlB,KAAKk5D,UAAU10D,KAAKwgB,GAGrB21C,eAAelyD,GAEd,IAAIo0B,EAAQ78B,KAAK68B,MAAQ,EAEzB,GAAG78B,KAAKy6D,aAAa,CACpB,IAAIgB,EAAUz7D,KAAKo6D,aAAaM,eAAe79B,GAAOlF,KAAKlvB,EAAIC,WAC/DgzD,EAAW7+B,EAAQ,IAAM4+B,EAEtBz7D,KAAKo6D,aAAakB,eAAiBt7D,KAAKo6D,aAAakB,cAAcz+B,GAClE78B,KAAKg9B,OAAO0+B,IACd17D,KAAKg9B,OAAO0+B,GAAUzwC,OAAOxiB,IAG1BzI,KAAKg9B,OAAO0+B,IACf17D,KAAKu7D,aAAaE,EAAS5+B,GAG5B78B,KAAKg9B,OAAO0+B,GAAUzwC,OAAOxiB,KAKhCmyD,QAAQnyD,GACPzI,KAAKwS,KAAKhO,KAAKiE,GACfA,EAAIhI,QAAQukB,MAAQhlB,KAGrB47D,UAAUnzD,EAAKzC,EAAIC,GAClB,IAAI/F,EAAOF,KAAK67D,eAAe,IAE/BpzD,EAAI4Z,WAAWniB,GAEf,IAAIihB,EAAUnhB,KAAKwS,KAAKvD,QAAQjJ,GAE7Bmb,GAAW,EACVlb,EACFjG,KAAKwS,KAAKT,OAAOoP,EAAQ,EAAG,EAAG1Y,GAE/BzI,KAAKwS,KAAKT,OAAOoP,EAAS,EAAG1Y,GAG3BxC,EACFjG,KAAKwS,KAAKhO,KAAKiE,GAEfzI,KAAKwS,KAAKkD,QAAQjN,GAIpBA,EAAIhI,QAAQukB,MAAQhlB,KAIjBA,KAAKo6D,aAAar6D,MAAM44B,UAAU,gBAAiE,SAA/C34B,KAAKo6D,aAAar6D,MAAMyC,QAAQkrC,aACtF1tC,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAYY,YAAYtuC,MAGzDA,KAAKo6D,aAAa0B,iBAAgB,GAGnCC,aAAapxD,GACT3K,KAAK86D,eACP96D,KAAK86D,aAAa3wD,MAAMmU,WAAa3T,EAErC3K,KAAKk5D,UAAU50D,SAAQ,SAASuN,GAC/BA,EAAMkqD,aAAapxD,OAKtBmhB,YAAYrjB,IAGZozD,eAAe37D,GAWd,OAVGF,KAAKsH,MACPpH,EAAKF,KAAKsH,OAAStH,KAAK+B,IAExBsE,QAAQC,KAAK,+FAGXtG,KAAKsF,SACPpF,EAAOF,KAAKsF,OAAOu2D,eAAe37D,IAG5BA,EAGR87D,UAAUvzD,GACT,IAAIqJ,EAAQ9R,KAAKwS,KAAKvD,QAAQxG,GAC1B8F,EAAK9F,EAAIzE,aAEV8N,GAAS,GACX9R,KAAKwS,KAAKT,OAAOD,EAAO,GAGrB9R,KAAKo6D,aAAar6D,MAAMyC,QAAQy5D,aAAgBj8D,KAAKwS,KAAKpN,QAW1DmJ,EAAGvB,YACLuB,EAAGvB,WAAWzB,YAAYgD,GAGvBvO,KAAKo6D,aAAaljD,cACrBlX,KAAKk8D,8BAEFl8D,KAAKo6D,aAAar6D,MAAM44B,UAAU,gBAAiE,SAA/C34B,KAAKo6D,aAAar6D,MAAMyC,QAAQkrC,aACtF1tC,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAYY,YAAYtuC,SAlBvDA,KAAKsF,OACPtF,KAAKsF,OAAO62D,YAAYn8D,MAExBA,KAAKo6D,aAAa+B,YAAYn8D,MAG/BA,KAAKo6D,aAAa0B,iBAAgB,IAmBpCK,YAAYn3C,GACX,IACAlT,EADI4pD,EAAW12C,EAAM6X,MAAQ,IAAM7X,EAAMjjB,IAGtC/B,KAAKg9B,OAAO0+B,YACP17D,KAAKg9B,OAAO0+B,IAEnB5pD,EAAQ9R,KAAKk5D,UAAUjqD,QAAQ+V,KAEnB,GACXhlB,KAAKk5D,UAAUnnD,OAAOD,EAAO,GAG1B9R,KAAKk5D,UAAU9zD,SACfpF,KAAKsF,OACPtF,KAAKsF,OAAO62D,YAAYn8D,MAExBA,KAAKo6D,aAAa+B,YAAYn8D,QAMlCo8D,oBACC,IAAIj3D,EAAS,GA4Db,OA1DAA,EAAOX,KAAKxE,MAEZA,KAAKq8D,UAGFr8D,KAAKkN,MAAM3C,MACbvK,KAAKkN,MAAM3C,IAAI4Y,gBACfnjB,KAAKkN,MAAM3C,IAAI6Y,eAGbpjB,KAAKkN,MAAM1C,SACbxK,KAAKkN,MAAM1C,OAAO2Y,gBAClBnjB,KAAKkN,MAAM1C,OAAO4Y,eAKhBpjB,KAAK2E,QACJ3E,KAAKk5D,UAAU9zD,OACjBpF,KAAKk5D,UAAU50D,SAAQ,SAAS0gB,GAC/B7f,EAASA,EAAOkM,OAAO2T,EAAMo3C,yBAIoB,SAA/Cp8D,KAAKo6D,aAAar6D,MAAMyC,QAAQkrC,aAA0B1tC,KAAKo6D,aAAar6D,MAAM44B,UAAU,gBAAkB34B,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAY4B,gBAC5JtvC,KAAKkN,MAAM3C,IAAMvK,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAYiB,eAAe3uC,KAAKwS,MACjFrN,EAAOX,KAAKxE,KAAKkN,MAAM3C,MAGxBpF,EAASA,EAAOkM,OAAOrR,KAAKwS,MAEsB,SAA/CxS,KAAKo6D,aAAar6D,MAAMyC,QAAQkrC,aAA2B1tC,KAAKo6D,aAAar6D,MAAM44B,UAAU,gBAAkB34B,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAY6B,mBAC7JvvC,KAAKkN,MAAM1C,OAASxK,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAYkB,kBAAkB5uC,KAAKwS,MACvFrN,EAAOX,KAAKxE,KAAKkN,MAAM1C,UAIrBxK,KAAKk5D,UAAU9zD,QAAyD,SAA/CpF,KAAKo6D,aAAar6D,MAAMyC,QAAQkrC,aAEzD1tC,KAAKo6D,aAAar6D,MAAM44B,UAAU,iBACjC34B,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAY4B,eAC3CtvC,KAAKo6D,aAAar6D,MAAMyC,QAAQ85D,uBAClCt8D,KAAKkN,MAAM3C,IAAMvK,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAYiB,eAAe3uC,KAAKwS,MACjFrN,EAAOX,KAAKxE,KAAKkN,MAAM3C,MAItBvK,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAY6B,kBAC3CvvC,KAAKo6D,aAAar6D,MAAMyC,QAAQ85D,uBAClCt8D,KAAKkN,MAAM1C,OAASxK,KAAKo6D,aAAar6D,MAAMU,QAAQitC,YAAYkB,kBAAkB5uC,KAAKwS,MACvFrN,EAAOX,KAAKxE,KAAKkN,MAAM1C,UAQrBrF,EAGRuD,QAAQ/D,EAASgE,GAChB,IAAIxD,EAAS,GAUb,OARAnF,KAAKq8D,YAED13D,GAAYA,GAAW3E,KAAK2E,UAC/B3E,KAAKwS,KAAKlO,SAASmE,IAClBtD,EAAOX,KAAKiE,EAAIC,QAAQC,GAAa,QAAQ,IAIxCxD,EAGRkzC,cACC,IAAI1M,EAAQ,EASZ,OAPG3rC,KAAKk5D,UAAU9zD,OACjBpF,KAAKk5D,UAAU50D,SAAS0gB,IACvB2mB,GAAS3mB,EAAMqzB,aAAa,IAG7B1M,EAAQ3rC,KAAKwS,KAAKpN,OAEZumC,EAIR2uB,mBACIt6D,KAAK2E,QACP3E,KAAK+E,OAEL/E,KAAK4E,OAIPG,OACC/E,KAAK2E,SAAU,EAE0C,SAAtD3E,KAAKo6D,aAAar6D,MAAMgM,WAAWyhB,iBAA+BxtB,KAAKo6D,aAAar6D,MAAMyC,QAAQ6nB,aAEpGrqB,KAAKsJ,QAAQ0B,UAAUgN,OAAO,2BAE3BhY,KAAKk5D,UAAU9zD,OACjBpF,KAAKk5D,UAAU50D,SAAS0gB,IAEZA,EAAMo3C,oBAEZ93D,SAASmE,IACbA,EAAI0a,eAAe,GAClB,IAIHnjB,KAAKwS,KAAKlO,SAASmE,IAClB,IAAIsP,EAAQtP,EAAIzE,aAChB+T,EAAM/K,WAAWzB,YAAYwM,EAAM,KAOrC/X,KAAKo6D,aAAa0B,iBAAgB,GAGnC97D,KAAKo6D,aAAar6D,MAAMsC,eAAeJ,SAAS,yBAA0BjC,KAAKyE,gBAAgB,GAGhGG,OAGC,GAFA5E,KAAK2E,SAAU,EAE0C,SAAtD3E,KAAKo6D,aAAar6D,MAAMgM,WAAWyhB,iBAA+BxtB,KAAKo6D,aAAar6D,MAAMyC,QAAQ6nB,WA6BpGrqB,KAAKo6D,aAAa0B,iBAAgB,OA7B6E,CAE/G97D,KAAKsJ,QAAQ0B,UAAUC,IAAI,2BAE3B,IAAIuyB,EAAOx9B,KAAK4J,kBAEb5J,KAAKk5D,UAAU9zD,OACjBpF,KAAKk5D,UAAU50D,SAAS0gB,IACZA,EAAMo3C,oBAEZ93D,SAASmE,IACb,IAAIsP,EAAQtP,EAAIzE,aAChBw5B,EAAKxwB,WAAW2P,aAAa5E,EAAOylB,EAAK5gB,aACzCnU,EAAIgO,aACJ+mB,EAAOzlB,CAAK,GACX,IAIH/X,KAAKwS,KAAKlO,SAASmE,IAClB,IAAIsP,EAAQtP,EAAIzE,aAChBw5B,EAAKxwB,WAAW2P,aAAa5E,EAAOylB,EAAK5gB,aACzCnU,EAAIgO,aACJ+mB,EAAOzlB,CAAK,IAId/X,KAAKo6D,aAAa0B,iBAAgB,GAKnC97D,KAAKo6D,aAAar6D,MAAMsC,eAAeJ,SAAS,yBAA0BjC,KAAKyE,gBAAgB,GAGhG43D,UACC,IAAIn8D,EAAO,GAEe,mBAAhBF,KAAK2E,UAEd3E,KAAKwS,KAAKlO,SAAQ,SAASmE,GAC1BvI,EAAKsE,KAAKiE,EAAIC,cAGf1I,KAAK2E,QAAU3E,KAAK2E,QAAQ3E,KAAK+B,IAAK/B,KAAKq4C,cAAen4C,EAAMF,KAAKyE,iBAIvE+pC,YAAY/lC,GACX,IAAI4M,GAAQ,EAiBZ,OAhBGrV,KAAKk5D,UAAU9zD,OACjBpF,KAAKk5D,UAAU50D,SAAQ,SAAS0gB,GAC/B,IAAI9d,EAAS8d,EAAMwpB,YAAY/lC,GAE5BvB,IACFmO,EAAQnO,MAIPlH,KAAKwS,KAAK8M,MAAK,SAAS7J,GAC1B,OAAOA,IAAShN,OAEhB4M,EAAQrV,MAIHqV,EAGRu6B,aAAanmC,GACZ,IAAItE,EAAS,GAMb,OAJAnF,KAAKk5D,UAAU50D,SAAQ,SAASuN,GAC/B1M,EAAOX,KAAKiF,EAAYoI,EAAMpN,eAAiBoN,MAGzC1M,EAGRyW,QAAQnS,EAAW8yD,GAClB,IAAIp3D,EAAS,GAYb,OAVGo3D,GAAmBv8D,KAAKk5D,UAAU9zD,OACpCpF,KAAKk5D,UAAU50D,SAAS0gB,IACvB7f,EAASA,EAAOkM,OAAO2T,EAAMpJ,QAAQnS,EAAW8yD,GAAiB,IAGlEv8D,KAAKwS,KAAKlO,SAAQ,SAASmE,GAC1BtD,EAAOX,KAAKiF,EAAYhB,EAAIhE,eAAiBgE,MAIxCtD,EAGR+2D,8BACC,IAAIh8D,EAAO,GAUX,IARWF,KAAK4b,SAAQ,GAAO,GAE1BtX,SAAQ,SAASmE,GACrBvI,EAAKsE,KAAKiE,EAAIC,cAGf1I,KAAK66D,gBAAkB76D,KAAKmtD,UAAUntD,KAAK+B,IAAK/B,KAAKq4C,cAAen4C,EAAMF,KAAKyE,gBAEzEzE,KAAKsJ,QAAQgC,YAAYtL,KAAKsJ,QAAQiC,YAAYvL,KAAKsJ,QAAQgC,YAElC,iBAAzBtL,KAAK66D,gBACd76D,KAAKsJ,QAAQ8B,UAAYpL,KAAK66D,gBAE9B76D,KAAKsJ,QAAQkC,YAAYxL,KAAK66D,iBAG/B76D,KAAKsJ,QAAQqT,aAAa3c,KAAK86D,aAAc96D,KAAKsJ,QAAQgC,YAG3DkxD,QAAQ7rC,EAAO,IAKd,OAJAA,EAAKjb,QAAQ1V,KAAK+B,KACf/B,KAAKsF,QACPtF,KAAKsF,OAAOk3D,QAAQ7rC,GAEdA,EAKR3sB,aACC,OAAOhE,KAAK66D,gBAAkB76D,KAAKsJ,QAAUtJ,KAAK4J,kBAGnDA,kBACC5J,KAAKg7D,aAAc,EAEnBh7D,KAAKq8D,UAEFr8D,KAAK2E,QACP3E,KAAKsJ,QAAQ0B,UAAUC,IAAI,2BAE3BjL,KAAKsJ,QAAQ0B,UAAUgN,OAAO,2BAG/B,IAAI,IAAI/J,EAAI,EAAGA,EAAIjO,KAAKsJ,QAAQmzD,WAAWr3D,SAAU6I,EACpDjO,KAAKsJ,QAAQmzD,WAAWxuD,GAAGjB,WAAWzB,YAAYvL,KAAKsJ,QAAQmzD,WAAWxuD,IAO3E,OAJAjO,KAAKk8D,8BAIEl8D,KAAKsJ,QAGb6Z,gBACKnjB,KAAKsJ,SAAWtJ,KAAKsJ,QAAQ0D,YAChChN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SAK3CgZ,kBACCtiB,KAAK2M,UAAU3M,KAAKsJ,QAAQsH,cAG7B6F,WAAW/U,GACN1B,KAAK0Z,cAAehY,IACvB1B,KAAKsiB,kBACLtiB,KAAK0Z,aAAc,GAIrBsH,eACChhB,KAAK0Z,aAAc,EACnB1Z,KAAKwJ,OAAS,EAEX4K,EAAQmE,UAAUvY,KAAKsJ,UACzBtJ,KAAKyW,YAAW,GAIlB9J,UAAUnD,GACNxJ,KAAKwJ,QAAUA,IACjBxJ,KAAKwJ,OAASA,EACdxJ,KAAK8iB,YAAc9iB,KAAKsJ,QAAQwD,cAKlCD,YACC,OAAO7M,KAAK8iB,YAGbiC,WACC,OAAO/kB,KAGRyM,sBAEAmG,cAEAC,iBAEAF,mBAEA4Q,sBAEAD,YAGA7e,eAKC,OAJIzE,KAAKyJ,YACRzJ,KAAKyJ,UAAY,IAAI0wD,GAAen6D,OAG9BA,KAAKyJ,WC9lBd,MAAMizD,WAAkBplC,EAEvBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK06D,gBAAiB,EACtB16D,KAAKswC,UAAY,CAAC,WAAW,OAAO,CAAM,GAC1CtwC,KAAK27D,gBAAkB,CAAC,WAAW,MAAO,EAAG,GAC7C37D,KAAKk5D,UAAY,GACjBl5D,KAAKs7D,eAAgB,EACrBt7D,KAAKg9B,OAAS,GAEdh9B,KAAK28D,eAAiB38D,KAAK4b,QAAQ9a,KAAKd,MAExCA,KAAKkX,aAAc,EAGnBlX,KAAKw3B,oBAAoB,WAAW,GACpCx3B,KAAKw3B,oBAAoB,kBAAkB,GAC3Cx3B,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,mBAAoB,MAC7Cx3B,KAAKw3B,oBAAoB,uBAAwB,MACjDx3B,KAAKw3B,oBAAoB,wBAAyB,MAClDx3B,KAAKw3B,oBAAoB,sBAAuB,MAChDx3B,KAAKw3B,oBAAoB,qBAAsB,SAC/Cx3B,KAAKw3B,oBAAoB,wBAAwB,GAGjDx3B,KAAK03B,sBAAsB,aAAc13B,KAAK48D,WAAW97D,KAAKd,OAC9DA,KAAK03B,sBAAsB,iBAAkB13B,KAAK68D,eAAe/7D,KAAKd,OACtEA,KAAK03B,sBAAsB,oBAAqB13B,KAAK88D,kBAAkBh8D,KAAKd,OAC5EA,KAAK03B,sBAAsB,iBAAkB13B,KAAK+8D,eAAej8D,KAAKd,OACtEA,KAAK03B,sBAAsB,YAAa13B,KAAKg9D,cAAcl8D,KAAKd,OAChEA,KAAK03B,sBAAsB,iBAAkB13B,KAAKi9D,mBAAmBn8D,KAAKd,OAG1EA,KAAK63B,0BAA0B,MAAO,WAAY73B,KAAKk9D,YAAYp8D,KAAKd,OAIzEyW,aACCzW,KAAK2B,UAAU,gBAAiB3B,KAAKm9D,gBAAgBr8D,KAAKd,OAC1DA,KAAK2B,UAAU,YAAa3B,KAAKm9D,gBAAgBr8D,KAAKd,OACtDA,KAAK2B,UAAU,aAAc3B,KAAKo9D,mBAAmBt8D,KAAKd,OAEvDA,KAAKD,MAAMyC,QAAQ2qC,UAClBntC,KAAKD,MAAMyC,QAAQ66D,wBACrBr9D,KAAK2B,UAAU,qBAAsB3B,KAAKs9D,YAAYx8D,KAAKd,OAC3DA,KAAK2B,UAAU,mBAAoB3B,KAAKu9D,mBAAmBz8D,KAAKd,MAAO,IAGxEA,KAAK2B,UAAU,cAAe3B,KAAKw9D,oBAAoB18D,KAAKd,OAE5DA,KAAK2B,UAAU,eAAgB3B,KAAKy9D,YAAY38D,KAAKd,OACrDA,KAAK2B,UAAU,cAAe3B,KAAKysC,YAAY3rC,KAAKd,OACpDA,KAAK2B,UAAU,oBAAqB3B,KAAK09D,cAAc58D,KAAKd,OAC5DA,KAAK2B,UAAU,YAAa3B,KAAK4kB,KAAK9jB,KAAKd,OAC3CA,KAAK2B,UAAU,aAAc3B,KAAKysC,YAAY3rC,KAAKd,OACnDA,KAAK2B,UAAU,aAAc3B,KAAK29D,UAAU78D,KAAKd,OACjDA,KAAK2B,UAAU,mBAAoB3B,KAAK49D,eAAe98D,KAAKd,OAE5DA,KAAK2B,UAAU,cAAe3B,KAAK69D,UAAU/8D,KAAKd,OAElDA,KAAK2B,UAAU,sBAAuB3B,KAAK89D,kBAAkBh9D,KAAKd,OAElEA,KAAK+3B,uBAAuB/3B,KAAK28D,eAAgB,IAEjD38D,KAAK0Z,aAAc,GAIrByjD,kBACCn9D,KAAKkX,aAAc,EAGpBkmD,qBACCp9D,KAAKkX,aAAc,EAGpBsmD,sBACC,GAAGx9D,KAAKD,MAAMyC,QAAQ2qC,QAAQ,CAC7B,IAAIA,EAAUntC,KAAKD,MAAMyC,QAAQ2qC,QACjCmD,EAAYtwC,KAAKD,MAAMyC,QAAQu7D,eAC/B7lB,EAAcl4C,KAAKD,MAAMyC,QAAQ01C,YAmBjC,GAjBAl4C,KAAKs7D,cAAgBt7D,KAAKD,MAAMyC,QAAQy5D,YAErC9mD,MAAMC,QAAQ+3B,IAAYh4B,MAAMC,QAAQ8iC,IAAgB/K,EAAQ/nC,OAAS8yC,EAAY9yC,QACvFiB,QAAQC,KAAK,iFAGdtG,KAAK27D,gBAAkB,CAAC,WAAW,MAAO,EAAG,GAC7C37D,KAAKswC,UAAY,CAAC,WAAW,OAAO,CAAM,GAE1CtwC,KAAKa,SAAS,eAAe,CAACm9D,EAAWziC,KACxCv7B,KAAK27D,gBAAgB,GAAK,CAACj5D,EAAOipC,EAAOzrC,UACf,IAAVwC,EAAwB,GAAKA,GAAS,UAAYipC,EAAQ,KAAkB,IAAVA,EAAeqyB,EAAYziC,EAAKyB,OAAOC,OAAS,UACjI,IAGFj9B,KAAK06D,eAAiB,GAEnBvtB,EACCntC,KAAKD,MAAM44B,UAAU,gBAAoD,SAAlC34B,KAAKD,MAAMyC,QAAQkrC,aAA4D,QAAlC1tC,KAAKD,MAAMyC,QAAQkrC,aACzG1tC,KAAKD,MAAMU,QAAQitC,YAAYQ,mBAGhC,GAAGluC,KAAKD,MAAM44B,UAAU,gBAAoD,SAAlC34B,KAAKD,MAAMyC,QAAQkrC,YAEjD1tC,KAAKD,MAAM6F,cAAc4a,iBAE/Blc,SAASmX,IACVA,EAAI3Q,WAAW0iC,SACjBxtC,KAAKD,MAAMU,QAAQitC,YAAYK,mBAG7BtyB,EAAI3Q,WAAW2iC,YACjBztC,KAAKD,MAAMU,QAAQitC,YAAYO,yBAM/B94B,MAAMC,QAAQ+3B,KACjBA,EAAU,CAACA,IAGZA,EAAQ7oC,SAAQ,CAAC0gB,EAAO/W,KACvB,IAAIgwD,EAAY36D,EAGf26D,EADkB,mBAATj5C,EACIA,GAEb1hB,EAAStD,KAAKD,MAAM6F,cAAcua,iBAAiB6E,IAGrC,SAAS9kB,GACrB,OAAOoD,EAAOwG,cAAc5J,IAGhB,SAASA,GACrB,OAAOA,EAAK8kB,IAKfhlB,KAAK06D,eAAel2D,KAAK,CACxB8C,MAAwB,mBAAV0d,GAA+BA,EAC7C2S,KAAKsmC,EACL9tC,SAAOnwB,KAAKs7D,eAAgBt7D,KAAKs7D,cAAcrtD,IAC9C,IAGAqiC,IACEn7B,MAAMC,QAAQk7B,KACjBA,EAAY,CAACA,IAGdA,EAAUhsC,SAASu4B,IAAD,IAIlB78B,KAAKswC,UAAYA,GAGf4H,IACFl4C,KAAK27D,gBAAkBxmD,MAAMC,QAAQ8iC,GAAeA,EAAc,CAACA,SAGpEl4C,KAAKk5D,UAAY,GACjBl5D,KAAKg9B,OAAS,GAIhB6gC,UAAUrrD,EAAM0rD,GACf,GAAGl+D,KAAKD,MAAMyC,QAAQ2qC,QAAQ,CAC7B,IAAInoB,EAAQhlB,KAAKwvC,WAAU,GAAO,GAElC0uB,EAAU15D,KAAKwgB,EAAMpJ,SAAQ,GAAO,IAGrC,OAAOsiD,EAGRJ,oBACC,IAAIvvD,EAAKvO,KAAKD,MAAMgM,WAAWwK,aAC3B/D,EAAOxS,KAAKD,MAAMgM,WAAW2P,iBAEjC,IAAG1b,KAAKD,MAAMyC,QAAQ2qC,QAOrB,OAAO36B,EANPA,EAAOA,EAAKqJ,QAAQpT,GACC,UAAbA,EAAIjF,OAGZ+K,EAAGpE,MAAM1C,SAAY+K,EAAKpN,OAAsD,GAA7CpF,KAAKD,MAAM6F,cAAcmB,WAAa,KAM3E62D,eAAen1D,EAAKqJ,EAAOvH,GAC1B,GAAGvK,KAAKD,MAAMyC,QAAQ2qC,QAAQ,CAC7BntC,KAAKm+D,iBAAiB11D,GAEtB,IAAI8lC,EAAY9lC,EAAIhI,QAAQukB,MAAMxS,KAoBlC,OAlBG+7B,EAAUnpC,OAAS,KACjB0M,GAAUA,IAAsC,GAA7By8B,EAAUt/B,QAAQ6C,GACrCvH,EACCgkC,EAAU,KAAO9lC,IACnBqJ,EAAQy8B,EAAU,GAClBvuC,KAAKD,MAAMgM,WAAW6f,eAAenjB,EAAIhI,QAAQukB,MAAMxS,KAAM/J,EAAKqJ,GAAQvH,IAGxEgkC,EAAUA,EAAUnpC,OAAQ,KAAOqD,IACrCqJ,EAAQy8B,EAAUA,EAAUnpC,OAAQ,GACpCpF,KAAKD,MAAMgM,WAAW6f,eAAenjB,EAAIhI,QAAQukB,MAAMxS,KAAM/J,EAAKqJ,GAAQvH,IAI5EvK,KAAKD,MAAMgM,WAAW6f,eAAenjB,EAAIhI,QAAQukB,MAAMxS,KAAM/J,EAAKqJ,GAAQvH,IAIrEuH,GAITggD,eACC9xD,KAAKiC,SAAS,iBAOf26D,WAAW5/B,GACVh9B,KAAKD,MAAMyC,QAAQ2qC,QAAUnQ,EAEzBh9B,KAAK0Z,aACR1Z,KAAKyW,aAGNzW,KAAKw9D,uBAEDxgC,GAAUh9B,KAAKD,MAAM44B,UAAU,iBAAqD,IAAnC34B,KAAKD,MAAMyC,QAAQkrC,aACvE1tC,KAAKD,MAAMU,QAAQitC,YAAYS,oBAGhCnuC,KAAKi4B,cAELj4B,KAAK8xD,eAGN+K,eAAeZ,GACdj8D,KAAKD,MAAMyC,QAAQy5D,YAAcA,EACjCj8D,KAAKw9D,sBACLx9D,KAAKi4B,cAELj4B,KAAK8xD,eAGNgL,kBAAkB3sC,GACjBnwB,KAAKD,MAAMyC,QAAQu7D,eAAiB5tC,EACpCnwB,KAAKw9D,sBAEFx9D,KAAKD,MAAMyC,QAAQ2qC,SACrBntC,KAAKi4B,cAELj4B,KAAK8xD,gBAELzrD,QAAQC,KAAK,gEAIfy2D,eAAe5sC,GACdnwB,KAAKD,MAAMyC,QAAQ01C,YAAc/nB,EACjCnwB,KAAKw9D,sBAEFx9D,KAAKD,MAAMyC,QAAQ2qC,SACrBntC,KAAKi4B,cAELj4B,KAAK8xD,gBAELzrD,QAAQC,KAAK,gEAIf02D,cAAc7sC,GACb,OAAOnwB,KAAKwvC,WAAU,GAIvBytB,qBACC,OAAOj9D,KAAKD,MAAMyC,QAAQ2qC,QAAUntC,KAAKo+D,iBAAmBp+D,KAAK0I,UAQlEw0D,YAAYz0D,GACX,QAAOA,EAAIhI,QAAQukB,OAAQvc,EAAIhI,QAAQukB,MAAMvgB,eAO9Ck5D,UAAU78C,EAAM9a,EAAIC,GACnB,GAAGjG,KAAKD,MAAMyC,QAAQ2qC,QAAQ,EACzBlnC,GAASD,aAAcu0D,KAC1Bv0D,EAAKhG,KAAKD,MAAMgM,WAAWqY,eAAetD,IAAS9a,GAGpD,IAAIq4D,EAAUr4D,aAAcu0D,GAAQv0D,EAAKA,EAAGvF,QAAQukB,MAChDs5C,EAAYx9C,aAAgBy5C,GAAQz5C,EAAOA,EAAKrgB,QAAQukB,MAEzDq5C,IAAYC,EACdt+D,KAAKD,MAAMgM,WAAW6f,eAAeyyC,EAAQ7rD,KAAMsO,EAAM9a,EAAIC,IAE1Dq4D,GACFA,EAAUtC,UAAUl7C,GAGrBu9C,EAAQzC,UAAU96C,EAAM9a,EAAIC,KAM/Bw3D,YAAYh1D,GAERzI,KAAKD,MAAMyC,QAAQ2qC,SAAW1kC,EAAIhI,QAAQukB,OAC5Cvc,EAAIhI,QAAQukB,MAAMg3C,UAAUvzD,GAI9BgkC,YAAYhkC,GACRzI,KAAKD,MAAMyC,QAAQ2qC,SACrBntC,KAAK87D,iBAAgB,GAIvBwB,YAAY/4D,GACRvE,KAAKD,MAAMyC,QAAQ2qC,SACrBntC,KAAKu9D,mBAAmBh5D,EAAKkE,KAK/BmT,QAAQpJ,GACP,OAAGxS,KAAKD,MAAMyC,QAAQ2qC,SAAWntC,KAAK06D,eAAet1D,QAEpDpF,KAAKoC,iBAAiB,gBAEtBpC,KAAKu+D,eAAe/rD,GAEjBxS,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAepC,KAAKwvC,WAAU,IAG9CxvC,KAAK87D,mBAGLtpD,EAAK8U,MAAM,GAIpBkoB,UAAU/lC,GACT,IAAI+0D,EAAkB,GAMtB,OAJAx+D,KAAKk5D,UAAU50D,SAAQ,SAAS0gB,GAC/Bw5C,EAAgBh6D,KAAKiF,EAAYub,EAAMvgB,eAAiBugB,MAGlDw5C,EAGR/vB,eAAezpB,GACd,IAAIw5C,EAAkB,GActB,OAZIx5C,IACHA,EAAQhlB,MAGTglB,EAAMk0C,UAAU50D,SAASuN,IACrBA,EAAMqnD,UAAU9zD,OAClBo5D,EAAkBA,EAAgBntD,OAAOrR,KAAKyuC,eAAe58B,IAE7D2sD,EAAgBh6D,KAAKqN,MAIhB2sD,EAGR55C,OACI5kB,KAAKD,MAAMyC,QAAQ2qC,UACrBntC,KAAKk5D,UAAU50D,SAAQ,SAAS0gB,GAC/BA,EAAMJ,UAGP5kB,KAAKk5D,UAAY,GACjBl5D,KAAKg9B,OAAS,IAIhByhC,kBAAkBvF,GACjB,IAAIwF,EAAgB,GAiCpB,OA/BAxF,EAAU50D,SAAS0gB,IAClB,IAAIkzB,EAAc,CAClBA,MAAoB,EACpBA,SAAuB,EACvBA,cAA4B,IACxBtF,EAAY,GAEZ5tB,EAAMy1C,cACT7nB,EAAY5yC,KAAKy+D,kBAAkBz5C,EAAMk0C,WAEzChhB,EAAYrb,MAAQ7X,EAAM6X,MAC1Bqb,EAAYymB,SAAW/rB,EAAUxtC,OAAS4f,EAAMk0C,UAAU9zD,OAC1D8yC,EAAY0mB,cAAgB55C,EAAMmoC,UAAUnoC,EAAMjjB,IAAKm2C,EAAYymB,SAAU35C,EAAMxS,KAAMwS,GAEzF05C,EAAcl6D,KAAK0zC,GACnBwmB,EAAgBA,EAAcrtD,OAAOuhC,KAIrCsF,EAAYrb,MAAQ7X,EAAM6X,MAC1Bqb,EAAY0mB,cAAgB55C,EAAMmoC,UAAUnoC,EAAMjjB,IAAKijB,EAAMxS,KAAKpN,OAAQ4f,EAAMxS,KAAMwS,GACtFkzB,EAAYymB,SAAW35C,EAAMpJ,UAAUxW,OAEvCs5D,EAAcl6D,KAAK0zC,GAEnBlzB,EAAMpJ,UAAUtX,SAASmE,IACxBi2D,EAAcl6D,KAAKiE,EAAIC,QAAQ,QAAQ,QAKnCg2D,EAGRN,iBAEC,OAAOp+D,KAAKy+D,kBAAkBz+D,KAAKk5D,WAGpC1qB,YAAY/lC,GACX,IAAI4M,GAAQ,EAcZ,OAZGrV,KAAKwC,QAAQ,cACfiG,EAAMzI,KAAKD,MAAMU,QAAQ6sC,SAASwF,kBAAkBrqC,IAGrDzI,KAAKk5D,UAAU50D,SAAS0gB,IACvB,IAAI9d,EAAS8d,EAAMwpB,YAAY/lC,GAE5BvB,IACFmO,EAAQnO,MAIHmO,EAGRwpD,cACC,OAAO7+D,KAAKk5D,UAAU9zD,OAGvBm5D,eAAe/rD,GACd,IAAIssD,EAAY9+D,KAAKg9B,OAErBh9B,KAAKg9B,OAAS,GACdh9B,KAAKk5D,UAAY,GAEdl5D,KAAKs7D,eAAiBt7D,KAAKs7D,cAAc,IAC3Ct7D,KAAKs7D,cAAc,GAAGh3D,SAAS5B,IAC9B1C,KAAK++D,YAAYr8D,EAAO,EAAGo8D,EAAU,IAGtCtsD,EAAKlO,SAASmE,IACbzI,KAAKg/D,yBAAyBv2D,EAAKq2D,EAAU,KAG9CtsD,EAAKlO,SAASmE,IACbzI,KAAKm+D,iBAAiB11D,EAAKq2D,EAAU,IAIvC/vD,OAAOohB,OAAO2uC,GAAWx6D,SAAS0gB,IACjCA,EAAMJ,MAAK,EAAK,IAKlBm6C,YAAYtD,EAAS5+B,EAAOiiC,GAC3B,IACA95C,EADI02C,EAAW7+B,EAAQ,IAAM4+B,EAG7BqD,EAAYA,GAAa,GAEzB95C,EAAQ,IAAIu1C,GAAMv6D,MAAM,EAAO68B,EAAO4+B,EAASz7D,KAAK06D,eAAe,GAAGpzD,MAAOtH,KAAK27D,gBAAgB,GAAImD,EAAUpD,IAEhH17D,KAAKg9B,OAAO0+B,GAAY12C,EACxBhlB,KAAKk5D,UAAU10D,KAAKwgB,GAGrBg6C,yBAAyBv2D,EAAKq2D,GAC7B,IACApD,EAAW,KADG17D,KAAK06D,eAAe,GAAG/iC,KAAKlvB,EAAIC,WAG3C1I,KAAKg9B,OAAO0+B,IACd17D,KAAKg9B,OAAO0+B,GAAUzwC,OAAOxiB,GAI/B01D,iBAAiB11D,EAAKq2D,GACrB,IAAIrD,EAAUz7D,KAAK06D,eAAe,GAAG/iC,KAAKlvB,EAAIC,WAC9Cu2D,GAAkBj/D,KAAKg9B,OAAO,KAAOy+B,GAQrC,OANGwD,GACFj/D,KAAK++D,YAAYtD,EAAS,EAAGqD,GAG9B9+D,KAAKg9B,OAAO,KAAOy+B,GAASxwC,OAAOxiB,IAE3Bw2D,EAGT1B,mBAAmB90D,GAClB,GAAgB,QAAbA,EAAIjF,KAAe,CACrB,IAAI07D,EAAcz2D,EAAIhI,QAAQukB,MAC9Bm6C,EAAeD,EAAY1C,UAC3B4C,EAAep/D,KAAKq/D,gBAAgB52D,GAIxB02D,EAAa/5D,QAAUg6D,EAAah6D,QAAW+5D,EAAaG,OAAM,CAACh2D,EAASwI,IAChFxI,IAAY81D,EAAattD,OAKhCotD,EAAYlD,UAAUvzD,GACtBzI,KAAKm+D,iBAAiB11D,EAAKzI,KAAKg9B,QAChCh9B,KAAKi4B,aAAY,KAKpBonC,gBAAgB52D,GACf,IAAI82D,EAAY,GAAIltC,EAAU5pB,EAAIC,UAMlC,OAJA1I,KAAK06D,eAAep2D,SAASk7D,IAC5BD,EAAU/6D,KAAKg7D,EAAQ7nC,KAAKtF,GAAS,IAG/BktC,EAGRzD,gBAAgBp6D,GACf,IAAIyD,EAAS,GAYb,OAVInF,KAAKkX,cACRlX,KAAKk5D,UAAU50D,SAAS0gB,IACvB7f,EAASA,EAAOkM,OAAO2T,EAAMo3C,oBAAoB,IAG/C16D,GACF1B,KAAKi4B,aAAY,IAIZ9yB,EAGRu4D,cAAc/yD,GACV3K,KAAKD,MAAMyC,QAAQ2qC,UACsB,YAAxCntC,KAAKD,MAAMyC,QAAQsc,mBACrBnU,GAAQ3K,KAAKD,MAAM6F,cAAciY,SAASvE,aAG3C3O,GAAc,KAEd3K,KAAKk5D,UAAU50D,SAAS0gB,IACvBA,EAAM+2C,aAAapxD,EAAK,KAK3BwxD,YAAYn3C,GACX,IACAlT,EADI4pD,EAAW12C,EAAM6X,MAAQ,IAAM7X,EAAMjjB,IAGtC/B,KAAKg9B,OAAO0+B,YACP17D,KAAKg9B,OAAO0+B,IAEnB5pD,EAAQ9R,KAAKk5D,UAAUjqD,QAAQ+V,KAEnB,GACXhlB,KAAKk5D,UAAUnnD,OAAOD,EAAO,IAKhC2tD,iCACC,IAAIn2D,EAAUtJ,KAAKD,MAAMgM,WAAWwK,aACpC4O,GAAmB,EAEnBnlB,KAAKD,MAAMgM,WAAW8L,iBAAiBvT,SAAQ,CAACmE,EAAKqJ,KACpD9R,KAAKD,MAAMgM,WAAW+L,SAASrP,EAAKqJ,GACpCxI,EAAQkC,YAAY/C,EAAIzE,cACxByE,EAAIgO,YAAW,GAEC,UAAbhO,EAAIjF,OACN2hB,GAAmB,MAKpB7b,EAAQa,MAAM1C,SADZ0d,EACuBnlB,KAAKD,MAAM6F,cAAcmB,WAAa,KAEtC,IAM5B21D,GAAUvhC,WAAa,YCtnBvB,MAAMukC,WAAgBpoC,EAErBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK2/D,QAAU,GACf3/D,KAAK8R,OAAS,EAEd9R,KAAKw3B,oBAAoB,WAAW,GAGrC/gB,aACIzW,KAAKD,MAAMyC,QAAQm9D,UACrB3/D,KAAK2B,UAAU,qBAAsB3B,KAAKs9D,YAAYx8D,KAAKd,OAC3DA,KAAK2B,UAAU,cAAe3B,KAAK4/D,sBAAsB9+D,KAAKd,OAC9DA,KAAK2B,UAAU,aAAc3B,KAAK6/D,WAAW/+D,KAAKd,OAClDA,KAAK2B,UAAU,YAAa3B,KAAKiY,MAAMnX,KAAKd,OAC5CA,KAAK2B,UAAU,YAAa3B,KAAK8/D,SAASh/D,KAAKd,OAC/CA,KAAK2B,UAAU,WAAY3B,KAAK+/D,SAASj/D,KAAKd,QAG/CA,KAAK03B,sBAAsB,OAAQ13B,KAAKggE,KAAKl/D,KAAKd,OAClDA,KAAK03B,sBAAsB,OAAQ13B,KAAKigE,KAAKn/D,KAAKd,OAClDA,KAAK03B,sBAAsB,qBAAsB13B,KAAKkgE,mBAAmBp/D,KAAKd,OAC9EA,KAAK03B,sBAAsB,qBAAsB13B,KAAKmgE,mBAAmBr/D,KAAKd,OAC9EA,KAAK03B,sBAAsB,eAAgB13B,KAAKiY,MAAMnX,KAAKd,OAG5D+/D,SAASj/C,EAAM9a,EAAIC,GAClBjG,KAAKs+B,OAAO,UAAWxd,EAAM,CAACs/C,QAAQt/C,EAAKoB,cAAem+C,MAAMr6D,EAAGkc,cAAelc,GAAGA,EAAIC,MAAMA,IAGhG65D,SAASr3D,EAAKvI,EAAMgrB,EAAKpZ,GACxB9R,KAAKs+B,OAAO,SAAU71B,EAAK,CAACvI,KAAKA,EAAMgrB,IAAIA,EAAKpZ,MAAMA,IAGvD+tD,WAAWp3D,GACV,IAAIqJ,EAAOU,EAERxS,KAAKD,MAAMyC,QAAQ2qC,SAGrBr7B,GADAU,EAAO/J,EAAIhE,eAAesgB,WAAWvf,WAAWgN,MACnCvD,QAAQxG,MAGpBqJ,EAAQU,EAAKV,EAAM,KAGpBA,EAAQrJ,EAAI1I,MAAMgM,WAAW+f,YAAYrjB,MAGxCqJ,EAAQrJ,EAAI1I,MAAMgM,WAAWyG,KAAKV,EAAM,IAI1C9R,KAAKs+B,OAAO,YAAa71B,EAAK,CAACvI,KAAKuI,EAAIC,UAAWwiB,KAAKpZ,EAAOA,MAAMA,IAGtEwrD,YAAY/4D,GACXvE,KAAKs+B,OAAO,WAAY/5B,EAAM,CAACgF,SAAShF,EAAKgF,SAAU+2D,SAAS/7D,EAAK7B,QAGtEuV,QACCjY,KAAK2/D,QAAU,GACf3/D,KAAK8R,OAAS,EAGfwsB,OAAO96B,EAAMiG,EAAWvJ,GACvBF,KAAK2/D,QAAU3/D,KAAK2/D,QAAQr4C,MAAM,EAAGtnB,KAAK8R,MAAQ,GAElD9R,KAAK2/D,QAAQn7D,KAAK,CACjBhB,KAAKA,EACLiG,UAAUA,EACVvJ,KAAKA,IAGNF,KAAK8R,QAGNouD,qBACC,OAAOlgE,KAAK8R,MAAQ,EAGrBquD,qBACC,OAAOngE,KAAK2/D,QAAQv6D,QAAUpF,KAAK8R,MAAQ,GAG5C8tD,sBAAsBn2D,GACrB,IAAIqI,EAAQ9R,KAAK2/D,QAAQnqD,WAAU,SAASC,GAC3C,OAAOA,EAAKhM,YAAcA,KAGxBqI,GAAS,IACX9R,KAAK2/D,QAAQ5tD,OAAOD,EAAO,GACxBA,GAAS9R,KAAK8R,OAChB9R,KAAK8R,QAGN9R,KAAK4/D,sBAAsBn2D,IAI7Bu2D,OACC,GAAGhgE,KAAK8R,OAAS,EAAE,CAClB,IAAIwsB,EAASt+B,KAAK2/D,QAAQ3/D,KAAK8R,OAQ/B,OANA4tD,GAAQa,QAAQjiC,EAAO96B,MAAMsI,KAAK9L,KAAMs+B,GAExCt+B,KAAK8R,QAEL9R,KAAKoC,iBAAiB,cAAek8B,EAAO96B,KAAM86B,EAAO70B,UAAUhF,eAAgB65B,EAAOp+B,OAEnF,EAGP,OADAmG,QAAQC,KAAK,iDACN,EAIT25D,OACC,GAAGjgE,KAAK2/D,QAAQv6D,OAAO,EAAIpF,KAAK8R,MAAM,CAErC9R,KAAK8R,QAEL,IAAIwsB,EAASt+B,KAAK2/D,QAAQ3/D,KAAK8R,OAM/B,OAJA4tD,GAAQc,QAAQliC,EAAO96B,MAAMsI,KAAK9L,KAAMs+B,GAExCt+B,KAAKoC,iBAAiB,cAAek8B,EAAO96B,KAAM86B,EAAO70B,UAAUhF,eAAgB65B,EAAOp+B,OAEnF,EAGP,OADAmG,QAAQC,KAAK,iDACN,EAKTm6D,WAAWC,EAAQlY,GAClBxoD,KAAK2/D,QAAQr7D,SAAQ,SAASg6B,GAC7B,GAAGA,EAAO70B,qBAAqBmZ,EAC3B0b,EAAO70B,YAAci3D,IACvBpiC,EAAO70B,UAAY++C,QAEf,GAAGlqB,EAAO70B,qBAAqBL,GACjCk1B,EAAO70B,UAAUhB,MAAQi4D,EAAO,CAClC,IAAIp5D,EAAQg3B,EAAO70B,UAAUnG,OAAOY,WAEjCoD,IACFg3B,EAAO70B,UAAY++C,EAAO9rC,QAAQpV,SASxCo4D,GAAQvkC,WAAa,UAGrBukC,GAAQa,QCxKO,CACdI,SAAU,SAASriC,GAClBA,EAAO70B,UAAUmC,oBAAoB0yB,EAAOp+B,KAAKqJ,UACjD+0B,EAAO70B,UAAUgC,gBAGlBm1D,OAAQ,SAAStiC,GAChBA,EAAO70B,UAAUgb,gBAGlB6sB,UAAW,SAAShT,GACnB,IAAIkqB,EAASxoD,KAAKD,MAAMgM,WAAWof,aAAamT,EAAOp+B,KAAKA,KAAMo+B,EAAOp+B,KAAKgrB,IAAKoT,EAAOp+B,KAAK4R,OAE5F9R,KAAKD,MAAMyC,QAAQ2qC,SAAWntC,KAAKD,MAAM44B,UAAU,cACrD34B,KAAKD,MAAMU,QAAQ8tC,UAAUutB,iBAAgB,GAG9C97D,KAAKygE,WAAWniC,EAAO70B,UAAW++C,IAGnCqY,QAAS,SAASviC,GACjB,IAAIr4B,EAASq4B,EAAOp+B,KAAKkgE,QAAW9hC,EAAOp+B,KAAKmgE,MAAS,EAEzDrgE,KAAKD,MAAMgM,WAAWwY,cAAc+Z,EAAO70B,UAAWzJ,KAAKD,MAAMgM,WAAWoe,mBAAmBmU,EAAOp+B,KAAKkgE,SAAUn6D,GAErHjG,KAAKD,MAAMgM,WAAWif,yBACtBhrB,KAAKD,MAAMgM,WAAWwe,uBD+IxBm1C,GAAQc,QEzKO,CACdG,SAAU,SAASriC,GAClBA,EAAO70B,UAAUmC,oBAAoB0yB,EAAOp+B,KAAKogE,UACjDhiC,EAAO70B,UAAUgC,gBAGlBm1D,OAAQ,SAAStiC,GAChB,IAAIkqB,EAASxoD,KAAKD,MAAMgM,WAAWof,aAAamT,EAAOp+B,KAAKA,KAAMo+B,EAAOp+B,KAAKgrB,IAAKoT,EAAOp+B,KAAK4R,OAE5F9R,KAAKD,MAAMyC,QAAQ2qC,SAAWntC,KAAKD,MAAM44B,UAAU,cACrD34B,KAAKD,MAAMU,QAAQ8tC,UAAUutB,iBAAgB,GAG9C97D,KAAKygE,WAAWniC,EAAO70B,UAAW++C,IAGnClX,UAAU,SAAShT,GAClBA,EAAO70B,UAAUgb,gBAGlBo8C,QAAS,SAASviC,GACjBt+B,KAAKD,MAAMgM,WAAWwY,cAAc+Z,EAAO70B,UAAWzJ,KAAKD,MAAMgM,WAAWoe,mBAAmBmU,EAAOp+B,KAAKmgE,OAAQ/hC,EAAOp+B,KAAK+F,OAE/HjG,KAAKD,MAAMgM,WAAWif,yBACtBhrB,KAAKD,MAAMgM,WAAWwe,uBCtBxB,MAAMu2C,WAAwBxpC,EAE7Bx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK+gE,WAAa,GAClB/gE,KAAKghE,UAAW,EAGjBvqD,aACCzW,KAAKihE,oBAGNA,oBACIjhE,KAAKD,MAAM0gC,iBAA0D,UAAvCzgC,KAAKD,MAAM0gC,gBAAgBsB,UACxD/hC,KAAKD,MAAM0gC,gBAAgBg8B,WAAWr3D,OACxCpF,KAAKkhE,aAEL76D,QAAQC,KAAK,wIAKhB46D,aACC,IAAI53D,EAAUtJ,KAAKD,MAAM0gC,gBACzBj+B,EAAUxC,KAAKD,MAAMyC,QACrBijC,EAAUn8B,EAAQu7C,qBAAqB,MACvCryC,EAAOlJ,EAAQu7C,qBAAqB,SAAS,GAC7C3kD,EAAO,GAEPF,KAAKghE,UAAW,EAEhBhhE,KAAKoC,iBAAiB,iBAEtBoQ,EAAOA,EAAOA,EAAKqyC,qBAAqB,MAAQ,GAGhD7kD,KAAKmhE,gBAAgB73D,EAAS9G,GAE3BijC,EAAQrgC,OACVpF,KAAKohE,gBAAgB37B,EAASjzB,GAE9BxS,KAAKqhE,sBAAsB57B,EAASjzB,GAIrC,IAAI,IAAIV,EAAQ,EAAGA,EAAQU,EAAKpN,OAAQ0M,IAAQ,CAC/C,IACAzN,EADUmO,EAAKV,GACH+yC,qBAAqB,MACjCpvC,EAAO,GAGHzV,KAAKghE,WACRvrD,EAAKjT,EAAQsP,OAASA,GAGvB,IAAI,IAAI7D,EAAI,EAAGA,EAAI5J,EAAMe,OAAQ6I,IAAI,CACpC,IAAI1J,EAAOF,EAAM4J,QACgB,IAAvBjO,KAAK+gE,WAAW9yD,KACzBwH,EAAKzV,KAAK+gE,WAAW9yD,IAAM1J,EAAK6G,WAKlClL,EAAKsE,KAAKiR,GAGXjT,EAAQtC,KAAOA,EAEfF,KAAKoC,iBAAiB,gBAIvB++D,gBAAgB73D,EAAS9G,EAAS2R,GACjC,IAAI6tB,EAAa14B,EAAQ04B,WACrBs/B,EAAantD,EAAiBpF,OAAOC,KAAKmF,GAAkBpF,OAAOC,KAAKxM,GACxEmM,EAAc,GAMlB,IAAI,IAAImD,KAJRwvD,EAAWh9D,SAASmR,IACnB9G,EAAY8G,EAAK4mB,eAAiB5mB,CAAI,IAGtBusB,EAAW,CAC3B,IACIp+B,EADA29D,EAASv/B,EAAWlwB,GAGrByvD,GAA2B,iBAAVA,GAAsBA,EAAO39D,MAA8C,IAAtC29D,EAAO39D,KAAKqL,QAAQ,gBAC5ErL,EAAO29D,EAAO39D,KAAKiuB,QAAQ,aAAc,SAET,IAAtBljB,EAAY/K,KACrBpB,EAAQmM,EAAY/K,IAAS5D,KAAKwhE,aAAaD,EAAO7+D,UAO1D8+D,aAAa9+D,GACZ,MAAa,SAAVA,GAIU,UAAVA,GAIIA,EAIR++D,SAASp6D,GAKR,OAJYrH,KAAKD,MAAMyC,QAAQsC,QAAQwa,MAAMhc,GACrCA,EAAO+D,QAAUA,MAGT,EAIjB+5D,gBAAgB37B,EAASjzB,GACxB,IAAI,IAAIV,EAAQ,EAAGA,EAAQ2zB,EAAQrgC,OAAQ0M,IAAQ,CAClD,IAGA7K,EAHI0sC,EAASlO,EAAQ3zB,GACrB4vD,GAAS,EACTjmD,EAAMzb,KAAKyhE,SAAS9tB,EAAOguB,aAGxBlmD,EACFimD,GAAS,EAETjmD,EAAM,CAACpU,MAAMssC,EAAOguB,YAAY9+B,QAG7BpnB,EAAInU,QACPmU,EAAInU,MAAQqsC,EAAOguB,YAAY9+B,OAAOxG,cAAculC,WAAW,IAAK,OAGrE36D,EAAQ0sC,EAAOiJ,aAAa,YAEfnhC,EAAIxU,QAChBwU,EAAIxU,MAAQA,GAIbjH,KAAKmhE,gBAAgBxtB,EAAQl4B,EAAKzb,KAAKD,MAAM6F,cAAc+I,YAAYmH,oBAEvE9V,KAAK+gE,WAAWjvD,GAAS2J,EAAInU,MAE1BmU,EAAInU,OAAStH,KAAKD,MAAMyC,QAAQsP,QAClC9R,KAAKghE,UAAW,GAGbU,GACH1hE,KAAKD,MAAMyC,QAAQsC,QAAQN,KAAKiX,IAOnC4lD,sBAAsB57B,EAASjzB,GAC9B,IAAI,IAAIV,EAAQ,EAAGA,EAAQ2zB,EAAQrgC,OAAQ0M,IAAQ,CAClD,IAAI6hC,EAASlO,EAAQ3zB,GACrB2J,EAAM,CAACpU,MAAM,GAAIC,MAAM,MAAQwK,GAE/B9R,KAAK+gE,WAAWjvD,GAAS2J,EAAInU,MAE7B,IAAIL,EAAQ0sC,EAAOiJ,aAAa,SAE7B31C,IACFwU,EAAIxU,MAAQA,GAGbjH,KAAKD,MAAMyC,QAAQsC,QAAQN,KAAKiX,KAKnCqlD,GAAgB3lC,WAAa,yBC/Kd,CACdgY,ICLD,SAAqBmH,GACpB,IAAIp6C,EAAO,GACXuI,EAAM,EACNgT,EAAM,EACNomD,GAAU,EAGV,IAAK,IAAI/vD,EAAQ,EAAGA,EAAQwoC,EAAMl1C,OAAQ0M,IAAS,CAClD,IAAIynC,EAAOe,EAAMxoC,GACjBgwD,EAAWxnB,EAAMxoC,EAAM,GAGnB5R,EAAKuI,KACRvI,EAAKuI,GAAO,IAITvI,EAAKuI,GAAKgT,KACbvb,EAAKuI,GAAKgT,GAAO,IAIN,KAAR89B,GAAesoB,GAAuB,KAAZC,GAC7B5hE,EAAKuI,GAAKgT,IAAQ89B,EAClBznC,KAKW,KAARynC,EAMQ,KAARA,GAAgBsoB,EAMR,MAARtoB,GAA4B,MAAZuoB,GAAqBD,EAQ5B,MAARtoB,GAAwB,MAARA,GAAkBsoB,EAOvC3hE,EAAKuI,GAAKgT,IAAQ89B,GANjB99B,EAAM,EACNhT,MATAgT,EAAM,EACNhT,IACAqJ,KARA2J,IANAomD,GAAWA,EA6Bb,OAAO3hE,CACR,EDtDCslC,KENc,SAAS8U,GACvB,IACC,OAAOv2B,KAAKC,MAAMs2B,GACjB,MAAMvqC,GAEP,OADA1J,QAAQC,KAAK,oDAAqDyJ,GAC3DoD,QAAQE,SAEjB,EFAC0uD,MGPD,SAAuBznB,GACtB,OAAOA,CACR,GCEA,MAAM0nB,WAAe1qC,EAEpBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKw3B,oBAAoB,gBACzBx3B,KAAKw3B,oBAAoB,eAAgB,QAG1C/gB,aACCzW,KAAK03B,sBAAsB,SAAU13B,KAAKiiE,eAAenhE,KAAKd,OAE3DA,KAAKD,MAAMyC,QAAQ0/D,eACrBliE,KAAK2B,UAAU,eAAgB3B,KAAKmiE,cAAcrhE,KAAKd,MAAO,IAC9DA,KAAK2B,UAAU,YAAa3B,KAAKoiE,SAASthE,KAAKd,MAAO,KAIxDmiE,cAAcjiE,GACb,OAAOF,KAAKD,MAAMyC,QAAQ0/D,eAAiC,iBAAThiE,GAAsBiV,MAAMC,QAAQlV,IAASA,EAAKkF,QAAU+P,MAAMC,QAAQlV,IAG7HkiE,SAASliE,EAAM0xB,EAAQnX,EAAQta,EAAQ2mC,GACtC,OAAO9mC,KAAKqiE,WAAWriE,KAAKsiE,iBAAkBpiE,GAC5CgU,KAAKlU,KAAKuiE,cAAczhE,KAAKd,OAC7BuyB,OAAOiwC,IACPn8D,QAAQ0N,MAAM,gBAAiByuD,GAAO,yBAC/BrvD,QAAQE,OAAOmvD,MAIzBF,eAAeJ,GACd,IAAIO,EAgBJ,OAdIP,IACHA,EAAeliE,KAAKD,MAAMyC,QAAQ0/D,eAIlCO,EAD0B,iBAAjBP,EACEF,GAAOU,UAAUR,GAEjBA,IAIX77D,QAAQ0N,MAAM,qCAAsCmuD,GAG9CO,EAGRR,eAAeC,EAAcS,GAC5B,IAAIF,EAAWziE,KAAKsiE,eAAeJ,GAEnC,GAAGO,EACF,OAAOziE,KAAK4iE,SAASD,GACnBzuD,KAAKlU,KAAKqiE,WAAWvhE,KAAKd,KAAMyiE,IAChCvuD,KAAKlU,KAAKuiE,cAAczhE,KAAKd,OAC7BkU,KAAKlU,KAAKijB,QAAQniB,KAAKd,OACvBuyB,OAAOiwC,IACPn8D,QAAQ0N,MAAM,gBAAiByuD,GAAO,yBAC/BrvD,QAAQE,OAAOmvD,MAK1BI,SAASC,GACR,OAAO,IAAI1vD,SAAQ,CAACC,EAASC,KAC5B,IAAIinC,EAAQvwC,SAASC,cAAc,SACnCswC,EAAM92C,KAAO,OACb82C,EAAMwoB,OAASD,EAEfvoB,EAAMxqC,iBAAiB,UAAWC,IACjC,IAAIgzD,EAAOzoB,EAAM0oB,MAAM,GACvBC,EAAS,IAAIC,WAEb,OAAOljE,KAAKD,MAAMyC,QAAQ2gE,cACzB,IAAK,SACJF,EAAOG,kBAAkBL,GACzB,MAED,IAAK,SACJE,EAAOI,mBAAmBN,GAC1B,MAED,IAAK,MACJE,EAAOK,cAAcP,GACrB,MAGD,QACCE,EAAOM,WAAWR,GAGpBE,EAAOO,OAAUzzD,IAChBqD,EAAQ6vD,EAAO/7D,OAAO,EAGvB+7D,EAAOQ,QAAW1zD,IACjB1J,QAAQC,KAAK,yCACb+M,GAAQ,CACR,IAGFinC,EAAM1B,OAAO,IAIfypB,WAAWI,EAAUnvB,GACpB,IAAIpzC,EAAOuiE,EAAS32D,KAAK9L,KAAKD,MAAOuzC,GAErC,OAAGpzC,aAAgBiT,QACXjT,EAEAA,EAAOiT,QAAQC,QAAQlT,GAAQiT,QAAQE,SAIhDkvD,cAAcmB,GAGb,OAAGvuD,MAAMC,QAAQsuD,IAAeA,EAAWt+D,QAAU+P,MAAMC,QAAQsuD,EAAW,IAC1E1jE,KAAKD,MAAMyC,QAAQgoB,YACdxqB,KAAK2jE,uBAAuBD,GAE5B1jE,KAAK4jE,wBAAwBF,GAK9BA,EAITC,uBAAuBD,GACtB,IAAI5+D,EAAU4+D,EAAW/vC,QAYzB,OAVW+vC,EAAW9wC,KAAKzC,IAC1B,IAAI1nB,EAAM,GAMV,OAJA3D,EAAQR,SAAQ,CAACvC,EAAKkM,KACrBxF,EAAI1G,GAAOouB,EAAOliB,EAAE,IAGdxF,CAAG,IAMZm7D,wBAAwBF,GACvB,IAAIxjE,EAAO,GACX4E,EAAU9E,KAAKD,MAAMoR,aAwBrB,OArBGrM,EAAQ,IAAM4+D,EAAW,GAAG,IAC3B5+D,EAAQ,GAAGb,gBAAgBoD,QAAUq8D,EAAW,GAAG,IACrDA,EAAW/vC,QAKb+vC,EAAWp/D,SAAS+tB,IACnB,IAAI5pB,EAAM,GAEV4pB,EAAQ/tB,SAAQ,CAAC5B,EAAOoP,KACvB,IAAIxO,EAASwB,EAAQgN,GAElBxO,IACFmF,EAAInF,EAAOY,YAAcxB,MAI3BxC,EAAKsE,KAAKiE,EAAI,IAGRvI,EAGR+iB,QAAQ/iB,GACP,OAAOF,KAAKD,MAAMkjB,QAAQ/iB,IAI5B8hE,GAAO7mC,WAAa,SAGpB6mC,GAAOU,UAAYmB,GC1LnB,MAAMC,WAAoBxsC,EAEzBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK+jE,SAAW,CAEfC,SAAS,YACTC,YAAY,eACZC,WAAW,kBACXC,cAAc,iBACdC,cAAc,iBACdC,aAAa,gBACbC,YAAY,eACZC,aAAa,gBACbC,aAAa,gBACbC,WAAW,cACXC,OAAO,MACPC,UAAU,MACVC,WAAW,MAGX/a,UAAU,aACVgb,aAAa,gBACbC,YAAY,mBACZC,eAAe,kBACfC,eAAe,kBACfC,cAAc,iBACdC,aAAa,gBACbC,cAAc,iBACdC,cAAc,iBACdC,YAAY,eACZC,QAAQ,OACRC,WAAW,OACXC,YAAY,OAGZC,YAAY,eACZC,eAAe,kBACfC,cAAc,qBACdC,iBAAiB,oBACjBC,iBAAiB,oBACjBC,gBAAgB,mBAChBC,eAAe,kBACfC,gBAAgB,mBAChBC,gBAAgB,mBAChBC,cAAc,iBACdC,UAAU,SACVC,aAAa,SACbC,cAAc,SAGdC,WAAW,cACXC,cAAc,iBACdC,aAAa,oBACbC,gBAAgB,mBAChBC,gBAAgB,mBAChBC,eAAe,kBACfC,cAAc,iBACdC,eAAe,kBACfC,eAAe,kBACfC,aAAa,gBACbC,SAAS,QACTC,YAAY,QACZC,aAAa,SAGdlnE,KAAKmnE,YAAc,GAEnBnnE,KAAKonE,iBAAmB,GAExBpnE,KAAKqnE,kBAAoB,GAEzBrnE,KAAKsnE,cAAgB,CACpB7+D,IAAI,CACH8+D,IAAI,KACJC,OAAO,KACPC,QAAQ,MAETljE,KAAK,CACJgjE,IAAI,KACJC,OAAO,KACPC,QAAQ,MAETnkE,OAAO,CACNikE,IAAI,KACJC,OAAO,KACPC,QAAQ,MAETziD,MAAM,CACLuiD,IAAI,KACJC,OAAO,KACPC,QAAQ,OAIVznE,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,mBAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,mBAC1Bz3B,KAAKy3B,qBAAqB,mBAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,aAC1Bz3B,KAAKy3B,qBAAqB,gBAC1Bz3B,KAAKy3B,qBAAqB,iBAE1Bz3B,KAAKy3B,qBAAqB,aAC1Bz3B,KAAKy3B,qBAAqB,gBAC1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,gBAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,WAC1Bz3B,KAAKy3B,qBAAqB,cAC1Bz3B,KAAKy3B,qBAAqB,eAI3BhhB,aACCzW,KAAK0nE,2BAEL1nE,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OACzDA,KAAK2B,UAAU,gBAAiB3B,KAAK2nE,2BAA2B7mE,KAAKd,OACrEA,KAAK2B,UAAU,oBAAqB3B,KAAK4nE,mBAAmB9mE,KAAKd,OACjEA,KAAK2B,UAAU,kBAAmB3B,KAAK4nE,mBAAmB9mE,KAAKd,OAGhE4nE,qBACa74D,OAAOohB,OAAOnwB,KAAKsnE,eAEzBhjE,SAASd,IACd,IAAI,IAAIzB,KAAOyB,EACdA,EAAKzB,GAAO,QAKf4lE,2BAA2B53D,EAAGxL,GAC7B,IAAIklC,EAEJ,IAAGzpC,KAAKD,MAAM44B,UAAU,SACnB34B,KAAKD,MAAMU,QAAQoqC,KAAKC,cAAgBvmC,EAD7C,CAMAwL,EAAEy4B,iBAEF,IACKz+B,SAASs3B,YACZoI,EAAQ1/B,SAASksB,KAAKgU,mBAChBC,kBAAkB3lC,EAAKP,cAC7BylC,EAAMU,UACI51B,OAAO2sB,gBACjBuI,EAAQ1/B,SAAS8/B,eACXg+B,WAAWtjE,EAAKP,cACtBuQ,OAAO2sB,eAAeE,kBACtB7sB,OAAO2sB,eAAe8I,SAASP,IAEhC,MAAM15B,MAGR23D,2BACC,IAAI,IAAI3lE,KAAO/B,KAAK+jE,SACnB/jE,KAAKuC,2BAA2BR,EAAK/B,KAAKqwB,oBAAoBvvB,KAAKd,KAAM+B,IAI3EsuB,oBAAoBtuB,EAAKwuB,GACrBA,EACEvwB,KAAKmnE,YAAYplE,KACjB/B,KAAK+jE,SAAShiE,GAAK+Z,SAAS,MAC9B9b,KAAKmnE,YAAYplE,GAAO/B,KAAK+D,OAAOjD,KAAKd,KAAM+B,GAC/C/B,KAAK2B,UAAU3B,KAAK+jE,SAAShiE,GAAM/B,KAAKmnE,YAAYplE,KAEpD/B,KAAK8nE,qBAAqB/lE,IAIzB/B,KAAK+jE,SAAShiE,GAAK+Z,SAAS,MAC3B9b,KAAKmnE,YAAYplE,IAAS/B,KAAKqnE,kBAAkBtlE,IAAU/B,KAAKsC,mBAAmBP,KACrF/B,KAAK6B,YAAY7B,KAAK+jE,SAAShiE,GAAM/B,KAAKmnE,YAAYplE,WAC/C/B,KAAKmnE,YAAYplE,IAGzB/B,KAAK+nE,uBAAuBhmE,GAM/B+lE,qBAAqB/lE,GACpB,IAAIyB,EAAOxD,KAAK+jE,SAAShiE,GAErB/B,KAAKonE,iBAAiB5jE,EAAO,iBAChCxD,KAAKonE,iBAAiB5jE,EAAO,eAAiBxD,KAAKgoE,YAAYlnE,KAAKd,KAAMwD,EAAM,SAChFxD,KAAKonE,iBAAiB5jE,EAAO,aAAexD,KAAKgoE,YAAYlnE,KAAKd,KAAMwD,EAAM,OAE9ExD,KAAK2B,UAAU6B,EAAO,cAAexD,KAAKonE,iBAAiB5jE,EAAO,gBAClExD,KAAK2B,UAAU6B,EAAO,YAAaxD,KAAKonE,iBAAiB5jE,EAAO,eAGjExD,KAAKmnE,YAAYplE,IAAO,EAGzBgmE,uBAAuBhmE,GACtB,IAAIkmE,GAAU,EACdzkE,EAAOxD,KAAK+jE,SAAShiE,GAErB,GAAG/B,KAAKmnE,YAAYplE,KAAS/B,KAAKsC,mBAAmBP,GAAK,QAClD/B,KAAKmnE,YAAYplE,GAExB,IAAI,IAAIkM,KAAKjO,KAAK+jE,SACd/jE,KAAK+jE,SAAS91D,KAAOzK,GACpBxD,KAAKmnE,YAAYl5D,KACnBg6D,GAAU,GAKVA,IACFjoE,KAAK6B,YAAY2B,EAAO,cAAexD,KAAKonE,iBAAiB5jE,EAAO,gBACpExD,KAAK6B,YAAY2B,EAAO,YAAaxD,KAAKonE,iBAAiB5jE,EAAO,qBAE3DxD,KAAKonE,iBAAiB5jE,EAAO,sBAC7BxD,KAAKonE,iBAAiB5jE,EAAO,eAKvCw3B,iBAAiB13B,GAChB,IAAI+J,EAAM/J,EAAOwH,WAEjB,IAAI,IAAI/I,KAAO/B,KAAK+jE,SAChB12D,EAAItL,KACN/B,KAAKqwB,oBAAoBtuB,GAAK,GAE1B/B,KAAKqnE,kBAAkBtlE,KAC1B/B,KAAKqnE,kBAAkBtlE,GAAO,IAG/B/B,KAAKqnE,kBAAkBtlE,GAAKyC,KAAKlB,IAKpCS,OAAOu6B,EAAQvuB,EAAGtG,GACjBzJ,KAAKouB,cAAckQ,EAAQvuB,EAAGtG,GAG/Bu+D,YAAYxkE,EAAM86B,EAAQvuB,EAAGtG,GAC5B,IAAIy+D,EAAWloE,KAAKsnE,cAAc9jE,GAMlC,OAJY,WAATA,IACFA,EAAO,UAGD86B,GACN,IAAK,QACJ4pC,EAASX,KAAM,EAEfppB,aAAa+pB,EAAST,SAEtBS,EAAST,QAAUh1C,YAAW,KAC7B0rB,aAAa+pB,EAAST,SACtBS,EAAST,QAAU,KAEnBS,EAASX,IAAM,KACfppB,aAAa+pB,EAASV,QACtBU,EAASV,OAAS,KAElBxnE,KAAKouB,cAAc5qB,EAAO,UAAWuM,EAAItG,EAAU,GACjD,KACH,MAED,IAAK,MACDy+D,EAASX,MAEXW,EAASX,IAAM,KACfvnE,KAAKouB,cAAc5qB,EAAO,MAAOuM,EAAItG,IAGnCy+D,EAASV,QACXrpB,aAAa+pB,EAASV,QACtBU,EAASV,OAAS,KAElBxnE,KAAKouB,cAAc5qB,EAAO,SAAUuM,EAAItG,IAExCy+D,EAASV,OAAS/0C,YAAW,KAC5B0rB,aAAa+pB,EAASV,QACtBU,EAASV,OAAS,IAAI,GACpB,KAGJrpB,aAAa+pB,EAAST,SACtBS,EAAST,QAAU,MAKtBr5C,cAAckQ,EAAQvuB,EAAGtG,GACxB,IACAuN,EADImxD,EAAe1+D,EAAUhF,eAG1BzE,KAAKqnE,kBAAkB/oC,KAEtB70B,aAAqBL,EACvB4N,EAAWvN,EAAUnG,OAAOwH,WAAWwzB,GAC/B70B,aAAqBlE,IAC7ByR,EAAWvN,EAAUqB,WAAWwzB,IAG9BtnB,GACFA,EAASjH,EAAGo4D,IAIdnoE,KAAKoC,iBAAiBk8B,EAAQvuB,EAAGo4D,IAInCrE,GAAY3oC,WAAa,cCzUzB,MAAMitC,WAAoB9wC,EAEzBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKqoE,UAAY,KACjBroE,KAAKsoE,YAAc,KACnBtoE,KAAKuoE,cAAe,EACpBvoE,KAAKwoE,gBAAiB,EAEtBxoE,KAAKw3B,oBAAoB,cAAe,IACxCx3B,KAAKw3B,oBAAoB,gBAAgB,GAG1C/gB,aACC,IAAI6a,EAAWtxB,KAAKD,MAAMyC,QAAQimE,YAClCC,EAAiB,GAEjB1oE,KAAKqoE,UAAY,GACjBroE,KAAKsoE,YAAc,IAEH,IAAbh3C,IACFviB,OAAOiF,OAAO00D,EAAgBN,GAAY92C,UAC1CviB,OAAOiF,OAAO00D,EAAgBp3C,GAE9BtxB,KAAK2oE,YAAYD,GACjB1oE,KAAK4oE,cAGN5oE,KAAK2B,UAAU,gBAAiB3B,KAAK6oE,cAAc/nE,KAAKd,OAGzD2oE,YAAYr3C,GACX,IAAI,IAAIvvB,KAAOuvB,EACX82C,GAAYltB,QAAQn5C,GACnBuvB,EAASvvB,KACiB,iBAAlBuvB,EAASvvB,KAClBuvB,EAASvvB,GAAO,CAACuvB,EAASvvB,KAG3BuvB,EAASvvB,GAAKuC,SAASy4B,KACJ5nB,MAAMC,QAAQ2nB,GAAYA,EAAU,CAACA,IAE3Cz4B,SAASmR,IACpBzV,KAAK8oE,WAAW/mE,EAAK0T,EAAK,GACzB,KAIJpP,QAAQC,KAAK,sCAAuCvE,GAKvD+mE,WAAWxqC,EAAQyqC,GAClB,IAAIhsC,EAAU,CACbuB,OAAQ8pC,GAAYltB,QAAQ5c,GAC5BtvB,KAAM,GACNg6D,MAAM,EACNr1C,OAAO,EACPs1C,MAAM,GAGOF,EAAYh/B,WAAW1N,cAActxB,MAAM,KAAKs6B,KAAK,IAAIt6B,MAAM,KAErEzG,SAASg1C,IAChB,OAAOA,GACN,IAAK,OACJvc,EAAQisC,MAAO,EACf,MAED,IAAK,QACJjsC,EAAQpJ,OAAQ,EAChB,MAED,IAAK,OACJoJ,EAAQksC,MAAO,EACf,MAED,QACC3vB,EAASrnC,MAAMqnC,GAAUA,EAAO1U,cAAcqS,WAAW,GAAKrnC,SAAS0pC,GACvEvc,EAAQ/tB,KAAKxK,KAAK80C,GAEdt5C,KAAKqoE,UAAU/uB,KAClBt5C,KAAKqoE,UAAU/uB,GAAU,IAG1Bt5C,KAAKqoE,UAAU/uB,GAAQ90C,KAAKu4B,OAKhC6rC,aACC,IAAIjkB,EAAO3kD,KAEXA,KAAKuoE,aAAe,SAASx4D,GAC5B,IAAIm5D,EAAOn5D,EAAEonB,QACT7F,EAAWqzB,EAAK0jB,UAAUa,GAE3B53C,IAEFqzB,EAAK2jB,YAAY9jE,KAAK0kE,GAEtB53C,EAAShtB,SAAQ,SAASy4B,GACzB4nB,EAAKwkB,aAAap5D,EAAGgtB,QAKxB/8B,KAAKwoE,eAAiB,SAASz4D,GAC9B,IAAIm5D,EAAOn5D,EAAEonB,QAGb,GAFewtB,EAAK0jB,UAAUa,GAElB,CAEX,IAAIp3D,EAAQ6yC,EAAK2jB,YAAYr5D,QAAQi6D,GAElCp3D,GAAS,GACX6yC,EAAK2jB,YAAYv2D,OAAOD,EAAO,KAKlC9R,KAAKD,MAAMuJ,QAAQwG,iBAAiB,UAAW9P,KAAKuoE,cAEpDvoE,KAAKD,MAAMuJ,QAAQwG,iBAAiB,QAAS9P,KAAKwoE,gBAGnDK,gBACI7oE,KAAKuoE,cACPvoE,KAAKD,MAAMuJ,QAAQonB,oBAAoB,UAAW1wB,KAAKuoE,cAGrDvoE,KAAKwoE,gBACPxoE,KAAKD,MAAMuJ,QAAQonB,oBAAoB,QAAS1wB,KAAKwoE,gBAIvDW,aAAap5D,EAAGgtB,GACf,IAAI1nB,GAAQ,EAEZ,OAAGtF,EAAEypC,SAAWzc,EAAQisC,MAAQj5D,EAAEgzC,UAAYhmB,EAAQpJ,OAAS5jB,EAAE0pC,SAAW1c,EAAQksC,OACnFlsC,EAAQ/tB,KAAK1K,SAASvC,KAGR,GAFD/B,KAAKsoE,YAAYr5D,QAAQlN,KAGpCsT,GAAQ,MAIPA,GACF0nB,EAAQuB,OAAOxyB,KAAK9L,KAAM+P,IAGpB,IAOVq4D,GAAYjtC,WAAa,cAGzBitC,GAAY92C,SCzKG,CACd83C,QAAQ,YACRC,QAAQ,EACRC,MAAM,GACNC,QAAQ,GACRC,aAAa,GACbC,eAAe,GACfC,cAAc,GACdC,YAAY,GACZ3J,KAAK,CAAC,YAAa,aACnBC,KAAK,CAAC,YAAa,aACnB2J,gBAAgB,CAAC,YAAa,cD+J/BxB,GAAYltB,QE1KG,CACd2uB,SAAS,SAAS95D,GACjBA,EAAEC,kBACFD,EAAEy4B,kBAEHghC,aAAa,SAASz5D,GACrB,IAAIhE,EAAa/L,KAAKD,MAAMgM,WAC5B+9D,EAAS/9D,EAAW2M,UAAY3M,EAAWzC,QAAQsH,aAEnDb,EAAEy4B,iBAECz8B,EAAWwd,mBACVugD,GAAU,EACZ/9D,EAAWzC,QAAQoP,UAAYoxD,EAE/B/9D,EAAW0L,YAAY1L,EAAW8L,iBAAiB,KAIrD7X,KAAKD,MAAMuJ,QAAQ2G,SAEpBw5D,eAAe,SAAS15D,GACvB,IAAIhE,EAAa/L,KAAKD,MAAMgM,WAC5B+9D,EAAS/9D,EAAW2M,UAAY3M,EAAWzC,QAAQsH,aACnDm5D,EAAYh+D,EAAWzC,QAAQmP,aAE/B1I,EAAEy4B,iBAECz8B,EAAWwd,mBACVugD,GAAUC,EACZh+D,EAAWzC,QAAQoP,UAAYoxD,EAE/B/9D,EAAW0L,YAAY1L,EAAW8L,iBAAiB9L,EAAWwd,iBAAmB,KAInFvpB,KAAKD,MAAMuJ,QAAQ2G,SAGpBy5D,cAAc,SAAS35D,GACtB,IAAIhE,EAAa/L,KAAKD,MAAMgM,WAE5BgE,EAAEy4B,iBAECz8B,EAAWwd,kBACbxd,EAAW0L,YAAY1L,EAAW8L,iBAAiB,IAGpD7X,KAAKD,MAAMuJ,QAAQ2G,SAEpB05D,YAAY,SAAS55D,GACpB,IAAIhE,EAAa/L,KAAKD,MAAMgM,WAE5BgE,EAAEy4B,iBAECz8B,EAAWwd,kBACbxd,EAAW0L,YAAY1L,EAAW8L,iBAAiB9L,EAAWwd,iBAAmB,IAGlFvpB,KAAKD,MAAMuJ,QAAQ2G,SAEpBm5D,QAAQ,SAASr5D,GAChB/P,KAAKiC,SAAS,sBAAuB8N,IAGtCs5D,QAAQ,SAASt5D,GAChB/P,KAAKiC,SAAS,sBAAuB8N,IAGtCi6D,QAAQ,SAASj6D,GAChB/P,KAAKiC,SAAS,sBAAuB8N,IAGtCk6D,SAAS,SAASl6D,GACjB/P,KAAKiC,SAAS,uBAAwB8N,IAGvCu5D,MAAM,SAASv5D,GACd/P,KAAKiC,SAAS,oBAAqB8N,IAGpCw5D,QAAQ,SAASx5D,GAChB/P,KAAKiC,SAAS,sBAAuB8N,IAGtCiwD,KAAK,SAASjwD,GAEV/P,KAAKD,MAAMyC,QAAQm9D,SAAW3/D,KAAKD,MAAM44B,UAAU,YAAc34B,KAAKD,MAAM44B,UAAU,UAEjF34B,KAAKD,MAAMU,QAAQoqC,KAAKC,cAG9B/6B,EAAEy4B,iBACFxoC,KAAKD,MAAMU,QAAQk/D,QAAQK,UAK9BC,KAAK,SAASlwD,GAEV/P,KAAKD,MAAMyC,QAAQm9D,SAAW3/D,KAAKD,MAAM44B,UAAU,YAAc34B,KAAKD,MAAM44B,UAAU,UAEjF34B,KAAKD,MAAMU,QAAQoqC,KAAKC,cAG9B/6B,EAAEy4B,iBACFxoC,KAAKD,MAAMU,QAAQk/D,QAAQM,UAK9B2J,gBAAgB,SAAS75D,GACpB/P,KAAKD,MAAMU,QAAQoqC,KAAKC,aACxB9qC,KAAKD,MAAM44B,UAAU,aAAa,IACpC34B,KAAKD,MAAMU,QAAQ2nC,UAAU9yB,MAAK,GAAO,KChH7C,MAAM40D,WAAa5yC,EAElBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKu4B,cAAgB,KACrBv4B,KAAKmqE,iBAAkB,EAEvBnqE,KAAKoqE,iBAAmB,KACxBpqE,KAAKqqE,UAAY,KAEjBrqE,KAAKqnE,kBAAoB,GAEzBrnE,KAAKw3B,oBAAoB,qBAAiBj3B,GAE1CP,KAAKw3B,oBAAoB,kBAAkB,GAC3Cx3B,KAAKw3B,oBAAoB,gBAAgB,GACzCx3B,KAAKw3B,oBAAoB,mBAAmB,GAC5Cx3B,KAAKw3B,oBAAoB,oBAAoB,GAC7Cx3B,KAAKw3B,oBAAoB,kBAAkB,GAC3Cx3B,KAAKw3B,oBAAoB,qBAAqB,GAE9Cx3B,KAAKy3B,qBAAqB,qBAC1Bz3B,KAAKy3B,qBAAqB,mBAC1Bz3B,KAAKy3B,qBAAqB,sBAC1Bz3B,KAAKy3B,qBAAqB,cAC1Bz3B,KAAKy3B,qBAAqB,kBAC1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,aAC1Bz3B,KAAKy3B,qBAAqB,gBAI3BhhB,aACCzW,KAAKu3C,yBACLv3C,KAAKsqE,wBACLtqE,KAAKuqE,0BAELvqE,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OAG1Du3C,yBACKv3C,KAAK2C,iBAAiB,gBAAiB,oBAC1C3C,KAAKD,MAAMyC,QAAQuzB,eAAiB/1B,KAAKD,MAAMyC,QAAQ+1B,eAIzD+xC,wBACItqE,KAAKD,MAAMyC,QAAQgoE,iBACrBxqE,KAAK2B,UAAU,kBAAmB3B,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQgoE,iBACnFxqE,KAAKD,MAAMgkC,GAAG,aAAc/jC,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQgoE,kBAG3ExqE,KAAKD,MAAMyC,QAAQkoE,cACrB1qE,KAAK2B,UAAU,YAAa3B,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQkoE,eAG3E1qE,KAAKD,MAAMyC,QAAQmoE,iBACrB3qE,KAAK2B,UAAU,eAAgB3B,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQmoE,kBAIlFJ,0BACIvqE,KAAKD,MAAMyC,QAAQooE,mBACrB5qE,KAAK2B,UAAU,oBAAqB3B,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQooE,mBACrF5qE,KAAKD,MAAMgkC,GAAG,eAAgB/jC,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQooE,oBAG7E5qE,KAAKD,MAAMyC,QAAQqoE,gBACrB7qE,KAAK2B,UAAU,cAAe3B,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQqoE,iBAG7E7qE,KAAKD,MAAMyC,QAAQsoE,mBACrB9qE,KAAK2B,UAAU,iBAAkB3B,KAAKyqE,cAAc3pE,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQsoE,oBAIpF9vC,iBAAiB13B,GAChB,IAAI+J,EAAM/J,EAAOwH,WAGduC,EAAI09D,oBAAsB/qE,KAAKqnE,kBAAkB0D,oBACnD/qE,KAAKqnE,kBAAkB0D,kBAAoB/qE,KAAKgrE,yBAAyBlqE,KAAKd,KAAM,qBACpFA,KAAK2B,UAAU,qBAAsB3B,KAAKqnE,kBAAkB0D,mBAC5D/qE,KAAKD,MAAMgkC,GAAG,gBAAiB/jC,KAAKgrE,yBAAyBlqE,KAAKd,KAAM,uBAGtEqN,EAAI49D,kBAAoBjrE,KAAKqnE,kBAAkB4D,kBACjDjrE,KAAKqnE,kBAAkB4D,gBAAkBjrE,KAAKgrE,yBAAyBlqE,KAAKd,KAAM,mBAClFA,KAAK2B,UAAU,eAAgB3B,KAAKqnE,kBAAkB4D,kBAGpD59D,EAAI69D,qBAAuBlrE,KAAKqnE,kBAAkB6D,qBACpDlrE,KAAKqnE,kBAAkB6D,mBAAqBlrE,KAAKgrE,yBAAyBlqE,KAAKd,KAAM,sBACrFA,KAAK2B,UAAU,kBAAmB3B,KAAKqnE,kBAAkB6D,qBAGvD79D,EAAI89D,YACNnrE,KAAKorE,2BAA2B9nE,GAI9B+J,EAAIg+D,cAAgBrrE,KAAKqnE,kBAAkBgE,cAC7CrrE,KAAKqnE,kBAAkBgE,YAAcrrE,KAAKsrE,uBAAuBxqE,KAAKd,KAAM,eAC5EA,KAAK2B,UAAU,mBAAoB3B,KAAKqnE,kBAAkBgE,aAC1DrrE,KAAKD,MAAMgkC,GAAG,cAAe/jC,KAAKsrE,uBAAuBxqE,KAAKd,KAAM,iBAGlEqN,EAAIk+D,YAAcvrE,KAAKqnE,kBAAkBkE,YAC3CvrE,KAAKqnE,kBAAkBkE,UAAYvrE,KAAKsrE,uBAAuBxqE,KAAKd,KAAM,aAC1EA,KAAK2B,UAAU,aAAc3B,KAAKqnE,kBAAkBkE,YAGlDl+D,EAAIm+D,eAAiBxrE,KAAKqnE,kBAAkBmE,eAC9CxrE,KAAKqnE,kBAAkBmE,aAAexrE,KAAKsrE,uBAAuBxqE,KAAKd,KAAM,gBAC7EA,KAAK2B,UAAU,gBAAiB3B,KAAKqnE,kBAAkBmE,eAIzDJ,2BAA2B9nE,GAC1B,IACAmoE,EADIC,EAAOpoE,EAAOwH,WAAW6gE,gBAG7BF,EAAe1hE,SAASC,cAAc,SACzBgB,UAAUC,IAAI,iCAExBygE,GACiB,mBAATA,IACTA,EAAOA,EAAKpoE,EAAOmB,iBAGjBinE,aAAgBxrD,YAClBurD,EAAajgE,YAAYkgE,GAEzBD,EAAargE,UAAYsgE,GAG1BD,EAAargE,UAAY,WAG1BqgE,EAAa37D,iBAAiB,SAAUC,IACvCA,EAAEC,kBACFD,EAAEy4B,iBAEFxoC,KAAKyqE,cAAcnnE,EAAOwH,WAAWqgE,WAAYp7D,EAAGzM,EAAO,IAG5DA,EAAOkK,aAAamP,aAAa8uD,EAAcnoE,EAAOkK,aAAalC,YAGpEggE,uBAAuBt1D,EAAQjG,EAAGxL,GAC9BA,EAAK4D,QACP5D,EAAOA,EAAK4D,OAGV5D,EAAKjB,OAAOwH,WAAWkL,IACzBhW,KAAKyqE,cAAclmE,EAAKjB,OAAOwH,WAAWkL,GAASjG,EAAGxL,GAIxDymE,yBAAyBh1D,EAAQjG,EAAGzM,GAChCA,EAAOC,UACTD,EAASA,EAAOC,SAGdD,EAAOwH,WAAWkL,IACpBhW,KAAKyqE,cAAcnnE,EAAOwH,WAAWkL,GAASjG,EAAGzM,GAInDmnE,cAAcmB,EAAM77D,EAAGtG,GACnBA,EAAU2uC,OACZ3uC,EAAYA,EAAU2uC,OACd3uC,EAAUwY,OAClBxY,EAAYA,EAAUwY,MAGvB2pD,EAAsB,mBAARA,EAAqBA,EAAK9/D,KAAK9L,KAAKD,MAAOgQ,EAAGtG,EAAUhF,gBAAkBmnE,EAExF5rE,KAAK6rE,SAAS97D,EAAGtG,EAAWmiE,GAG7BC,SAAS97D,EAAGtG,EAAWmiE,EAAM70C,EAAU+0C,GACtC,IAEAzzC,EAFIjC,IAAUrmB,aAAasmB,YAC3BiC,EAASvuB,SAASC,cAAc,OAUhC,GAPAsuB,EAAOttB,UAAUC,IAAI,kBAEjBmrB,GACHrmB,EAAEy4B,iBAICojC,GAASA,EAAKxmE,OAAlB,CAIA,GAAI2xB,EAmBHsB,EAAQyzC,EAAYj6D,MAAMymB,OAnBd,CACZ,GAAGt4B,KAAKmqE,iBAEP,GAAGnqE,KAAKqqE,UACP,YAGDrqE,KAAKmqE,gBAAkB13C,YAAW,KACjCzyB,KAAKmqE,iBAAkB,CAAK,GAC1B,KAGDnqE,KAAKqqE,WACPrqE,KAAKqqE,UAAUtlE,OAGhB/E,KAAKqqE,UAAYhyC,EAAQr4B,KAAKq4B,MAAMC,GAMrCszC,EAAKtnE,SAASmR,IACb,IAAIs2D,EAAShiE,SAASC,cAAc,OACpCu1C,EAAQ9pC,EAAK8pC,MACbysB,EAAWv2D,EAAKu2D,SAEbv2D,EAAK44C,UACP0d,EAAO/gE,UAAUC,IAAI,6BAErB8gE,EAAO/gE,UAAUC,IAAI,uBAEF,mBAATs0C,IACTA,EAAQA,EAAMzzC,KAAK9L,KAAKD,MAAO0J,EAAUhF,iBAGvC86C,aAAiBl0C,KACnB0gE,EAAOvgE,YAAY+zC,GAEnBwsB,EAAO3gE,UAAYm0C,EAGE,mBAAZysB,IACTA,EAAWA,EAASlgE,KAAK9L,KAAKD,MAAO0J,EAAUhF,iBAG7CunE,GACFD,EAAO/gE,UAAUC,IAAI,gCACrB8gE,EAAOj8D,iBAAiB,SAAUC,IACjCA,EAAEC,iBAAiB,KAGjByF,EAAKm2D,MAAQn2D,EAAKm2D,KAAKxmE,OACzB2mE,EAAOj8D,iBAAiB,SAAUC,IACjCA,EAAEC,kBACFhQ,KAAK6rE,SAAS97D,EAAGtG,EAAWgM,EAAKm2D,KAAMG,EAAQ1zC,EAAM,IAGnD5iB,EAAK6oB,QACPytC,EAAOj8D,iBAAiB,SAAUC,IACjC0F,EAAK6oB,OAAOvuB,EAAGtG,EAAUhF,eAAe,IAMzCgR,EAAKm2D,MAAQn2D,EAAKm2D,KAAKxmE,QACzB2mE,EAAO/gE,UAAUC,IAAI,gCAIvBqtB,EAAO9sB,YAAYugE,EAAO,IAG3BzzC,EAAOxoB,iBAAiB,SAAUC,IAC9B/P,KAAKqqE,WACPrqE,KAAKqqE,UAAUtlE,UAIjBszB,EAAMzzB,KAAKmyB,GAAYhnB,GAEpBsoB,IAAUr4B,KAAKqqE,YACjBrqE,KAAKqqE,UAAUnzC,YAAW,KACzBl3B,KAAKqqE,UAAY,KAEdrqE,KAAKoqE,mBACPpqE,KAAKoC,iBAAiB,aAAcpC,KAAKoqE,iBAAiB3lE,gBAC1DzE,KAAKoqE,iBAAmB,SAI1BpqE,KAAKoqE,iBAAmB3gE,EAExBzJ,KAAKoC,iBAAiB,aAAcqH,EAAUhF,mBAKjDylE,GAAK/uC,WAAa,OCxSlB,MAAM8wC,WAAoB30C,EAEzBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKksE,mBAAqBlsE,KAAKmsE,2BAC/BnsE,KAAKosE,cAAe,EACpBpsE,KAAKqsE,cAAe,EACpBrsE,KAAKssE,YAAc,IACnBtsE,KAAKusE,QAAS,EACdvsE,KAAKwsE,OAAQ,EACbxsE,KAAKysE,YAAa,EAClBzsE,KAAK0sE,OAAS,EACd1sE,KAAK2sE,iBAAmB,GACxB3sE,KAAK4sE,eAAiB,EACtB5sE,KAAK6sE,mBAAoB,EACzB7sE,KAAK8sE,WAAY,EAEjB9sE,KAAK+sE,UAAY/sE,KAAK+sE,UAAUjsE,KAAKd,MACrCA,KAAKgtE,QAAUhtE,KAAKgtE,QAAQlsE,KAAKd,MAEjCA,KAAKw3B,oBAAoB,kBAAkB,GAG5C20C,2BACC,IAAI59D,EAAKxE,SAASC,cAAc,OAKhC,OAHAuE,EAAGvD,UAAUC,IAAI,iBACjBsD,EAAGvD,UAAUC,IAAI,6BAEVsD,EAGRkI,aACIzW,KAAKD,MAAMyC,QAAQyqE,gBACrBjtE,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OAI3Dg7B,iBAAiB13B,GAChB,IAEAuc,EAFI8kC,EAAO3kD,KACXya,EAAS,GAGLnX,EAAO7C,QAAQia,QAAWpX,EAAOuB,UACpCgb,EAAQvc,EAAOU,aAEfyW,EAAOyyD,UAAY,SAASn9D,GACxBzM,EAAOgC,SAAWq/C,EAAK4nB,OAAOjnE,UAC1Bq/C,EAAKmoB,UAAY/8D,EAAEwmB,QAAQ,GAAGC,MAAQzmB,EAAEymB,OAASpiB,EAAQoE,SAASqH,GAAOlV,KAAQg6C,EAAK5kD,MAAM6F,cAAc6X,gBAAgBtE,WAAe7V,EAAOyD,WAAa,EAC/J49C,EAAK6nB,QAAUlpE,GAAWqhD,EAAK8nB,aACjC5sD,EAAM7S,WAAW2P,aAAagoC,EAAKunB,mBAAoBrsD,EAAMjD,aAC7D+nC,EAAKv+C,WAAW9C,GAAQ,KAGtBqhD,EAAK6nB,QAAUlpE,GAAUqhD,EAAK8nB,cAChC5sD,EAAM7S,WAAW2P,aAAagoC,EAAKunB,mBAAoBrsD,GACvD8kC,EAAKv+C,WAAW9C,GAAQ,MAI1BxC,KAAK6jD,GAEP9kC,EAAM/P,iBAAiB,aAAa,SAASC,GAC5C40C,EAAKmoB,WAAY,EACF,IAAZ/8D,EAAEo9D,QACJxoB,EAAK0nB,aAAe55C,YAAW,WAC9BkyB,EAAKyoB,UAAUr9D,EAAGzM,KAChBqhD,EAAK2nB,iBAIVzsD,EAAM/P,iBAAiB,WAAW,SAASC,GAC3B,IAAZA,EAAEo9D,OACDxoB,EAAK0nB,cACPluB,aAAawG,EAAK0nB,iBAKrB1nB,EAAK0oB,gBAAgB/pE,IAGtBA,EAAO7C,QAAQ2F,WAAaqU,EAG7B4yD,gBAAgB/pE,GACf,IAEAkD,EAASG,EAAS0zB,EAAcizC,EAAcC,EAAkBC,EAF5D3tD,EAAQvc,EAAOU,aACnBypE,GAAa,EAGb5tD,EAAM/P,iBAAiB,cAAeC,IACrC/P,KAAKqsE,aAAe55C,YAAW,KAC9BzyB,KAAK8sE,WAAY,EACjBtmE,EAAUlD,EAAOmD,aACjB4zB,EAAe7zB,EAAUA,EAAQO,WAAW,EAAI,EAChDJ,EAAUrD,EAAOsD,aACjB0mE,EAAe3mE,EAAUA,EAAQI,WAAW,EAAI,EAChDwmE,EAAmB,EACnBC,EAAmB,EACnBC,GAAa,EAEbztE,KAAKotE,UAAUr9D,EAAGzM,EAAO,GACvBtD,KAAKssE,YAAY,GAClB,CAACoB,SAAS,IAEb7tD,EAAM/P,iBAAiB,aAAcC,IACpC,IAAIgM,EAAM4xD,EAEP3tE,KAAKusE,SACPvsE,KAAK+sE,UAAUh9D,GAEX09D,IACHA,EAAa19D,EAAEwmB,QAAQ,GAAGC,QAG3Bza,EAAOhM,EAAEwmB,QAAQ,GAAGC,MAAQi3C,GAElB,EACNjnE,GAAWuV,EAAOwxD,EAAmBlzC,IACvCszC,EAAYnnE,KAEKlD,IAChBmqE,EAAa19D,EAAEwmB,QAAQ,GAAGC,MAC1Bm3C,EAAU3pE,aAAagJ,WAAW2P,aAAa3c,KAAKksE,mBAAoByB,EAAU3pE,aAAa4Y,aAC/F5c,KAAKoG,WAAWunE,GAAW,IAI1BhnE,IAAYoV,EAAOyxD,EAAoBF,IACzCK,EAAYhnE,KAEKrD,IAChBmqE,EAAa19D,EAAEwmB,QAAQ,GAAGC,MAC1Bm3C,EAAU3pE,aAAagJ,WAAW2P,aAAa3c,KAAKksE,mBAAoByB,EAAU3pE,cAClFhE,KAAKoG,WAAWunE,GAAW,IAK3BA,IACFnnE,EAAUmnE,EAAUlnE,aACpB8mE,EAAmBlzC,EACnBA,EAAe7zB,EAAUA,EAAQO,WAAa,EAAI,EAClDJ,EAAUgnE,EAAU/mE,aACpB4mE,EAAmBF,EACnBA,EAAe3mE,EAAUA,EAAQI,WAAa,EAAI,MAGlD,CAAC2mE,SAAS,IAEb7tD,EAAM/P,iBAAiB,YAAaC,IAChC/P,KAAKqsE,cACPluB,aAAan+C,KAAKqsE,cAEhBrsE,KAAKusE,QACPvsE,KAAKgtE,QAAQj9D,MAKhBq9D,UAAUr9D,EAAGzM,GACZ,IAAIgG,EAAUhG,EAAOU,aACrBquD,EAAgBryD,KAAKD,MAAM6F,cAAcoZ,qBACzCxB,EAAiBxd,KAAKD,MAAM6F,cAAciL,oBAE1C7Q,KAAKusE,OAASjpE,EACdtD,KAAK0sE,QAAU1sE,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGC,MAAQzmB,EAAEymB,OAASpiB,EAAQoE,SAASlP,GAASqB,KAE1F3K,KAAKD,MAAMuJ,QAAQ0B,UAAUC,IAAI,0BAGjCjL,KAAKksE,mBAAmB/hE,MAAMlD,MAAQ3D,EAAOyD,WAAa,KAC1D/G,KAAKksE,mBAAmB/hE,MAAMX,OAASlG,EAAOuJ,YAAc,KAE5DvD,EAAQ0D,WAAW2P,aAAa3c,KAAKksE,mBAAoB5iE,GACzDA,EAAQ0D,WAAWzB,YAAYjC,GAG/BtJ,KAAKosE,aAAe9iE,EAAQ6oC,WAAU,GACtCnyC,KAAKosE,aAAaphE,UAAUC,IAAI,oBAEhConD,EAAc7mD,YAAYxL,KAAKosE,cAE/BpsE,KAAKosE,aAAajiE,MAAMQ,KAAO,IAC/B3K,KAAKosE,aAAajiE,MAAMK,OAAU6nD,EAAczhD,aAAe4M,EAAe1Q,aAAgB,KAE1F9M,KAAK8sE,YACR9sE,KAAK4tE,iBAEL7jE,SAASksB,KAAKnmB,iBAAiB,YAAa9P,KAAK+sE,WACjDhjE,SAASksB,KAAKnmB,iBAAiB,UAAW9P,KAAKgtE,UAGhDhtE,KAAK+sE,UAAUh9D,GAGhB69D,iBACC5tE,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAQ,SAAShB,GACrDA,EAAO7C,QAAQ2F,WAAW8mE,WAC5B5pE,EAAOU,aAAa8L,iBAAiB,YAAaxM,EAAO7C,QAAQ2F,WAAW8mE,cAK/EW,mBACC7tE,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAQ,SAAShB,GACrDA,EAAO7C,QAAQ2F,WAAW8mE,WAC5B5pE,EAAOU,aAAa0sB,oBAAoB,YAAaptB,EAAO7C,QAAQ2F,WAAW8mE,cAKlF9mE,WAAW9C,EAAQ2C,GAClB,IAAI6nE,EAAc9tE,KAAKusE,OAAOnoE,WAE9BpE,KAAKwsE,MAAQlpE,EACbtD,KAAKysE,WAAaxmE,EAEfA,EACF3C,EAAOc,WAAWE,SAAQ,SAASC,EAAM0J,GACxC,IAAI4tC,EAASt3C,EAAKP,YAAW,GAE1B63C,EAAO7uC,YAAc8gE,EAAY7/D,IACnC4tC,EAAO7uC,WAAW2P,aAAamxD,EAAY7/D,GAAGjK,aAAc63C,EAAOj/B,gBAIrEtZ,EAAOc,WAAWE,SAAQ,SAASC,EAAM0J,GACxC,IAAI4tC,EAASt3C,EAAKP,YAAW,GAE1B63C,EAAO7uC,YAAc8gE,EAAY7/D,IACnC4tC,EAAO7uC,WAAW2P,aAAamxD,EAAY7/D,GAAGjK,aAAc63C,MAMhEmxB,QAAQj9D,IACQ,IAAZA,EAAEo9D,OAAentE,KAAK8sE,aACxB9sE,KAAK6tE,mBAEL7tE,KAAKksE,mBAAmBl/D,WAAW2P,aAAa3c,KAAKusE,OAAOvoE,aAAchE,KAAKksE,mBAAmBtvD,aAClG5c,KAAKksE,mBAAmBl/D,WAAWzB,YAAYvL,KAAKksE,oBACpDlsE,KAAKosE,aAAap/D,WAAWzB,YAAYvL,KAAKosE,cAE9CpsE,KAAKD,MAAMuJ,QAAQ0B,UAAUgN,OAAO,0BAEjChY,KAAKwsE,OACPxsE,KAAKD,MAAM6F,cAAcmb,iBAAiB/gB,KAAKusE,OAAQvsE,KAAKwsE,MAAOxsE,KAAKysE,YAGzEzsE,KAAKusE,QAAS,EACdvsE,KAAKwsE,OAAQ,EACbxsE,KAAKysE,YAAa,EAEdzsE,KAAK8sE,YACR/iE,SAASksB,KAAKvF,oBAAoB,YAAa1wB,KAAK+sE,WACpDhjE,SAASksB,KAAKvF,oBAAoB,UAAW1wB,KAAKgtE,WAKrDD,UAAUh9D,GACT,IAGAg+D,EAHIC,EAAehuE,KAAKD,MAAM6F,cAAcoZ,qBAC5C7F,EAAa60D,EAAa70D,WAC1B80D,GAASjuE,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGC,MAAQzmB,EAAEymB,OAASpiB,EAAQoE,SAASw1D,GAAcrjE,KAAQwO,EAGjGnZ,KAAKosE,aAAajiE,MAAMQ,KAAQsjE,EAAOjuE,KAAK0sE,OAAU,KAEnDuB,EAAO90D,EAAanZ,KAAK2sE,mBACvB3sE,KAAK6sE,oBACR7sE,KAAK6sE,kBAAoBp6C,YAAW,KACnCs7C,EAAY77D,KAAKG,IAAI,EAAE8G,EAAW,GAClCnZ,KAAKD,MAAMgM,WAAW/H,aAAamV,WAAa40D,EAChD/tE,KAAK6sE,mBAAoB,CAAK,GAC5B,KAIF1zD,EAAa60D,EAAa57D,YAAc67D,EAAOjuE,KAAK2sE,mBAClD3sE,KAAK6sE,oBACR7sE,KAAK6sE,kBAAoBp6C,YAAW,KACnCs7C,EAAY77D,KAAKI,IAAI07D,EAAa57D,YAAa+G,EAAW,GAC1DnZ,KAAKD,MAAMgM,WAAW/H,aAAamV,WAAa40D,EAChD/tE,KAAK6sE,mBAAoB,CAAK,GAC5B,MAMPZ,GAAY9wC,WAAa,aCrSzB,MAAM+yC,WAAiB52C,EAEtBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKksE,mBAAqBlsE,KAAKmsE,2BAC/BnsE,KAAKosE,cAAe,EACpBpsE,KAAKqsE,cAAe,EACpBrsE,KAAKssE,YAAc,IACnBtsE,KAAKusE,QAAS,EACdvsE,KAAKqkB,OAAQ,EACbrkB,KAAKmuE,YAAa,EAClBnuE,KAAKouE,WAAY,EACjBpuE,KAAKquE,OAAS,EACdruE,KAAK0sE,OAAS,EAEd1sE,KAAK+sE,UAAY/sE,KAAK+sE,UAAUjsE,KAAKd,MACrCA,KAAKgtE,QAAUhtE,KAAKgtE,QAAQlsE,KAAKd,MACjCA,KAAKsuE,mBAAoB,EAEzBtuE,KAAK8sE,WAAY,EAEjB9sE,KAAKu+B,YAAa,EAClBv+B,KAAKuuE,2BAA4B,EACjCvuE,KAAKwuE,6BAA8B,EACnCxuE,KAAKyuE,mBAAqB,GAC1BzuE,KAAKo+B,YAAc,GAEnBp+B,KAAK0uE,gBAAiB,EACtB1uE,KAAK2uE,cAAe,EAEpB3uE,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,8BAA8B,GACvDx3B,KAAKw3B,oBAAoB,gCAAgC,GACzDx3B,KAAKw3B,oBAAoB,qBAAqB,GAC9Cx3B,KAAKw3B,oBAAoB,sBAAuB,UAEhDx3B,KAAKy3B,qBAAqB,aAG3B00C,2BACC,IAAI59D,EAAKxE,SAASC,cAAc,OAKhC,OAHAuE,EAAGvD,UAAUC,IAAI,iBACjBsD,EAAGvD,UAAUC,IAAI,6BAEVsD,EAGRkI,aACIzW,KAAKD,MAAMyC,QAAQ44D,cACrBp7D,KAAKuuE,0BAA4BvuE,KAAKD,MAAMyC,QAAQosE,2BACpD5uE,KAAKwuE,4BAA8BxuE,KAAKD,MAAMyC,QAAQqsE,6BAEtD7uE,KAAKu+B,WAAav+B,KAAKuuE,2BAA6BvuE,KAAKwuE,4BAEzDxuE,KAAK2B,UAAU,YAAa3B,KAAK8uE,eAAehuE,KAAKd,OACrDA,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OACzDA,KAAK2B,UAAU,WAAY3B,KAAKmb,cAAcra,KAAKd,QAIrDq7D,sBAAsBr2C,GACrB,IAAI2/B,EAAO3kD,KACXya,EAAS,GAGTA,EAAOs0D,QAAU,SAASh/D,GACzB40C,EAAKqqB,aAAaj/D,EAAGiV,IACpBlkB,KAAK6jD,GAGPlqC,EAAOyyD,UAAY,SAASn9D,GAC3B,IAAIgI,EAEChI,EAAE2mB,MAAQtiB,EAAQoE,SAASwM,EAAM1b,SAASiB,IAAOo6C,EAAK5kD,MAAMgM,WAAWzC,QAAQoP,UAAcsM,EAAMnY,YAAc,EAClH83C,EAAKtgC,QAAUW,GAAU2/B,EAAKwpB,cAChCp2D,EAAQiN,EAAMhhB,cACRgJ,WAAW2P,aAAagoC,EAAKunB,mBAAoBn0D,EAAM6E,aAC7D+nC,EAAKh5B,QAAQ3G,GAAO,KAGlB2/B,EAAKtgC,QAAUW,GAAS2/B,EAAKwpB,cAC/Bp2D,EAAQiN,EAAMhhB,cACLirE,kBACRl3D,EAAM/K,WAAW2P,aAAagoC,EAAKunB,mBAAoBn0D,GACvD4sC,EAAKh5B,QAAQ3G,GAAO,KAItBlkB,KAAK6jD,GAEP3/B,EAAMvkB,QAAQkrB,QAAUlR,EAGzBU,cAAc1S,GACb,IAEAsP,EAFI4sC,EAAO3kD,KACXya,EAAS,GAITA,EAAOs0D,QAAU,SAASh/D,GACzB40C,EAAKqqB,aAAaj/D,EAAGtH,IACpB3H,KAAK6jD,GAGPlqC,EAAOyyD,UAAY,SAASn9D,GAC3B,IAAIgI,EAAQtP,EAAIzE,aAEX+L,EAAE2mB,MAAQtiB,EAAQoE,SAAST,GAAOxN,IAAOo6C,EAAK5kD,MAAMgM,WAAWzC,QAAQoP,UAAcjQ,EAAIoE,YAAc,EACxG83C,EAAKtgC,QAAU5b,GAAQk8C,EAAKwpB,aAC9Bp2D,EAAM/K,WAAW2P,aAAagoC,EAAKunB,mBAAoBn0D,EAAM6E,aAC7D+nC,EAAKh5B,QAAQljB,GAAK,KAGhBk8C,EAAKtgC,QAAU5b,GAAOk8C,EAAKwpB,cAC7Bp2D,EAAM/K,WAAW2P,aAAagoC,EAAKunB,mBAAoBn0D,GACvD4sC,EAAKh5B,QAAQljB,GAAK,KAGnB3H,KAAK6jD,GAGH3kD,KAAKouE,aAERr2D,EAAQtP,EAAIzE,cAEN8L,iBAAiB,aAAa,SAASC,GAC7B,IAAZA,EAAEo9D,QACJxoB,EAAK0nB,aAAe55C,YAAW,WAC9BkyB,EAAKyoB,UAAUr9D,EAAGtH,KAChBk8C,EAAK2nB,iBAIVv0D,EAAMjI,iBAAiB,WAAW,SAASC,GAC3B,IAAZA,EAAEo9D,OACDxoB,EAAK0nB,cACPluB,aAAawG,EAAK0nB,iBAKrBrsE,KAAKqtE,gBAAgB5kE,EAAKA,EAAIzE,eAG/ByE,EAAIhI,QAAQkrB,QAAUlR,EAGvBugB,iBAAiB13B,GACbA,EAAOwH,WAAWokE,YAAgD,IAAnClvE,KAAKD,MAAMyC,QAAQ44D,cACpDp7D,KAAKouE,WAAY,GAInBU,eAAevqE,GACd,GAAGA,EAAKjB,OAAOwH,WAAWokE,YAAgD,IAAnClvE,KAAKD,MAAMyC,QAAQ44D,YAAsB,CAC/E,IAAIzW,EAAO3kD,KACX67C,EAASt3C,EAAKP,YAAW,GAEzB63C,EAAO/rC,iBAAiB,aAAa,SAASC,GAC9B,IAAZA,EAAEo9D,QACJxoB,EAAK0nB,aAAe55C,YAAW,WAC9BkyB,EAAKyoB,UAAUr9D,EAAGxL,EAAKkE,OACrBk8C,EAAK2nB,iBAIVzwB,EAAO/rC,iBAAiB,WAAW,SAASC,GAC5B,IAAZA,EAAEo9D,OACDxoB,EAAK0nB,cACPluB,aAAawG,EAAK0nB,iBAKrBrsE,KAAKqtE,gBAAgB9oE,EAAKkE,IAAKozC,IAIjCwxB,gBAAgB5kE,EAAKa,GACpB,IACAmZ,EAASE,EAASwsD,EAAeC,EAAeC,EAAmBC,EAD/DC,GAAa,EAGjBjmE,EAAQwG,iBAAiB,cAAeC,IACvC/P,KAAKqsE,aAAe55C,YAAW,KAC9BzyB,KAAK8sE,WAAY,EACjBrqD,EAAUha,EAAIga,UACd0sD,EAAgB1sD,EAAUA,EAAQ5V,YAAY,EAAI,EAClD8V,EAAUla,EAAIka,UACdysD,EAAgBzsD,EAAUA,EAAQ9V,YAAY,EAAI,EAClDwiE,EAAoB,EACpBC,EAAoB,EACpBC,GAAa,EAEbvvE,KAAKotE,UAAUr9D,EAAGtH,EAAI,GACpBzI,KAAKssE,YAAY,GAClB,CAACoB,SAAS,IACb1tE,KAAKusE,OAAQvsE,KAAKqkB,MAAOrkB,KAAKmuE,WAC9B7kE,EAAQwG,iBAAiB,aAAcC,IAEtC,IAAIgM,EAAMqG,EAEPpiB,KAAKusE,SACPx8D,EAAEy4B,iBAEFxoC,KAAK+sE,UAAUh9D,GAEXw/D,IACHA,EAAax/D,EAAEwmB,QAAQ,GAAGG,QAG3B3a,EAAOhM,EAAEwmB,QAAQ,GAAGG,MAAQ64C,GAElB,EACN9sD,GAAW1G,EAAOszD,EAAoBF,IACxC/sD,EAAYK,KAEKha,IAChB8mE,EAAax/D,EAAEwmB,QAAQ,GAAGG,MAC1BtU,EAAUpe,aAAagJ,WAAW2P,aAAa3c,KAAKksE,mBAAoB9pD,EAAUpe,aAAa4Y,aAC/F5c,KAAK2rB,QAAQvJ,GAAW,IAIvBO,IAAY5G,EAAOuzD,EAAqBF,IAC1ChtD,EAAYO,KAEKla,IAChB8mE,EAAax/D,EAAEwmB,QAAQ,GAAGG,MAC1BtU,EAAUpe,aAAagJ,WAAW2P,aAAa3c,KAAKksE,mBAAoB9pD,EAAUpe,cAClFhE,KAAK2rB,QAAQvJ,GAAW,IAKxBA,IACFK,EAAUL,EAAUK,UACpB4sD,EAAoBF,EACpBA,EAAgB1sD,EAAUA,EAAQ5V,YAAc,EAAI,EACpD8V,EAAUP,EAAUO,UACpB2sD,EAAoBF,EACpBA,EAAgBzsD,EAAUA,EAAQ9V,YAAc,EAAI,OAKvDvD,EAAQwG,iBAAiB,YAAaC,IAClC/P,KAAKqsE,cACPluB,aAAan+C,KAAKqsE,cAEhBrsE,KAAKusE,SACPvsE,KAAKgtE,QAAQj9D,GACb/P,KAAK8sE,WAAY,MAKpBc,iBACC5tE,KAAKD,MAAMgM,WAAW8L,iBAAiBvT,SAASmE,KAC9B,QAAbA,EAAIjF,MAA+B,UAAbiF,EAAIjF,OAAqBiF,EAAIhI,QAAQkrB,SAAWljB,EAAIhI,QAAQkrB,QAAQuhD,WAC7FzkE,EAAIzE,aAAa8L,iBAAiB,YAAarH,EAAIhI,QAAQkrB,QAAQuhD,cAKtEW,mBACC7tE,KAAKD,MAAMgM,WAAW8L,iBAAiBvT,SAASmE,KAC9B,QAAbA,EAAIjF,MAA+B,UAAbiF,EAAIjF,OAAqBiF,EAAIhI,QAAQkrB,SAAWljB,EAAIhI,QAAQkrB,QAAQuhD,WAC7FzkE,EAAIzE,aAAa0sB,oBAAoB,YAAajoB,EAAIhI,QAAQkrB,QAAQuhD,cAKzEE,UAAUr9D,EAAGtH,GACZ,IAAIa,EAAUb,EAAIzE,aAElBhE,KAAKwvE,iBAAiBz/D,EAAGtH,GAEzBzI,KAAKusE,OAAS9jE,EAEdzI,KAAKD,MAAMuJ,QAAQ0B,UAAUC,IAAI,0BAGjCjL,KAAKksE,mBAAmB/hE,MAAMlD,MAAQwB,EAAI1B,WAAa,KACvD/G,KAAKksE,mBAAmB/hE,MAAMX,OAASf,EAAIoE,YAAc,KAErD7M,KAAKu+B,YAIRv+B,KAAKD,MAAMuJ,QAAQ0B,UAAUC,IAAI,+BACjCjL,KAAKyvE,gBAAgBhnE,KAJrBa,EAAQ0D,WAAW2P,aAAa3c,KAAKksE,mBAAoB5iE,GACzDA,EAAQ0D,WAAWzB,YAAYjC,IAOhCtJ,KAAKosE,aAAe9iE,EAAQ6oC,WAAU,GACtCnyC,KAAKosE,aAAaphE,UAAUC,IAAI,oBAE7BjL,KAAKu+B,YACPx0B,SAASksB,KAAKzqB,YAAYxL,KAAKosE,cAC/BpsE,KAAKosE,aAAajiE,MAAMQ,KAAO,IAC/B3K,KAAKosE,aAAajiE,MAAMI,IAAM,IAC9BvK,KAAKosE,aAAajiE,MAAMlD,MAAQjH,KAAKD,MAAMuJ,QAAQ8I,YAAc,KACjEpS,KAAKosE,aAAajiE,MAAM04C,WAAa,SACrC7iD,KAAKosE,aAAajiE,MAAMo7C,SAAW,SACnCvlD,KAAKosE,aAAajiE,MAAMulE,cAAgB,SAExC1vE,KAAKD,MAAMgM,WAAW+d,kBAAkBte,YAAYxL,KAAKosE,cAEzDpsE,KAAKosE,aAAajiE,MAAMQ,KAAO,IAC/B3K,KAAKosE,aAAajiE,MAAMI,IAAM,IAE9BvK,KAAK4tE,kBAGN7jE,SAASksB,KAAKnmB,iBAAiB,YAAa9P,KAAK+sE,WACjDhjE,SAASksB,KAAKnmB,iBAAiB,UAAW9P,KAAKgtE,SAE/ChtE,KAAKoC,iBAAiB,YAAaqG,EAAIhE,gBAEvCzE,KAAK+sE,UAAUh9D,GAGhBy/D,iBAAiBz/D,EAAGtH,GACnB,IAEAa,EAAS5D,EAFL8wB,EAAQx2B,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGC,MAAQzmB,EAAEymB,MACpDE,EAAQ12B,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGG,MAAQ3mB,EAAE2mB,MAGhDptB,EAAUb,EAAIzE,aACXhE,KAAKu+B,YACP74B,EAAW4D,EAAQ4J,wBAEnBlT,KAAK0sE,OAAShnE,EAASiF,KAAO6rB,EAAQjiB,OAAOI,YAC7C3U,KAAKquE,OAAS3oE,EAAS6E,IAAMmsB,EAAQniB,OAAOC,aAE5CxU,KAAKquE,OAAU33C,EAAQptB,EAAQ4J,wBAAwB3I,IAIzDyiE,QAAQj9D,GACHA,GAAiB,IAAZA,EAAEo9D,QAAentE,KAAK8sE,YAC9B9sE,KAAK6tE,mBAED7tE,KAAKu+B,aACRv+B,KAAKksE,mBAAmBl/D,WAAW2P,aAAa3c,KAAKusE,OAAOvoE,aAAchE,KAAKksE,mBAAmBtvD,aAClG5c,KAAKksE,mBAAmBl/D,WAAWzB,YAAYvL,KAAKksE,qBAGrDlsE,KAAKosE,aAAap/D,WAAWzB,YAAYvL,KAAKosE,cAE9CpsE,KAAKD,MAAMuJ,QAAQ0B,UAAUgN,OAAO,0BAEjChY,KAAKqkB,MACPrkB,KAAKD,MAAMgM,WAAW4f,QAAQ3rB,KAAKusE,OAAQvsE,KAAKqkB,MAAOrkB,KAAKmuE,YAE5DnuE,KAAKoC,iBAAiB,mBAAoBpC,KAAKusE,OAAO9nE,gBAGvDzE,KAAKusE,QAAS,EACdvsE,KAAKqkB,OAAQ,EACbrkB,KAAKmuE,YAAa,EAElBpkE,SAASksB,KAAKvF,oBAAoB,YAAa1wB,KAAK+sE,WACpDhjE,SAASksB,KAAKvF,oBAAoB,UAAW1wB,KAAKgtE,SAE/ChtE,KAAKu+B,aACPv+B,KAAKD,MAAMuJ,QAAQ0B,UAAUgN,OAAO,+BACpChY,KAAK2vE,yBAKRhkD,QAAQljB,EAAKxC,GACZjG,KAAKqkB,MAAQ5b,EACbzI,KAAKmuE,WAAaloE,EAGnB8mE,UAAUh9D,GACN/P,KAAKu+B,WACPv+B,KAAK4vE,qBAAqB9jE,KAAK9L,KAAM+P,GAErC/P,KAAK6vE,eAAe/jE,KAAK9L,KAAM+P,GAIjC8/D,eAAe9/D,GACd,IAAI+/D,EAAY9vE,KAAKD,MAAMgM,WAAW/H,aACtC0U,EAAYo3D,EAAUp3D,UACtBq3D,GAAS/vE,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGG,MAAQ3mB,EAAE2mB,OAASo5C,EAAU58D,wBAAwB3I,IAAOmO,EAEnG1Y,KAAKosE,aAAajiE,MAAMI,IAAM2H,KAAKI,IAAIy9D,EAAO/vE,KAAKquE,OAAQruE,KAAKD,MAAMgM,WAAWzC,QAAQmP,aAAezY,KAAKosE,aAAat/D,cAAgB,KAG3I8iE,qBAAqB7/D,GACpB/P,KAAKosE,aAAajiE,MAAMQ,KAAQ3K,KAAK0sE,QAAU1sE,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGC,MAAQzmB,EAAEymB,OAAU,KACjGx2B,KAAKosE,aAAajiE,MAAMI,IAAOvK,KAAKquE,QAAUruE,KAAK8sE,UAAY/8D,EAAEwmB,QAAQ,GAAGG,MAAQ3mB,EAAE2mB,OAAU,KAGjGs5C,eAAejgE,EAAGzG,EAASb,GAC1BzI,KAAKoC,iBAAiB,yBAA0B2N,EAAGzG,IAASb,GAAMA,EAAIhE,gBAIvEgrE,gBAAgBhnE,GACf,IAAIwnE,EAEDjwE,KAAKuuE,4BACP0B,EAAmBjwE,KAAKiB,iBAAiBjB,KAAKuuE,2BAE9CvuE,KAAKoC,iBAAiB,0BAA2B6tE,GAEjDjwE,KAAKoB,UAAUpB,KAAKuuE,0BAA2B,UAAW,UAAW,CACpE9lE,IAAIA,KAIHzI,KAAKwuE,8BAEPxuE,KAAKyuE,mBAAqB,GAEtBt5D,MAAMC,QAAQpV,KAAKwuE,+BACtBxuE,KAAKwuE,4BAA8B,CAACxuE,KAAKwuE,8BAG1CxuE,KAAKwuE,4BAA4BlqE,SAASowB,IACrB,iBAAVA,EACT10B,KAAKyuE,mBAAqBzuE,KAAKyuE,mBAAmBp9D,OAAO8D,MAAMoqB,UAAUjY,MAAMxb,KAAK/B,SAAS6qB,iBAAiBF,KAE9G10B,KAAKyuE,mBAAmBjqE,KAAKkwB,MAI/B10B,KAAKyuE,mBAAmBnqE,SAASgF,IAChC,IAAI4mE,EAAangE,IAChB/P,KAAKgwE,eAAejgE,EAAGzG,EAAStJ,KAAKusE,OAAO,EAG7CjjE,EAAQwG,iBAAiB,UAAWogE,GACpC5mE,EAAQ6mE,0BAA4BD,EAEpC5mE,EAAQ0B,UAAUC,IAAI,gCAAgC,KAMzD0kE,uBACC,IAAIM,EAEDjwE,KAAKuuE,4BACP0B,EAAmBjwE,KAAKiB,iBAAiBjB,KAAKuuE,2BAE9CvuE,KAAKoC,iBAAiB,yBAA0B6tE,GAEhDjwE,KAAKoB,UAAUpB,KAAKuuE,0BAA2B,UAAW,eAG3DvuE,KAAKyuE,mBAAmBnqE,SAASgF,IAChCA,EAAQ0B,UAAUgN,OAAO,iCACzB1O,EAAQonB,oBAAoB,UAAWpnB,EAAQ6mE,kCACxC7mE,EAAQ6mE,yBAAyB,IAK1CC,QAAQrwE,EAAO0I,GACd,OAAIzI,KAAK0uE,gBAoBRroE,QAAQC,KAAK,+EAAgFtG,KAAK0uE,iBAC3F,IApBP1uE,KAAK0uE,eAAiB3uE,EACtBC,KAAK2uE,aAAelmE,EAEpBzI,KAAKD,MAAMuJ,QAAQ0B,UAAUC,IAAI,iCAEjCjL,KAAKD,MAAMgM,WAAW8L,iBAAiBvT,SAASmE,IAC/B,QAAbA,EAAIjF,MAAkBiF,EAAIhI,QAAQkrB,SAAWljB,EAAIhI,QAAQkrB,QAAQojD,SACnEtmE,EAAIzE,aAAa8L,iBAAiB,UAAWrH,EAAIhI,QAAQkrB,QAAQojD,YAInE/uE,KAAKsuE,kBAAoBtuE,KAAKgvE,aAAaluE,KAAKd,MAEhDA,KAAKD,MAAMuJ,QAAQwG,iBAAiB,UAAW9P,KAAKsuE,mBAEpDtuE,KAAKoC,iBAAiB,4BAA6BqG,EAAK1I,IAEjD,GAQTswE,WAAWtwE,GACPA,IAAUC,KAAK0uE,gBACjB1uE,KAAK0uE,gBAAiB,EACtB1uE,KAAK2uE,cAAe,EAEpB3uE,KAAKD,MAAMuJ,QAAQ0B,UAAUgN,OAAO,iCAEpChY,KAAKD,MAAMgM,WAAW8L,iBAAiBvT,SAASmE,IAC/B,QAAbA,EAAIjF,MAAkBiF,EAAIhI,QAAQkrB,SAAWljB,EAAIhI,QAAQkrB,QAAQojD,SACnEtmE,EAAIzE,aAAa0sB,oBAAoB,UAAWjoB,EAAIhI,QAAQkrB,QAAQojD,YAItE/uE,KAAKD,MAAMuJ,QAAQonB,oBAAoB,UAAW1wB,KAAKsuE,mBAEvDtuE,KAAKoC,iBAAiB,2BAA4BrC,IAElDsG,QAAQC,KAAK,kEAIfgqE,aAAavwE,EAAO0I,EAAKsxC,GACxB,IAAIw2B,GAAS,EAEb,GAAGx2B,EAAQ,CAEV,cAAc/5C,KAAKD,MAAMyC,QAAQguE,mBAChC,IAAK,SACJD,EAASvwE,KAAKywE,QAAQzwE,KAAKD,MAAMyC,QAAQguE,mBACzC,MAED,IAAK,WACJD,EAASvwE,KAAKD,MAAMyC,QAAQguE,kBAI3BD,EACFA,EAAOzkE,KAAK9L,KAAMA,KAAKusE,OAASvsE,KAAKusE,OAAO9nE,oBAAiBlE,EAAWkI,EAAMA,EAAIhE,oBAAiBlE,EAAWR,GAE3GC,KAAKD,MAAMyC,QAAQguE,mBACrBnqE,QAAQC,KAAK,8CAA+CtG,KAAKD,MAAMyC,QAAQguE,mBAIjFxwE,KAAKoC,iBAAiB,kBAAmBpC,KAAKusE,OAAO9nE,eAAgBgE,EAAMA,EAAIhE,oBAAiBlE,EAAWR,QAE3GC,KAAKoC,iBAAiB,wBAAyBpC,KAAKusE,OAAO9nE,eAAgBgE,EAAMA,EAAIhE,oBAAiBlE,EAAWR,GAGlHC,KAAKgtE,UAGNgC,aAAaj/D,EAAGtH,GACf,IAAI5E,GAAW,EACfk2C,GAAU,EAIV,OAFAhqC,EAAEkvC,kCAEYj/C,KAAKD,MAAMyC,QAAQkuE,qBAChC,IAAK,SACJ7sE,EAAW7D,KAAK2wE,UAAU3wE,KAAKD,MAAMyC,QAAQkuE,qBAC7C,MAED,IAAK,WACJ7sE,EAAW7D,KAAKD,MAAMyC,QAAQkuE,oBAI7B7sE,EACFk2C,EAAUl2C,EAASiI,KAAK9L,KAAMA,KAAK2uE,aAAalqE,eAAgBgE,EAAMA,EAAIhE,oBAAiBlE,EAAWP,KAAK0uE,gBAE3GroE,QAAQC,KAAK,gDAAiDtG,KAAKD,MAAMyC,QAAQkuE,qBAG/E32B,EACF/5C,KAAKoC,iBAAiB,sBAAuBpC,KAAK2uE,aAAalqE,eAAgBgE,EAAMA,EAAIhE,oBAAiBlE,EAAWP,KAAK0uE,gBAE1H1uE,KAAKoC,iBAAiB,4BAA6BpC,KAAK2uE,aAAalqE,eAAgBgE,EAAMA,EAAIhE,oBAAiBlE,EAAWP,KAAK0uE,gBAGjI1uE,KAAKoB,UAAUpB,KAAK0uE,eAAgB,UAAW,eAAgB,CAC9DjmE,IAAIA,EACJsxC,QAAQA,IAIVtb,cAAc1+B,EAAOu+B,EAAQp+B,GAC5B,OAAOo+B,GACN,IAAK,UACJ,OAAOt+B,KAAKowE,QAAQrwE,EAAOG,EAAKuI,KAEjC,IAAK,aACJ,OAAOzI,KAAKqwE,WAAWtwE,GAExB,IAAK,eACJ,OAAOC,KAAKswE,aAAavwE,EAAOG,EAAKuI,IAAKvI,EAAK65C,WAKnDm0B,GAAS3uC,UAAUoxC,UAAY,CAC9B5lC,OAAO,SAASzH,EAASjf,EAAOusD,GAE/B,OADA5wE,KAAKD,MAAMkrB,OAAOqY,EAAQ56B,eAAWnI,EAAW8jB,IACzC,GAGRpZ,IAAI,SAASq4B,EAASjf,EAAOusD,GAE5B,OADA5wE,KAAKD,MAAMkrB,OAAOqY,EAAQ56B,YACnB,GAGRuO,OAAO,SAASqsB,EAASjf,EAAOusD,GAC/B,QAAGvsD,IACFA,EAAMpN,OAAOqsB,EAAQ56B,YACd,IAMTmpB,QAAQ,SAASyR,EAASjf,EAAOusD,GAChC,QAAGvsD,IACFrkB,KAAKD,MAAMkrB,OAAOqY,EAAQ56B,eAAWnI,EAAW8jB,GAChDA,EAAMpf,UACC,KAOVipE,GAAS3uC,UAAUkxC,QAAU,CAC5BxrE,OAAO,SAASq+B,EAASjf,EAAOwsD,GAC/BvtC,EAAQr+B,WAIVipE,GAAS/yC,WAAa,UCrnBtB,MAAM21C,WAAgBx5C,EAErBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKwkC,aAAe,CAAC,GAAI,OAAQ,OAAQ,aACzCxkC,KAAK+wE,SAAU,EAEf/wE,KAAKy3B,qBAAqB,WAC1Bz3B,KAAKy3B,qBAAqB,iBAC1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,qBAC1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,qBAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,0BAC1Bz3B,KAAKy3B,qBAAqB,cAG3BhhB,aACCzW,KAAK2B,UAAU,sBAAuB3B,KAAKgxE,cAAclwE,KAAKd,OAC9DA,KAAK2B,UAAU,qBAAsB3B,KAAKixE,WAAWnwE,KAAKd,OAC1DA,KAAK2B,UAAU,gBAAiB3B,KAAKg7B,iBAAiBl6B,KAAKd,OAC3DA,KAAK2B,UAAU,uBAAwB3B,KAAKuxC,eAAezwC,KAAKd,OAChEA,KAAK2B,UAAU,oBAAqB3B,KAAKuxC,eAAezwC,KAAKd,OAG9DuxC,eAAe9oC,EAAKqb,EAAUF,GAC7B,OAAO5jB,KAAKykC,aAAa3gB,EAAU,OAAQF,GAI5CoX,iBAAiB13B,GAChB,IAAI+R,GAAQ,EACZoF,EAAS,GAETza,KAAKwkC,aAAalgC,SAASd,IAC1B,IACAmnC,EADI5oC,EAAM,WAAayB,EAAKmhC,OAAO,GAAGC,cAAgBphC,EAAK8jB,MAAM,IAG9DhkB,EAAOwH,WAAW/I,KACpB4oC,EAAU3qC,KAAKkxE,cAAc5tE,EAAOwH,WAAW/I,OAG9CsT,GAAQ,EAERoF,EAAO1Y,GAAO,CACb4oC,QAAQA,EACR/Y,OAAQtuB,EAAOwH,WAAW/I,EAAM,WAAa,QAM9CsT,IACF/R,EAAO7C,QAAQsI,OAAS0R,GAI1By2D,cAAcxuE,GACb,IAAIioC,GAAU,EAGd,cAAcjoC,GACb,IAAK,SACDouE,GAAQK,SAASzuE,GACnBioC,EAAUmmC,GAAQK,SAASzuE,GAE3B2D,QAAQC,KAAK,oDAAqD5D,GAEnE,MAED,IAAK,WACJioC,EAAUjoC,EAIZ,OAAOioC,EAIRlG,aAAavkC,EAAMsD,EAAMogB,GACxB,IACAlhB,EADIX,EAAM,WAAayB,EAAKmhC,OAAO,GAAGC,cAAgBphC,EAAK8jB,MAAM,IAwBjE,OArBGtnB,KAAK+wE,SAEP/wE,KAAKD,MAAM6F,cAAcwL,UAAU9N,IAClC,IAAIqnC,EAAS/Y,EAAQnoB,EAElBnG,EAAO7C,QAAQsI,SACjB4hC,EAAUrnC,EAAO7C,QAAQsI,OAAOhH,IAAQuB,EAAO7C,QAAQsI,OAAO4hC,UAAW,KAGxEjoC,EAAQY,EAAOwG,mBAAqC,IAAhB8Z,EAA8BA,EAAc1jB,IAEpE,QAARsD,IAAmBogB,QAAgC,IAAVlhB,KAC5C+G,EAAYnG,EAAOmB,eACnBmtB,EAAmC,mBAAnB+Y,EAAQ/Y,OAAwB+Y,EAAQ/Y,OAAOlvB,EAAOxC,EAAMsD,EAAMiG,GAAakhC,EAAQ/Y,OACvGtuB,EAAO2I,cAAc/L,EAAMyqC,EAAQA,QAAQjoC,EAAOxC,EAAMsD,EAAMouB,EAAQnoB,SAOpEvJ,EAIR8wE,cAAczsE,EAAM7B,GACnB,GAAG6B,EAAKjB,OAAO7C,QAAQsI,OAAO,CAC7B,IAAI4hC,EAAUpmC,EAAKjB,OAAO7C,QAAQsI,OAAOqoE,aAAe7sE,EAAKjB,OAAO7C,QAAQsI,OAAO4hC,UAAW,EAC9F7mB,EAAW,GAEX,GAAG6mB,EAGF,OAFA7mB,EAAW/U,OAAOiF,OAAO8P,EAAUvf,EAAKkE,IAAIC,WAC5CnE,EAAKjB,OAAO2I,cAAc6X,EAAUphB,GAC7BioC,EAAQA,QAAQjoC,EAAOohB,EAAU,OAAQ6mB,EAAQ/Y,OAAQrtB,EAAKE,gBAIvE,OAAO/B,EAGRuuE,WAAW1sE,GACV,IAAI2rB,EAAQ3rB,EAAKjB,OAAOwH,WAAWmmE,WAEhC/gD,IACE/a,MAAMC,QAAQ8a,KACjBA,EAAQ,CAACA,IAGVA,EAAM5rB,SAASgwD,IACd,IAAI+c,EAAW9sE,EAAKkE,IAAIiU,QAAQ43C,GAE7B+c,GACFA,EAASvoE,SAASuoE,EAASjpE,YAAY,GAAM,OAMjD6mC,SACCjvC,KAAK+wE,SAAU,EAGhB/hC,UACChvC,KAAK+wE,SAAU,GAIjBD,GAAQ31C,WAAa,UAGrB21C,GAAQK,SC/JO,UCIA,CACd3+D,KCLc,SAAS8+D,EAAUC,EAAYC,EAAaC,EAAWC,GACrE,IAAInjE,EAAKxE,SAASC,cAAc,QAChC2nE,EAAY5nE,SAASC,cAAc,QACnC4nE,EAAU7nE,SAASC,cAAc,QACjC6nE,EAAO9nE,SAASC,cAAc,QAC9B8nE,EAAU/nE,SAASC,cAAc,QACjC+nE,EAAShoE,SAASC,cAAc,QAgChC,OA9BAhK,KAAKD,MAAMU,QAAQC,SAASG,SAAS,8BAA+B6B,IACnEivE,EAAUvmE,UAAY1I,CAAK,IAG5B1C,KAAKD,MAAMU,QAAQC,SAASG,SAAS,yBAA0B6B,IAC9DmvE,EAAKzmE,UAAY1I,CAAK,IAGvB1C,KAAKD,MAAMU,QAAQC,SAASG,SAAS,2BAA4B6B,IAChEqvE,EAAO3mE,UAAY1I,CAAK,IAGtB+uE,GACFG,EAAQxmE,UAAY,IAAMmmE,EAAa,IAAMr/D,KAAKI,IAAKi/D,EAAaD,EAAW,EAAIG,GAAa,IAEhGK,EAAQ1mE,UAAY,IAAMqmE,EAAY,IAEtCljE,EAAG/C,YAAYmmE,GACfpjE,EAAG/C,YAAYomE,GACfrjE,EAAG/C,YAAYqmE,GACftjE,EAAG/C,YAAYsmE,GACfvjE,EAAG/C,YAAYumE,KAEfH,EAAQxmE,UAAY,MAEpBmD,EAAG/C,YAAYmmE,GACfpjE,EAAG/C,YAAYomE,GACfrjE,EAAG/C,YAAYumE,IAGTxjE,CACR,EDjCCyvB,MENc,SAASszC,EAAUC,EAAYC,EAAaC,EAAWC,GAErE,IAAInjE,EAAKxE,SAASC,cAAc,QAChC2nE,EAAY5nE,SAASC,cAAc,QACnC4nE,EAAU7nE,SAASC,cAAc,QACjC6nE,EAAO9nE,SAASC,cAAc,QAC9B8nE,EAAU/nE,SAASC,cAAc,QACjC+nE,EAAShoE,SAASC,cAAc,QAwBhC,OAtBAhK,KAAKD,MAAMU,QAAQC,SAASG,SAAS,8BAA+B6B,IACnEivE,EAAUvmE,UAAY1I,CAAK,IAG5BkvE,EAAQxmE,UAAY,IAAMomE,EAAc,IAExCxxE,KAAKD,MAAMU,QAAQC,SAASG,SAAS,yBAA0B6B,IAC9DmvE,EAAKzmE,UAAY1I,CAAK,IAGvBovE,EAAQ1mE,UAAY,IAAMsmE,EAAa,IAEvC1xE,KAAKD,MAAMU,QAAQC,SAASG,SAAS,4BAA6B6B,IACjEqvE,EAAO3mE,UAAY1I,CAAK,IAGzB6L,EAAG/C,YAAYmmE,GACfpjE,EAAG/C,YAAYomE,GACfrjE,EAAG/C,YAAYqmE,GACftjE,EAAG/C,YAAYsmE,GACfvjE,EAAG/C,YAAYumE,GAERxjE,CACR,GC5BA,MAAMyjE,WAAa16C,EAElBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK86B,KAAO,QACZ96B,KAAKiyE,iBAAkB,EAEvBjyE,KAAKsJ,QAAU,KACftJ,KAAKkyE,mBAAqB,KAC1BlyE,KAAKmyE,YAAc,KAEnBnyE,KAAK8kD,KAAO,EACZ9kD,KAAKoyE,KAAO,EACZpyE,KAAK2rC,MAAQ,EACb3rC,KAAKqS,IAAM,EAEXrS,KAAKqyE,uBAAyB,KAE9BryE,KAAKsyE,aAAc,EACnBtyE,KAAKuyE,cAAe,EAEpBvyE,KAAKwyE,UAAY,GAEjBxyE,KAAKw3B,oBAAoB,cAAc,GACvCx3B,KAAKw3B,oBAAoB,iBAAkB,SAC3Cx3B,KAAKw3B,oBAAoB,kBAAkB,GAC3Cx3B,KAAKw3B,oBAAoB,wBAAyB,GAClDx3B,KAAKw3B,oBAAoB,qBAAqB,GAC9Cx3B,KAAKw3B,oBAAoB,4BAA4B,GACrDx3B,KAAKw3B,oBAAoB,wBAAyB,GAClDx3B,KAAKw3B,oBAAoB,0BAA0B,GACnDx3B,KAAKw3B,oBAAoB,qBAAqB,GAG9Cx3B,KAAKw3B,oBAAoB,mBAAoB,QAE7Cx3B,KAAKw3B,oBAAoB,mBAAmB,GAC5Cx3B,KAAKw3B,oBAAoB,uBAAwB,GACjDx3B,KAAKw3B,oBAAoB,8BAA+B,GAExDx3B,KAAK03B,sBAAsB,aAAc13B,KAAKyyE,WAAW3xE,KAAKd,OAC9DA,KAAK03B,sBAAsB,UAAW13B,KAAK0yE,QAAQ5xE,KAAKd,OACxDA,KAAK03B,sBAAsB,eAAgB13B,KAAK2yE,iBAAiB7xE,KAAKd,OACtEA,KAAK03B,sBAAsB,cAAe13B,KAAK4yE,gBAAgB9xE,KAAKd,OACpEA,KAAK03B,sBAAsB,cAAe13B,KAAK6yE,YAAY/xE,KAAKd,OAChEA,KAAK03B,sBAAsB,eAAgB13B,KAAK8yE,aAAahyE,KAAKd,OAClEA,KAAK03B,sBAAsB,WAAY13B,KAAK+yE,SAASjyE,KAAKd,OAC1DA,KAAK03B,sBAAsB,UAAW13B,KAAKgzE,QAAQlyE,KAAKd,OACxDA,KAAK03B,sBAAsB,aAAc13B,KAAKizE,WAAWnyE,KAAKd,OAG9DA,KAAK63B,0BAA0B,MAAO,SAAU73B,KAAKkzE,aAAapyE,KAAKd,OAGxEyW,aACIzW,KAAKD,MAAMyC,QAAQ6nB,YACrBrqB,KAAK2B,UAAU,cAAe3B,KAAKysC,YAAY3rC,KAAKd,OACpDA,KAAK2B,UAAU,YAAa3B,KAAKysC,YAAY3rC,KAAKd,OAClDA,KAAK2B,UAAU,iBAAkB3B,KAAKmzE,oBAAoBryE,KAAKd,OAC/DA,KAAK2B,UAAU,cAAe3B,KAAKozE,mBAAmBtyE,KAAKd,OAC3DA,KAAK2B,UAAU,gBAAiB3B,KAAKqzE,aAAavyE,KAAKd,OAEb,QAAvCA,KAAKD,MAAMyC,QAAQ8wE,kBACrBtzE,KAAK2B,UAAU,sBAAuB3B,KAAKuzE,kBAAkBzyE,KAAKd,OAG1B,WAAtCA,KAAKD,MAAMyC,QAAQgxE,iBACrBxzE,KAAK2B,UAAU,cAAe3B,KAAKyzE,iBAAiB3yE,KAAKd,OACzDA,KAAK2B,UAAU,cAAe3B,KAAK0zE,iBAAiB5yE,KAAKd,QAGvDA,KAAKD,MAAMyC,QAAQyvE,iBACrB5rE,QAAQ0N,MAAM,4FAGf/T,KAAK+3B,uBAAuB/3B,KAAK2zE,mBAAmB7yE,KAAKd,MAAO,IAChEA,KAAK+3B,uBAAuB/3B,KAAK4b,QAAQ9a,KAAKd,MAAO,IAErDA,KAAK+6D,iBACL/6D,KAAK4zE,wBACL5zE,KAAK6zE,uBACG7zE,KAAKD,MAAMyC,QAAQyvE,kBAC3BjyE,KAAK2B,UAAU,cAAe3B,KAAKyzE,iBAAiB3yE,KAAKd,OACzDA,KAAK2B,UAAU,cAAe3B,KAAK0zE,iBAAiB5yE,KAAKd,OACzDA,KAAK2B,UAAU,cAAe3B,KAAKozE,mBAAmBtyE,KAAKd,OAC3DA,KAAK2B,UAAU,iBAAkB3B,KAAKmzE,oBAAoBryE,KAAKd,OAE/DA,KAAK8zE,sBAAsB9zE,KAAKD,MAAMyC,QAAQyvE,iBAEJ,WAAvCjyE,KAAKD,MAAMyC,QAAQyvE,iBACrBjyE,KAAK2B,UAAU,kBAAmB3B,KAAK+zE,eAAejzE,KAAKd,QAK9DuzE,kBAAkB9qE,EAAK8B,GACtB,IAEAuH,EAFI/F,EAAa/L,KAAKD,MAAMgM,WAC5Bud,EAAcvd,EAAW8L,iBAmBzB,OAhBGtN,EACC+e,EAAYlkB,OACd0M,EAAQwX,EAAY,GAEjBvd,EAAWqd,WAAWhkB,SACxB0M,EAAQ/F,EAAWqd,WAAWrd,EAAWqd,WAAWhkB,OAAO,GAC3DmF,GAAM,GAIL+e,EAAYlkB,SACd0M,EAAQwX,EAAYA,EAAYlkB,OAAS,GACzCmF,IAAM+e,EAAYlkB,OAASpF,KAAK8kD,OAI3B,CAAChzC,QAAOvH,OAGhB6oE,qBACC,IAAIY,EAAWC,EAEZj0E,KAAKD,MAAMyC,QAAQ0xE,eACrBl0E,KAAK8kD,KAAO9kD,KAAKD,MAAMyC,QAAQ0xE,iBAE/BF,EAAYjqE,SAASC,cAAc,QACzBgB,UAAUC,IAAI,iBACxB+oE,EAAU7pE,MAAM+a,WAAa,UAE7B+uD,EAAalqE,SAASC,cAAc,QACzBgB,UAAUC,IAAI,kBACzBgpE,EAAW7oE,UAAY,gBAEvB4oE,EAAUxoE,YAAYyoE,GAEtBj0E,KAAKD,MAAMgM,WAAW+d,kBAAkBte,YAAYwoE,GAEpDh0E,KAAK8kD,KAAO5yC,KAAKC,MAAMnS,KAAKD,MAAMgM,WAAW/H,aAAa4M,aAAeojE,EAAUlnE,cAEnF9M,KAAKD,MAAMgM,WAAW+d,kBAAkBve,YAAYyoE,IAGrDh0E,KAAKoC,iBAAiB,kBAAmBpC,KAAK8kD,MAE9C9kD,KAAKm0E,6BAGNhB,sBACCnzE,KAAKsyE,aAAc,EAGpBmB,iBAAiBvzE,EAAMua,EAAQta,EAAQyxB,GAetC,OAdI5xB,KAAKsyE,cACJtyE,KAAKiyE,kBAAoB9xE,IAAaH,KAAKiyE,kBAAoBjyE,KAAKuyE,eACvEvyE,KAAKkpC,OAAM,GAKbtX,EAAOwgD,KAAOpyE,KAAKoyE,KAGhBpyE,KAAK8kD,OACPlzB,EAAOkzB,KAAO9kD,KAAK8kD,MAGblzB,EAOR+gD,iBAAiBlqE,GAChB,OAAGzI,KAAKD,MAAMyC,QAAQ6nB,aACrB5hB,EAAMzI,KAAK+L,WAAWuY,QAAQ7b,IAGtBzI,KAAKkzE,aAAazqE,GAIpB0K,QAAQE,SAGhBu/D,gBAAgB9tB,GACf,QAAG9kD,KAAKD,MAAMyC,QAAQ6nB,aACrBrqB,KAAKo0E,YAAYtvB,GACV9kD,KAAK0yE,QAAQ,IAStBqB,eAAexpE,EAAK+M,GACnB,IAAIhO,EACAgO,GAAQtX,KAAKD,MAAMM,WAAWsxB,UACjCroB,EAAUtJ,KAAKD,MAAMgM,WAAW/H,cACjByU,aAAenP,EAAQsH,aAAerG,GAC5CvK,KAAKD,MAAMyC,QAAQ6xE,6BAAuD,EAAvB/qE,EAAQsH,eAGnE5Q,KAAK+yE,WACHxgD,OAAM,SAKXohD,mBAAmBnhE,EAAM4X,GAOxB,OANIA,GACc,UAAdpqB,KAAK86B,MACP96B,KAAKkpC,QAIA12B,EAGRi6B,cACCzsC,KAAKi4B,aAAY,EAAM,OAGxB8iC,iBACC,IAAI3R,EAEJppD,KAAKsJ,QAAUS,SAASC,cAAc,QACtChK,KAAKsJ,QAAQ0B,UAAUC,IAAI,uBAE3BjL,KAAKs0E,aAAevqE,SAASC,cAAc,QAC3ChK,KAAKs0E,aAAatpE,UAAUC,IAAI,oBAEhCm+C,EAASr/C,SAASC,cAAc,WACzBgB,UAAUC,IAAI,kBACrBm+C,EAAOl/C,aAAa,OAAQ,UAC5Bk/C,EAAOl/C,aAAa,OAAQ,UAC5Bk/C,EAAOl/C,aAAa,aAAc,IAClCk/C,EAAOl/C,aAAa,QAAS,IAE7BlK,KAAKu0E,SAAWnrB,EAAOjX,WAAU,GACjCnyC,KAAKu0E,SAASrqE,aAAa,YAAa,SAExClK,KAAKw0E,QAAUprB,EAAOjX,WAAU,GAChCnyC,KAAKw0E,QAAQtqE,aAAa,YAAa,QAEvClK,KAAKy0E,QAAUrrB,EAAOjX,WAAU,GAChCnyC,KAAKy0E,QAAQvqE,aAAa,YAAa,QAEvClK,KAAK00E,QAAUtrB,EAAOjX,WAAU,GAChCnyC,KAAK00E,QAAQxqE,aAAa,YAAa,QAEpClK,KAAKD,MAAMyC,QAAQmyE,yBACrB30E,KAAK40E,eAAiB7qE,SAASC,cAAc,UAC7ChK,KAAK40E,eAAe5pE,UAAUC,IAAI,wBAIpCkpE,6BACC,IAAI3B,EAAY,GAEhB,GAAGxyE,KAAK40E,eAAe,CAEtB,GAAGz/D,MAAMC,QAAQpV,KAAKD,MAAMyC,QAAQmyE,wBACnCnC,EAAYxyE,KAAKD,MAAMyC,QAAQmyE,uBAC/B30E,KAAKwyE,UAAYA,GAEwB,GAAtCxyE,KAAKwyE,UAAUvjE,QAAQjP,KAAK8kD,OAC9B0tB,EAAU98D,QAAQ1V,KAAK8kD,WAIxB,IAAyC,GAAtC9kD,KAAKwyE,UAAUvjE,QAAQjP,KAAK8kD,MAAY,CAC1C0tB,EAAY,GAEZ,IAAK,IAAIvkE,EAAI,EAAGA,EAAI,EAAGA,IACtBukE,EAAUhuE,KAAKxE,KAAK8kD,KAAO72C,GAG5BjO,KAAKwyE,UAAYA,OAEjBA,EAAYxyE,KAAKwyE,UAInB,KAAMxyE,KAAK40E,eAAetpE,YAAYtL,KAAK40E,eAAerpE,YAAYvL,KAAK40E,eAAetpE,YAE1FknE,EAAUluE,SAASmR,IAClB,IAAIs2D,EAAShiE,SAASC,cAAc,UACpC+hE,EAAOrpE,MAAQ+S,GAEH,IAATA,EACFzV,KAAKa,SAAS,kBAAkB,SAAS6B,GACxCqpE,EAAO3gE,UAAY1I,KAGpBqpE,EAAO3gE,UAAYqK,EAKpBzV,KAAK40E,eAAeppE,YAAYugE,EAAO,IAGxC/rE,KAAK40E,eAAelyE,MAAQ1C,KAAK8kD,MAInC8uB,wBACC,IAAI/1C,EAAU79B,KAAKD,MAAMyC,QAAQqyE,kBACjC1C,EAAc,KAEXt0C,KAEDs0C,EADqB,mBAAZt0C,EACKA,EAEAm0C,GAAK8C,aAAaj3C,KAIhC79B,KAAKmyE,YAAcA,EAEnBnyE,KAAKkyE,mBAAqBnoE,SAASC,cAAc,QACjDhK,KAAKkyE,mBAAmBlnE,UAAUC,IAAI,2BAEtC5E,QAAQC,KAAK,kDAAmDu3B,IAMnEg2C,oBAAoBkB,GACnB,IAAIC,EAAiBC,EAEjBF,IAIH/0E,KAAKa,SAAS,oBAAqB6B,IAClC1C,KAAKu0E,SAASnpE,UAAY1I,CAAK,IAGhC1C,KAAKa,SAAS,0BAA2B6B,IACxC1C,KAAKu0E,SAASrqE,aAAa,aAAcxH,GACzC1C,KAAKu0E,SAASrqE,aAAa,QAASxH,EAAM,IAG3C1C,KAAKa,SAAS,mBAAoB6B,IACjC1C,KAAKw0E,QAAQppE,UAAY1I,CAAK,IAG/B1C,KAAKa,SAAS,yBAA0B6B,IACvC1C,KAAKw0E,QAAQtqE,aAAa,aAAcxH,GACxC1C,KAAKw0E,QAAQtqE,aAAa,QAASxH,EAAM,IAG1C1C,KAAKa,SAAS,mBAAoB6B,IACjC1C,KAAKy0E,QAAQrpE,UAAY1I,CAAK,IAG/B1C,KAAKa,SAAS,yBAA0B6B,IACvC1C,KAAKy0E,QAAQvqE,aAAa,aAAcxH,GACxC1C,KAAKy0E,QAAQvqE,aAAa,QAASxH,EAAM,IAG1C1C,KAAKa,SAAS,mBAAoB6B,IACjC1C,KAAK00E,QAAQtpE,UAAY1I,CAAK,IAG/B1C,KAAKa,SAAS,yBAA0B6B,IACvC1C,KAAK00E,QAAQxqE,aAAa,aAAcxH,GACxC1C,KAAK00E,QAAQxqE,aAAa,QAASxH,EAAM,IAI1C1C,KAAKu0E,SAASzkE,iBAAiB,SAAS,KACvC9P,KAAK0yE,QAAQ,EAAE,IAGhB1yE,KAAKw0E,QAAQ1kE,iBAAiB,SAAS,KACtC9P,KAAK8yE,cAAc,IAGpB9yE,KAAKy0E,QAAQ3kE,iBAAiB,SAAS,KACtC9P,KAAK+yE,UAAU,IAGhB/yE,KAAK00E,QAAQ5kE,iBAAiB,SAAS,KACtC9P,KAAK0yE,QAAQ1yE,KAAKqS,IAAI,IAGpBrS,KAAKD,MAAMyC,QAAQ0yE,oBACrBl1E,KAAKsJ,QAAUtJ,KAAKD,MAAMyC,QAAQ0yE,mBAGhCl1E,KAAK40E,iBACPI,EAAkBjrE,SAASC,cAAc,SAEzChK,KAAKa,SAAS,wBAAyB6B,IACtC1C,KAAK40E,eAAe1qE,aAAa,aAAcxH,GAC/C1C,KAAK40E,eAAe1qE,aAAa,QAASxH,GAC1CsyE,EAAgB5pE,UAAY1I,CAAK,IAGlC1C,KAAKsJ,QAAQkC,YAAYwpE,GACzBh1E,KAAKsJ,QAAQkC,YAAYxL,KAAK40E,gBAE9B50E,KAAK40E,eAAe9kE,iBAAiB,UAAWC,IAC/C/P,KAAKo0E,YAAyC,QAA7Bp0E,KAAK40E,eAAelyE,OAAyB1C,KAAK40E,eAAelyE,OAClF1C,KAAK0yE,QAAQ,EAAE,KAKjB1yE,KAAKsJ,QAAQkC,YAAYxL,KAAKu0E,UAC9Bv0E,KAAKsJ,QAAQkC,YAAYxL,KAAKw0E,SAC9Bx0E,KAAKsJ,QAAQkC,YAAYxL,KAAKs0E,cAC9Bt0E,KAAKsJ,QAAQkC,YAAYxL,KAAKy0E,SAC9Bz0E,KAAKsJ,QAAQkC,YAAYxL,KAAK00E,SAE1B10E,KAAKD,MAAMyC,QAAQ0yE,oBACnBl1E,KAAKD,MAAMyC,QAAQqyE,oBAIlB70E,KAAKD,MAAMyC,QAAQ2yE,yBAClBn1E,KAAKD,MAAMyC,QAAQ2yE,oCAAoCj1D,YACzDlgB,KAAKD,MAAMyC,QAAQ2yE,yBAAyB3pE,YAAYxL,KAAKkyE,oBACE,iBAAhDlyE,KAAKD,MAAMyC,QAAQ2yE,4BAClCF,EAA0BlrE,SAAS4kB,cAAc3uB,KAAKD,MAAMyC,QAAQ2yE,2BAGnEF,EAAwBzpE,YAAYxL,KAAKkyE,oBAEzC7rE,QAAQC,KAAK,wFAAyFtG,KAAKD,MAAMyC,QAAQ2yE,2BAI3Hn1E,KAAKk4B,aAAal4B,KAAKkyE,qBAKzBlyE,KAAKk4B,aAAal4B,KAAKsJ,UAGxBtJ,KAAKoyE,KAAOpyE,KAAKD,MAAMyC,QAAQ4yE,sBAC/Bp1E,KAAK2rC,MAAQ3rC,KAAKD,MAAMyC,QAAQ6yE,uBAIjCr1E,KAAK86B,KAAO96B,KAAKD,MAAMyC,QAAQgxE,eAGhCM,sBAAsBh5C,GACrB96B,KAAK6zE,qBAAoB,GACzB7zE,KAAK86B,KAAO,eAAiBA,EAC7B96B,KAAKiyE,iBAAkB,EAGxBngB,eACC9xD,KAAKiC,SAAS,gBAIfqzE,WAAW3W,GAIT3+D,KAAKqS,IAHFssD,GAGsB,IAAd3+D,KAAK8kD,KAAiB,EAAI5yC,KAAKe,KAAK0rD,EAAS3+D,KAAK8kD,MAFlD,EAKT9kD,KAAKoyE,KAAOpyE,KAAKqS,MACnBrS,KAAKoyE,KAAOpyE,KAAKqS,KAKnB62B,MAAMxnC,GACD1B,KAAKsyE,cACQ,SAAbtyE,KAAK86B,MAAmBp5B,KAC1B1B,KAAKoyE,KAAO,EACZpyE,KAAK8xD,gBAMR2gB,WAAWpgE,GAEVA,EAAMzC,SAASyC,GAEfrS,KAAKqS,IAAMA,GAAO,EAEfrS,KAAKoyE,KAAOpyE,KAAKqS,MACnBrS,KAAKoyE,KAAOpyE,KAAKqS,IACjBrS,KAAKu1E,WAKP7C,QAAQN,GACP,OAAOA,GACN,IAAK,QACJ,OAAOpyE,KAAK0yE,QAAQ,GAErB,IAAK,OACJ,OAAO1yE,KAAK8yE,eAEb,IAAK,OACJ,OAAO9yE,KAAK+yE,WAEb,IAAK,OACJ,OAAO/yE,KAAK0yE,QAAQ1yE,KAAKqS,KAK3B,OAFA+/D,EAAOxiE,SAASwiE,IAEL,GAAKA,GAAQpyE,KAAKqS,KAAsB,UAAdrS,KAAK86B,MACzC96B,KAAKoyE,KAAOA,EAEZpyE,KAAK8xD,eAEE9xD,KAAKu1E,YAEZlvE,QAAQC,KAAK,4DAA8DtG,KAAKqS,IAAM,IAAK+/D,GACpFj/D,QAAQE,UAIjB6/D,aAAazqE,GACZ,IACIqJ,EADO9R,KAAKspB,aAAa,GACZra,QAAQxG,GAEzB,GAAGqJ,GAAS,EAAE,CACb,IAAIsgE,GAAqB,IAAdpyE,KAAK8kD,KAAgB,EAAI5yC,KAAKe,MAAMnB,EAAQ,GAAK9R,KAAK8kD,MAEjE,OAAO9kD,KAAK0yE,QAAQN,GAGpB,OADA/rE,QAAQC,KAAK,mDACN6M,QAAQE,SAIjB+gE,YAAYtvB,IACC,IAATA,IACFA,EAAOl1C,SAASk1C,IAGdA,EAAO,IACT9kD,KAAK8kD,KAAOA,EACZ9kD,KAAKoC,iBAAiB,kBAAmB0iD,IAGvC9kD,KAAK40E,gBAEP50E,KAAKm0E,6BAGNn0E,KAAK8xD,eAGN0jB,gBAAgB/D,EAAW3sB,EAAMysB,GAChC,IAAI/4C,EAEJ,GAAGx4B,KAAKmyE,YAUP,OARiB,WAAdnyE,KAAK86B,OACPgqB,EAAO9kD,KAAK8kD,KACZysB,GAAevxE,KAAKoyE,KAAO,GAAKpyE,KAAK8kD,KAAQ,EAC7C2sB,EAAYzxE,KAAKqyE,+BAGlB75C,EAAUx4B,KAAKmyE,YAAYrmE,KAAK9L,KAAM8kD,EAAMysB,EAAYvxE,KAAKoyE,KAAMX,EAAWzxE,KAAKqS,OAGlF,IAAK,SACJ,GAAGmmB,aAAmBntB,KAAK,CAG1B,KAAMrL,KAAKkyE,mBAAmB5mE,YAAYtL,KAAKkyE,mBAAmB3mE,YAAYvL,KAAKkyE,mBAAmB5mE,YAEtGtL,KAAKkyE,mBAAmB1mE,YAAYgtB,QAEpCx4B,KAAKkyE,mBAAmB9mE,UAAY,GAEtB,MAAXotB,GACFnyB,QAAQC,KAAK,gKAAiKkyB,GAGhL,MACD,IAAK,YACJx4B,KAAKkyE,mBAAmB9mE,UAAY,GACpC,MACD,QACCpL,KAAKkyE,mBAAmB9mE,UAAYotB,GAMxCi9C,kBACC,IAAIC,EAAWxjE,KAAKC,OAAOnS,KAAK2rC,MAAM,GAAK,GACvCgqC,EAAYzjE,KAAKe,MAAMjT,KAAK2rC,MAAM,GAAK,GACvCr5B,EAAMtS,KAAKqS,IAAMrS,KAAKoyE,KAAOsD,EAAW,EAAI11E,KAAK2rC,MAAQ3rC,KAAKqS,IAAIrS,KAAK2rC,MAAM,EAAGz5B,KAAKG,IAAIrS,KAAKoyE,KAAKsD,EAAS,GAC5GrjE,EAAMrS,KAAKoyE,MAAQuD,EAAWzjE,KAAKI,IAAItS,KAAK2rC,MAAO3rC,KAAKqS,KAAMH,KAAKI,IAAItS,KAAKoyE,KAAKuD,EAAW31E,KAAKqS,KAErG,KAAMrS,KAAKs0E,aAAahpE,YAAYtL,KAAKs0E,aAAa/oE,YAAYvL,KAAKs0E,aAAahpE,YAEpE,GAAbtL,KAAKoyE,MACPpyE,KAAKu0E,SAASvI,UAAW,EACzBhsE,KAAKw0E,QAAQxI,UAAW,IAExBhsE,KAAKu0E,SAASvI,UAAW,EACzBhsE,KAAKw0E,QAAQxI,UAAW,GAGtBhsE,KAAKoyE,MAAQpyE,KAAKqS,KACpBrS,KAAK00E,QAAQ1I,UAAW,EACxBhsE,KAAKy0E,QAAQzI,UAAW,IAExBhsE,KAAK00E,QAAQ1I,UAAW,EACxBhsE,KAAKy0E,QAAQzI,UAAW,GAGzB,IAAI,IAAI/9D,EAAIqE,EAAKrE,GAAKoE,EAAKpE,IACvBA,EAAE,GAAKA,GAAKjO,KAAKqS,KACnBrS,KAAKs0E,aAAa9oE,YAAYxL,KAAK41E,oBAAoB3nE,IAIzDjO,KAAKqzE,eAGNuC,oBAAoBxD,GACnB,IAAIhpB,EAASr/C,SAASC,cAAc,UAsBpC,OApBAo/C,EAAOp+C,UAAUC,IAAI,kBAClBmnE,GAAQpyE,KAAKoyE,MACfhpB,EAAOp+C,UAAUC,IAAI,UAGtBm+C,EAAOl/C,aAAa,OAAQ,UAC5Bk/C,EAAOl/C,aAAa,OAAQ,UAE5BlK,KAAKa,SAAS,yBAA0B6B,IACvC0mD,EAAOl/C,aAAa,aAAcxH,EAAQ,IAAM0vE,GAChDhpB,EAAOl/C,aAAa,QAASxH,EAAQ,IAAM0vE,EAAK,IAGjDhpB,EAAOl/C,aAAa,YAAakoE,GACjChpB,EAAOuY,YAAcyQ,EAErBhpB,EAAOt5C,iBAAiB,SAAUC,IACjC/P,KAAK0yE,QAAQN,EAAK,IAGZhpB,EAIR0pB,eACC,OAAG9yE,KAAKoyE,KAAO,GACdpyE,KAAKoyE,OAELpyE,KAAK8xD,eAEE9xD,KAAKu1E,YAGZlvE,QAAQC,KAAK,8DAA+D,GACrE6M,QAAQE,UAKjB0/D,WACC,OAAG/yE,KAAKoyE,KAAOpyE,KAAKqS,KACnBrS,KAAKoyE,OAELpyE,KAAK8xD,eAEE9xD,KAAKu1E,YAGRv1E,KAAKiyE,iBACR5rE,QAAQC,KAAK,sEAAwEtG,KAAKqS,IAAM,IAAKrS,KAAKqS,IAAM,GAE1Gc,QAAQE,UAKjB2/D,UACC,OAAOhzE,KAAKoyE,KAIba,aACC,OAAOjzE,KAAKqS,IAGbwgE,YAAY/tB,GACX,OAAO9kD,KAAK8kD,KAGbtjD,UACC,OAAOxB,KAAK86B,KAIblf,QAAQ1b,GACP,IACAiF,EAAQmX,EAAOC,EAAKs5D,EADhBC,EAAoB,EAGpBC,EAAa71E,EAAK2b,QAAQpT,GACT,QAAbA,EAAIjF,OAGZ,GAAgB,SAAbxD,KAAK86B,KAAgB,CACvB31B,EAAS,GAETnF,KAAKs1E,WAAWp1E,EAAKkF,SAEJ,IAAdpF,KAAK8kD,MACPxoC,EAAQ,EACRC,EAAMrc,EAAKkF,QAGXmX,GADAD,EAAQtc,KAAK8kD,MAAQ9kD,KAAKoyE,KAAO,IACnBxiE,SAAS5P,KAAK8kD,MAG7B9kD,KAAKy1E,kBAEL,IAAI,IAAIxnE,EAAIqO,EAAOrO,EAAIsO,EAAKtO,IAAI,CAC/B,IAAIxF,EAAMvI,EAAK+N,GAEZxF,IACFtD,EAAOX,KAAKiE,GAEI,QAAbA,EAAIjF,OACFqyE,IACHA,EAAiBptE,GAGlBqtE,MAOH,OAFA91E,KAAKw1E,gBAAgBO,EAAW3wE,OAAQ0wE,EAAmBD,EAAkBE,EAAW9mE,QAAQ4mE,GAAkB,EAAK,GAEhH1wE,EAKP,OAHAnF,KAAKy1E,kBACLz1E,KAAKw1E,gBAAgBO,EAAW3wE,QAEzBlF,EAAKonB,MAAM,GAIpBiuD,UACC,IAAI5qE,EAEJ,OAAO3K,KAAK86B,MACX,IAAK,QAQJ,OAPAnwB,EAAO3K,KAAKD,MAAMgM,WAAWoN,WAE7BnZ,KAAKi4B,cACLj4B,KAAKD,MAAMgM,WAAWoS,iBAAiBxT,GAEvC3K,KAAKoC,iBAAiB,aAAcpC,KAAKgzE,WAElC7/D,QAAQC,UAEhB,IAAK,SAEJ,OADApT,KAAKuyE,cAAe,EACbvyE,KAAKC,WAAW,MACrB0yB,SAAQ,KACR3yB,KAAKuyE,cAAe,CAAK,IAG5B,IAAK,mBACL,IAAK,qBACJ,OAAOvyE,KAAKC,WAAW,MAAM,GAE9B,QAEC,OADAoG,QAAQC,KAAK,8CAA+CtG,KAAK86B,MAC1D3nB,QAAQE,UAIlBqgE,iBAAiBxzE,GAChB,IAAIymB,EAMJ,QAJ6B,IAAnBzmB,EAAK81E,WACd3vE,QAAQC,KAAK,uDAAyDtG,KAAKwC,QAAQ,qBAAqBwzE,WAAa,aAAe,cAGlI91E,EAAKA,KAAK,CAKZ,GAJAF,KAAKqS,IAAMzC,SAAS1P,EAAK81E,YAAc,EAEvCh2E,KAAKqyE,4BAAkD,IAAlBnyE,EAAK+1E,SAA2B/1E,EAAK+1E,SAAY/1E,EAAK81E,UAAYh2E,KAAK8kD,MAAQ9kD,KAAKoyE,MAAQlyE,EAAK81E,UAAah2E,KAAK8kD,KAAO5kD,EAAKA,KAAKkF,OAAU,GAEhLpF,KAAKiyE,gBAAgB,CACvB,OAAOjyE,KAAK86B,MACX,IAAK,mBAEY,GAAb96B,KAAKoyE,KACPpyE,KAAKD,MAAMgM,WAAWkX,QAAQ/iB,EAAKA,MAAM,EAAoB,GAAbF,KAAKoyE,MAErDpyE,KAAKD,MAAMgM,WAAWqf,QAAQlrB,EAAKA,MAGjCF,KAAKoyE,KAAOpyE,KAAKqS,KACnBogB,YAAW,KACVzyB,KAAK+yE,UAAU,GACb/yE,KAAKD,MAAMyC,QAAQ0zE,sBAEvB,MAED,IAAK,qBACJh2E,EAAqB,IAAdF,KAAKoyE,KAAalyE,EAAKA,KAAOF,KAAKD,MAAMgM,WAAWrD,UAAU2I,OAAOnR,EAAKA,MAEjFF,KAAKD,MAAMgM,WAAWkX,QAAQ/iB,EAAoB,IAAdF,KAAKoyE,KAAyB,GAAbpyE,KAAKoyE,MAE1DzrD,EAAS3mB,KAAKD,MAAMyC,QAAQ6xE,6BAA6E,EAA7Cr0E,KAAKD,MAAMgM,WAAWzC,QAAQsH,aAEvF5Q,KAAKD,MAAMgM,WAAWzC,QAAQmP,cAAiBzY,KAAKD,MAAMgM,WAAWzC,QAAQsH,aAAe+V,GAC3F3mB,KAAKoyE,KAAOpyE,KAAKqS,KACnBogB,YAAW,KACVzyB,KAAK+yE,UAAU,IAOpB,OAAO,EAGP/yE,KAAKoC,iBAAiB,aAAepC,KAAKgzE,gBAM3C3sE,QAAQC,KAAK,uDAAyDtG,KAAKwC,QAAQ,qBAAqBtC,MAAQ,QAAU,cAG3H,OAAOA,EAAKA,KAIbmzE,eACC,IAAI8C,EAASn2E,KAAKD,MAAMgiB,cAAcwM,iBAElCrc,KAAKe,KAAKkjE,EAAO/jE,aAAe+jE,EAAO30D,YAAe,EACzDxhB,KAAKs0E,aAAanqE,MAAME,QAAU,QAElCrK,KAAKs0E,aAAanqE,MAAME,QAAU,GAE9B6H,KAAKe,KAAKkjE,EAAO/jE,aAAe+jE,EAAO30D,YAAe,IACzDxhB,KAAKs0E,aAAanqE,MAAME,QAAU,UAMtC2nE,GAAK72C,WAAa,OAGlB62C,GAAK8C,aAAesB,UC72BL,CACdC,MAAM,SAASC,EAAI9yE,GAClB,IAAItD,EAAOq2E,aAAaC,QAAQF,EAAK,IAAM9yE,GAE3C,QAAOtD,GAAO6jB,KAAKC,MAAM9jB,IAE1Bu2E,OAAO,SAASH,EAAI9yE,GACnB,IAGA+Y,EAAKrc,EAHDu2E,EAAS1sE,SAAS0sE,OACtB10E,EAAMu0E,EAAK,IAAM9yE,EACjBkzE,EAAYD,EAAOxnE,QAAQlN,EAAM,KAgBjC,OAZG20E,GAAa,KAGfn6D,GAFAk6D,EAASA,EAAOnvD,MAAMovD,IAETznE,QAAQ,OAEX,IACTwnE,EAASA,EAAOnvD,MAAM,EAAG/K,IAG1Brc,EAAOu2E,EAAO5kD,QAAQ9vB,EAAM,IAAK,OAG3B7B,GAAO6jB,KAAKC,MAAM9jB,QCzBZ,CACdm2E,MAAM,SAASC,EAAI9yE,EAAMtD,GACxBq2E,aAAaI,QAAQL,EAAK,IAAM9yE,EAAMugB,KAAK2hB,UAAUxlC,KAEtDu2E,OAAO,SAASH,EAAI9yE,EAAMtD,GACzB,IAAI02E,EAAa,IAAIxgC,KAErBwgC,EAAWC,QAAQD,EAAWE,UAAY,KAE1C/sE,SAAS0sE,OAASH,EAAK,IAAM9yE,EAAO,IAAMugB,KAAK2hB,UAAUxlC,GAAQ,aAAe02E,EAAWG,gBCL7F,MAAMC,WAAoB1/C,EAEzBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK86B,KAAO,GACZ96B,KAAKs2E,GAAK,GAEVt2E,KAAKi3E,iBAAkB,EACvBj3E,KAAKya,OAAS,GACdza,KAAKk3E,UAAW,EAChBl3E,KAAKm3E,WAAY,EAEjBn3E,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,gBAAiB,IAC1Cx3B,KAAKw3B,oBAAoB,mBAAmB,GAC5Cx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,yBAAyB,GAInD4/C,mBACC,IAAKC,EAAW,kBAEhB,IAGC,OAFA9iE,OAAOgiE,aAAaI,QAASU,EAASA,GACtC9iE,OAAOgiE,aAAae,WAAYD,IACzB,EACN,MAAMtnE,GACP,OAAO,GAKT0G,aACC,GAAGzW,KAAKD,MAAMyC,QAAQ+0E,YAAY,CAEjC,IAEAC,EAFI18C,EAAO96B,KAAKD,MAAMyC,QAAQi1E,gBAC9BnB,EAAKt2E,KAAKD,MAAMyC,QAAQk1E,cAGxB13E,KAAK86B,MAAgB,IAATA,EAAiBA,EAAQ96B,KAAKo3E,mBAAqB,QAAU,SAEtEp3E,KAAKD,MAAMyC,QAAQm1E,sBACkC,mBAA7C33E,KAAKD,MAAMyC,QAAQm1E,sBAC5B33E,KAAKk3E,SAAWl3E,KAAKD,MAAMyC,QAAQm1E,sBAEhCX,GAAYY,QAAQ53E,KAAKD,MAAMyC,QAAQm1E,uBACzC33E,KAAKk3E,SAAWF,GAAYY,QAAQ53E,KAAKD,MAAMyC,QAAQm1E,uBAEvDtxE,QAAQC,KAAK,8CAA+CtG,KAAKD,MAAMyC,QAAQm1E,uBAI9EX,GAAYY,QAAQ53E,KAAK86B,MAC3B96B,KAAKk3E,SAAWF,GAAYY,QAAQ53E,KAAK86B,MAEzCz0B,QAAQC,KAAK,8CAA+CtG,KAAK86B,MAIhE96B,KAAKD,MAAMyC,QAAQq1E,sBACkC,mBAA7C73E,KAAKD,MAAMyC,QAAQq1E,sBAC5B73E,KAAKm3E,UAAYn3E,KAAKD,MAAMyC,QAAQq1E,sBAEjCb,GAAYc,QAAQ93E,KAAKD,MAAMyC,QAAQq1E,uBACzC73E,KAAKm3E,UAAYH,GAAYc,QAAQ93E,KAAKD,MAAMyC,QAAQq1E,uBAExDxxE,QAAQC,KAAK,+CAAgDtG,KAAKD,MAAMyC,QAAQq1E,uBAI/Eb,GAAYc,QAAQ93E,KAAK86B,MAC3B96B,KAAKm3E,UAAYH,GAAYc,QAAQ93E,KAAK86B,MAE1Cz0B,QAAQC,KAAK,+CAAgDtG,KAAK86B,MAKpE96B,KAAKs2E,GAAK,cAAgBA,GAAOt2E,KAAKD,MAAMuJ,QAAQszC,aAAa,OAAS,IAE1E58C,KAAKya,OAAS,CACb6R,MAAwC,IAAnCtsB,KAAKD,MAAMyC,QAAQ+0E,aAAwBv3E,KAAKD,MAAMyC,QAAQ+0E,YAAYjrD,KAC/EzQ,QAA0C,IAAnC7b,KAAKD,MAAMyC,QAAQ+0E,aAAwBv3E,KAAKD,MAAMyC,QAAQ+0E,YAAY17D,OACjFq1C,cAAgD,IAAnClxD,KAAKD,MAAMyC,QAAQ+0E,aAAwBv3E,KAAKD,MAAMyC,QAAQ+0E,YAAYrmB,aACvFlsC,OAAyC,IAAnChlB,KAAKD,MAAMyC,QAAQ+0E,aAAwBv3E,KAAKD,MAAMyC,QAAQ+0E,YAAYvyD,MAChFotD,MAAwC,IAAnCpyE,KAAKD,MAAMyC,QAAQ+0E,aAAwBv3E,KAAKD,MAAMyC,QAAQ+0E,YAAYnF,KAC/EttE,SAA2C,IAAnC9E,KAAKD,MAAMyC,QAAQ+0E,YAAuB,CAAC,QAAS,QAAS,WAAav3E,KAAKD,MAAMyC,QAAQ+0E,YAAYzyE,SAI/G9E,KAAKya,OAAO23D,OACdoF,EAAgBx3E,KAAK+3E,aAAa,gBAGU,IAAjCP,EAActD,iBAAwD,IAArBl0E,KAAKya,OAAO23D,OAAiBpyE,KAAKya,OAAO23D,KAAKttB,OACxG9kD,KAAKD,MAAMyC,QAAQ0xE,eAAiBsD,EAActD,qBAGD,IAAxCsD,EAAcpC,wBAA+D,IAArBp1E,KAAKya,OAAO23D,OAAiBpyE,KAAKya,OAAO23D,KAAKA,OAC/GpyE,KAAKD,MAAMyC,QAAQ4yE,sBAAwBoC,EAAcpC,wBAMzDp1E,KAAKya,OAAOuK,QACdwyD,EAAgBx3E,KAAK+3E,aAAa,iBAGG,IAA1BP,EAAcrqC,UAAkD,IAAtBntC,KAAKya,OAAOuK,QAAkBhlB,KAAKya,OAAOuK,MAAMmoB,UACnGntC,KAAKD,MAAMyC,QAAQ2qC,QAAUqqC,EAAcrqC,cAED,IAAjCqqC,EAAczZ,iBAAyD,IAAtB/9D,KAAKya,OAAOuK,QAAkBhlB,KAAKya,OAAOuK,MAAM+4C,iBAC1G/9D,KAAKD,MAAMyC,QAAQu7D,eAAiByZ,EAAczZ,qBAEX,IAA9ByZ,EAAct/B,cAAsD,IAAtBl4C,KAAKya,OAAOuK,QAAkBhlB,KAAKya,OAAOuK,MAAMkzB,cACvGl4C,KAAKD,MAAMyC,QAAQ01C,YAAcs/B,EAAct/B,cAK/Cl4C,KAAKya,OAAO3V,UACd9E,KAAKD,MAAMyC,QAAQsC,QAAU9E,KAAKM,KAAK,UAAWN,KAAKD,MAAMyC,QAAQsC,SACrE9E,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OACzDA,KAAK2B,UAAU,cAAe3B,KAAKg4E,KAAKl3E,KAAKd,KAAM,YACnDA,KAAK2B,UAAU,cAAe3B,KAAKg4E,KAAKl3E,KAAKd,KAAM,YACnDA,KAAK2B,UAAU,eAAgB3B,KAAKg4E,KAAKl3E,KAAKd,KAAM,aAGrDA,KAAK2B,UAAU,cAAe3B,KAAKqwD,WAAWvvD,KAAKd,MAAO,GAE1DA,KAAK2B,UAAU,eAAgB3B,KAAK4sC,YAAY9rC,KAAKd,OAErDA,KAAK2B,UAAU,iBAAkB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,WAC3DA,KAAK2B,UAAU,iBAAkB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,iBAC3DA,KAAK2B,UAAU,eAAgB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,SACzDA,KAAK2B,UAAU,gBAAiB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,UAC1DA,KAAK2B,UAAU,eAAgB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,SACzDA,KAAK2B,UAAU,iBAAkB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,YAC3DA,KAAK2B,UAAU,eAAgB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,YACzDA,KAAK2B,UAAU,mBAAoB3B,KAAKi4E,UAAUn3E,KAAKd,KAAM,YAG9DA,KAAK03B,sBAAsB,kBAAmB13B,KAAKk4E,gBAAgBp3E,KAAKd,OACxEA,KAAK03B,sBAAsB,kBAAmB13B,KAAKm4E,gBAAgBr3E,KAAKd,OAGzEi4E,UAAUz0E,GACNxD,KAAKya,OAAOjX,IACdxD,KAAKg4E,KAAKx0E,GAIZ6sD,aACC,IAAI+nB,EAAS1mB,EAAS11B,EAEnBh8B,KAAKya,OAAO6R,OAGE,KAFhB8rD,EAAUp4E,KAAKM,KAAK,WAGnBN,KAAKD,MAAMyC,QAAQ61E,YAAcD,GAIhCp4E,KAAKya,OAAOoB,SAGE,KAFhB61C,EAAU1xD,KAAKM,KAAK,aAGnBN,KAAKD,MAAMyC,QAAQiuD,cAAgBiB,GAGlC1xD,KAAKya,OAAOy2C,eAGQ,KAFtBl1B,EAAgBh8B,KAAKM,KAAK,mBAGzBN,KAAKD,MAAMyC,QAAQmuD,oBAAsB30B,GAM5C4Q,YAAYlrC,GACRA,GAAS1B,KAAKya,OAAO3V,SACvB9E,KAAKg4E,KAAK,WAQZE,kBACC,OAAOl4E,KAAKs4E,aAAat4E,KAAKD,MAAM6F,cAAcuL,cAGnDgnE,gBAAgB52E,GAEf,OADAvB,KAAKD,MAAM6F,cAAc2Z,WAAWvf,KAAKu4E,gBAAgBv4E,KAAKD,MAAMyC,QAAQsC,QAASvD,KAC9E,EAORy5B,iBAAiB13B,GAChB,IAAI+J,EAEDrN,KAAKya,OAAO3V,UACd9E,KAAKi3E,iBAAkB,EAEvB5pE,EAAM/J,EAAOW,kBAEkB,IAAxBjE,KAAKya,OAAO3V,QAAmBiK,OAAOC,KAAK3B,GAAOrN,KAAKya,OAAO3V,SAEhER,SAASvC,IACb,IAAI2rD,EAAQ3+C,OAAOypE,yBAAyBnrE,EAAKtL,GAC7CW,EAAQ2K,EAAItL,GAEb2rD,GACF3+C,OAAO0pE,eAAeprE,EAAKtL,EAAK,CAC/B22E,IAAMpY,IACL59D,EAAQ49D,EAEJtgE,KAAKi3E,iBACRj3E,KAAKg4E,KAAK,WAGRtqB,EAAMgrB,KACRhrB,EAAMgrB,IAAIpY,IAGZ58D,IAAI,KACAgqD,EAAMhqD,KACRgqD,EAAMhqD,MAEAhB,QAMX1C,KAAKi3E,iBAAkB,GAKzB32E,KAAKkD,EAAMm1E,GACV,IAAIz4E,EAAOF,KAAK+3E,aAAav0E,GAM7B,OAJGm1E,IACFz4E,EAAOA,EAAOF,KAAKu4E,gBAAgBI,EAASz4E,GAAQy4E,GAG9Cz4E,EAIR63E,aAAav0E,GACZ,QAAOxD,KAAKk3E,UAAWl3E,KAAKk3E,SAASl3E,KAAKs2E,GAAI9yE,GAI/C+0E,gBAAgBK,EAASC,GACxB,IAAI1zE,EAAS,GA0Cb,OAxCA0zE,EAAUA,GAAW,IAEbv0E,SAAQ,CAAChB,EAAQ0C,KACxB,IACAgJ,EADI8R,EAAO9gB,KAAK84E,YAAYF,EAASt1E,GAGlCwd,KACyB,IAAxB9gB,KAAKya,OAAO3V,SAA2CvE,MAAvBP,KAAKya,OAAO3V,SAC9CkK,EAAQD,OAAOC,KAAK8R,IACftc,KAAK,SAEVwK,EAAOhP,KAAKya,OAAO3V,QAGpBkK,EAAK1K,SAASvC,IACF,YAARA,QAA4C,IAAhBuB,EAAOvB,KACrC+e,EAAK/e,GAAOuB,EAAOvB,OAIlB+e,EAAKhc,UACPgc,EAAKhc,QAAU9E,KAAKu4E,gBAAgBz3D,EAAKhc,QAASxB,EAAOwB,UAG1DK,EAAOX,KAAKsc,OAId83D,EAAQt0E,SAAQ,CAAChB,EAAQ2K,KACbjO,KAAK84E,YAAYD,EAASv1E,KAGjC6B,EAAOC,OAAO6I,EAChB9I,EAAO4M,OAAO9D,EAAG,EAAG3K,GAEpB6B,EAAOX,KAAKlB,OAKR6B,EAIR2zE,YAAYh0E,EAASyQ,GACpB,IAAI/R,EAAO+R,EAAQzQ,QAAU,QAAWyQ,EAAQjO,MAAQ,QAAU,SAElE,OAAOxC,EAAQwa,MAAK,SAAS7D,GAC5B,OAAOjY,GACN,IAAK,QACJ,OAAOiY,EAAIpU,QAAUkO,EAAQlO,OAASoU,EAAI3W,QAAQM,SAAWmQ,EAAQzQ,QAAQM,OAE9E,IAAK,QACJ,OAAOqW,EAAInU,QAAUiO,EAAQjO,MAE9B,IAAK,SACJ,OAAOmU,IAAQlG,MAMnByiE,KAAKx0E,GACJ,IAAItD,EAAO,GAEX,OAAOsD,GACN,IAAK,UACJtD,EAAOF,KAAKs4E,aAAat4E,KAAKD,MAAM6F,cAAcuL,cAClD,MAED,IAAK,SACJjR,EAAOF,KAAKD,MAAMU,QAAQob,OAAOyzC,aACjC,MAED,IAAK,eACJpvD,EAAOF,KAAKD,MAAMU,QAAQob,OAAO6zC,mBACjC,MAED,IAAK,OACJxvD,EAAOF,KAAK+4E,gBAAgB/4E,KAAKD,MAAMU,QAAQ6rB,KAAK0sD,WACpD,MAED,IAAK,QACJ94E,EAAOF,KAAKi5E,iBACZ,MAED,IAAK,OACJ/4E,EAAOF,KAAKk5E,gBAIXl5E,KAAKm3E,WACPn3E,KAAKm3E,UAAUn3E,KAAKs2E,GAAI9yE,EAAMtD,GAMhC64E,gBAAgB74E,GAMf,OALAA,EAAKoE,SAAQ,SAASmR,GACrBA,EAAKnS,OAASmS,EAAKnO,aACZmO,EAAKnO,SAGNpH,EAGR+4E,iBACC,IAAI/4E,EAAO,GAgBX,OAdGF,KAAKya,OAAOuK,UACW,IAAtBhlB,KAAKya,OAAOuK,OAAkBhlB,KAAKya,OAAOuK,MAAMmoB,WAClDjtC,EAAKitC,QAAUntC,KAAKD,MAAMyC,QAAQ2qC,WAGV,IAAtBntC,KAAKya,OAAOuK,OAAkBhlB,KAAKya,OAAOuK,MAAM+4C,kBAClD79D,EAAK69D,eAAiB/9D,KAAKD,MAAMyC,QAAQu7D,kBAGjB,IAAtB/9D,KAAKya,OAAOuK,OAAkBhlB,KAAKya,OAAOuK,MAAMkzB,eAClDh4C,EAAKg4C,YAAcl4C,KAAKD,MAAMyC,QAAQ01C,cAIjCh4C,EAGRg5E,gBACC,IAAIh5E,EAAO,GAYX,OAVGF,KAAKya,OAAO23D,SACU,IAArBpyE,KAAKya,OAAO23D,MAAiBpyE,KAAKya,OAAO23D,KAAKttB,QAChD5kD,EAAKg0E,eAAiBl0E,KAAKD,MAAMU,QAAQ2xE,KAAKS,iBAGvB,IAArB7yE,KAAKya,OAAO23D,MAAiBpyE,KAAKya,OAAO23D,KAAKA,QAChDlyE,EAAKk1E,sBAAwBp1E,KAAKD,MAAMU,QAAQ2xE,KAAKY,YAIhD9yE,EAKRo4E,aAAaxzE,GACZ,IAAIsa,EAAc,GAClB+5D,EAAe,CAAC,oBAAqB,aAAc,cAAe,aAyClE,OAvCAr0E,EAAQR,SAAShB,IAChB,IAEA0L,EAFIoqE,EAAW,GACfC,EAAS/1E,EAAOW,gBAGbX,EAAOuB,SACTu0E,EAAS/xE,MAAQgyE,EAAOhyE,MACxB+xE,EAASt0E,QAAU9E,KAAKs4E,aAAah1E,EAAO6N,gBAE5CioE,EAAS9xE,MAAQhE,EAAOY,YAEG,IAAxBlE,KAAKya,OAAO3V,SAA2CvE,MAAvBP,KAAKya,OAAO3V,UAC9CkK,EAAQD,OAAOC,KAAKqqE,IACf70E,KAAK,SACVwK,EAAKxK,KAAK,YAEVwK,EAAOhP,KAAKya,OAAO3V,QAGpBkK,EAAK1K,SAASvC,IACb,OAAOA,GACN,IAAK,QACJq3E,EAASnyE,MAAQ3D,EAAOyD,WACxB,MACD,IAAK,UACJqyE,EAASz0E,QAAUrB,EAAOqB,QAC1B,MAED,QAC2B,mBAAhB00E,EAAOt3E,KAAsD,IAA/Bo3E,EAAalqE,QAAQlN,KAC5Dq3E,EAASr3E,GAAOs3E,EAAOt3E,SAM5Bqd,EAAY5a,KAAK40E,EAAS,IAGpBh6D,GAIT43D,GAAY77C,WAAa,cAEzB67C,GAAYn3C,iBAAmB,GAG/Bm3C,GAAYY,QAAU0B,GACtBtC,GAAYc,QAAUyB,GCpdtB,MAAMvkD,WAAcsC,EAEnBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKqnE,kBAAoB,GAEzBrnE,KAAKw3B,oBAAoB,mBAAmB,GAC5Cx3B,KAAKw3B,oBAAoB,iBAAiB,GAC1Cx3B,KAAKw3B,oBAAoB,oBAAoB,GAC7Cx3B,KAAKw3B,oBAAoB,qBAAqB,GAC9Cx3B,KAAKw3B,oBAAoB,mBAAmB,GAC5Cx3B,KAAKw3B,oBAAoB,sBAAsB,GAE/Cx3B,KAAKy3B,qBAAqB,sBAC1Bz3B,KAAKy3B,qBAAqB,oBAC1Bz3B,KAAKy3B,qBAAqB,uBAC1Bz3B,KAAKy3B,qBAAqB,eAC1Bz3B,KAAKy3B,qBAAqB,mBAC1Bz3B,KAAKy3B,qBAAqB,gBAC1Bz3B,KAAKy3B,qBAAqB,cAC1Bz3B,KAAKy3B,qBAAqB,iBAE1Bz3B,KAAK63B,0BAA0B,OAAQ,QAAS73B,KAAKw5E,oBAAoB14E,KAAKd,OAC9EA,KAAK63B,0BAA0B,SAAU,QAAS73B,KAAKw5E,oBAAoB14E,KAAKd,OAChFA,KAAK63B,0BAA0B,MAAO,QAAS73B,KAAKw5E,oBAAoB14E,KAAKd,OAC7EA,KAAK63B,0BAA0B,QAAS,QAAS73B,KAAKw5E,oBAAoB14E,KAAKd,OAIhFyW,aACCzW,KAAKsqE,wBACLtqE,KAAKuqE,0BAELvqE,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OAG1Dw5E,oBAAoB/vE,EAAW2G,EAAU1K,GACxC1F,KAAKy5E,eAAerpE,EAAU,KAAM3G,EAAW/D,GAGhD4kE,wBACItqE,KAAKD,MAAMyC,QAAQk3E,kBACrB15E,KAAK2B,UAAU,kBAAmB3B,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQk3E,kBACpF15E,KAAKD,MAAMgkC,GAAG,aAAc/jC,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQk3E,mBAG5E15E,KAAKD,MAAMyC,QAAQm3E,eACrB35E,KAAK2B,UAAU,YAAa3B,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQm3E,gBAG5E35E,KAAKD,MAAMyC,QAAQo3E,kBACrB55E,KAAK2B,UAAU,eAAgB3B,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQo3E,mBAInFrP,0BACIvqE,KAAKD,MAAMyC,QAAQq3E,oBACrB75E,KAAK2B,UAAU,oBAAqB3B,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQq3E,oBACtF75E,KAAKD,MAAMgkC,GAAG,eAAgB/jC,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQq3E,qBAG9E75E,KAAKD,MAAMyC,QAAQs3E,iBACrB95E,KAAK2B,UAAU,cAAe3B,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQs3E,kBAG9E95E,KAAKD,MAAMyC,QAAQu3E,oBACrB/5E,KAAK2B,UAAU,iBAAkB3B,KAAKy5E,eAAe34E,KAAKd,KAAMA,KAAKD,MAAMyC,QAAQu3E,qBAIrF/+C,iBAAiB13B,GAChB,IAAI+J,EAAM/J,EAAOwH,WAGduC,EAAI2sE,qBAAuBh6E,KAAKqnE,kBAAkB2S,qBACpDh6E,KAAKqnE,kBAAkB2S,mBAAqBh6E,KAAKi6E,0BAA0Bn5E,KAAKd,KAAM,sBACtFA,KAAK2B,UAAU,qBAAsB3B,KAAKqnE,kBAAkB2S,oBAC5Dh6E,KAAKD,MAAMgkC,GAAG,gBAAiB/jC,KAAKi6E,0BAA0Bn5E,KAAKd,KAAM,wBAGvEqN,EAAI6sE,mBAAqBl6E,KAAKqnE,kBAAkB6S,mBAClDl6E,KAAKqnE,kBAAkB6S,iBAAmBl6E,KAAKi6E,0BAA0Bn5E,KAAKd,KAAM,oBACpFA,KAAK2B,UAAU,eAAgB3B,KAAKqnE,kBAAkB6S,mBAGnD7sE,EAAI8sE,sBAAwBn6E,KAAKqnE,kBAAkB8S,sBACtDn6E,KAAKqnE,kBAAkB8S,oBAAsBn6E,KAAKi6E,0BAA0Bn5E,KAAKd,KAAM,uBACvFA,KAAK2B,UAAU,kBAAmB3B,KAAKqnE,kBAAkB8S,sBAGvD9sE,EAAI+sE,aACNp6E,KAAKq6E,4BAA4B/2E,GAI/B+J,EAAIitE,eAAiBt6E,KAAKqnE,kBAAkBiT,eAC9Ct6E,KAAKqnE,kBAAkBiT,aAAet6E,KAAKu6E,wBAAwBz5E,KAAKd,KAAM,gBAC9EA,KAAK2B,UAAU,mBAAoB3B,KAAKqnE,kBAAkBiT,cAC1Dt6E,KAAKD,MAAMgkC,GAAG,cAAe/jC,KAAKu6E,wBAAwBz5E,KAAKd,KAAM,kBAGnEqN,EAAImtE,aAAex6E,KAAKqnE,kBAAkBmT,aAC5Cx6E,KAAKqnE,kBAAkBmT,WAAax6E,KAAKu6E,wBAAwBz5E,KAAKd,KAAM,cAC5EA,KAAK2B,UAAU,aAAc3B,KAAKqnE,kBAAkBmT,aAGlDntE,EAAIotE,gBAAkBz6E,KAAKqnE,kBAAkBoT,gBAC/Cz6E,KAAKqnE,kBAAkBoT,cAAgBz6E,KAAKu6E,wBAAwBz5E,KAAKd,KAAM,iBAC/EA,KAAK2B,UAAU,aAAc3B,KAAKqnE,kBAAkBoT,gBAItDJ,4BAA4B/2E,GAC3B,IACAo3E,EADIhP,EAAOpoE,EAAOwH,WAAW6vE,iBAG7BD,EAAgB3wE,SAASC,cAAc,SACzBgB,UAAUC,IAAI,iCAEzBygE,GACiB,mBAATA,IACTA,EAAOA,EAAKpoE,EAAOmB,iBAGjBinE,aAAgBxrD,YAClBw6D,EAAclvE,YAAYkgE,GAE1BgP,EAActvE,UAAYsgE,GAG3BgP,EAActvE,UAAY,WAG3BsvE,EAAc5qE,iBAAiB,SAAUC,IACxCA,EAAEC,kBACFD,EAAEy4B,iBAEFxoC,KAAKy5E,eAAen2E,EAAOwH,WAAWsvE,YAAarqE,EAAGzM,EAAO,IAG9DA,EAAOkK,aAAamP,aAAa+9D,EAAep3E,EAAOkK,aAAalC,YAGrEivE,wBAAwBvkE,EAAQjG,EAAGxL,GAC/BA,EAAK4D,QACP5D,EAAOA,EAAK4D,OAGV5D,EAAKjB,OAAOwH,WAAWkL,IACzBhW,KAAKy5E,eAAel1E,EAAKjB,OAAOwH,WAAWkL,GAASjG,EAAGxL,GAIzD01E,0BAA0BjkE,EAAQjG,EAAGzM,GACjCA,EAAOC,UACTD,EAASA,EAAOC,SAGdD,EAAOwH,WAAWkL,IACpBhW,KAAKy5E,eAAen2E,EAAOwH,WAAWkL,GAASjG,EAAGzM,GAIpDm2E,eAAerpE,EAAUL,EAAGtG,EAAW/D,GACtC,IAAI8vB,EAMD/rB,EAAU2uC,OACZ3uC,EAAYA,EAAU2uC,OACd3uC,EAAUwY,OAClBxY,EAAYA,EAAUwY,MAGvB7R,EAA8B,mBAAZA,EAAyBA,EAAStE,KAAK9L,KAAKD,MAAOgQ,EAAGtG,EAAUhF,gBAVlF,SAAoBuS,GACnBwe,EAAmBxe,KAS6F5G,EAEjHpQ,KAAK46E,UAAU7qE,EAAGtG,EAAW2G,EAAUolB,EAAkB9vB,GAG1Dk1E,UAAU7qE,EAAGtG,EAAW2G,EAAUolB,EAAkB9vB,GACnD,IACAm1E,EAAYxiD,EADRjC,IAAUrmB,aAAasmB,YAGxBjmB,aAAoB8P,YACtB26D,EAAazqE,GAEbyqE,EAAa9wE,SAASC,cAAc,QACzBoB,UAAYgF,EAGxByqE,EAAW7vE,UAAUC,IAAI,mBAEzB4vE,EAAW/qE,iBAAiB,SAAUC,IACrCA,EAAEC,iBAAiB,IAGhBomB,GACHrmB,EAAEy4B,iBAGHnQ,EAAQr4B,KAAKq4B,MAAMwiD,GAEY,mBAArBrlD,GACT6C,EAAMnC,eAAeV,GAGnBzlB,EACFsoB,EAAMzzB,KAAKmL,GAEXsoB,EAAMzzB,KAAK6E,EAAUzF,aAAc0B,GAAY,UAIhD2yB,EAAMnB,YAAW,KAChBl3B,KAAKoC,iBAAiB,cAAeqH,EAAUhF,eAAe,IAK/DzE,KAAKoC,iBAAiB,cAAeqH,EAAUhF,oBAI3C02B,WAAa,QClOnB,MAAM2/C,WAAcxjD,EAEnBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKsJ,SAAU,EACftJ,KAAK+6E,aAAc,EACnB/6E,KAAKg7E,wBAA0B,KAC/Bh7E,KAAKi7E,uBAAyB,KAE9Bj7E,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,kBAAkB,GAC3Cx3B,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,gBAAiB,WAC1Cx3B,KAAKw3B,oBAAoB,cAAe,IAExCx3B,KAAKy3B,qBAAqB,SAC1Bz3B,KAAKy3B,qBAAqB,cAG3BhhB,aACIzW,KAAKD,MAAMyC,QAAQ04E,cACrBl7E,KAAKg7E,wBAA0Bh7E,KAAKm7E,aAAar6E,KAAKd,MACtDA,KAAKi7E,uBAAyBj7E,KAAKo7E,QAAQt6E,KAAKd,MAEhDuU,OAAOzE,iBAAiB,cAAe9P,KAAKg7E,yBAC5CzmE,OAAOzE,iBAAiB,aAAc9P,KAAKi7E,wBAC3Cj7E,KAAK2B,UAAU,gBAAiB3B,KAAK0qB,QAAQ5pB,KAAKd,QAGnDA,KAAK03B,sBAAsB,QAAS13B,KAAKq7E,gBAAgBv6E,KAAKd,OAG/D0qB,UACI1qB,KAAKD,MAAMyC,QAAQ04E,cACrB3mE,OAAOmc,oBAAqB,cAAe1wB,KAAKg7E,yBAChDzmE,OAAOmc,oBAAqB,aAAc1wB,KAAKi7E,yBAYjDE,eACKn7E,KAAK+6E,cACR/6E,KAAKsJ,QAAUS,SAASC,cAAc,OACtChK,KAAKsJ,QAAQ0B,UAAUC,IAAI,yBAE3BjL,KAAKsJ,QAAQkC,YAAYxL,KAAKD,MAAMU,QAAQioC,OAAOmiB,cAAc7qD,KAAKD,MAAMyC,QAAQ84E,YAAat7E,KAAKD,MAAMyC,QAAQ+4E,YAAav7E,KAAKD,MAAMyC,QAAQg5E,cAAe,UAEnKx7E,KAAKD,MAAMuJ,QAAQa,MAAME,QAAU,OAEnCrK,KAAKD,MAAMuJ,QAAQ0D,WAAW2P,aAAa3c,KAAKsJ,QAAStJ,KAAKD,MAAMuJ,UAItE8xE,UACCrxE,SAASksB,KAAKjrB,UAAUgN,OAAO,mCAE5BhY,KAAKsJ,SAAWtJ,KAAKsJ,QAAQ0D,aAC/BhN,KAAKsJ,QAAQ0D,WAAWzB,YAAYvL,KAAKsJ,SACzCtJ,KAAKD,MAAMuJ,QAAQa,MAAME,QAAU,IAIrCgxE,gBAAgB12E,EAASwF,EAAOsQ,GAC/B,IAKAmkD,EAAe6c,EALXC,EAAUnnE,OAAOmnE,QACrBC,EAAUpnE,OAAOonE,QACjB5vB,EAAWhiD,SAASC,cAAc,OAClC4xE,EAAW7xE,SAASC,cAAc,OAClC6xE,EAAU77E,KAAKD,MAAMU,QAAQioC,OAAOmiB,mBAA+B,IAAVpwC,EAAwBA,EAASza,KAAKD,MAAMyC,QAAQ84E,iBAA6B,IAATnxE,EAAuBA,EAAQnK,KAAKD,MAAMyC,QAAQ+4E,YAAa52E,GAAW3E,KAAKD,MAAMyC,QAAQg5E,cAAe,SAG7Ox7E,KAAK+6E,aAAc,EAEnB/6E,KAAKsJ,QAAUS,SAASC,cAAc,OACtChK,KAAKsJ,QAAQ0B,UAAUC,IAAI,8BAExBjL,KAAKD,MAAMyC,QAAQs5E,cACrB/vB,EAAS/gD,UAAUC,IAAI,0BAII,iBAF3B2zD,EAAyD,mBAAlC5+D,KAAKD,MAAMyC,QAAQs5E,YAA4B97E,KAAKD,MAAMyC,QAAQs5E,YAAYhwE,KAAK9L,KAAKD,OAASC,KAAKD,MAAMyC,QAAQs5E,aAG1I/vB,EAAS3gD,UAAYwzD,EAErB7S,EAASvgD,YAAYozD,GAGtB5+D,KAAKsJ,QAAQkC,YAAYugD,IAG1B/rD,KAAKsJ,QAAQkC,YAAYqwE,GAEtB77E,KAAKD,MAAMyC,QAAQu5E,cACrBH,EAAS5wE,UAAUC,IAAI,0BAKI,iBAH3BwwE,EAAyD,mBAAlCz7E,KAAKD,MAAMyC,QAAQu5E,YAA4B/7E,KAAKD,MAAMyC,QAAQu5E,YAAYjwE,KAAK9L,KAAKD,OAASC,KAAKD,MAAMyC,QAAQu5E,aAI1IH,EAASxwE,UAAYqwE,EAErBG,EAASpwE,YAAYiwE,GAGtBz7E,KAAKsJ,QAAQkC,YAAYowE,IAG1B7xE,SAASksB,KAAKjrB,UAAUC,IAAI,mCAC5BlB,SAASksB,KAAKzqB,YAAYxL,KAAKsJ,SAE5BtJ,KAAKD,MAAMyC,QAAQw5E,gBACrBh8E,KAAKD,MAAMyC,QAAQw5E,eAAeh8E,KAAKsJ,QAASuyE,GAGjDtnE,OAAOujD,QAEP93D,KAAKo7E,UAEL7mE,OAAO9O,SAASi2E,EAASC,GAEzB37E,KAAK+6E,aAAc,GAIrBD,GAAM3/C,WAAa,QCrInB,MAAM8gD,WAAqB3kD,EAE1Bx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKE,MAAO,EACZF,KAAKmoC,SAAU,EACfnoC,KAAKk8E,UAAY,GACjBl8E,KAAKm8E,eAAiB,EAEtBn8E,KAAKw3B,oBAAoB,gBAAgB,GAG1C/gB,aACIzW,KAAKD,MAAMyC,QAAQq/B,eACrB7hC,KAAK2B,UAAU,yBAA0B3B,KAAK0/C,MAAM5+C,KAAKd,KAAM,aAC/DA,KAAK2B,UAAU,wBAAyB3B,KAAKo8E,QAAQt7E,KAAKd,KAAM,aAChEA,KAAK2B,UAAU,uBAAwB3B,KAAK0/C,MAAM5+C,KAAKd,KAAM,YAC7DA,KAAK2B,UAAU,sBAAuB3B,KAAKo8E,QAAQt7E,KAAKd,KAAM,YAC9DA,KAAK2B,UAAU,sBAAuB3B,KAAKq8E,SAASv7E,KAAKd,OACzDA,KAAK2B,UAAU,kBAAmB3B,KAAKs8E,UAAUx7E,KAAKd,OACtDA,KAAK2B,UAAU,gBAAiB3B,KAAKu8E,YAAYz7E,KAAKd,QAIxDs8E,UAAUp8E,GACT,IACAs8E,EADI73B,EAAO3kD,KAGXA,KAAKm8E,iBAELK,EAAUx8E,KAAKm8E,eAEfn8E,KAAKu8E,cAELv8E,KAAKE,KAAOA,EAGZF,KAAKk8E,UAAU13E,KAAOtE,EAAKsE,KAE3BuK,OAAO0pE,eAAez4E,KAAKE,KAAM,OAAQ,CACxCu8E,YAAY,EACZC,cAAc,EACdh6E,MAAO,WACN,IACAwE,EADIwsB,EAAOve,MAAM2L,KAAKlgB,WAetB,OAZI+jD,EAAKxc,SAAWq0C,IAAY73B,EAAKw3B,iBACpCx3B,EAAKjF,MAAM,aAEXhsB,EAAKpvB,SAASq4E,IACbh4B,EAAK5kD,MAAMgM,WAAWof,aAAawxD,GAAK,EAAM,IAG/Cz1E,EAASy9C,EAAKu3B,UAAU13E,KAAKqvB,MAAM3zB,EAAMU,WAEzC+jD,EAAKy3B,QAAQ,cAGPl1E,KAKTlH,KAAKk8E,UAAUxmE,QAAUxV,EAAKwV,QAE9B3G,OAAO0pE,eAAez4E,KAAKE,KAAM,UAAW,CAC3Cu8E,YAAY,EACZC,cAAc,EACdh6E,MAAO,WACN,IACAwE,EADIwsB,EAAOve,MAAM2L,KAAKlgB,WAetB,OAZI+jD,EAAKxc,SAAWq0C,IAAY73B,EAAKw3B,iBACpCx3B,EAAKjF,MAAM,gBAEXhsB,EAAKpvB,SAASq4E,IACbh4B,EAAK5kD,MAAMgM,WAAWof,aAAawxD,GAAK,EAAK,IAG9Cz1E,EAASy9C,EAAKu3B,UAAUxmE,QAAQme,MAAM3zB,EAAMU,WAE5C+jD,EAAKy3B,QAAQ,iBAGPl1E,KAMTlH,KAAKk8E,UAAUvoD,MAAQzzB,EAAKyzB,MAE5B5kB,OAAO0pE,eAAez4E,KAAKE,KAAM,QAAS,CACzCu8E,YAAY,EACZC,cAAc,EACdh6E,MAAO,WACN,IAAI+F,EAAKvB,EAkBT,OAhBIy9C,EAAKxc,SAAWq0C,IAAY73B,EAAKw3B,iBACpCx3B,EAAKjF,MAAM,cAERiF,EAAKzkD,KAAKkF,SACZqD,EAAMk8C,EAAK5kD,MAAMgM,WAAWme,qBAAqBy6B,EAAKzkD,KAAK,MAG1DuI,EAAIgc,eAINvd,EAASy9C,EAAKu3B,UAAUvoD,MAAM7nB,KAAK5L,GAEnCykD,EAAKy3B,QAAQ,eAGPl1E,KAKTlH,KAAKk8E,UAAUU,IAAM18E,EAAK08E,IAE1B7tE,OAAO0pE,eAAez4E,KAAKE,KAAM,MAAO,CACvCu8E,YAAY,EACZC,cAAc,EACdh6E,MAAO,WACN,IAAI+F,EAAKvB,EAkBT,OAhBIy9C,EAAKxc,SAAWq0C,IAAY73B,EAAKw3B,iBACpCx3B,EAAKjF,MAAM,YAERiF,EAAKzkD,KAAKkF,SACZqD,EAAMk8C,EAAK5kD,MAAMgM,WAAWme,qBAAqBy6B,EAAKzkD,KAAKykD,EAAKzkD,KAAKkF,OAAS,MAG7EqD,EAAIgc,eAINvd,EAASy9C,EAAKu3B,UAAUU,IAAI9wE,KAAK5L,GAEjCykD,EAAKy3B,QAAQ,aAGPl1E,KAMTlH,KAAKk8E,UAAUnqE,OAAS7R,EAAK6R,OAE7BhD,OAAO0pE,eAAez4E,KAAKE,KAAM,SAAU,CAC1Cu8E,YAAY,EACZC,cAAc,EACdh6E,MAAO,WACN,IAIAm6E,EAAU31E,EAJNwsB,EAAOve,MAAM2L,KAAKlgB,WACtB0b,EAAQoX,EAAK,GAAK,EAAIxzB,EAAKkF,OAASsuB,EAAK,GAAKA,EAAK,GACnDnX,EAAMmX,EAAK,GACXwP,IAAUxP,EAAK,IAAKA,EAAKpM,MAAM,GAG/B,IAAIq9B,EAAKxc,SAAWq0C,IAAY73B,EAAKw3B,eAAe,CAoBnD,GAnBAx3B,EAAKjF,MAAM,eAERxc,KACF25C,IAAW38E,EAAKoc,IAASqoC,EAAK5kD,MAAMgM,WAAWme,qBAAqBhqB,EAAKoc,KAGxE4mB,EAAQ5+B,SAAS+tB,IAChBsyB,EAAK5kD,MAAMgM,WAAWof,aAAakH,GAAS,EAAMwqD,GAAU,EAAK,KAGlE35C,EAAUA,EAAQ5b,QAAQiE,WAElBjnB,SAAS+tB,IAChBsyB,EAAK5kD,MAAMgM,WAAWof,aAAakH,GAAS,GAAM,GAAO,EAAK,KAMtD,IAAR9V,EAAU,CACZ,IAAIugE,EAAU58E,EAAKonB,MAAMhL,OAA0B,IAAZoX,EAAK,GAAqBA,EAAK,GAAKpX,EAAQC,GAEnFugE,EAAQx4E,SAAQ,CAAC+tB,EAASpkB,KACzB,IAAIxF,EAAMk8C,EAAK5kD,MAAMgM,WAAWme,qBAAqBmI,GAElD5pB,GACFA,EAAIgc,aAAaxW,IAAM6uE,EAAQ13E,OAAS,OAKxC89B,GAAmB,IAAR3mB,IACbooC,EAAK5kD,MAAMgM,WAAWwe,qBAGvBrjB,EAASy9C,EAAKu3B,UAAUnqE,OAAO8hB,MAAM3zB,EAAMU,WAE3C+jD,EAAKy3B,QAAQ,eAGd,OAAOl1E,KAKVq1E,cACC,IAAiB,IAAdv8E,KAAKE,KACP,IAAI,IAAI6B,KAAO/B,KAAKk8E,UACnBntE,OAAO0pE,eAAez4E,KAAKE,KAAM6B,EAAK,CACrC06E,YAAY,EACZC,cAAa,EACbK,UAAS,EACTr6E,MAAO1C,KAAKk8E,UAAUn6E,MAM1Bs6E,SAAS5zE,GACR,IAAIvI,EAAOuI,EAAIC,UAEf,IAAI,IAAI3G,KAAO7B,EACdF,KAAKg9E,SAASv0E,EAAKvI,EAAM6B,GAGvB/B,KAAKD,MAAMyC,QAAQ8qC,UACrBttC,KAAKi9E,kBAAkBx0E,GAIzBw0E,kBAAmBx0E,GAClB,IAAIk8C,EAAO3kD,KACXk9E,EAAaz0E,EAAIC,UAAU1I,KAAKD,MAAMyC,QAAQuuC,oBAC9CmrC,EAAY,GAETgB,IAEFhB,EAAU13E,KAAO04E,EAAW14E,KAE5BuK,OAAO0pE,eAAeyE,EAAY,OAAQ,CACzCT,YAAY,EACZC,cAAc,EACdh6E,MAAO,KACN,IAAIiiD,EAAKxc,QAAQ,CAChBwc,EAAKjF,MAAM,aAEX,IAAIx4C,EAASg1E,EAAU13E,KAAKqvB,MAAMqpD,EAAYt8E,WAC9CZ,KAAKm9E,YAAY10E,GAEjBk8C,EAAKy3B,QAAQ,aAGd,OAAOl1E,CAAM,IAIfg1E,EAAUxmE,QAAUwnE,EAAWxnE,QAE/B3G,OAAO0pE,eAAeyE,EAAY,UAAW,CAC5CT,YAAY,EACZC,cAAc,EACdh6E,MAAO,KACN,IAAIiiD,EAAKxc,QAAQ,CAChBwc,EAAKjF,MAAM,gBAEX,IAAIx4C,EAAUg1E,EAAUxmE,QAAQme,MAAMqpD,EAAYt8E,WAClDZ,KAAKm9E,YAAY10E,GAEjBk8C,EAAKy3B,QAAQ,gBAGd,OAAOl1E,CAAM,IAIfg1E,EAAUvoD,MAAQupD,EAAWvpD,MAE7B5kB,OAAO0pE,eAAeyE,EAAY,QAAS,CAC1CT,YAAY,EACZC,cAAc,EACdh6E,MAAO,KACN,IAAIiiD,EAAKxc,QAAQ,CAChBwc,EAAKjF,MAAM,cAEX,IAAIx4C,EAAUg1E,EAAUvoD,MAAM7nB,KAAKoxE,GACnCl9E,KAAKm9E,YAAY10E,GAEjBk8C,EAAKy3B,QAAQ,cAGd,OAAOl1E,CAAM,IAIfg1E,EAAUU,IAAMM,EAAWN,IAE3B7tE,OAAO0pE,eAAeyE,EAAY,MAAO,CACxCT,YAAY,EACZC,cAAc,EACdh6E,MAAO,KACN,IAAIiiD,EAAKxc,QAAQ,CAChBwc,EAAKjF,MAAM,YAEX,IAAIx4C,EAAUg1E,EAAUU,IAAI9wE,KAAKoxE,GACjCl9E,KAAKm9E,YAAY10E,GAEjBk8C,EAAKy3B,QAAQ,YAGd,OAAOl1E,CAAM,IAIfg1E,EAAUnqE,OAASmrE,EAAWnrE,OAE9BhD,OAAO0pE,eAAeyE,EAAY,SAAU,CAC3CT,YAAY,EACZC,cAAc,EACdh6E,MAAO,KACN,IAAIiiD,EAAKxc,QAAQ,CAChBwc,EAAKjF,MAAM,eAEX,IAAIx4C,EAAUg1E,EAAUnqE,OAAO8hB,MAAMqpD,EAAYt8E,WACjDZ,KAAKm9E,YAAY10E,GAEjBk8C,EAAKy3B,QAAQ,eAGd,OAAOl1E,CAAM,KAMjBi2E,YAAY10E,GACXzI,KAAKD,MAAMU,QAAQ6sC,SAASnyB,cAAc1S,GAC1CzI,KAAKD,MAAMU,QAAQ6sC,SAAS+D,UAAU5oC,GACtCzI,KAAKD,MAAMgM,WAAWyY,kBAAkB,QAAQ,GAAO,GAGxDw4D,SAASv0E,EAAKvI,EAAM6B,GACnB,IAAI4iD,EAAO3kD,KACX0tD,EAAQ3+C,OAAOypE,yBAAyBt4E,EAAM6B,GAC9CW,EAAQxC,EAAK6B,GACby6E,EAAUx8E,KAAKm8E,eAEfptE,OAAO0pE,eAAev4E,EAAM6B,EAAK,CAChC22E,IAAMpY,IAEL,GADA59D,EAAQ49D,GACJ3b,EAAKxc,SAAWq0C,IAAY73B,EAAKw3B,eAAe,CACnDx3B,EAAKjF,MAAM,OAEX,IAAIzoC,EAAS,GACbA,EAAOlV,GAAOu+D,EACd73D,EAAI4Z,WAAWpL,GAEf0tC,EAAKy3B,QAAQ,OAGX1uB,EAAMgrB,KACRhrB,EAAMgrB,IAAIpY,IAGZ58D,IAAI,KAEAgqD,EAAMhqD,KACRgqD,EAAMhqD,MAGAhB,KAKV06E,WAAW30E,GACV,IAAIvI,EAAOuI,EAAIC,UAEf,IAAI,IAAI3G,KAAO7B,EACd6O,OAAO0pE,eAAev4E,EAAM6B,EAAK,CAChCW,MAAMxC,EAAK6B,KAKd29C,MAAM39C,GACD/B,KAAKmoC,UACRnoC,KAAKmoC,QAAUpmC,GAIjBq6E,QAAQr6E,GACJ/B,KAAKmoC,UAAYpmC,IACnB/B,KAAKmoC,SAAU,IAKlB8zC,GAAa9gD,WAAa,eChZ1B,MAAMkiD,WAAsB/lD,EAE3Bx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKs9E,aAAc,EACnBt9E,KAAK0sE,QAAS,EACd1sE,KAAKu9E,YAAa,EAClBv9E,KAAKw9E,SAAU,EACfx9E,KAAK+D,OAAS,KACd/D,KAAKy9E,kBAAoB,KACzBz9E,KAAKyG,WAAa,KAElBzG,KAAK0Z,aAAc,EACnB1Z,KAAKy3B,qBAAqB,aAAa,GACvCz3B,KAAKw3B,oBAAoB,sBAAsB,GAGhD/gB,aACCzW,KAAK2B,UAAU,kBAAmB3B,KAAK09E,mBAAmB58E,KAAKd,OAGhE29E,0BACK39E,KAAK0Z,cAER1Z,KAAK2B,UAAU,gBAAiB3B,KAAK49E,kBAAkB98E,KAAKd,OAC5DA,KAAK2B,UAAU,cAAe3B,KAAK69E,sBAAsB/8E,KAAKd,OAE9DA,KAAK2B,UAAU,cAAe3B,KAAK89E,aAAah9E,KAAKd,OACrDA,KAAK2B,UAAU,eAAgB3B,KAAK+9E,oBAAoBj9E,KAAKd,OAE7DA,KAAK2B,UAAU,cAAe3B,KAAKg+E,mBAAmBl9E,KAAKd,OAC3DA,KAAK2B,UAAU,cAAe3B,KAAK+9E,oBAAoBj9E,KAAKd,OAC5DA,KAAK2B,UAAU,eAAgB3B,KAAKi+E,mBAAmBn9E,KAAKd,OAE5DA,KAAK2B,UAAU,gBAAiB3B,KAAK69E,sBAAsB/8E,KAAKd,OAChEA,KAAK2B,UAAU,gBAAiB3B,KAAK89E,aAAah9E,KAAKd,OAEvDA,KAAK0Z,aAAc,GAKrBkkE,kBAAkBr5E,GACI,QAAlBA,EAAKkE,IAAIjF,OACXxD,KAAK69E,sBAAsBt5E,GAC3BvE,KAAKg7B,iBAAiB,OAAQz2B,EAAMA,EAAKjB,OAAQiB,EAAK+E,UAIxDo0E,mBAAmBp6E,GACfA,EAAOwH,WAAWozE,YACpBl+E,KAAK29E,0BACL39E,KAAK69E,sBAAsBv6E,GAC3BtD,KAAKg7B,iBAAiB,SAAU13B,EAAQA,EAAQA,EAAOgG,UAIzDy0E,oBAAoBz6E,GACnB,IAAIk6B,EAAOl6B,EAAOsD,aAElB5G,KAAKm+E,mBAAmB76E,GAErBk6B,GACFx9B,KAAKm+E,mBAAmB3gD,GAI1BygD,mBAAmB36E,GACfA,EAAO7C,QAAQia,SACd1a,KAAKD,MAAMU,QAAQyc,cAAcC,YAAYrB,SAASxY,GACxDtD,KAAKD,MAAMU,QAAQyc,cAAcC,YAAY7Y,SAASmX,IACrDzb,KAAKm+E,mBAAmB1iE,EAAI,IAErBzb,KAAKD,MAAMU,QAAQyc,cAAcG,aAAavB,SAASxY,IAC/DtD,KAAKD,MAAMU,QAAQyc,cAAcG,aAAa/Y,SAASmX,IACtDzb,KAAKm+E,mBAAmB1iE,EAAI,KAMhC2iE,mBAAmB96E,GAClB,IAAIyP,GAAS,EAcb,OAZGzP,EAAO7C,QAAQia,SACjB3H,EAASzP,EAAO7C,QAAQia,OAAO4+C,YAEO,SAAnCh2D,EAAO7C,QAAQia,OAAOhV,SACxBqN,GAAUzP,EAAOyD,WAAa,EAE3BgM,IACFA,GAAU,KAKK,IAAXA,GAAmBA,EAAS,KAGpCorE,mBAAmB76E,GAClB,IAAI+6E,EAAer+E,KAAKo+E,mBAAmB96E,GAE3CA,EAAOe,MAAMC,SAASC,IAClBA,EAAK9D,QAAQ+W,QAAUjT,EAAK9D,QAAQ+W,OAAO8mE,WAC1CD,IACF95E,EAAK9D,QAAQ+W,OAAO8mE,SAASn0E,MAAM7G,EAAO7C,QAAQia,OAAOhV,UAAY24E,EACrE95E,EAAK9D,QAAQ+W,OAAO8mE,SAASn0E,MAAM,WAAa,IAGjD5F,EAAK+E,QAAQrD,MAAM1B,EAAK9D,QAAQ+W,OAAO8mE,cAItCh7E,EAAO7C,QAAQ+W,QAAUlU,EAAO7C,QAAQ+W,OAAO8mE,WAC9CD,IACF/6E,EAAO7C,QAAQ+W,OAAO8mE,SAASn0E,MAAM7G,EAAO7C,QAAQia,OAAOhV,UAAY24E,GAGxE/6E,EAAOgG,QAAQrD,MAAM3C,EAAO7C,QAAQ+W,OAAO8mE,WAI7CtjD,iBAAiBx3B,EAAMiG,EAAWnG,EAAQgG,GACzC,IAAIq7C,EAAO3kD,KAEX86B,EAAOx3B,EAAOwH,WAAWozE,UACzBzjE,EAAS,GACT8jE,EAAgBj7E,EAAO4N,gBAQvB,GALY,WAAT1N,IAEFiX,EAAS,CAAC5S,eADsC,YAA/BvE,EAAOwH,WAAWqkC,WAA2B7rC,EAAOwH,WAAWjD,mBAIpE,IAATizB,GAAiBA,GAAQt3B,IAASxD,KAAKw+E,mBAAmBD,GAAe,CAE5E,IAAIx6E,EAASgG,SAASC,cAAc,QACpCjG,EAAOkG,UAAY,8BAEnBlG,EAAO+L,iBAAiB,SAAS,SAASC,GACzCA,EAAEC,qBAGH,IAAIyuE,EAAa,SAAS1uE,GACzB40C,EAAK24B,YAAch6E,EACnBqhD,EAAK84B,kBAAoB94B,EAAKl+C,WAAa83E,EAAc93E,aACzDk+C,EAAK+5B,WAAW3uE,EAAGwuE,EAAex6E,IAGnCA,EAAO+L,iBAAiB,YAAa2uE,GACrC16E,EAAO+L,iBAAiB,aAAc2uE,EAAY,CAAC/Q,SAAS,IAG5D3pE,EAAO+L,iBAAiB,YAAaC,IACpC,IAAI4uE,EAAWJ,EAAcx3E,WAE7BgJ,EAAEC,kBACFuuE,EAAcp3E,mBAAkB,GAE7Bw3E,IAAaJ,EAAcx3E,aAC7B49C,EAAK1iD,SAAS,iBAAkBs8E,GAChC55B,EAAK5kD,MAAMsC,eAAeJ,SAAS,gBAAiBs8E,EAAc95E,oBAIjEnB,EAAO7C,QAAQia,SACjB3W,EAAOoG,MAAMzE,SAAW,SACxB3B,EAAOoG,MAAM7G,EAAO7C,QAAQia,OAAOhV,UAAY1F,KAAKo+E,mBAAmB96E,IAGxEmX,EAAO6jE,SAAWv6E,EAEfuF,EAAQ0D,YAAc1J,EAAOqB,SAC/B2E,EAAQrD,MAAMlC,GAIhB0F,EAAUhJ,QAAQ+W,OAASiD,EAG5BujE,mBAAmB16E,GAClBtD,KAAK69E,sBAAsBv6E,GAE3BA,EAAOe,MAAMC,SAASC,IACrBvE,KAAK69E,sBAAsBt5E,EAAK,IAIlCs5E,sBAAsBp0E,GACrB,IAAI60E,EAED70E,EAAUhJ,QAAQ+W,SACpB8mE,EAAW70E,EAAUhJ,QAAQ+W,OAAO8mE,WAErBA,EAASM,eACvBN,EAASM,cAAcrzE,YAAY+yE,GAKtCR,aAAar0E,EAAWD,GACpBC,EAAUhJ,QAAQ+W,QAAU/N,EAAUhJ,QAAQ+W,OAAO8mE,WACvD70E,EAAUhJ,QAAQ+W,OAAO8mE,SAASn0E,MAAMX,OAASA,GAInDg1E,mBAAmBl7E,GAClB,OAAOA,EAAOwH,WAAWozE,UAG1BQ,WAAW3uE,EAAGzM,EAAQS,GACrB,IAAI4gD,EAAO3kD,KAIX,SAAS6+E,EAAU9uE,GAClB,IAGA+uE,EAAeC,EAHXzoD,OAAyB,IAAdvmB,EAAEm2C,QAA0Bn2C,EAAEwmB,QAAQ,GAAG2vB,QAAUn2C,EAAEm2C,QACpE84B,EAAY1oD,EAAIquB,EAAK+nB,OACrBuS,EAAW3oD,EAAIquB,EAAK64B,QAoBpB,GAjBA74B,EAAK64B,QAAUlnD,EAEZquB,EAAK5kD,MAAMse,MACb2gE,GAAaA,EACbC,GAAYA,GAGbH,EAAgBx7E,EAAO2D,OAAS3D,EAAOmE,UAAYnE,EAAO2D,OAAS3D,EAAOoE,SAE1EpE,EAAO0D,SAAS29C,EAAK44B,WAAayB,GAElCD,EAAez7E,EAAO2D,OAAS3D,EAAOmE,UAAYnE,EAAO2D,OAAS3D,EAAOoE,SAEtEu3E,EAAW,IACbt6B,EAAKl+C,WAAak+C,EAAK84B,mBAGrB94B,EAAK5kD,MAAMyC,QAAQ08E,oBAAsBv6B,EAAKl+C,cAAgBq4E,IAAiBC,GAAc,CAC/F,IAAIn9D,EAAW+iC,EAAKl+C,WAAWM,WAE5Bk4E,EAAW,GACVr9D,GAAY+iC,EAAKl+C,WAAWgB,WAC9Bk9C,EAAKl+C,WAAak+C,EAAKl+C,WAAWA,cAIjCk+C,EAAKl+C,YACPk+C,EAAKl+C,WAAWO,SAAS29C,EAAKl+C,WAAWM,WAAak4E,GAIxDt6B,EAAK5kD,MAAM6F,cAAcwB,iBAAgB,IAErCu9C,EAAK5kD,MAAMwgC,aAAej9B,EAAO7C,QAAQ+W,QAAUlU,EAAO7C,QAAQ+W,OAAO3P,gBAC5EvE,EAAOiP,mBAIT,SAAS4sE,EAAQpvE,GAGb40C,EAAK24B,YAAY78E,QAAQoqC,OAC3B8Z,EAAK24B,YAAY78E,QAAQoqC,KAAK1C,SAAU,GAGtCwc,EAAK5kD,MAAMwgC,aAAej9B,EAAO7C,QAAQ+W,QAAUlU,EAAO7C,QAAQ+W,OAAO3P,gBAC3EvE,EAAOiP,mBAGRxI,SAASksB,KAAKvF,oBAAoB,UAAWyuD,GAC7Cp1E,SAASksB,KAAKvF,oBAAoB,YAAamuD,GAE/C96E,EAAO2sB,oBAAoB,YAAamuD,GACxC96E,EAAO2sB,oBAAoB,WAAYyuD,GAEvCx6B,EAAK5kD,MAAMuJ,QAAQ0B,UAAUgN,OAAO,0BAEjC2sC,EAAK44B,aAAej6E,EAAOyD,aAC7B49C,EAAK5kD,MAAM6F,cAAc8L,uBAEzBizC,EAAK1iD,SAAS,iBAAkBqB,GAChCqhD,EAAK5kD,MAAMsC,eAAeJ,SAAS,gBAAiBqB,EAAOmB,iBArE7DkgD,EAAK5kD,MAAMuJ,QAAQ0B,UAAUC,IAAI,0BAyEjC8E,EAAEC,kBAGC20C,EAAK24B,YAAY78E,QAAQoqC,OAC3B8Z,EAAK24B,YAAY78E,QAAQoqC,KAAK1C,SAAU,GAGzCwc,EAAK+nB,YAA8B,IAAd38D,EAAEm2C,QAA0Bn2C,EAAEwmB,QAAQ,GAAG2vB,QAAUn2C,EAAEm2C,QAC1EvB,EAAK64B,QAAU74B,EAAK+nB,OACpB/nB,EAAK44B,WAAaj6E,EAAOyD,WAEzBgD,SAASksB,KAAKnmB,iBAAiB,YAAa+uE,GAC5C90E,SAASksB,KAAKnmB,iBAAiB,UAAWqvE,GAC1Cp7E,EAAO+L,iBAAiB,YAAa+uE,EAAW,CAACnR,SAAS,IAC1D3pE,EAAO+L,iBAAiB,WAAYqvE,IAItC9B,GAAcliD,WAAa,gBClT3B,MAAMikD,WAAmB9nD,EAExBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKs9E,aAAc,EACnBt9E,KAAKquE,QAAS,EACdruE,KAAKq/E,aAAc,EACnBr/E,KAAK+D,OAAS,KACd/D,KAAKs/E,WAAa,KAElBt/E,KAAKw3B,oBAAoB,iBAAiB,GAG3C/gB,aACIzW,KAAKD,MAAMyC,QAAQmhB,eACrB3jB,KAAK2B,UAAU,mBAAoB3B,KAAKmb,cAAcra,KAAKd,OAI7Dmb,cAAc1S,GACb,IAAIk8C,EAAO3kD,KACX+X,EAAQtP,EAAIzE,aAERD,EAASgG,SAASC,cAAc,OACpCjG,EAAOkG,UAAY,8BAEnB,IAAIq1E,EAAav1E,SAASC,cAAc,OACxCs1E,EAAWr1E,UAAY,mCAEvBlG,EAAO+L,iBAAiB,SAAS,SAASC,GACzCA,EAAEC,qBAGH,IAAIyuE,EAAa,SAAS1uE,GACzB40C,EAAKk4B,SAAWp0E,EAChBk8C,EAAK+5B,WAAW3uE,EAAGtH,EAAK1E,IAGzBA,EAAO+L,iBAAiB,YAAa2uE,GACrC16E,EAAO+L,iBAAiB,aAAc2uE,EAAY,CAAC/Q,SAAS,IAE5D4R,EAAWxvE,iBAAiB,SAAS,SAASC,GAC7CA,EAAEC,qBAGH,IAAIuvE,EAAkB,SAASxvE,GAC9B,IAAI4S,EAAUgiC,EAAK5kD,MAAMgM,WAAWqY,eAAe3b,GAEhDka,IACFgiC,EAAKk4B,SAAWl6D,EAChBgiC,EAAK+5B,WAAW3uE,EAAG4S,EAAS28D,KAI9BA,EAAWxvE,iBAAiB,YAAYyvE,GACxCD,EAAWxvE,iBAAiB,aAAayvE,EAAgB,CAAC7R,SAAS,IAEnE31D,EAAMvM,YAAYzH,GAClBgU,EAAMvM,YAAY8zE,GAGnBZ,WAAW3uE,EAAGtH,EAAK1E,GAClB,IAAI4gD,EAAO3kD,KAIX,SAAS6+E,EAAU9uE,GAClBtH,EAAIkE,UAAUg4C,EAAK06B,mBAAqC,IAAdtvE,EAAEyvE,QAA0BzvE,EAAEwmB,QAAQ,GAAGipD,QAAUzvE,EAAEyvE,SAAW76B,EAAK0pB,SAGhH,SAAS8Q,EAAQpvE,GAOhBhG,SAASksB,KAAKvF,oBAAoB,UAAWmuD,GAC7C90E,SAASksB,KAAKvF,oBAAoB,YAAamuD,GAE/C96E,EAAO2sB,oBAAoB,YAAamuD,GACxC96E,EAAO2sB,oBAAoB,WAAYyuD,GAEvCx6B,EAAK5kD,MAAMuJ,QAAQ0B,UAAUgN,OAAO,0BAEpC2sC,EAAKviD,iBAAiB,aAAcqG,EAAIhE,gBArBzCkgD,EAAK5kD,MAAMuJ,QAAQ0B,UAAUC,IAAI,0BAwBjC8E,EAAEC,kBAOF20C,EAAK0pB,YAA8B,IAAdt+D,EAAEyvE,QAA0BzvE,EAAEwmB,QAAQ,GAAGipD,QAAUzvE,EAAEyvE,QAC1E76B,EAAK06B,YAAc52E,EAAIoE,YAEvB9C,SAASksB,KAAKnmB,iBAAiB,YAAa+uE,GAC5C90E,SAASksB,KAAKnmB,iBAAiB,UAAWqvE,GAE1Cp7E,EAAO+L,iBAAiB,YAAa+uE,EAAW,CAACnR,SAAS,IAC1D3pE,EAAO+L,iBAAiB,WAAYqvE,IAItCC,GAAWjkD,WAAa,aC3GxB,MAAMskD,WAAoBnoD,EAEzBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK+8B,SAAU,EACf/8B,KAAK0/E,oBAAqB,EAC1B1/E,KAAK2/E,gBAAiB,EACtB3/E,KAAK4/E,mBAAoB,EAEzB5/E,KAAK6/E,YAAc,EACnB7/E,KAAK+tB,WAAa,EAClB/tB,KAAKmoB,gBAAkB,EACvBnoB,KAAK8/E,eAAiB,EAEtB9/E,KAAK+/E,YAAa,EAElB//E,KAAK2E,SAAU,EAEf3E,KAAK0Z,aAAc,EACnB1Z,KAAKggF,eAAgB,EAErBhgF,KAAKw3B,oBAAoB,cAAc,GAGxC/gB,aACC,GAAGzW,KAAKD,MAAMyC,QAAQu9E,WAAW,CAChC,IACAE,EADIlgF,EAAQC,KAAKD,MAGjBC,KAAK6/E,YAAc9/E,EAAMuJ,QAAQsH,aACjC5Q,KAAK+tB,WAAahuB,EAAMuJ,QAAQ8I,YAE7BrS,EAAMuJ,QAAQ0D,aAChBhN,KAAKmoB,gBAAkBpoB,EAAMuJ,QAAQ0D,WAAW4D,aAChD5Q,KAAK8/E,eAAiB//E,EAAMuJ,QAAQ0D,WAAWoF,aAGb,oBAAzB8tE,sBAAkE,oBAAnBC,gBAAuE,YAArCpgF,EAAMgM,WAAWyhB,iBAE3GxtB,KAAKogF,+BAELpgF,KAAK+/E,YAAa,EAElB//E,KAAK2/E,eAAiB,IAAIQ,gBAAgBE,IACzC,IAAItgF,EAAMygC,eAAkBzgC,EAAMygC,gBAAiBzgC,EAAMU,QAAQoqC,KAAKC,YAAa,CAElF,IAAIw1C,EAAapuE,KAAKC,MAAMkuE,EAAM,GAAGE,YAAY/2E,QAC7Cg3E,EAAYtuE,KAAKC,MAAMkuE,EAAM,GAAGE,YAAYt5E,OAE7CjH,KAAK6/E,aAAeS,GAActgF,KAAK+tB,YAAcyyD,IACvDxgF,KAAK6/E,YAAcS,EACnBtgF,KAAK+tB,WAAayyD,EAEfzgF,EAAMuJ,QAAQ0D,aAChBhN,KAAKmoB,gBAAkBpoB,EAAMuJ,QAAQ0D,WAAW4D,aAChD5Q,KAAK8/E,eAAiB//E,EAAMuJ,QAAQ0D,WAAWoF,aAGhDpS,KAAKygF,mBAKRzgF,KAAK2/E,eAAee,QAAQ3gF,EAAMuJ,SAElC22E,EAAa1rE,OAAOmtB,iBAAiB3hC,EAAMuJ,SAExCtJ,KAAKD,MAAMuJ,QAAQ0D,aAAehN,KAAKD,MAAMgM,WAAWmc,cAAgB+3D,EAAW7tC,iBAAiB,eAAiB6tC,EAAW7tC,iBAAiB,iBAEnJpyC,KAAK4/E,kBAAoB,IAAIO,gBAAgBE,IAC5C,IAAItgF,EAAMygC,eAAkBzgC,EAAMygC,gBAAiBzgC,EAAMU,QAAQoqC,KAAKC,YAAa,CAElF,IAAIw1C,EAAapuE,KAAKC,MAAMkuE,EAAM,GAAGE,YAAY/2E,QAC7Cg3E,EAAYtuE,KAAKC,MAAMkuE,EAAM,GAAGE,YAAYt5E,OAE7CjH,KAAKmoB,iBAAmBm4D,GAActgF,KAAK8/E,gBAAkBU,IAC/DxgF,KAAKmoB,gBAAkBm4D,EACvBtgF,KAAK8/E,eAAiBU,EACtBxgF,KAAK6/E,YAAc9/E,EAAMuJ,QAAQsH,aACjC5Q,KAAK+tB,WAAahuB,EAAMuJ,QAAQ8I,aAGjCpS,KAAKygF,kBAIPzgF,KAAK4/E,kBAAkBc,QAAQ1gF,KAAKD,MAAMuJ,QAAQ0D,aAGnDhN,KAAK2B,UAAU,eAAgB3B,KAAK2gF,aAAa7/E,KAAKd,SAGtDA,KAAK+8B,QAAU,aACVh9B,EAAMygC,eAAkBzgC,EAAMygC,gBAAkBzgC,EAAMU,QAAQoqC,KAAKC,eACtE/qC,EAAM6F,cAAcwB,iBAAgB,GACpCrH,EAAM2f,WAIRnL,OAAOzE,iBAAiB,SAAU9P,KAAK+8B,UAGxC/8B,KAAK2B,UAAU,gBAAiB3B,KAAK6oE,cAAc/nE,KAAKd,QAI1DogF,+BACCpgF,KAAK0/E,mBAAqB,IAAIQ,sBAAsBr/B,IACnD7gD,KAAK2E,QAAUk8C,EAAQ,GAAG+/B,eAEtB5gF,KAAK0Z,YAIL1Z,KAAK2E,UACP3E,KAAKygF,YAAYzgF,KAAKggF,eACtBhgF,KAAKggF,eAAgB,IALtBhgF,KAAK0Z,aAAc,EACnB1Z,KAAKggF,eAAiBhgF,KAAK2E,YAS7B3E,KAAK0/E,mBAAmBgB,QAAQ1gF,KAAKD,MAAMuJ,SAG5Cm3E,YAAY/+E,GACR1B,KAAK0Z,aAAe1Z,KAAK2E,UAC3B3E,KAAKD,MAAM6F,cAAcwB,iBAAgB,GACzCpH,KAAKD,MAAM2f,OAAOhe,IAIpBi/E,eACC3gF,KAAKD,MAAMgM,WAAW2T,SAGvBmpD,gBACI7oE,KAAK+8B,SACPxoB,OAAOmc,oBAAoB,SAAU1wB,KAAK+8B,SAGxC/8B,KAAK2/E,gBACP3/E,KAAK2/E,eAAekB,UAAU7gF,KAAKD,MAAMuJ,SAGvCtJ,KAAK0/E,oBACP1/E,KAAK0/E,mBAAmBmB,UAAU7gF,KAAKD,MAAMuJ,SAG3CtJ,KAAK4/E,mBACP5/E,KAAK4/E,kBAAkBiB,UAAU7gF,KAAKD,MAAMuJ,QAAQ0D,aAKvDyyE,GAAYtkD,WAAa,cC3JzB,MAAM2lD,WAAyBxpD,EAE9Bx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAK8E,QAAU,GACf9E,KAAK+gF,cAAgB,GACrB/gF,KAAK86B,KAAO,GACZ96B,KAAK8R,MAAQ,EACb9R,KAAKghF,kBAAoB,GACzBhhF,KAAKihF,mBAAoB,EACzBjhF,KAAKkhF,sBAAuB,EAE5BlhF,KAAKw3B,oBAAoB,oBAAoB,GAC7Cx3B,KAAKw3B,oBAAoB,qCAAqC,GAC9Dx3B,KAAKw3B,oBAAoB,yCAAyC,GAClEx3B,KAAKw3B,oBAAoB,qCAAqC,GAE9Dx3B,KAAKy3B,qBAAqB,cAI3BhhB,aACIzW,KAAKD,MAAMyC,QAAQk2B,mBACrB14B,KAAK2B,UAAU,gBAAiB3B,KAAKg7B,iBAAiBl6B,KAAKd,OAC3DA,KAAK2B,UAAU,cAAe3B,KAAKmhF,uBAAuBrgF,KAAKd,OAC/DA,KAAK2B,UAAU,cAAe3B,KAAKmhF,uBAAuBrgF,KAAKd,OAC/DA,KAAK2B,UAAU,iBAAkB3B,KAAKohF,uBAAuBtgF,KAAKd,OAClEA,KAAK2B,UAAU,eAAgB3B,KAAKohF,uBAAuBtgF,KAAKd,OAChEA,KAAK2B,UAAU,aAAc3B,KAAKohF,uBAAuBtgF,KAAKd,OAC9DA,KAAK2B,UAAU,gBAAiB3B,KAAKohF,uBAAuBtgF,KAAKd,OAEjEA,KAAK2B,UAAU,kBAAmB3B,KAAK4sC,YAAY9rC,KAAKd,OAEb,aAAxCA,KAAKD,MAAMyC,QAAQk2B,mBACrB14B,KAAK2B,UAAU,mBAAoB3B,KAAKqhF,4BAA4BvgF,KAAKd,OACzEA,KAAK2B,UAAU,WAAY3B,KAAKmb,cAAcra,KAAKd,OACnDA,KAAK2B,UAAU,aAAc3B,KAAKqxC,UAAUvwC,KAAKd,SAKpD4sC,YAAYlrC,IACyD,IAAjE,CAAC,aAAc,kBAAkBuN,QAAQjP,KAAKsB,gBAC5CI,GACH1B,KAAKiX,UAKRmqE,yBACC,IAAIt8E,EAAU,GAEd9E,KAAK86B,KAAO96B,KAAKD,MAAMyC,QAAQk2B,iBAC/B14B,KAAKghF,kBAAoBhhF,KAAKD,MAAMyC,QAAQ8+E,mCAAqCthF,KAAKuhF,oBACtFvhF,KAAKihF,kBAAoBjhF,KAAKD,MAAMyC,QAAQg/E,kCAC5CxhF,KAAK+gF,cAAgB,GAGrB/gF,KAAKD,MAAM6F,cAAcyU,eAAe/V,SAAQ,CAAChB,EAAQ2K,KACrD3K,EAAO7C,QAAQ24B,YACd91B,EAAO7C,QAAQ24B,WAAWqoD,OAASn+E,EAAO7C,QAAQ24B,WAAWz0B,UAC/DrB,EAAO7C,QAAQ24B,WAAWtnB,MAAQ7D,EAClCnJ,EAAQN,KAAKlB,GAETA,EAAOqB,SAAyB,aAAd3E,KAAK86B,MAC1B96B,KAAK+gF,cAAcv8E,KAAKlB,OAQ5BwB,GADAA,EAAUA,EAAQymB,WACAe,MAAK,CAACC,EAAGC,IACfA,EAAE/rB,QAAQ24B,WAAWqoD,MAAQl1D,EAAE9rB,QAAQ24B,WAAWqoD,OAC7Cj1D,EAAE/rB,QAAQ24B,WAAWtnB,MAAQya,EAAE9rB,QAAQ24B,WAAWtnB,QAGnE9R,KAAK8E,QAAUA,EAEE,aAAd9E,KAAK86B,MACP96B,KAAK0hF,2BAIN,IAAK,IAAIjmE,KAAOzb,KAAKD,MAAM6F,cAAcyU,eACxC,GAA+B,sBAA5BoB,EAAI3Q,WAAWqkC,UAAkC,CACnDnvC,KAAKkhF,qBAAuBzlE,EAC5B,MAICzb,KAAKkhF,uBACJlhF,KAAK+gF,cAAc37E,OACrBpF,KAAKkhF,qBAAqBt8E,OAE1B5E,KAAKkhF,qBAAqBn8E,QAM7Bi2B,iBAAiB13B,GAChB,IAAI+J,EAAM/J,EAAOW,gBAEjBX,EAAO7C,QAAQ24B,WAAa,CAACqoD,WAAiC,IAAnBp0E,EAAI+rB,WAA6B,EAAI/rB,EAAI+rB,WAAYz0B,SAAwB,IAAhB0I,EAAI1I,SAG7GwW,cAAc1S,GACb,IAAI8F,EAEY,SAAb9F,EAAIjF,QACN+K,EAAKxE,SAASC,cAAc,QACzBgB,UAAUC,IAAI,iCAEjBxC,EAAIhI,QAAQi4B,iBAAmB,CAC9BpvB,QAAQiF,EACRugC,KAAK9uC,KAAKihF,mBAGPjhF,KAAKihF,oBACR1yE,EAAGpE,MAAME,QAAU,SAKtBgnC,UAAU5oC,GACT,IAAIsP,EAAQtP,EAAIzE,aAEbyE,EAAIhI,QAAQi4B,mBACd3gB,EAAMvM,YAAY/C,EAAIhI,QAAQi4B,iBAAiBpvB,SAC/CtJ,KAAKqhF,4BAA4B54E,IAKnC04E,uBAAuB79E,EAAQmO,IAC1BA,GAAoBnO,EAAO7C,QAAQ24B,aACtC91B,EAAO7C,QAAQ24B,WAAWz0B,QAAUrB,EAAOqB,QAC3C3E,KAAKohF,0BAIP19C,WAAWpgC,GACV,IAAIq+E,EAAW3hF,KAAK+gF,cAAc37E,OAElC9B,EAAOyB,MAAK,GAAO,GAEF,aAAd/E,KAAK86B,OACP96B,KAAK+gF,cAAcrrE,QAAQpS,GAC3BtD,KAAK0hF,2BAEF1hF,KAAKkhF,uBAAyBS,GAChC3hF,KAAKkhF,qBAAqBt8E,QAK7B6+B,WAAWngC,GACV,IAAIwO,EAEJxO,EAAOsB,MAAK,GAAO,GAEnBtB,EAAO0D,SAAS1D,EAAOyD,YAEN,aAAd/G,KAAK86B,QACPhpB,EAAQ9R,KAAK+gF,cAAc9xE,QAAQ3L,KAEvB,GACXtD,KAAK+gF,cAAchvE,OAAOD,EAAO,GAGlC9R,KAAK0hF,2BAEF1hF,KAAKkhF,uBAAyBlhF,KAAK+gF,cAAc37E,QACnDpF,KAAKkhF,qBAAqBn8E,QAM7BkS,SAGC,IAFA,IAAIwF,GAAU,EAERA,GAAQ,CAEb,IAAIxV,EAA+C,cAAvCjH,KAAKD,MAAMU,QAAQc,OAAOC,UAA4BxB,KAAKD,MAAM6F,cAAc6b,mBAAqBzhB,KAAKD,MAAM6F,cAAcmB,WAErIgV,GAAQ/b,KAAKD,MAAMyC,QAAQuc,cAAgB/e,KAAKD,MAAM6F,cAAc0D,QAAQ8I,YAAcpS,KAAKD,MAAMuJ,QAAQ8I,aAAenL,EAEhI,GAAG8U,EAAO,EAAE,CAEX,IAAIzY,EAAStD,KAAK8E,QAAQ9E,KAAK8R,OAE5BxO,GACFtD,KAAK0jC,WAAWpgC,GAChBtD,KAAK8R,SAEL2K,GAAU,MAGP,CAGJ,IAAInZ,EAAStD,KAAK8E,QAAQ9E,KAAK8R,MAAO,GAEnCxO,GACCyY,EAAO,GACNA,GAAQzY,EAAOyD,YACjB/G,KAAKyjC,WAAWngC,GAChBtD,KAAK8R,SAQP2K,GAAU,EAIRzc,KAAKD,MAAMgM,WAAWsd,iBACzBrpB,KAAKD,MAAMgM,WAAW2hB,qBAKzBg0D,2BACY1hF,KAAKD,MAAMgM,WAAW8L,iBAE5BvT,SAASmE,IACbzI,KAAKqhF,4BAA4B54E,EAAI,IAIvC44E,4BAA4B54E,GAC3B,IAAI8F,EAAI6B,EAER,GAAG3H,EAAIhI,QAAQi4B,iBAAiB,CAG/B,IAFAnqB,EAAK9F,EAAIhI,QAAQi4B,iBAAiBpvB,QAE5BiF,EAAGjD,YAAYiD,EAAGhD,YAAYgD,EAAGjD,aAEvC8E,EAAWpQ,KAAKghF,kBAAkBhhF,KAAK4hF,yBAAyBn5E,MAE/D8F,EAAG/C,YAAY4E,IAKlBwxE,yBAAyBn5E,GACxB,IAEAo5E,EAFI3hF,EAAOuI,EAAIC,UACfvD,EAAS,GAsDT,OAnDAnF,KAAK+gF,cAAcz8E,SAAShB,IAC3B,IAAIZ,EAAQY,EAAOwG,cAAc5J,GAEjC,GAAGoD,EAAOwH,WAAWzD,OAAS/D,EAAOgE,MACpC,GAAGhE,EAAO7C,QAAQyuC,QAAUlvC,KAAKD,MAAMyC,QAAQs/E,sCAAsC,CA4BpF,SAAShoC,EAAW9iC,GACnBA,IA3BD6qE,EAAoB,CACnBn/E,OAAM,EACNxC,KAAK,GACLkI,SAAS,WACR,OAAO1F,GAERgG,QAAQ,WACP,OAAOxI,GAER0I,QAAQ,WACP,MAAO,QAER5E,WAAW,WACV,OAAO+F,SAASC,cAAc,QAE/BxB,OAAO,WACN,OAAOC,EAAIhE,gBAEZoE,UAAU,WACT,OAAOvF,EAAOmB,gBAEfqB,SAAS,IACD9F,KAAKD,OAQdoF,EAAOX,KAAK,CACX8C,MAAOhE,EAAOgE,MACdD,MAAO/D,EAAOwH,WAAWzD,MACzB3E,MAAOY,EAAO7C,QAAQyuC,OAAOC,UAAUrjC,KAAK9L,KAAKD,MAAMU,QAAQyuC,OAAQ2yC,EAAmBv+E,EAAO7C,QAAQyuC,OAAOtd,OAAQkoB,UAGzH30C,EAAOX,KAAK,CACX8C,MAAOhE,EAAOgE,MACdD,MAAO/D,EAAOwH,WAAWzD,MACzB3E,MAAOA,OAMJyC,EAGRo8E,oBAAoBrhF,GACnB,IAAI6U,EAAOhL,SAASC,cAAc,SA2BlC,OAzBA9J,EAAKoE,SAAQ,SAASmR,GACrB,IAGIssE,EAHAt5E,EAAMsB,SAASC,cAAc,MAC7Bg4E,EAAYj4E,SAASC,cAAc,MACnCi4E,EAAYl4E,SAASC,cAAc,MAGnCk4E,EAAiBn4E,SAASC,cAAc,UAC5Cg4E,EAAUx2E,YAAY02E,GACtBliF,KAAKa,SAAS,WAAa4U,EAAKnO,OAAO,SAAS4I,GAC/CgyE,EAAe92E,UAAY8E,GAAQuF,EAAKpO,SAGtCoO,EAAK/S,iBAAiB2I,OACxB02E,EAAeh4E,SAASC,cAAc,QACzBwB,YAAYiK,EAAK/S,OAC9Bu/E,EAAUz2E,YAAYu2E,IAEtBE,EAAU72E,UAAYqK,EAAK/S,MAG5B+F,EAAI+C,YAAYw2E,GAChBv5E,EAAI+C,YAAYy2E,GAChBltE,EAAKvJ,YAAY/C,KACfzI,MAEI+O,OAAOC,KAAK9O,GAAMkF,OAAS2P,EAAO,IAI3C+rE,GAAiB3lD,WAAa,mBCvV9B,MAAMgnD,WAAkB7qD,EAEvBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKoiF,WAAY,EACjBpiF,KAAKqiF,gBAAiB,EACtBriF,KAAKsiF,WAAa,GAClBtiF,KAAKgrD,aAAe,GACpBhrD,KAAKuiF,sBAAwB,KAE7BviF,KAAKw3B,oBAAoB,aAAc,aACvCx3B,KAAKw3B,oBAAoB,sBAAuB,QAChDx3B,KAAKw3B,oBAAoB,8BAA8B,GACvDx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,mBAAmB,SAASt3B,EAAMuI,GAAK,OAAO,CAAK,IAE5EzI,KAAK03B,sBAAsB,YAAa13B,KAAKwiF,WAAW1hF,KAAKd,OAC7DA,KAAK03B,sBAAsB,cAAe13B,KAAKyiF,aAAa3hF,KAAKd,OACjEA,KAAK03B,sBAAsB,kBAAmB13B,KAAKywC,UAAU3vC,KAAKd,OAClEA,KAAK03B,sBAAsB,kBAAmB13B,KAAK0iF,gBAAgB5hF,KAAKd,OACxEA,KAAK03B,sBAAsB,kBAAmB13B,KAAK2iF,gBAAgB7hF,KAAKd,OAGxEA,KAAK63B,0BAA0B,MAAO,SAAU73B,KAAKwiF,WAAW1hF,KAAKd,OACrEA,KAAK63B,0BAA0B,MAAO,WAAY73B,KAAKyiF,aAAa3hF,KAAKd,OACzEA,KAAK63B,0BAA0B,MAAO,eAAgB73B,KAAKywC,UAAU3vC,KAAKd,OAC1EA,KAAK63B,0BAA0B,MAAO,aAAc73B,KAAK4iF,cAAc9hF,KAAKd,OAG7EyW,cACsC,IAAlCzW,KAAKD,MAAMyC,QAAQqgF,aACrB7iF,KAAK2B,UAAU,WAAY3B,KAAKmb,cAAcra,KAAKd,OACnDA,KAAK2B,UAAU,eAAgB3B,KAAK6/D,WAAW/+D,KAAKd,OACpDA,KAAK2B,UAAU,YAAa3B,KAAK8iF,mBAAmBhiF,KAAKd,OACzDA,KAAK2B,UAAU,gBAAiB3B,KAAK+iF,YAAYjiF,KAAKd,OAEnDA,KAAKD,MAAMyC,QAAQqgF,aAAe7iF,KAAKD,MAAMyC,QAAQwgF,uBACvDhjF,KAAK2B,UAAU,kBAAmB3B,KAAKyiF,aAAa3hF,KAAKd,QAK5D+iF,YAAYv/E,EAAM06D,GACjB,MAAgB,aAAT16D,EAAsBxD,KAAKgrD,aAAekT,EAGlD2B,WAAWp3D,GACVzI,KAAKijF,aAAax6E,GAAK,GAGxBq6E,mBAAmB3iF,GAClB,IAAI+iF,EAAeljF,KAAKgrD,aAAa5lD,OAErCpF,KAAKoiF,WAAY,EACjBpiF,KAAKqiF,gBAAiB,EACtBriF,KAAKsiF,WAAa,GAClBtiF,KAAKgrD,aAAe,GAEjBk4B,IAA2B,IAAX/iF,GAClBH,KAAKmjF,uBAIPhoE,cAAc1S,GACb,IAAIk8C,EAAO3kD,KACXsJ,EAAUb,EAAIzE,aAGVo/E,EAAY,WAEf3wD,YAAW,WACVkyB,EAAKy9B,WAAY,IACf,IAEHr4E,SAASksB,KAAKvF,oBAAoB,UAAW0yD,IAG9C36E,EAAIhI,QAAQ0pC,OAAS,CAAC8W,UAAS,GAG5B0D,EAAK0+B,sBAAsB56E,IAC7Ba,EAAQ0B,UAAUC,IAAI,wBACtB3B,EAAQ0B,UAAUgN,OAAO,0BAEtB2sC,EAAK5kD,MAAMyC,QAAQqgF,YAA+C,aAAjCl+B,EAAK5kD,MAAMyC,QAAQqgF,aACR,UAA3Cl+B,EAAK5kD,MAAMyC,QAAQ00D,oBACrB5tD,EAAQwG,iBAAiB,QAAS9P,KAAKo3D,sBAAsBt2D,KAAKd,KAAMyI,KAExEa,EAAQwG,iBAAiB,SAAS,SAASC,GACtC40C,EAAK5kD,MAAM44B,UAAU,SAAYgsB,EAAK5kD,MAAMU,QAAQoqC,KAAKme,kBAC5DrE,EAAK5kD,MAAMkhC,kBAGR0jB,EAAKy9B,WACRz9B,EAAKlU,UAAUhoC,MAIjBa,EAAQwG,iBAAiB,aAAa,SAASC,GAC9C,GAAGA,EAAEgzC,SAYJ,OAXA4B,EAAK5kD,MAAMkhC,kBAEX0jB,EAAKy9B,WAAY,EAEjBz9B,EAAK29B,WAAa,GAElBv4E,SAASksB,KAAKnmB,iBAAiB,UAAWszE,GAC1Cr5E,SAASksB,KAAKnmB,iBAAiB,QAASszE,GAExCz+B,EAAKlU,UAAUhoC,IAER,KAITa,EAAQwG,iBAAiB,cAAc,SAASC,GAC5C40C,EAAKy9B,YACPz9B,EAAK5kD,MAAMkhC,kBACX0jB,EAAKlU,UAAUhoC,GAEZk8C,EAAK29B,WAAW,IAAM75E,GACxBk8C,EAAKlU,UAAUkU,EAAK29B,WAAW,QAKlCh5E,EAAQwG,iBAAiB,YAAY,SAASC,GAC1C40C,EAAKy9B,YACPz9B,EAAK5kD,MAAMkhC,kBACX0jB,EAAK29B,WAAW5sE,QAAQjN,WAO5Ba,EAAQ0B,UAAUC,IAAI,0BACtB3B,EAAQ0B,UAAUgN,OAAO,yBAI3Bo/C,sBAAsB3uD,EAAKsH,GAC1B,GAAGA,EAAEgzC,SAAS,CACb/iD,KAAKD,MAAMkhC,kBACXjhC,KAAKqiF,eAAiBriF,KAAKqiF,gBAAkB55E,EAE7C,IAAI66E,EAAoBtjF,KAAKD,MAAMgM,WAAWigB,mBAAmBhsB,KAAKqiF,gBAClEkB,EAASvjF,KAAKD,MAAMgM,WAAWigB,mBAAmBvjB,GAElD+6E,EAAaF,GAAqBC,EAASD,EAAoBC,EAC/DE,EAAWH,GAAqBC,EAASD,EAAoBC,EAG7DG,EADO1jF,KAAKD,MAAMgM,WAAW8L,iBAAiByP,MAAM,GACjCvV,OAAOyxE,EAAYC,EAAWD,EAAa,GAE/DzzE,EAAEypC,SAAWzpC,EAAE0pC,SACjBiqC,EAAYp/E,SAASq/E,IACjBA,IAAe3jF,KAAKqiF,kBAEe,IAAlCriF,KAAKD,MAAMyC,QAAQqgF,YAAwB7iF,KAAK4iF,cAAcn6E,IAC7DzI,KAAKgrD,aAAa5lD,OAASpF,KAAKD,MAAMyC,QAAQqgF,aAIjD7iF,KAAKywC,UAAUkzC,MAIlB3jF,KAAKqiF,eAAiB55E,IAEtBzI,KAAKyiF,kBAAaliF,GAAW,IAEQ,IAAlCP,KAAKD,MAAMyC,QAAQqgF,YAClBa,EAAYt+E,OAASpF,KAAKD,MAAMyC,QAAQqgF,aAC1Ca,EAAcA,EAAYp8D,MAAM,EAAGtnB,KAAKD,MAAMyC,QAAQqgF,aAIxD7iF,KAAKwiF,WAAWkB,IAEjB1jF,KAAKD,MAAMkhC,uBAEJlxB,EAAEypC,SAAWzpC,EAAE0pC,SACtBz5C,KAAKywC,UAAUhoC,GACfzI,KAAKqiF,eAAiB55E,IAEtBzI,KAAKyiF,kBAAaliF,GAAW,GAC7BP,KAAKwiF,WAAW/5E,GAChBzI,KAAKqiF,eAAiB55E,GAIxB46E,sBAAsB56E,GACrB,SAAGA,GAAoB,QAAbA,EAAIjF,OACNxD,KAAKD,MAAMyC,QAAQohF,gBAAgB93E,KAAK9L,KAAKD,MAAO0I,EAAIhE,gBAOjEgsC,UAAUhoC,GACNzI,KAAKqjF,sBAAsB56E,KAC1BA,EAAIhI,QAAQ0pC,QAAU1hC,EAAIhI,QAAQ0pC,OAAO8W,SAC3CjhD,KAAKijF,aAAax6E,GAElBzI,KAAK6jF,WAAWp7E,IAMnB+5E,WAAWhwE,GACV,IACAsxE,EAAUxoE,EADNkB,EAAU,GAGd,cAAchK,GACb,IAAK,YACJsxE,EAAW9jF,KAAKD,MAAMgM,WAAWyG,KACjC,MAED,IAAK,UACJsxE,EAAW9jF,KAAKD,MAAMgM,WAAWuY,QAAQ9R,MAGxCsxE,EAAW9jF,KAAKD,MAAMgM,WAAW6P,QAAQpJ,IAE1C,MAED,QACCsxE,EAAWtxE,EAIV2C,MAAMC,QAAQ0uE,GACbA,EAAS1+E,SACX0+E,EAASx/E,SAASmE,KACjB6S,EAAStb,KAAK6jF,WAAWp7E,GAAK,GAAM,KAGnC+T,EAAQhY,KAAK8W,MAIftb,KAAKmjF,sBAAqB,EAAO3mE,IAG/BsnE,GACF9jF,KAAK6jF,WAAWC,GAAU,GAAO,GAMpCD,WAAWE,EAAS5jF,EAAQuB,GAE3B,IAAIuQ,MAAMjS,KAAKD,MAAMyC,QAAQqgF,cAAiD,IAAlC7iF,KAAKD,MAAMyC,QAAQqgF,aAAwBnhF,GACnF1B,KAAKgrD,aAAa5lD,QAAUpF,KAAKD,MAAMyC,QAAQqgF,WAAW,CAC5D,IAAG7iF,KAAKD,MAAMyC,QAAQwhF,2BAGrB,OAAO,EAFPhkF,KAAKijF,aAAajjF,KAAKgrD,aAAa,IAOvC,IAAIviD,EAAMzI,KAAKD,MAAMgM,WAAWuY,QAAQy/D,GAExC,GAAGt7E,GACF,IAAsC,GAAnCzI,KAAKgrD,aAAa/7C,QAAQxG,GAqB5B,OApBAA,EAAIzE,aAAagH,UAAUC,IAAI,sBAC3BxC,EAAIhI,QAAQ0pC,SACf1hC,EAAIhI,QAAQ0pC,OAAS,IAGtB1hC,EAAIhI,QAAQ0pC,OAAO8W,UAAW,EAC3Bx4C,EAAIhI,QAAQ0pC,OAAO85C,aACrBx7E,EAAIhI,QAAQ0pC,OAAO85C,WAAWr9B,SAAU,GAGzC5mD,KAAKgrD,aAAaxmD,KAAKiE,GAEpBzI,KAAKD,MAAMyC,QAAQ0hF,yBACrBlkF,KAAKmkF,kBAAkB17E,GAAK,GAG7BzI,KAAKoC,iBAAiB,cAAeqG,EAAIhE,gBAEzCzE,KAAKmjF,qBAAqBhjF,EAAQsI,GAE3BA,OAGJtI,GACHkG,QAAQC,KAAK,2DAA6Dy9E,GAK7EnB,cAAcn6E,GACb,OAA2C,IAApCzI,KAAKgrD,aAAa/7C,QAAQxG,GAIlCg6E,aAAajwE,EAAMrS,GAClB,IACA2jF,EAAUxoE,EADNkB,EAAU,GAGd,cAAchK,GACb,IAAK,YACJsxE,EAAW/0E,OAAOiF,OAAO,GAAIhU,KAAKgrD,cAClC,MAED,IAAK,UACJ84B,EAAW9jF,KAAKD,MAAMgM,WAAWuY,QAAQ9R,MAGxCsxE,EAAW9jF,KAAKD,MAAMgM,WAAW6P,QAAQpJ,IAE1C,MAED,QACCsxE,EAAWtxE,EAIV2C,MAAMC,QAAQ0uE,GACbA,EAAS1+E,SACX0+E,EAASx/E,SAASmE,KACjB6S,EAAStb,KAAKijF,aAAax6E,GAAK,GAAM,KAGrC+T,EAAQhY,KAAK8W,MAIftb,KAAKmjF,qBAAqBhjF,EAAQ,GAAIqc,IAGpCsnE,GACF9jF,KAAKijF,aAAaa,EAAU3jF,GAAQ,GAMvC8iF,aAAac,EAAS5jF,GACrB,IAEA2R,EAAOxI,EAFHq7C,EAAO3kD,KACXyI,EAAMk8C,EAAK5kD,MAAMgM,WAAWuY,QAAQy/D,GAGpC,GAAGt7E,GAKF,IAJAqJ,EAAQ6yC,EAAKqG,aAAax1C,WAAU,SAAS4uE,GAC5C,OAAOA,GAAe37E,OAGX,EA0BX,OAxBAa,EAAUb,EAAIzE,eAGbsF,EAAQ0B,UAAUgN,OAAO,sBAGtBvP,EAAIhI,QAAQ0pC,SACf1hC,EAAIhI,QAAQ0pC,OAAS,IAGtB1hC,EAAIhI,QAAQ0pC,OAAO8W,UAAW,EAC3Bx4C,EAAIhI,QAAQ0pC,OAAO85C,aACrBx7E,EAAIhI,QAAQ0pC,OAAO85C,WAAWr9B,SAAU,GAEzCjC,EAAKqG,aAAaj5C,OAAOD,EAAO,GAE7B9R,KAAKD,MAAMyC,QAAQ0hF,yBACrBlkF,KAAKmkF,kBAAkB17E,GAAK,GAG7BzI,KAAKoC,iBAAiB,gBAAiBqG,EAAIhE,gBAE3CkgD,EAAKw+B,qBAAqBhjF,OAAQI,EAAWkI,GAEtCA,OAGJtI,GACHkG,QAAQC,KAAK,6DAA+Dy9E,GAK/EpB,kBACC,IAAIziF,EAAO,GAMX,OAJAF,KAAKgrD,aAAa1mD,SAAQ,SAASmE,GAClCvI,EAAKsE,KAAKiE,EAAIC,cAGRxI,EAGRwiF,kBACC,IAAIlwE,EAAO,GAMX,OAJAxS,KAAKgrD,aAAa1mD,SAAQ,SAASmE,GAClC+J,EAAKhO,KAAKiE,EAAIhE,mBAGR+N,EAGR2wE,qBAAqBhjF,EAAQ8gD,EAAW,GAAIojC,EAAa,IACrDrkF,KAAKuiF,wBACyB,IAA7BviF,KAAKgrD,aAAa5lD,QACpBpF,KAAKuiF,sBAAsB37B,SAAU,EACrC5mD,KAAKuiF,sBAAsBx7B,eAAgB,GAClC/mD,KAAKD,MAAMgM,WAAWyG,KAAKpN,SAAWpF,KAAKgrD,aAAa5lD,QACjEpF,KAAKuiF,sBAAsB37B,SAAU,EACrC5mD,KAAKuiF,sBAAsBx7B,eAAgB,IAE3C/mD,KAAKuiF,sBAAsBx7B,eAAgB,EAC3C/mD,KAAKuiF,sBAAsB37B,SAAU,IAInCzmD,IACCgV,MAAMC,QAAQ6rC,KACjBA,EAAW,CAACA,IAGbA,EAAWA,EAASruB,KAAInqB,GAAOA,EAAIhE,iBAE/B0Q,MAAMC,QAAQivE,KACjBA,EAAa,CAACA,IAGfA,EAAaA,EAAWzxD,KAAInqB,GAAOA,EAAIhE,iBAEvCzE,KAAKoC,iBAAiB,sBAAuBpC,KAAK2iF,kBAAmB3iF,KAAK0iF,kBAAmBzhC,EAAUojC,IAIzG/sB,0BAA2B7uD,EAAKa,GAC3Bb,EAAIwZ,KAAKxhB,QAAQ0pC,SACpB1hC,EAAIwZ,KAAKxhB,QAAQ0pC,OAAS,IAG3B1hC,EAAIwZ,KAAKxhB,QAAQ0pC,OAAO85C,WAAa36E,EAGtCkuD,6BAA8BluD,GAC7BtJ,KAAKuiF,sBAAwBj5E,EAG9B66E,kBAAkB17E,EAAK0hC,GACtB,IAAI3mB,EAAWxjB,KAAKD,MAAMU,QAAQ6sC,SAASgF,YAAY7pC,GAAK,GAE5D,GAAG0hC,EACF,IAAI,IAAIt4B,KAAS2R,EAChBxjB,KAAK6jF,WAAWhyE,GAAO,QAGxB,IAAI,IAAIA,KAAS2R,EAChBxjB,KAAKijF,aAAapxE,GAAO,ICjdd,YAAS0a,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GACtD,IAAI2xB,EAAKhvC,OAAOivC,UAAYC,MAAMD,SAC9BtU,EAAStd,EAAOsd,QAAU,sBAC9Bs1C,EAAmB5yD,EAAO4yD,iBAC1B5iC,EAAa,EAEb,QAAgB,IAAN2B,EAAkB,CAiB3B,GAhBIA,EAAGI,WAAWp3B,KAEhBA,EADa,QAAX2iB,EACEqU,EAAGK,QAAQlY,OAAOnf,IAElBg3B,EAAGM,WAAWnY,OAAOnf,GAAI2iB,IAI3BqU,EAAGI,WAAWn3B,KAEhBA,EADa,QAAX0iB,EACEqU,EAAGK,QAAQlY,OAAOlf,IAElB+2B,EAAGM,WAAWnY,OAAOlf,GAAI0iB,IAI3B3iB,EAAEgpC,QAEA,IAAI/oC,EAAE+oC,QAIX,OAAOhpC,EAAIC,EAHXo1B,EAAc,OAFdA,EAAcp1B,EAAE+oC,SAAe,EAAL,EAa3B,OAJyB,QAArBivB,GAAsC,SAARltE,GAAyC,WAArBktE,GAAyC,QAARltE,KACtFsqC,IAAe,GAGTA,EAGPv7C,QAAQ0N,MAAM,0DAEhB,CD6aAouE,GAAUhnD,WAAa,mBE9cR,CACd+nB,OCVc,SAAS32B,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GACtD,IAAI4yD,EAAmB5yD,EAAO4yD,iBAC1B3wB,EAAUjiC,EAAO6yD,iBACjBtwB,EAAWviC,EAAO8yD,kBAClB9iC,EAAa,EAmBjB,GAjBAr1B,EAAImf,OAAOnf,GACXC,EAAIkf,OAAOlf,GAER2nC,IACF5nC,EAAIA,EAAExhB,MAAMopD,GAAU9uB,KAAK,IAC3B7Y,EAAIA,EAAEzhB,MAAMopD,GAAU9uB,KAAK,KAGzBwuB,IACFtnC,EAAIA,EAAExhB,MAAM8oD,GAASxuB,KAAK,KAC1B7Y,EAAIA,EAAEzhB,MAAM8oD,GAASxuB,KAAK,MAG3B9Y,EAAIkf,WAAWlf,GACfC,EAAIif,WAAWjf,GAGZva,MAAMsa,GACRq1B,EAAc3vC,MAAMua,GAAK,GAAK,MACzB,KAAGva,MAAMua,GAId,OAAOD,EAAIC,EAHXo1B,EAAc,EAWf,OAJyB,QAArB4iC,GAAsC,SAARltE,GAAyC,WAArBktE,GAAyC,QAARltE,KACtFsqC,IAAe,GAGTA,CACR,ED3BC+iC,OEXc,SAASp4D,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GACtD,IAEI0J,EAFAkpD,EAAmB5yD,EAAO4yD,iBAC1B5iC,EAAa,EAIjB,GAAIr1B,EAEE,IAAIC,EAEL,CAEJ,cAAcoF,EAAO0J,QACpB,IAAK,UACD1J,EAAO0J,SACTA,EAASt7B,KAAKe,cAEf,MACD,IAAK,SACJu6B,EAAS1J,EAAO0J,OAIlB,OAAOoQ,OAAOnf,GAAG8P,cAAcuoD,cAAcl5C,OAAOlf,GAAG6P,cAAef,GAdtEsmB,EAAc,OAFdA,EAAep1B,GAAS,EAAL,EAwBpB,OAJyB,QAArBg4D,GAAsC,SAARltE,GAAyC,WAArBktE,GAAyC,QAARltE,KACtFsqC,IAAe,GAGTA,CACR,EFpBCyB,KGVc,SAAS92B,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GAKtD,OAJIA,EAAOsd,SACVtd,EAAOsd,OAAS,cAGVqV,GAASz4C,KAAK9L,KAAMusB,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,EAC3D,EHKCwyB,KIXc,SAAS73B,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GAKtD,OAJIA,EAAOsd,SACVtd,EAAOsd,OAAS,SAGVqV,GAASz4C,KAAK9L,KAAMusB,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,EAC3D,EJMC2yB,SAASA,GACTsgC,QKfc,SAASt4D,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GAItD,QAHgB,IAANrF,GAAoB,SAANA,GAAsB,SAANA,GAAsB,IAANA,EAAU,EAAI,KACtD,IAANC,GAAoB,SAANA,GAAsB,SAANA,GAAsB,IAANA,EAAU,EAAI,EAGvE,ELWCu1C,MMhBc,SAASx1C,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GACtD,IAAIpuB,EAAOouB,EAAOpuB,MAAQ,SAC1BghF,EAAmB5yD,EAAO4yD,iBAC1B5iC,EAAa,EAEb,SAASkjC,EAAKpiF,GACb,IAAIwE,EAEJ,OAAO1D,GACN,IAAK,SACJ0D,EAASxE,EAAM0C,OACf,MAED,IAAK,MACJ8B,EAASxE,EAAM4oC,QAAO,SAAS2K,EAAG8uC,GACjC,OAAO9uC,EAAI8uC,KAEZ,MAED,IAAK,MACJ79E,EAASgL,KAAKG,IAAIwhB,MAAM,KAAMnxB,GAC9B,MAED,IAAK,MACJwE,EAASgL,KAAKI,IAAIuhB,MAAM,KAAMnxB,GAC9B,MAED,IAAK,MACJwE,EAASxE,EAAM4oC,QAAO,SAAS2K,EAAG8uC,GACjC,OAAO9uC,EAAI8uC,KACPriF,EAAM0C,OAIb,OAAO8B,EAIR,GAAIiO,MAAMC,QAAQmX,GAEZ,IAAIpX,MAAMC,QAAQoX,GAGvB,OAAOs4D,EAAKt4D,GAAKs4D,EAAKv4D,GAFtBq1B,EAAa,OAFbA,EAAczsC,MAAMC,QAAQoX,IAAU,EAAL,EAYlC,OAJyB,QAArBg4D,GAAsC,SAARltE,GAAyC,WAArBktE,GAAyC,QAARltE,KACtFsqC,IAAe,GAGTA,CACR,ENnCC8f,OOjBc,SAASn1C,EAAGC,EAAG83D,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GAItD,YAHsB,IAALrF,EAAmB,EAAI,SAClB,IAALC,EAAmB,EAAI,EAGzC,EPaCw4D,SQlBc,SAAS3jC,EAAIC,EAAIgjC,EAAMC,EAAMjhF,EAAQgU,EAAKsa,GACxD,IAAIrF,EAAGC,EAAG+0B,EAAIC,EAAUC,EAANxzC,EAAG,EAAMyzC,EAAK,eAAgBC,EAAK,KACjD6iC,EAAmB5yD,EAAO4yD,iBAC1B5iC,EAAa,EAGjB,GAAIP,GAAY,IAANA,EAEJ,IAAIC,GAAY,IAANA,EAEX,CAEJ,GAAGO,SAASR,IAAOQ,SAASP,GAAK,OAAOD,EAAKC,EAG7C,IAFA/0B,EAAImf,OAAO2V,GAAIhlB,kBACf7P,EAAIkf,OAAO4V,GAAIjlB,eACH,OAAO,EACnB,IAAKslB,EAAGnf,KAAKjW,KAAMo1B,EAAGnf,KAAKhW,GAAK,OAAOD,EAAIC,EAAI,GAAK,EAIpD,IAHAD,EAAIA,EAAElX,MAAMqsC,GACZl1B,EAAIA,EAAEnX,MAAMqsC,GACZD,EAAIl1B,EAAEnnB,OAASonB,EAAEpnB,OAASonB,EAAEpnB,OAASmnB,EAAEnnB,OACjC6I,EAAIwzC,GAGT,IAFAF,EAAIh1B,EAAEte,OACNuzC,EAAIh1B,EAAEve,MAEL,OAAG4zC,SAASN,IAAOM,SAASL,IACP,MAAjBD,EAAG5c,OAAO,KAAY4c,EAAK,IAAMA,GAChB,MAAjBC,EAAG7c,OAAO,KAAY6c,EAAK,IAAMA,GAC7BD,EAAKC,GAEDD,EAAKC,EAAK,GAAK,EAI7B,OAAOj1B,EAAEnnB,OAASonB,EAAEpnB,OAxBpBw8C,EAAc,OAFdA,EAAeN,GAAY,IAANA,GAAe,EAAL,EAkChC,OAJyB,QAArBkjC,GAAsC,SAARltE,GAAyC,WAArBktE,GAAyC,QAARltE,KACtFsqC,IAAe,GAGTA,CACR,GCvCA,MAAMqjC,WAAa3tD,EAElBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKklF,SAAW,GAChBllF,KAAKgM,SAAU,EAEfhM,KAAKw3B,oBAAoB,WAAY,SAErCx3B,KAAKw3B,oBAAoB,eAAe,GACxCx3B,KAAKw3B,oBAAoB,yBAAyB,GAClDx3B,KAAKw3B,oBAAoB,oBAAoB,GAC7Cx3B,KAAKw3B,oBAAoB,oBAAqB,uCAC9Cx3B,KAAKw3B,oBAAoB,yBAA0B,UAEnDx3B,KAAKy3B,qBAAqB,UAC1Bz3B,KAAKy3B,qBAAqB,gBAE1Bz3B,KAAKy3B,qBAAqB,cAAc,GACxCz3B,KAAKy3B,qBAAqB,yBAC1Bz3B,KAAKy3B,qBAAqB,sBAI3BhhB,aACCzW,KAAK2B,UAAU,gBAAiB3B,KAAKg7B,iBAAiBl6B,KAAKd,OAC3DA,KAAK2B,UAAU,cAAe3B,KAAKqwD,WAAWvvD,KAAKd,OACnDA,KAAK83B,oBAAoB93B,KAAKssB,KAAKxrB,KAAKd,MAAO,IAE/CA,KAAK03B,sBAAsB,UAAW13B,KAAKmlF,YAAYrkF,KAAKd,OAC5DA,KAAK03B,sBAAsB,aAAc13B,KAAKg5E,QAAQl4E,KAAKd,OAC3DA,KAAK03B,sBAAsB,YAAa13B,KAAKolF,UAAUtkF,KAAKd,OAEzB,WAAhCA,KAAKD,MAAMyC,QAAQ6iF,UACrBrlF,KAAK2B,UAAU,cAAe3B,KAAKslF,iBAAiBxkF,KAAKd,OAI3DqwD,aACIrwD,KAAKD,MAAMyC,QAAQ61E,aACrBr4E,KAAKulF,QAAQvlF,KAAKD,MAAMyC,QAAQ61E,aAIlCiN,iBAAiBplF,EAAMua,EAAQta,EAAQyxB,GACtC,IAAIwmD,EAAUp4E,KAAKg5E,UAQnB,OANAZ,EAAQ9zE,SAASmR,WACTA,EAAKnS,MAAM,IAGnBsuB,EAAOtF,KAAO8rD,EAEPxmD,EAQRuzD,YAAYD,EAAU5tE,GACrBtX,KAAKulF,QAAQL,EAAU5tE,GAEvBtX,KAAKwlF,cAGNJ,YACCplF,KAAKiY,QAELjY,KAAKwlF,cASNxqD,iBAAiB13B,GAChB,IACAuc,EACA4lE,EAFItmE,GAAS,EAIb,cAAc7b,EAAOwH,WAAWqU,QAC/B,IAAK,SACD8lE,GAAK7M,QAAQ90E,EAAOwH,WAAWqU,QACjCA,EAAS8lE,GAAK7M,QAAQ90E,EAAOwH,WAAWqU,QAExC9Y,QAAQC,KAAK,sCAAuChD,EAAOwH,WAAWqU,QAEvE,MAED,IAAK,WACJA,EAAS7b,EAAOwH,WAAWqU,OAW7B,GAPA7b,EAAO7C,QAAQ6rB,KAAO,CACrBnN,OAAOA,EAAQ7H,IAAI,OACnBsa,OAAOtuB,EAAOwH,WAAW46E,cAAgB,GACzCC,YAAYriF,EAAOwH,WAAW86E,uBAAyB,MACvDx/B,SAAU9iD,EAAOwH,WAAW+6E,qBAGO,IAAjCviF,EAAOwH,WAAWg7E,WAAqB,CASzC,IAPAjmE,EAAQvc,EAAOU,cAETgH,UAAUC,IAAI,uBAEpBw6E,EAAU17E,SAASC,cAAc,QACzBgB,UAAUC,IAAI,wBAGhB,SADCjL,KAAKD,MAAMyC,QAAQujF,uBAExBN,EAAQz6E,UAAUC,IAAI,qCAMtB4U,EAAM7U,UAAUC,IAAI,gCAItB,OAAOjL,KAAKD,MAAMyC,QAAQwjF,mBACzB,IAAK,WAEJ,MAED,IAAK,SACJP,EAAQj6E,YAAYxL,KAAKD,MAAMyC,QAAQwjF,mBACvC,MAED,QACCP,EAAQr6E,UAAYpL,KAAKD,MAAMyC,QAAQwjF,kBAIzC1iF,EAAOiK,mBAAmB/B,YAAYi6E,GAEtCniF,EAAO7C,QAAQ6rB,KAAKhjB,QAAUm8E,EAE9BzlF,KAAKimF,wBAAwB3iF,EAAQ,SAGU,SAA9CtD,KAAKD,MAAMyC,QAAQujF,uBAAoCN,EAAU5lE,GAAO/P,iBAAiB,SAAUC,IACnG,IAAIuH,EAAM,GACV8gE,EAAQ,GACR/iE,GAAQ,EAER,GAAG/R,EAAO7C,QAAQ6rB,KAAK,CACtB,GAAGhpB,EAAO7C,QAAQ6rB,KAAK85B,SAErB9uC,EAD6B,QAA3BhU,EAAO7C,QAAQ6rB,KAAKhV,IAChBhU,EAAO7C,QAAQ6rB,KAAKq5D,YAEvBriF,EAAO7C,QAAQ6rB,KAAKhV,KAAOhU,EAAO7C,QAAQ6rB,KAAKq5D,YAChB,OAA3BriF,EAAO7C,QAAQ6rB,KAAKhV,IAAe,OAAS,MAE5C,YAIR,OAAOhU,EAAO7C,QAAQ6rB,KAAKhV,KAC1B,IAAK,MACJA,EAAM,OACN,MAED,IAAK,OACJA,EAAM,MACN,MAED,QACCA,EAAMhU,EAAO7C,QAAQ6rB,KAAKq5D,YAIzB3lF,KAAKD,MAAMyC,QAAQ0jF,wBAA0Bn2E,EAAEgzC,UAAYhzC,EAAEypC,UAGhEnkC,GAFA+iE,EAAUp4E,KAAKg5E,WAECxjE,WAAW2J,GACnBA,EAAO7X,QAAUhE,EAAOY,aAG7BmR,GAAS,GACX+iE,EAAQ/iE,GAAOiC,IAAMA,EAErBjC,EAAQ+iE,EAAQrmE,OAAOsD,EAAO,GAAG,GACvB,QAAPiC,GACF8gE,EAAQ5zE,KAAK6Q,IAGJ,QAAPiC,GACF8gE,EAAQ5zE,KAAK,CAAClB,OAAOA,EAAQgU,IAAIA,IAKnCtX,KAAKulF,QAAQnN,IAEH,QAAP9gE,EACFtX,KAAKiY,QAGLjY,KAAKulF,QAAQjiF,EAAQgU,GAMvBtX,KAAKwlF,mBAMTA,cACoC,WAAhCxlF,KAAKD,MAAMyC,QAAQ6iF,SACrBrlF,KAAKC,WAAW,MAAM,GAAO,GAE7BD,KAAKi4B,aAAY,GASnB06B,aACC,IAAI3mD,EAAUhM,KAAKgM,QAEnB,OADAhM,KAAKgM,SAAU,EACRA,EAIRgtE,UACC,IACAZ,EAAU,GAQV,OATWp4E,KAGNklF,SAAS5gF,SAAQ,SAASmR,GAC3BA,EAAKnS,QACP80E,EAAQ5zE,KAAK,CAAClB,OAAOmS,EAAKnS,OAAOmB,eAAgB6C,MAAMmO,EAAKnS,OAAOY,WAAYoT,IAAI7B,EAAK6B,SAInF8gE,EAIRmN,QAAQL,EAAU5tE,GACjB,IAAIqtC,EAAO3kD,KACXmmF,EAAc,GAEVhxE,MAAMC,QAAQ8vE,KACjBA,EAAW,CAAC,CAAC5hF,OAAQ4hF,EAAU5tE,IAAIA,KAGpC4tE,EAAS5gF,SAAQ,SAASmR,GACzB,IAAInS,GAEJA,EAASqhD,EAAK5kD,MAAM6F,cAAcO,WAAWsP,EAAKnS,UAGjDmS,EAAKnS,OAASA,EACd6iF,EAAY3hF,KAAKiR,GACjBkvC,EAAK34C,SAAU,GAEf3F,QAAQC,KAAK,kEAAmEmP,EAAKnS,WAKvFqhD,EAAKugC,SAAWiB,EAEhBnmF,KAAKiC,SAAS,gBAIfgW,QACCjY,KAAKulF,QAAQ,IAIda,WAAW9iF,GACV,IAEOZ,EAFH+F,EAAMzI,KAAKD,MAAMgM,WAAWqd,WAAW,GAC3CjK,EAAS,SAGT,GAAG1W,IACFA,EAAMA,EAAIC,UACFpF,EAAOY,YAMd,cAFAxB,EAAQY,EAAOwG,cAAcrB,KAG5B,IAAK,YACJ0W,EAAS,SACT,MAED,IAAK,UACJA,EAAS,UACT,MAED,QACKlN,MAAMvP,IAAoB,KAAVA,EAGhBA,EAAM2S,MAAM,0CACd8J,EAAS,YAHVA,EAAS,SAWd,OAAO8lE,GAAK7M,QAAQj5D,GAIrBmN,KAAKpsB,GACJ,IAAIykD,EAAO3kD,KACXklF,EAAWllF,KAAKD,MAAMyC,QAAQ6jF,iBAAmB1hC,EAAKugC,SAAS59D,QAAQiE,UAAYo5B,EAAKugC,SACxFoB,EAAiB,GACjBC,EAAgB,GAoDhB,OAlDGvmF,KAAKsC,mBAAmB,gBAC1BtC,KAAKoC,iBAAiB,cAAeuiD,EAAKq0B,WAG3Cr0B,EAAK6hC,qBAE8B,WAAhCxmF,KAAKD,MAAMyC,QAAQ6iF,UAGrBH,EAAS5gF,SAAQ,SAASmR,EAAMxH,GAC/B,IAAIw4E,EAEDhxE,EAAKnS,UACPmjF,EAAUhxE,EAAKnS,OAAO7C,QAAQ6rB,QAKzBm6D,EAAQtnE,SACXsnE,EAAQtnE,OAASwlC,EAAKyhC,WAAW3wE,EAAKnS,SAGvCmS,EAAKmc,OAAmC,mBAAnB60D,EAAQ70D,OAAwB60D,EAAQ70D,OAAOnc,EAAKnS,OAAOmB,eAAgBgR,EAAK6B,KAAOmvE,EAAQ70D,OAEpH00D,EAAe9hF,KAAKiR,IAGrBkvC,EAAK+hC,gBAAgBjxE,EAAKnS,OAAQmS,EAAK6B,SAKrCgvE,EAAelhF,QAClBu/C,EAAKgiC,WAAWzmF,EAAMomF,IAIvBpB,EAAS5gF,SAAQ,SAASmR,EAAMxH,GAC/B02C,EAAK+hC,gBAAgBjxE,EAAKnS,OAAQmS,EAAK6B,QAItCtX,KAAKsC,mBAAmB,gBAC1BpC,EAAKoE,SAASmE,IACb89E,EAAc/hF,KAAKiE,EAAIhE,eAAe,IAGvCzE,KAAKoC,iBAAiB,aAAcuiD,EAAKq0B,UAAWuN,IAG9CrmF,EAIRsmF,qBACCxmF,KAAKD,MAAM6F,cAAc4a,iBAAiBlc,SAAShB,IAC/CA,EAAO7C,QAAQ6rB,OACjBhpB,EAAO7C,QAAQ6rB,KAAKhV,IAAM,OAC1BhU,EAAOU,aAAakG,aAAa,YAAa,QAC9ClK,KAAKimF,wBAAwB3iF,EAAQ,YAMxCojF,gBAAgBpjF,EAAQgU,GACvBhU,EAAO7C,QAAQ6rB,KAAKhV,IAAMA,EAC1BhU,EAAOU,aAAakG,aAAa,YAAqB,QAARoN,EAAgB,YAAc,cAC5EtX,KAAKimF,wBAAwB3iF,EAAQgU,GAGtC2uE,wBAAwB3iF,EAAQgU,GAC/B,IACAmuE,EADImB,EAAStjF,EAAO7C,QAAQ6rB,KAAKhjB,QAGjC,GAAGhG,EAAOwH,WAAWg7E,YAA8D,mBAAzC9lF,KAAKD,MAAMyC,QAAQwjF,kBAAiC,CAC7F,KAAMY,EAAOt7E,YAAYs7E,EAAOr7E,YAAYq7E,EAAOt7E,YAI7B,iBAFtBm6E,EAAUzlF,KAAKD,MAAMyC,QAAQwjF,kBAAkBl6E,KAAK9L,KAAKD,MAAOuD,EAAOmB,eAAgB6S,IAGtFsvE,EAAOp7E,YAAYi6E,GAEnBmB,EAAOx7E,UAAYq6E,GAMtBkB,WAAWzmF,EAAMglF,GAChB,IAAI2B,EAAc3B,EAAS9/E,OAAS,EAEpClF,EAAKosB,MAAK,CAACC,EAAGC,KAGb,IAFA,IAAItlB,EAEI+G,EAAI44E,EAAa54E,GAAI,EAAGA,IAAI,CACnC,IAAI64E,EAAW5B,EAASj3E,GAIxB,GAAc,KAFd/G,EAASlH,KAAK+mF,SAASx6D,EAAGC,EAAGs6D,EAASxjF,OAAQwjF,EAASxvE,IAAKwvE,EAASl1D,SAGpE,MAIF,OAAO1qB,CAAM,IAKf6/E,SAASx6D,EAAGC,EAAGlpB,EAAQgU,EAAKsa,GAC3B,IAAIo1D,EAASC,EAGTC,EAAa,OAAP5vE,EAAeiV,EAAIC,EACzB26D,EAAa,OAAP7vE,EAAekV,EAAID,EAW7B,OANAA,OAAiB,KAHjBA,EAAIjpB,EAAOwG,cAAco9E,EAAIx+E,YAGE6jB,EAAI,GACnCC,OAAiB,KAHjBA,EAAIlpB,EAAOwG,cAAcq9E,EAAIz+E,YAGE8jB,EAAI,GAEnCw6D,EAAUE,EAAIziF,eACdwiF,EAAUE,EAAI1iF,eAEPnB,EAAO7C,QAAQ6rB,KAAKnN,OAAOrT,KAAK9L,KAAMusB,EAAGC,EAAGw6D,EAASC,EAAS3jF,EAAOmB,eAAgB6S,EAAKsa,IAInGqzD,GAAK9pD,WAAa,OAGlB8pD,GAAK7M,QAAUgP,GCjdf,MAAMC,WAAgB/vD,EAErBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKsnF,kBAAoB,KACzBtnF,KAAKunF,iBAAmB,KAExBvnF,KAAKwnF,QAAU,KACfxnF,KAAKynF,cAAgB,KAErBznF,KAAKw3B,oBAAoB,6BAAyBj3B,GAClDP,KAAKw3B,oBAAoB,eAAgB,KAEzCx3B,KAAKy3B,qBAAqB,WAC1Bz3B,KAAKy3B,qBAAqB,iBAG3BhhB,aACCzW,KAAKu3C,yBAELv3C,KAAK2B,UAAU,cAAe3B,KAAKg7B,iBAAiBl6B,KAAKd,OAG1Du3C,yBACCv3C,KAAKgD,oBAAoB,wBAAyB,iFAGnDg4B,iBAAiB13B,GACbA,EAAOwH,WAAW48E,gBAAkB1nF,KAAKunF,mBAC3CvnF,KAAKunF,kBAAmB,EAExBvnF,KAAK2B,UAAU,mBAAoB3B,KAAK2nF,eAAe7mF,KAAKd,KAAM,kBAClEA,KAAK2B,UAAU,kBAAmB3B,KAAK4nF,cAAc9mF,KAAKd,KAAM,mBAG9DsD,EAAOwH,WAAW+8E,UAAY7nF,KAAKsnF,oBACrCtnF,KAAKsnF,mBAAoB,EAEzBtnF,KAAK2B,UAAU,iBAAkB3B,KAAK2nF,eAAe7mF,KAAKd,KAAM,YAChEA,KAAK2B,UAAU,gBAAiB3B,KAAK4nF,cAAc9mF,KAAKd,KAAM,aAIhE2nF,eAAerpD,EAAQvuB,EAAGtG,GACzB,IAAIo+E,EAAqB,YAAXvpD,EAAuB70B,EAAUnG,OAAOwH,WAAW+8E,QAAUp+E,EAAUqB,WAAW48E,cAE7FG,IACF7nF,KAAK8nF,aACL9nF,KAAKwnF,QAAU/0D,WAAWzyB,KAAK+nF,YAAYjnF,KAAKd,KAAM+P,EAAGtG,EAAWo+E,GAAU7nF,KAAKD,MAAMyC,QAAQwlF,eAInGJ,cAActpD,EAAQvuB,EAAGtG,GACpBzJ,KAAKynF,eACRznF,KAAK8nF,aAIPA,WAAWxpD,EAAQvuB,EAAGtG,GACrB00C,aAAan+C,KAAKwnF,SAClBxnF,KAAKwnF,QAAU,KAEZxnF,KAAKynF,eACPznF,KAAKynF,cAAc1iF,OAIrBgjF,YAAYh4E,EAAGtG,EAAWo+E,GACzB,IAAIhN,EAAYrlD,EAAkBwB,EAMZ,mBAAZ6wD,IACTA,EAAUA,EAAQ93E,EAAGtG,EAAUhF,gBALhC,SAAoBuS,GACnBwe,EAAmBxe,MAOjB6wE,aAAmB3nE,YACrB26D,EAAagN,GAEbhN,EAAa9wE,SAASC,cAAc,QAErB,IAAZ69E,IACCp+E,aAAqBL,EACvBy+E,EAAUp+E,EAAU/G,MAEjB+G,EAAUqB,WAAWxD,MACvBtH,KAAKa,SAAS,WAAa4I,EAAUqB,WAAWxD,OAAQ5E,IACvDm4E,EAAWzvE,UAAYy8E,EAAUnlF,GAAS+G,EAAUqB,WAAWzD,KAAK,IAGrEwgF,EAAUp+E,EAAUqB,WAAWzD,OAKlCwzE,EAAWzvE,UAAYy8E,IAGrBA,GAAuB,IAAZA,IAA6B,IAAZA,KAC9BhN,EAAW7vE,UAAUC,IAAI,qBAEzB4vE,EAAW/qE,iBAAiB,aAAaC,GAAKA,EAAEy4B,mBAEhDxoC,KAAKynF,cAAgBznF,KAAKq4B,MAAMwiD,GAED,mBAArBrlD,GACTx1B,KAAKynF,cAAcvxD,eAAeV,GAGnCwB,EAASh3B,KAAKynF,cAActxD,qBAAqBpmB,GAEjD/P,KAAKynF,cAAc7iF,KAAKoyB,EAAOV,EAAI,GAAIU,EAAOP,EAAI,IAAIS,YAAW,KAChEl3B,KAAKoC,iBAAiB,gBAAiBqH,EAAUhF,gBACjDzE,KAAKynF,cAAgB,IAAI,IAG1BznF,KAAKoC,iBAAiB,gBAAiBqH,EAAUhF,kBAKpD4iF,GAAQlsD,WAAa,iBC/HN,CAEdy4B,QAAS,SAASrvD,EAAM7B,EAAOulF,GAC9B,MAAa,KAAVvlF,SAAgBA,IAInBA,EAAQu4B,OAAOv4B,IAEPuP,MAAMvP,IAAUm/C,SAASn/C,IAAUwP,KAAKC,MAAMzP,KAAWA,IAIlEwlF,MAAO,SAAS3jF,EAAM7B,EAAOulF,GAC5B,MAAa,KAAVvlF,SAAgBA,IAInBA,EAAQu4B,OAAOv4B,IAEPuP,MAAMvP,IAAUm/C,SAASn/C,IAAUA,EAAQ,GAAM,IAI1DylF,QAAS,SAAS5jF,EAAM7B,EAAOulF,GAC9B,MAAa,KAAVvlF,SAAgBA,IAGXuP,MAAMvP,IAIfiiF,OAAQ,SAASpgF,EAAM7B,EAAOulF,GAC7B,MAAa,KAAVvlF,SAAgBA,GAGZuP,MAAMvP,IAId2P,IAAK,SAAS9N,EAAM7B,EAAOulF,GAC1B,MAAa,KAAVvlF,SAAgBA,GAGZ+oC,WAAW/oC,IAAUulF,GAI7B31E,IAAK,SAAS/N,EAAM7B,EAAOulF,GAC1B,MAAa,KAAVvlF,SAAgBA,GAGZ+oC,WAAW/oC,IAAUulF,GAI7Bz5B,OAAQ,SAASjqD,EAAM7B,EAAOulF,GAC7B,MAAa,KAAVvlF,SAAgBA,GAGZgpC,OAAOhpC,GAAO25B,cAActiB,WAAW2xB,OAAOu8C,GAAY5rD,gBAIlEoyB,KAAM,SAASlqD,EAAM7B,EAAOulF,GAC3B,MAAa,KAAVvlF,SAAgBA,GAGZgpC,OAAOhpC,GAAO25B,cAAcqyB,SAAShjB,OAAOu8C,GAAY5rD,gBAKhE+rD,UAAW,SAAS7jF,EAAM7B,EAAOulF,GAChC,MAAa,KAAVvlF,SAAgBA,GAGZgpC,OAAOhpC,GAAO0C,QAAU6iF,GAIhCI,UAAW,SAAS9jF,EAAM7B,EAAOulF,GAChC,MAAa,KAAVvlF,SAAgBA,GAGZgpC,OAAOhpC,GAAO0C,QAAU6iF,GAIhCt5B,GAAI,SAASpqD,EAAM7B,EAAOulF,GACzB,MAAa,KAAVvlF,SAAgBA,IAIK,iBAAdulF,IACTA,EAAaA,EAAWl9E,MAAM,MAGxBk9E,EAAWh5E,QAAQvM,IAAU,IAIrCurD,MAAO,SAAS1pD,EAAM7B,EAAOulF,GAC5B,MAAa,KAAVvlF,SAAgBA,GAGT,IAAIwrD,OAAO+5B,GAEVzlD,KAAK9/B,IAIjBkpC,OAAQ,SAASrnC,EAAM7B,EAAOulF,GAC7B,GAAa,KAAVvlF,SAAgBA,EAClB,OAAO,EAER,IAAIkpC,GAAS,EAET08C,EAAW/jF,EAAKmE,UAChBpF,EAASiB,EAAKsE,YAAYrD,WAY9B,OAVAxF,KAAKD,MAAMgM,WAAWyG,KAAKlO,SAAQ,SAASmE,GAC3C,IAAIvI,EAAOuI,EAAIC,UAEZxI,IAASooF,GACR5lF,GAASY,EAAOwG,cAAc5J,KAChC0rC,GAAS,MAKLA,GAIR1H,SAAS,SAAS3/B,EAAM7B,EAAOulF,GAC9B,MAAiB,KAAVvlF,SAAgBA,ICpIzB,MAAM6lF,WAAiBjxD,EAEtBx3B,YAAYC,GACXsJ,MAAMtJ,GAENC,KAAKwoF,aAAe,GAEpBxoF,KAAKw3B,oBAAoB,iBAAkB,YAE3Cx3B,KAAKy3B,qBAAqB,aAE1Bz3B,KAAK03B,sBAAsB,kBAAmB13B,KAAKyoF,gBAAgB3nF,KAAKd,OACxEA,KAAK03B,sBAAsB,sBAAuB13B,KAAK0oF,wBAAwB5nF,KAAKd,OACpFA,KAAK03B,sBAAsB,WAAY13B,KAAK2oF,aAAa7nF,KAAKd,OAE9DA,KAAK63B,0BAA0B,OAAQ,UAAW73B,KAAK4oF,YAAY9nF,KAAKd,OACxEA,KAAK63B,0BAA0B,OAAQ,kBAAmB73B,KAAK6oF,gBAAgB/nF,KAAKd,OACpFA,KAAK63B,0BAA0B,OAAQ,WAAY73B,KAAK8oF,aAAahoF,KAAKd,OAE1EA,KAAK63B,0BAA0B,SAAU,WAAY73B,KAAK+oF,eAAejoF,KAAKd,OAC9EA,KAAK63B,0BAA0B,MAAO,WAAY73B,KAAKgpF,YAAYloF,KAAKd,OAIzEyW,aACCzW,KAAK2B,UAAU,cAAe3B,KAAK6oF,gBAAgB/nF,KAAKd,OACxDA,KAAK2B,UAAU,gBAAiB3B,KAAKwsC,sBAAsB1rC,KAAKd,OAEhEA,KAAK2B,UAAU,eAAgB3B,KAAKipF,aAAanoF,KAAKd,OACtDA,KAAK2B,UAAU,oBAAqB3B,KAAKkpF,YAAYpoF,KAAKd,OAC1DA,KAAK2B,UAAU,oBAAqB3B,KAAKmpF,YAAYroF,KAAKd,OAO3DipF,aAAa1kF,EAAM7B,EAAO0mF,GACzB,IAAIx+C,EAA8C,WAAtC5qC,KAAKD,MAAMyC,QAAQunD,gBAA8B/pD,KAAKqpF,SAAS9kF,EAAKjB,OAAO7C,QAAQ4oF,SAAU9kF,EAAM7B,GAU/G,OAPa,IAAVkoC,GACFnY,YAAW,KACVluB,EAAKP,aAAagH,UAAUC,IAAI,6BAChCjL,KAAKoC,iBAAiB,mBAAoBmC,EAAKE,eAAgB/B,EAAOkoC,EAAM,IAIvEA,EAGRs+C,YAAY3kF,EAAM+kF,GACdA,GACC/kF,EAAKjB,OAAO7C,QAAQ4oF,UACtBrpF,KAAK8oF,aAAavkF,GAIpBA,EAAKP,aAAagH,UAAUgN,OAAO,6BAGpCmxE,YAAY5kF,GACRA,EAAK9D,QAAQ4oF,WACf9kF,EAAK9D,QAAQ4oF,SAASh0B,SAAU,GAQlCuzB,YAAYrkF,GACX,OAAOA,EAAK9D,QAAQ4oF,UAAY9kF,EAAK9D,QAAQ4oF,SAASh0B,UAAmB,EAG1EyzB,aAAavkF,GACZ,OAAOvE,KAAKqpF,SAAS9kF,EAAKjB,OAAO7C,QAAQ4oF,SAAU9kF,EAAMA,EAAK6D,YAO/D2gF,eAAezlF,GACd,IAAI+xD,EAAU,GAQd,OANA/xD,EAAOe,MAAMC,SAASC,KACU,IAA5BvE,KAAK8oF,aAAavkF,IACpB8wD,EAAQ7wD,KAAKD,EAAKE,oBAIb4wD,EAAQjwD,QAASiwD,EAOzB2zB,YAAYvgF,GACX,IAAI4sD,EAAU,GAQd,OANA5sD,EAAIpE,MAAMC,SAASC,KACa,IAA5BvE,KAAK8oF,aAAavkF,IACpB8wD,EAAQ7wD,KAAKD,EAAKE,oBAIb4wD,EAAQjwD,QAASiwD,EAQzBqzB,wBAAwBrkF,GACnBA,IACHA,EAAQrE,KAAKyoF,mBAGVtzE,MAAMC,QAAQ/Q,KACjBA,EAAQ,CAACA,IAGVA,EAAMC,SAASC,IACdvE,KAAK6oF,gBAAgBtkF,EAAKiB,WAAW,IAIvCmjF,aAAatkF,GACZ,IAAIc,EAAS,GAab,OAVAnF,KAAKD,MAAMgM,WAAWyG,KAAKlO,SAASmE,IAGnC,IAAImiC,GAFJniC,EAAMA,EAAIhE,gBAEM4kF,YAEH,IAAVz+C,IACFzlC,EAASA,EAAOkM,OAAOu5B,QAIlBzlC,EAAOC,QAASD,EAOxBqnC,sBAAsBlpC,QACqB,IAAhCA,EAAOwH,WAAWy+E,WAC3BvpF,KAAKg7B,iBAAiB13B,GAKxB03B,iBAAiB13B,GAChB,IAEAimF,EAFI5kC,EAAO3kD,KACXya,EAAS,GAGNnX,EAAOwH,WAAWy+E,YAEjBp0E,MAAMC,QAAQ9R,EAAOwH,WAAWy+E,WAClCjmF,EAAOwH,WAAWy+E,UAAUjlF,SAASmR,KACpC8zE,EAAY5kC,EAAK6kC,kBAAkB/zE,KAGlCgF,EAAOjW,KAAK+kF,OAKdA,EAAYvpF,KAAKwpF,kBAAkBlmF,EAAOwH,WAAWy+E,aAGpD9uE,EAAOjW,KAAK+kF,GAIdjmF,EAAO7C,QAAQ4oF,WAAW5uE,EAAOrV,QAASqV,GAI5C+uE,kBAAkB9mF,GACjB,IAAIc,EAAMouB,EAAQ1G,EAElB,cAAcxoB,GACb,IAAK,SAUJ,OATAwoB,EAAMxoB,EAAMuM,QAAQ,OAEV,GACTzL,EAAOd,EAAM+mF,UAAU,EAAEv+D,GACzB0G,EAASlvB,EAAM+mF,UAAUv+D,EAAI,IAE7B1nB,EAAOd,EAGD1C,KAAK0pF,gBAAgBlmF,EAAMouB,GAEnC,IAAK,WACJ,OAAO5xB,KAAK0pF,gBAAgBhnF,GAE7B,IAAK,SACJ,OAAO1C,KAAK0pF,gBAAgBhnF,EAAMc,KAAMd,EAAMulF,aAIjDyB,gBAAgBlmF,EAAMouB,GAErB,IAAI+F,EAAsB,mBAARn0B,EAAqBA,EAAO+kF,GAASoB,WAAWnmF,GAElE,OAAIm0B,EAII,CACNn0B,KAAoB,mBAARA,EAAqB,WAAaA,EAC9Cm0B,KAAKA,EACL/F,OAAOA,IANRvrB,QAAQC,KAAK,uDAAwD9C,IAC9D,GAUT6lF,SAASM,EAAYplF,EAAM7B,GAC1B,IAAIiiD,EAAO3kD,KACX4pF,EAAmB,GACnBC,EAAe7pF,KAAKwoF,aAAav5E,QAAQ1K,GAoCzC,OAlCGolF,GACFA,EAAWrlF,SAASmR,IACfA,EAAKkiB,KAAK7rB,KAAK64C,EAAMpgD,EAAKE,eAAgB/B,EAAO+S,EAAKmc,SACzDg4D,EAAiBplF,KAAK,CACrBhB,KAAKiS,EAAKjS,KACVykF,WAAWxyE,EAAKmc,YAMhBrtB,EAAK9D,QAAQ4oF,WAChB9kF,EAAK9D,QAAQ4oF,SAAW,IAGrBO,EAAiBxkF,QAQpBb,EAAK9D,QAAQ4oF,SAASh0B,QAAUu0B,EAES,WAAtC5pF,KAAKD,MAAMyC,QAAQunD,gBACrBxlD,EAAKP,aAAagH,UAAUC,IAAI,8BAGb,GAAjB4+E,GACF7pF,KAAKwoF,aAAahkF,KAAKD,KAdxBA,EAAK9D,QAAQ4oF,SAASh0B,SAAU,EAChC9wD,EAAKP,aAAagH,UAAUgN,OAAO,6BAEhC6xE,GAAgB,GAClB7pF,KAAKwoF,aAAaz2E,OAAO83E,EAAc,KAclCD,EAAiBxkF,QAASwkF,EAGlCnB,kBACC,IAAItjF,EAAS,GAMb,OAJAnF,KAAKwoF,aAAalkF,SAASC,IAC1BY,EAAOX,KAAKD,EAAKE,eAAe,IAG1BU,EAGR0jF,gBAAgBtkF,GACf,IAAIslF,EAEDtlF,EAAK9D,QAAQ4oF,UAAY9kF,EAAK9D,QAAQ4oF,SAASh0B,UAEjD9wD,EAAKP,aAAagH,UAAUgN,OAAO,6BACnCzT,EAAK9D,QAAQ4oF,SAASh0B,SAAU,GAEhCw0B,EAAe7pF,KAAKwoF,aAAav5E,QAAQ1K,KAEtB,GAClBvE,KAAKwoF,aAAaz2E,OAAO83E,EAAc,KAM3CtB,GAASptD,WAAa,WAGtBotD,GAASoB,WAAaG,0qBCzStB,MAAMC,WAAsBj1D,UAG5B,IAAI4J,EAAaqrD,GAAetpF"} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/js/tabulator_esm.js b/src/main/webapp/tabulator/dist/js/tabulator_esm.js deleted file mode 100644 index 41345cc3..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator_esm.js +++ /dev/null @@ -1,26396 +0,0 @@ -/* Tabulator v5.5.2 (c) Oliver Folkerd 2023 */ -class CoreFeature{ - - constructor(table){ - this.table = table; - } - - ////////////////////////////////////////// - /////////////// DataLoad ///////////////// - ////////////////////////////////////////// - - reloadData(data, silent, columnsChanged){ - return this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged); - } - - ////////////////////////////////////////// - ///////////// Localization /////////////// - ////////////////////////////////////////// - - langText(){ - return this.table.modules.localize.getText(...arguments); - } - - langBind(){ - return this.table.modules.localize.bind(...arguments); - } - - langLocale(){ - return this.table.modules.localize.getLocale(...arguments); - } - - - ////////////////////////////////////////// - ////////// Inter Table Comms ///////////// - ////////////////////////////////////////// - - commsConnections(){ - return this.table.modules.comms.getConnections(...arguments); - } - - commsSend(){ - return this.table.modules.comms.send(...arguments); - } - - ////////////////////////////////////////// - //////////////// Layout ///////////////// - ////////////////////////////////////////// - - layoutMode(){ - return this.table.modules.layout.getMode(); - } - - layoutRefresh(force){ - return this.table.modules.layout.layout(force); - } - - - ////////////////////////////////////////// - /////////////// Event Bus //////////////// - ////////////////////////////////////////// - - subscribe(){ - return this.table.eventBus.subscribe(...arguments); - } - - unsubscribe(){ - return this.table.eventBus.unsubscribe(...arguments); - } - - subscribed(key){ - return this.table.eventBus.subscribed(key); - } - - subscriptionChange(){ - return this.table.eventBus.subscriptionChange(...arguments); - } - - dispatch(){ - return this.table.eventBus.dispatch(...arguments); - } - - chain(){ - return this.table.eventBus.chain(...arguments); - } - - confirm(){ - return this.table.eventBus.confirm(...arguments); - } - - dispatchExternal(){ - return this.table.externalEvents.dispatch(...arguments); - } - - subscribedExternal(key){ - return this.table.externalEvents.subscribed(key); - } - - subscriptionChangeExternal(){ - return this.table.externalEvents.subscriptionChange(...arguments); - } - - ////////////////////////////////////////// - //////////////// Options ///////////////// - ////////////////////////////////////////// - - options(key){ - return this.table.options[key]; - } - - setOption(key, value){ - if(typeof value !== "undefined"){ - this.table.options[key] = value; - } - - return this.table.options[key]; - } - - ////////////////////////////////////////// - /////////// Deprecation Checks /////////// - ////////////////////////////////////////// - - deprecationCheck(oldOption, newOption){ - return this.table.deprecationAdvisor.check(oldOption, newOption); - } - - deprecationCheckMsg(oldOption, msg){ - return this.table.deprecationAdvisor.checkMsg(oldOption, msg); - } - - deprecationMsg(msg){ - return this.table.deprecationAdvisor.msg(msg); - } - ////////////////////////////////////////// - //////////////// Modules ///////////////// - ////////////////////////////////////////// - - module(key){ - return this.table.module(key); - } -} - -class Helpers{ - - static elVisible(el){ - return !(el.offsetWidth <= 0 && el.offsetHeight <= 0); - } - - static elOffset(el){ - var box = el.getBoundingClientRect(); - - return { - top: box.top + window.pageYOffset - document.documentElement.clientTop, - left: box.left + window.pageXOffset - document.documentElement.clientLeft - }; - } - - static deepClone(obj, clone, list = []){ - var objectProto = {}.__proto__, - arrayProto = [].__proto__; - - if (!clone){ - clone = Object.assign(Array.isArray(obj) ? [] : {}, obj); - } - - for(var i in obj) { - let subject = obj[i], - match, copy; - - if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){ - match = list.findIndex((item) => { - return item.subject === subject; - }); - - if(match > -1){ - clone[i] = list[match].copy; - }else { - copy = Object.assign(Array.isArray(subject) ? [] : {}, subject); - - list.unshift({subject, copy}); - - clone[i] = this.deepClone(subject, copy, list); - } - } - } - - return clone; - } -} - -class Popup extends CoreFeature{ - constructor(table, element, parent){ - super(table); - - this.element = element; - this.container = this._lookupContainer(); - - this.parent = parent; - - this.reversedX = false; - this.childPopup = null; - this.blurable = false; - this.blurCallback = null; - this.blurEventsBound = false; - this.renderedCallback = null; - - this.visible = false; - this.hideable = true; - - this.element.classList.add("tabulator-popup-container"); - - this.blurEvent = this.hide.bind(this, false); - this.escEvent = this._escapeCheck.bind(this); - - this.destroyBinding = this.tableDestroyed.bind(this); - this.destroyed = false; - } - - tableDestroyed(){ - this.destroyed = true; - this.hide(true); - } - - _lookupContainer(){ - var container = this.table.options.popupContainer; - - if(typeof container === "string"){ - container = document.querySelector(container); - - if(!container){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.popupContainer , "(defaulting to document body)"); - } - }else if (container === true){ - container = this.table.element; - } - - if(container && !this._checkContainerIsParent(container)){ - container = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.popupContainer , "(defaulting to document body)"); - } - - if(!container){ - container = document.body; - } - - return container; - } - - _checkContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else { - return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false; - } - } - - renderCallback(callback){ - this.renderedCallback = callback; - } - - containerEventCoords(e){ - var touch = !(e instanceof MouseEvent); - - var x = touch ? e.touches[0].pageX : e.pageX; - var y = touch ? e.touches[0].pageY : e.pageY; - - if(this.container !== document.body){ - let parentOffset = Helpers.elOffset(this.container); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - return {x, y}; - } - - elementPositionCoords(element, position = "right"){ - var offset = Helpers.elOffset(element), - containerOffset, x, y; - - if(this.container !== document.body){ - containerOffset = Helpers.elOffset(this.container); - - offset.left -= containerOffset.left; - offset.top -= containerOffset.top; - } - - switch(position){ - case "right": - x = offset.left + element.offsetWidth; - y = offset.top - 1; - break; - - case "bottom": - x = offset.left; - y = offset.top + element.offsetHeight; - break; - - case "left": - x = offset.left; - y = offset.top - 1; - break; - - case "top": - x = offset.left; - y = offset.top; - break; - - case "center": - x = offset.left + (element.offsetWidth / 2); - y = offset.top + (element.offsetHeight / 2); - break; - - } - - return {x, y, offset}; - } - - show(origin, position){ - var x, y, parentEl, parentOffset, coords; - - if(this.destroyed || this.table.destroyed){ - return this; - } - - if(origin instanceof HTMLElement){ - parentEl = origin; - coords = this.elementPositionCoords(origin, position); - - parentOffset = coords.offset; - x = coords.x; - y = coords.y; - - }else if(typeof origin === "number"){ - parentOffset = {top:0, left:0}; - x = origin; - y = position; - }else { - coords = this.containerEventCoords(origin); - - x = coords.x; - y = coords.y; - - this.reversedX = false; - } - - this.element.style.top = y + "px"; - this.element.style.left = x + "px"; - - this.container.appendChild(this.element); - - if(typeof this.renderedCallback === "function"){ - this.renderedCallback(); - } - - this._fitToScreen(x, y, parentEl, parentOffset, position); - - this.visible = true; - - this.subscribe("table-destroy", this.destroyBinding); - - this.element.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - return this; - } - - _fitToScreen(x, y, parentEl, parentOffset, position){ - var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop; - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){ - this.element.style.left = ""; - - if(parentEl){ - this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px"; - }else { - this.element.style.right = (this.container.offsetWidth - x) + "px"; - } - - this.reversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) { - if(parentEl){ - switch(position){ - case "bottom": - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px"; - break; - - default: - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - } - - }else { - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + "px"; - } - } - } - - isVisible(){ - return this.visible; - } - - hideOnBlur(callback){ - this.blurable = true; - - if(this.visible){ - setTimeout(() => { - if(this.visible){ - this.table.rowManager.element.addEventListener("scroll", this.blurEvent); - this.subscribe("cell-editing", this.blurEvent); - document.body.addEventListener("click", this.blurEvent); - document.body.addEventListener("contextmenu", this.blurEvent); - document.body.addEventListener("mousedown", this.blurEvent); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - - this.blurEventsBound = true; - } - }, 100); - - this.blurCallback = callback; - } - - return this; - } - - _escapeCheck(e){ - if(e.keyCode == 27){ - this.hide(); - } - } - - blockHide(){ - this.hideable = false; - } - - restoreHide(){ - this.hideable = true; - } - - hide(silent = false){ - if(this.visible && this.hideable){ - if(this.blurable && this.blurEventsBound){ - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - document.body.removeEventListener("mousedown", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - this.unsubscribe("cell-editing", this.blurEvent); - - this.blurEventsBound = false; - } - - if(this.childPopup){ - this.childPopup.hide(); - } - - if(this.parent){ - this.parent.childPopup = null; - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.visible = false; - - if(this.blurCallback && !silent){ - this.blurCallback(); - } - - this.unsubscribe("table-destroy", this.destroyBinding); - } - - return this; - } - - child(element){ - if(this.childPopup){ - this.childPopup.hide(); - } - - this.childPopup = new Popup(this.table, element, this); - - return this.childPopup; - } -} - -class Module extends CoreFeature{ - - constructor(table, name){ - super(table); - - this._handler = null; - } - - initialize(){ - // setup module when table is initialized, to be overridden in module - } - - - /////////////////////////////////// - ////// Options Registration /////// - /////////////////////////////////// - - registerTableOption(key, value){ - this.table.optionsList.register(key, value); - } - - registerColumnOption(key, value){ - this.table.columnManager.optionsList.register(key, value); - } - - /////////////////////////////////// - /// Public Function Registration /// - /////////////////////////////////// - - registerTableFunction(name, func){ - if(typeof this.table[name] === "undefined"){ - this.table[name] = (...args) => { - this.table.initGuard(name); - - return func(...args); - }; - }else { - console.warn("Unable to bind table function, name already in use", name); - } - } - - registerComponentFunction(component, func, handler){ - return this.table.componentFunctionBinder.bind(component, func, handler); - } - - /////////////////////////////////// - ////////// Data Pipeline ////////// - /////////////////////////////////// - - registerDataHandler(handler, priority){ - this.table.rowManager.registerDataPipelineHandler(handler, priority); - this._handler = handler; - } - - registerDisplayHandler(handler, priority){ - this.table.rowManager.registerDisplayPipelineHandler(handler, priority); - this._handler = handler; - } - - displayRows(adjust){ - var index = this.table.rowManager.displayRows.length - 1, - lookupIndex; - - if(this._handler){ - lookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => { - return item.handler === this._handler; - }); - - if(lookupIndex > -1){ - index = lookupIndex; - } - } - - if(adjust){ - index = index + adjust; - } - - if(this._handler){ - if(index > -1){ - return this.table.rowManager.getDisplayRows(index); - }else { - return this.activeRows(); - } - } - } - - activeRows(){ - return this.table.rowManager.activeRows; - } - - refreshData(renderInPosition, handler){ - if(!handler){ - handler = this._handler; - } - - if(handler){ - this.table.rowManager.refreshActiveData(handler, false, renderInPosition); - } - } - - /////////////////////////////////// - //////// Footer Management //////// - /////////////////////////////////// - - footerAppend(element){ - return this.table.footerManager.append(element); - } - - footerPrepend(element){ - return this.table.footerManager.prepend(element); - } - - footerRemove(element){ - return this.table.footerManager.remove(element); - } - - /////////////////////////////////// - //////// Popups Management //////// - /////////////////////////////////// - - popup(menuEl, menuContainer){ - return new Popup(this.table, menuEl, menuContainer); - } - - /////////////////////////////////// - //////// Alert Management //////// - /////////////////////////////////// - - alert(content, type){ - return this.table.alertManager.alert(content, type); - } - - clearAlert(){ - return this.table.alertManager.clear(); - } - -} - -var defaultAccessors = {}; - -class Accessor extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types - - this.registerColumnOption("accessor"); - this.registerColumnOption("accessorParams"); - this.registerColumnOption("accessorData"); - this.registerColumnOption("accessorDataParams"); - this.registerColumnOption("accessorDownload"); - this.registerColumnOption("accessorDownloadParams"); - this.registerColumnOption("accessorClipboard"); - this.registerColumnOption("accessorClipboardParams"); - this.registerColumnOption("accessorPrint"); - this.registerColumnOption("accessorPrintParams"); - this.registerColumnOption("accessorHtmlOutput"); - this.registerColumnOption("accessorHtmlOutputParams"); - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-retrieve", this.transformRow.bind(this)); - } - - //initialize column accessor - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - accessor; - - if(column.definition[key]){ - accessor = this.lookupAccessor(column.definition[key]); - - if(accessor){ - match = true; - - config[key] = { - accessor:accessor, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.accessor = config; - } - } - - lookupAccessor(value){ - var accessor = false; - - //set column accessor - switch(typeof value){ - case "string": - if(Accessor.accessors[value]){ - accessor = Accessor.accessors[value]; - }else { - console.warn("Accessor Error - No such accessor found, ignoring: ", value); - } - break; - - case "function": - accessor = value; - break; - } - - return accessor; - } - - //apply accessor to row - transformRow(row, type){ - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - rowComponent = row.getComponent(); - - //clone data object with deep copy to isolate internal data from returned result - var data = Helpers.deepClone(row.data || {}); - - this.table.columnManager.traverse(function(column){ - var value, accessor, params, colComponent; - - if(column.modules.accessor){ - - accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false; - - if(accessor){ - value = column.getFieldValue(data); - - if(value != "undefined"){ - colComponent = column.getComponent(); - params = typeof accessor.params === "function" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params; - column.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent)); - } - } - } - }); - - return data; - } -} - -//load defaults -Accessor.moduleName = "accessor"; -Accessor.accessors = defaultAccessors; - -var defaultConfig = { - method: "GET", -}; - -function generateParamsList(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; -} - -function serializeParams(params){ - var output = generateParamsList(params), - encoded = []; - - output.forEach(function(item){ - encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value)); - }); - - return encoded.join("&"); -} - -function urlBuilder(url, config, params){ - if(url){ - if(params && Object.keys(params).length){ - if(!config.method || config.method.toLowerCase() == "get"){ - config.method = "get"; - - url += (url.includes("?") ? "&" : "?") + serializeParams(params); - } - } - } - - return url; -} - -function defaultLoaderPromise(url, config, params){ - var contentType; - - return new Promise((resolve, reject) => { - //set url - url = this.urlGenerator.call(this.table, url, config, params); - - //set body content if not GET request - if(config.method.toUpperCase() != "GET"){ - contentType = typeof this.table.options.ajaxContentType === "object" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType]; - if(contentType){ - - for(var key in contentType.headers){ - if(!config.headers){ - config.headers = {}; - } - - if(typeof config.headers[key] === "undefined"){ - config.headers[key] = contentType.headers[key]; - } - } - - config.body = contentType.body.call(this, url, config, params); - - }else { - console.warn("Ajax Error - Invalid ajaxContentType value:", this.table.options.ajaxContentType); - } - } - - if(url){ - //configure headers - if(typeof config.headers === "undefined"){ - config.headers = {}; - } - - if(typeof config.headers.Accept === "undefined"){ - config.headers.Accept = "application/json"; - } - - if(typeof config.headers["X-Requested-With"] === "undefined"){ - config.headers["X-Requested-With"] = "XMLHttpRequest"; - } - - if(typeof config.mode === "undefined"){ - config.mode = "cors"; - } - - if(config.mode == "cors"){ - if(typeof config.headers["Origin"] === "undefined"){ - config.headers["Origin"] = window.location.origin; - } - - if(typeof config.credentials === "undefined"){ - config.credentials = 'same-origin'; - } - }else { - if(typeof config.credentials === "undefined"){ - config.credentials = 'include'; - } - } - - //send request - fetch(url, config) - .then((response)=>{ - if(response.ok) { - response.json() - .then((data)=>{ - resolve(data); - }).catch((error)=>{ - reject(error); - console.warn("Ajax Load Error - Invalid JSON returned", error); - }); - }else { - console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText); - reject(response); - } - }) - .catch((error)=>{ - console.error("Ajax Load Error - Connection Error: ", error); - reject(error); - }); - }else { - console.warn("Ajax Load Error - No URL Set"); - resolve([]); - } - }); -} - -function generateParamsList$1(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; -} - -var defaultContentTypeFormatters = { - "json":{ - headers:{ - 'Content-Type': 'application/json', - }, - body:function(url, config, params){ - return JSON.stringify(params); - }, - }, - "form":{ - headers:{ - }, - body:function(url, config, params){ - - var output = generateParamsList$1(params), - form = new FormData(); - - output.forEach(function(item){ - form.append(item.key, item.value); - }); - - return form; - }, - }, -}; - -class Ajax extends Module{ - - constructor(table){ - super(table); - - this.config = {}; //hold config object for ajax request - this.url = ""; //request URL - this.urlGenerator = false; - this.params = false; //request parameters - - this.loaderPromise = false; - - this.registerTableOption("ajaxURL", false); //url for ajax loading - this.registerTableOption("ajaxURLGenerator", false); - this.registerTableOption("ajaxParams", {}); //params for ajax loading - this.registerTableOption("ajaxConfig", "get"); //ajax request type - this.registerTableOption("ajaxContentType", "form"); //ajax request type - this.registerTableOption("ajaxRequestFunc", false); //promise function - - this.registerTableOption("ajaxRequesting", function(){}); - this.registerTableOption("ajaxResponse", false); - - this.contentTypeFormatters = Ajax.contentTypeFormatters; - } - - //initialize setup options - initialize(){ - this.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise; - this.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator; - - if(this.table.options.ajaxURL){ - this.setUrl(this.table.options.ajaxURL); - } - - - this.setDefaultConfig(this.table.options.ajaxConfig); - - this.registerTableFunction("getAjaxUrl", this.getUrl.bind(this)); - - this.subscribe("data-loading", this.requestDataCheck.bind(this)); - this.subscribe("data-params", this.requestParams.bind(this)); - this.subscribe("data-load", this.requestData.bind(this)); - } - - requestParams(data, config, silent, params){ - var ajaxParams = this.table.options.ajaxParams; - - if(ajaxParams){ - if(typeof ajaxParams === "function"){ - ajaxParams = ajaxParams.call(this.table); - } - - params = Object.assign(params, ajaxParams); - } - - return params; - } - - requestDataCheck(data, params, config, silent){ - return !!((!data && this.url) || typeof data === "string"); - } - - requestData(url, params, config, silent, previousData){ - var ajaxConfig; - - if(!previousData && this.requestDataCheck(url)){ - if(url){ - this.setUrl(url); - } - - ajaxConfig = this.generateConfig(config); - - return this.sendRequest(this.url, params, ajaxConfig); - }else { - return previousData; - } - } - - setDefaultConfig(config = {}){ - this.config = Object.assign({}, Ajax.defaultConfig); - - if(typeof config == "string"){ - this.config.method = config; - }else { - Object.assign(this.config, config); - } - } - - //load config object - generateConfig(config = {}){ - var ajaxConfig = Object.assign({}, this.config); - - if(typeof config == "string"){ - ajaxConfig.method = config; - }else { - Object.assign(ajaxConfig, config); - } - - return ajaxConfig; - } - - //set request url - setUrl(url){ - this.url = url; - } - - //get request url - getUrl(){ - return this.url; - } - - //send ajax request - sendRequest(url, params, config){ - if(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){ - return this.loaderPromise(url, config, params) - .then((data)=>{ - if(this.table.options.ajaxResponse){ - data = this.table.options.ajaxResponse.call(this.table, url, params, data); - } - - return data; - }); - }else { - return Promise.reject(); - } - } -} - -Ajax.moduleName = "ajax"; - -//load defaults -Ajax.defaultConfig = defaultConfig; -Ajax.defaultURLGenerator = urlBuilder; -Ajax.defaultLoaderPromise = defaultLoaderPromise; -Ajax.contentTypeFormatters = defaultContentTypeFormatters; - -var defaultPasteActions = { - replace:function(rows){ - return this.table.setData(rows); - }, - update:function(rows){ - return this.table.updateOrAddData(rows); - }, - insert:function(rows){ - return this.table.addData(rows); - }, -}; - -var defaultPasteParsers = { - table:function(clipboard){ - var data = [], - headerFindSuccess = true, - columns = this.table.columnManager.columns, - columnMap = [], - rows = []; - - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length && !(data.length === 1 && data[0].length < 2)){ - - //check if headers are present by title - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - //check if column headers are present by field - if(!headerFindSuccess){ - headerFindSuccess = true; - columnMap = []; - - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.field && value.trim() && column.field.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - if(!headerFindSuccess){ - columnMap = this.table.columnManager.columnsByIndex; - } - } - - //remove header row if found - if(headerFindSuccess){ - data.shift(); - } - - data.forEach(function(item){ - var row = {}; - - item.forEach(function(value, i){ - if(columnMap[i]){ - row[columnMap[i].field] = value; - } - }); - - rows.push(row); - }); - - return rows; - }else { - return false; - } - } -}; - -class Clipboard extends Module{ - - constructor(table){ - super(table); - - this.mode = true; - this.pasteParser = function(){}; - this.pasteAction = function(){}; - this.customSelection = false; - this.rowRange = false; - this.blocked = true; //block copy actions not originating from this command - - this.registerTableOption("clipboard", false); //enable clipboard - this.registerTableOption("clipboardCopyStyled", true); //formatted table data - this.registerTableOption("clipboardCopyConfig", false); //clipboard config - this.registerTableOption("clipboardCopyFormatter", false); //DEPRECATED - REMOVE in 5.0 - this.registerTableOption("clipboardCopyRowRange", "active"); //restrict clipboard to visible rows only - this.registerTableOption("clipboardPasteParser", "table"); //convert pasted clipboard data to rows - this.registerTableOption("clipboardPasteAction", "insert"); //how to insert pasted data into the table - - this.registerColumnOption("clipboard"); - this.registerColumnOption("titleClipboard"); - } - - initialize(){ - this.mode = this.table.options.clipboard; - - this.rowRange = this.table.options.clipboardCopyRowRange; - - if(this.mode === true || this.mode === "copy"){ - this.table.element.addEventListener("copy", (e) => { - var plain, html, list; - - if(!this.blocked){ - e.preventDefault(); - - if(this.customSelection){ - plain = this.customSelection; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - } - }else { - - list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, "clipboard"); - - html = this.table.modules.export.generateHTMLTable(list); - plain = html ? this.generatePlainContent(list) : ""; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - html = this.table.options.clipboardCopyFormatter("html", html); - } - } - - if (window.clipboardData && window.clipboardData.setData) { - window.clipboardData.setData('Text', plain); - } else if (e.clipboardData && e.clipboardData.setData) { - e.clipboardData.setData('text/plain', plain); - if(html){ - e.clipboardData.setData('text/html', html); - } - } else if (e.originalEvent && e.originalEvent.clipboardData.setData) { - e.originalEvent.clipboardData.setData('text/plain', plain); - if(html){ - e.originalEvent.clipboardData.setData('text/html', html); - } - } - - this.dispatchExternal("clipboardCopied", plain, html); - - this.reset(); - } - }); - } - - if(this.mode === true || this.mode === "paste"){ - this.table.element.addEventListener("paste", (e) => { - this.paste(e); - }); - } - - this.setPasteParser(this.table.options.clipboardPasteParser); - this.setPasteAction(this.table.options.clipboardPasteAction); - - this.registerTableFunction("copyToClipboard", this.copy.bind(this)); - } - - reset(){ - this.blocked = true; - this.customSelection = false; - } - - generatePlainContent (list) { - var output = []; - - list.forEach((row) => { - var rowData = []; - - row.columns.forEach((col) => { - var value = ""; - - if(col){ - - if(row.type === "group"){ - col.value = col.component.getKey(); - } - - if(col.value === null){ - value = ""; - }else { - switch(typeof col.value){ - case "object": - value = JSON.stringify(col.value); - break; - - case "undefined": - value = ""; - break; - - default: - value = col.value; - } - } - } - - rowData.push(value); - }); - - output.push(rowData.join("\t")); - }); - - return output.join("\n"); - } - - copy (range, internal) { - var sel, textRange; - this.blocked = false; - this.customSelection = false; - - if (this.mode === true || this.mode === "copy") { - - this.rowRange = range || this.table.options.clipboardCopyRowRange; - - if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { - range = document.createRange(); - range.selectNodeContents(this.table.element); - sel = window.getSelection(); - - if (sel.toString() && internal) { - this.customSelection = sel.toString(); - } - - sel.removeAllRanges(); - sel.addRange(range); - } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") { - textRange = document.body.createTextRange(); - textRange.moveToElementText(this.table.element); - textRange.select(); - } - - document.execCommand('copy'); - - if (sel) { - sel.removeAllRanges(); - } - } - } - - //PASTE EVENT HANDLING - setPasteAction(action){ - - switch(typeof action){ - case "string": - this.pasteAction = Clipboard.pasteActions[action]; - - if(!this.pasteAction){ - console.warn("Clipboard Error - No such paste action found:", action); - } - break; - - case "function": - this.pasteAction = action; - break; - } - } - - setPasteParser(parser){ - switch(typeof parser){ - case "string": - this.pasteParser = Clipboard.pasteParsers[parser]; - - if(!this.pasteParser){ - console.warn("Clipboard Error - No such paste parser found:", parser); - } - break; - - case "function": - this.pasteParser = parser; - break; - } - } - - paste(e){ - var data, rowData, rows; - - if(this.checkPaseOrigin(e)){ - - data = this.getPasteData(e); - - rowData = this.pasteParser.call(this, data); - - if(rowData){ - e.preventDefault(); - - if(this.table.modExists("mutator")){ - rowData = this.mutateData(rowData); - } - - rows = this.pasteAction.call(this, rowData); - - this.dispatchExternal("clipboardPasted", data, rowData, rows); - }else { - this.dispatchExternal("clipboardPasteError", data); - } - } - } - - mutateData(data){ - var output = []; - - if(Array.isArray(data)){ - data.forEach((row) => { - output.push(this.table.modules.mutator.transformRow(row, "clipboard")); - }); - }else { - output = data; - } - - return output; - } - - - checkPaseOrigin(e){ - var valid = true; - - if(e.target.tagName != "DIV" || this.table.modules.edit.currentCell){ - valid = false; - } - - return valid; - } - - getPasteData(e){ - var data; - - if (window.clipboardData && window.clipboardData.getData) { - data = window.clipboardData.getData('Text'); - } else if (e.clipboardData && e.clipboardData.getData) { - data = e.clipboardData.getData('text/plain'); - } else if (e.originalEvent && e.originalEvent.clipboardData.getData) { - data = e.originalEvent.clipboardData.getData('text/plain'); - } - - return data; - } -} - -Clipboard.moduleName = "clipboard"; - -//load defaults -Clipboard.pasteActions = defaultPasteActions; -Clipboard.pasteParsers = defaultPasteParsers; - -class CalcComponent{ - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getTable(){ - return this._row.table; - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - _getSelf(){ - return this._row; - } -} - -//public cell object -class CellComponent { - - constructor (cell){ - this._cell = cell; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name); - } - } - }); - } - - getValue(){ - return this._cell.getValue(); - } - - getOldValue(){ - return this._cell.getOldValue(); - } - - getInitialValue(){ - return this._cell.initialValue; - } - - getElement(){ - return this._cell.getElement(); - } - - getRow(){ - return this._cell.row.getComponent(); - } - - getData(transform){ - return this._cell.row.getData(transform); - } - getType(){ - return "cell"; - } - getField(){ - return this._cell.column.getField(); - } - - getColumn(){ - return this._cell.column.getComponent(); - } - - setValue(value, mutate){ - if(typeof mutate == "undefined"){ - mutate = true; - } - - this._cell.setValue(value, mutate); - } - - restoreOldValue(){ - this._cell.setValueActual(this._cell.getOldValue()); - } - - restoreInitialValue(){ - this._cell.setValueActual(this._cell.initialValue); - } - - checkHeight(){ - this._cell.checkHeight(); - } - - getTable(){ - return this._cell.table; - } - - _getSelf(){ - return this._cell; - } -} - -class Cell extends CoreFeature{ - constructor(column, row){ - super(column.table); - - this.table = column.table; - this.column = column; - this.row = row; - this.element = null; - this.value = null; - this.initialValue; - this.oldValue = null; - this.modules = {}; - - this.height = null; - this.width = null; - this.minWidth = null; - - this.component = null; - - this.loaded = false; //track if the cell has been added to the DOM yet - - this.build(); - } - - //////////////// Setup Functions ///////////////// - //generate element - build(){ - this.generateElement(); - - this.setWidth(); - - this._configureCell(); - - this.setValueActual(this.column.getFieldValue(this.row.data)); - - this.initialValue = this.value; - } - - generateElement(){ - this.element = document.createElement('div'); - this.element.className = "tabulator-cell"; - this.element.setAttribute("role", "gridcell"); - } - - _configureCell(){ - var element = this.element, - field = this.column.getField(), - vertAligns = { - top:"flex-start", - bottom:"flex-end", - middle:"center", - }, - hozAligns = { - left:"flex-start", - right:"flex-end", - center:"center", - }; - - //set text alignment - element.style.textAlign = this.column.hozAlign; - - if(this.column.vertAlign){ - element.style.display = "inline-flex"; - - element.style.alignItems = vertAligns[this.column.vertAlign] || ""; - - if(this.column.hozAlign){ - element.style.justifyContent = hozAligns[this.column.hozAlign] || ""; - } - } - - if(field){ - element.setAttribute("tabulator-field", field); - } - - //add class to cell if needed - if(this.column.definition.cssClass){ - var classNames = this.column.definition.cssClass.split(" "); - classNames.forEach((className) => { - element.classList.add(className); - }); - } - - this.dispatch("cell-init", this); - - //hide cell if not visible - if(!this.column.visible){ - this.hide(); - } - } - - //generate cell contents - _generateContents(){ - var val; - - val = this.chain("cell-format", this, null, () => { - return this.element.innerHTML = this.value; - }); - - switch(typeof val){ - case "object": - if(val instanceof Node){ - - //clear previous cell contents - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.element.appendChild(val); - }else { - this.element.innerHTML = ""; - - if(val != null){ - console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val); - } - } - break; - case "undefined": - this.element.innerHTML = ""; - break; - default: - this.element.innerHTML = val; - } - } - - cellRendered(){ - this.dispatch("cell-rendered", this); - } - - //////////////////// Getters //////////////////// - getElement(containerOnly){ - if(!this.loaded){ - this.loaded = true; - if(!containerOnly){ - this.layoutElement(); - } - } - - return this.element; - } - - getValue(){ - return this.value; - } - - getOldValue(){ - return this.oldValue; - } - - //////////////////// Actions //////////////////// - setValue(value, mutate, force){ - var changed = this.setValueProcessData(value, mutate, force); - - if(changed){ - this.dispatch("cell-value-updated", this); - - this.cellRendered(); - - if(this.column.definition.cellEdited){ - this.column.definition.cellEdited.call(this.table, this.getComponent()); - } - - this.dispatchExternal("cellEdited", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - } - } - - setValueProcessData(value, mutate, force){ - var changed = false; - - if(this.value !== value || force){ - - changed = true; - - if(mutate){ - value = this.chain("cell-value-changing", [this, value], null, value); - } - } - - this.setValueActual(value); - - if(changed){ - this.dispatch("cell-value-changed", this); - } - - return changed; - } - - setValueActual(value){ - this.oldValue = this.value; - - this.value = value; - - this.dispatch("cell-value-save-before", this); - - this.column.setFieldValue(this.row.data, value); - - this.dispatch("cell-value-save-after", this); - - if(this.loaded){ - this.layoutElement(); - } - } - - layoutElement(){ - this._generateContents(); - - this.dispatch("cell-layout", this); - } - - setWidth(){ - this.width = this.column.width; - this.element.style.width = this.column.widthStyled; - } - - clearWidth(){ - this.width = ""; - this.element.style.width = ""; - } - - getWidth(){ - return this.width || this.element.offsetWidth; - } - - setMinWidth(){ - this.minWidth = this.column.minWidth; - this.element.style.minWidth = this.column.minWidthStyled; - } - - setMaxWidth(){ - this.maxWidth = this.column.maxWidth; - this.element.style.maxWidth = this.column.maxWidthStyled; - } - - checkHeight(){ - // var height = this.element.css("height"); - this.row.reinitializeHeight(); - } - - clearHeight(){ - this.element.style.height = ""; - this.height = null; - - this.dispatch("cell-height", this, ""); - } - - setHeight(){ - this.height = this.row.height; - this.element.style.height = this.row.heightStyled; - - this.dispatch("cell-height", this, this.row.heightStyled); - } - - getHeight(){ - return this.height || this.element.offsetHeight; - } - - show(){ - this.element.style.display = this.column.vertAlign ? "inline-flex" : ""; - } - - hide(){ - this.element.style.display = "none"; - } - - delete(){ - this.dispatch("cell-delete", this); - - if(!this.table.rowManager.redrawBlock && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.column.deleteCell(this); - this.row.deleteCell(this); - this.calcs = {}; - } - - getIndex(){ - return this.row.getCellIndex(this); - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new CellComponent(this); - } - - return this.component; - } -} - -//public column object -class ColumnComponent { - constructor (column){ - this._column = column; - this.type = "ColumnComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._column.table.componentFunctionBinder.handle("column", target._column, name); - } - } - }); - } - - getElement(){ - return this._column.getElement(); - } - - getDefinition(){ - return this._column.getDefinition(); - } - - getField(){ - return this._column.getField(); - } - - getTitleDownload() { - return this._column.getTitleDownload(); - } - - getCells(){ - var cells = []; - - this._column.cells.forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - isVisible(){ - return this._column.visible; - } - - show(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.show(); - }); - }else { - this._column.show(); - } - } - - hide(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.hide(); - }); - }else { - this._column.hide(); - } - } - - toggle(){ - if(this._column.visible){ - this.hide(); - }else { - this.show(); - } - } - - delete(){ - return this._column.delete(); - } - - getSubColumns(){ - var output = []; - - if(this._column.columns.length){ - this._column.columns.forEach(function(column){ - output.push(column.getComponent()); - }); - } - - return output; - } - - getParentColumn(){ - return this._column.parent instanceof Column ? this._column.parent.getComponent() : false; - } - - _getSelf(){ - return this._column; - } - - scrollTo(position, ifVisible){ - return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible); - } - - getTable(){ - return this._column.table; - } - - move(to, after){ - var toColumn = this._column.table.columnManager.findColumn(to); - - if(toColumn){ - this._column.table.columnManager.moveColumn(this._column, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - } - - getNextColumn(){ - var nextCol = this._column.nextColumn(); - - return nextCol ? nextCol.getComponent() : false; - } - - getPrevColumn(){ - var prevCol = this._column.prevColumn(); - - return prevCol ? prevCol.getComponent() : false; - } - - updateDefinition(updates){ - return this._column.updateDefinition(updates); - } - - getWidth(){ - return this._column.getWidth(); - } - - setWidth(width){ - var result; - - if(width === true){ - result = this._column.reinitializeWidth(true); - }else { - result = this._column.setWidth(width); - } - - this._column.table.columnManager.rerenderColumns(true); - - return result; - } -} - -var defaultColumnOptions = { - "title": undefined, - "field": undefined, - "columns": undefined, - "visible": undefined, - "hozAlign": undefined, - "vertAlign": undefined, - "width": undefined, - "minWidth": 40, - "maxWidth": undefined, - "maxInitialWidth": undefined, - "cssClass": undefined, - "variableHeight": undefined, - "headerVertical": undefined, - "headerHozAlign": undefined, - "headerWordWrap": false, - "editableTitle": undefined, -}; - -class Column extends CoreFeature{ - - constructor(def, parent){ - super(parent.table); - - this.definition = def; //column definition - this.parent = parent; //hold parent object - this.type = "column"; //type of element - this.columns = []; //child columns - this.cells = []; //cells bound to this column - this.element = this.createElement(); //column header element - this.contentElement = false; - this.titleHolderElement = false; - this.titleElement = false; - this.groupElement = this.createGroupElement(); //column group holder element - this.isGroup = false; - this.hozAlign = ""; //horizontal text alignment - this.vertAlign = ""; //vert text alignment - - //multi dimensional filed handling - this.field =""; - this.fieldStructure = ""; - this.getFieldValue = ""; - this.setFieldValue = ""; - - this.titleDownload = null; - this.titleFormatterRendered = false; - - this.mapDefinitions(); - - this.setField(this.definition.field); - - this.modules = {}; //hold module variables; - - this.width = null; //column width - this.widthStyled = ""; //column width pre-styled to improve render efficiency - this.maxWidth = null; //column maximum width - this.maxWidthStyled = ""; //column maximum pre-styled to improve render efficiency - this.maxInitialWidth = null; - this.minWidth = null; //column minimum width - this.minWidthStyled = ""; //column minimum pre-styled to improve render efficiency - this.widthFixed = false; //user has specified a width for this column - - this.visible = true; //default visible state - - this.component = null; - - //initialize column - if(this.definition.columns){ - - this.isGroup = true; - - this.definition.columns.forEach((def, i) => { - var newCol = new Column(def, this); - this.attachColumn(newCol); - }); - - this.checkColumnVisibility(); - }else { - parent.registerColumnField(this); - } - - this._initialize(); - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.setAttribute("role", "columnheader"); - el.setAttribute("aria-sort", "none"); - - switch(this.table.options.columnHeaderVertAlign){ - case "middle": - el.style.justifyContent = "center"; - break; - case "bottom": - el.style.justifyContent = "flex-end"; - break; - } - - return el; - } - - createGroupElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col-group-cols"); - - return el; - } - - mapDefinitions(){ - var defaults = this.table.options.columnDefaults; - - //map columnDefaults onto column definitions - if(defaults){ - for(let key in defaults){ - if(typeof this.definition[key] === "undefined"){ - this.definition[key] = defaults[key]; - } - } - } - - this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition); - } - - checkDefinition(){ - Object.keys(this.definition).forEach((key) => { - if(Column.defaultOptionList.indexOf(key) === -1){ - console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key); - } - }); - } - - setField(field){ - this.field = field; - this.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : []; - this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData; - this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData; - } - - //register column position with column manager - registerColumnPosition(column){ - this.parent.registerColumnPosition(column); - } - - //register column position with column manager - registerColumnField(column){ - this.parent.registerColumnField(column); - } - - //trigger position registration - reRegisterPosition(){ - if(this.isGroup){ - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - }else { - this.registerColumnPosition(this); - } - } - - //build header element - _initialize(){ - var def = this.definition; - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(def.headerVertical){ - this.element.classList.add("tabulator-col-vertical"); - - if(def.headerVertical === "flip"){ - this.element.classList.add("tabulator-col-vertical-flip"); - } - } - - this.contentElement = this._buildColumnHeaderContent(); - - this.element.appendChild(this.contentElement); - - if(this.isGroup){ - this._buildGroupHeader(); - }else { - this._buildColumnHeader(); - } - - this.dispatch("column-init", this); - } - - //build header element for header - _buildColumnHeader(){ - var def = this.definition; - - this.dispatch("column-layout", this); - - //set column visibility - if(typeof def.visible != "undefined"){ - if(def.visible){ - this.show(true); - }else { - this.hide(true); - } - } - - //assign additional css classes to column header - if(def.cssClass){ - var classNames = def.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - if(def.field){ - this.element.setAttribute("tabulator-field", def.field); - } - - //set min width if present - this.setMinWidth(parseInt(def.minWidth)); - - if (def.maxInitialWidth) { - this.maxInitialWidth = parseInt(def.maxInitialWidth); - } - - if(def.maxWidth){ - this.setMaxWidth(parseInt(def.maxWidth)); - } - - this.reinitializeWidth(); - - //set horizontal text alignment - this.hozAlign = this.definition.hozAlign; - this.vertAlign = this.definition.vertAlign; - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - } - - _buildColumnHeaderContent(){ - var contentElement = document.createElement("div"); - contentElement.classList.add("tabulator-col-content"); - - this.titleHolderElement = document.createElement("div"); - this.titleHolderElement.classList.add("tabulator-col-title-holder"); - - contentElement.appendChild(this.titleHolderElement); - - this.titleElement = this._buildColumnHeaderTitle(); - - this.titleHolderElement.appendChild(this.titleElement); - - return contentElement; - } - - //build title element of column - _buildColumnHeaderTitle(){ - var def = this.definition; - - var titleHolderElement = document.createElement("div"); - titleHolderElement.classList.add("tabulator-col-title"); - - if(def.headerWordWrap){ - titleHolderElement.classList.add("tabulator-col-title-wrap"); - } - - if(def.editableTitle){ - var titleElement = document.createElement("input"); - titleElement.classList.add("tabulator-title-editor"); - - titleElement.addEventListener("click", (e) => { - e.stopPropagation(); - titleElement.focus(); - }); - - titleElement.addEventListener("change", () => { - def.title = titleElement.value; - this.dispatchExternal("columnTitleChanged", this.getComponent()); - }); - - titleHolderElement.appendChild(titleElement); - - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - titleElement.value = text || (def.title || " "); - }); - }else { - titleElement.value = def.title || " "; - } - - }else { - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - this._formatColumnHeaderTitle(titleHolderElement, text || (def.title || " ")); - }); - }else { - this._formatColumnHeaderTitle(titleHolderElement, def.title || " "); - } - } - - return titleHolderElement; - } - - _formatColumnHeaderTitle(el, title){ - var contents = this.chain("column-format", [this, title, el], null, () => { - return title; - }); - - switch(typeof contents){ - case "object": - if(contents instanceof Node){ - el.appendChild(contents); - }else { - el.innerHTML = ""; - console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents); - } - break; - case "undefined": - el.innerHTML = ""; - break; - default: - el.innerHTML = contents; - } - } - - //build header element for column group - _buildGroupHeader(){ - this.element.classList.add("tabulator-col-group"); - this.element.setAttribute("role", "columngroup"); - this.element.setAttribute("aria-title", this.definition.title); - - //asign additional css classes to column header - if(this.definition.cssClass){ - var classNames = this.definition.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - - this.element.appendChild(this.groupElement); - } - - //flat field lookup - _getFlatData(data){ - return data[this.field]; - } - - //nested field lookup - _getNestedData(data){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - dataObj = dataObj[structure[i]]; - - output = dataObj; - - if(!dataObj){ - break; - } - } - - return output; - } - - //flat field set - _setFlatData(data, value){ - if(this.field){ - data[this.field] = value; - } - } - - //nested field set - _setNestedData(data, value){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length; - - for(let i = 0; i < length; i++){ - - if(i == length -1){ - dataObj[structure[i]] = value; - }else { - if(!dataObj[structure[i]]){ - if(typeof value !== "undefined"){ - dataObj[structure[i]] = {}; - }else { - break; - } - } - - dataObj = dataObj[structure[i]]; - } - } - } - - //attach column to this group - attachColumn(column){ - if(this.groupElement){ - this.columns.push(column); - this.groupElement.appendChild(column.getElement()); - - column.columnRendered(); - }else { - console.warn("Column Warning - Column being attached to another column instead of column group"); - } - } - - //vertically align header in column - verticalAlign(alignment, height){ - - //calculate height of column header and group holder element - var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight); - // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight; - - this.element.style.height = parentHeight + "px"; - - this.dispatch("column-height", this, this.element.style.height); - - if(this.isGroup){ - this.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + "px"; - } - - //vertically align cell contents - // if(!this.isGroup && alignment !== "top"){ - // if(alignment === "bottom"){ - // this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + "px"; - // }else{ - // this.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + "px"; - // } - // } - - this.columns.forEach(function(column){ - column.verticalAlign(alignment); - }); - } - - //clear vertical alignment - clearVerticalAlign(){ - this.element.style.paddingTop = ""; - this.element.style.height = ""; - this.element.style.minHeight = ""; - this.groupElement.style.minHeight = ""; - - this.columns.forEach(function(column){ - column.clearVerticalAlign(); - }); - - this.dispatch("column-height", this, ""); - } - - //// Retrieve Column Information //// - //return column header element - getElement(){ - return this.element; - } - - //return column group element - getGroupElement(){ - return this.groupElement; - } - - //return field name - getField(){ - return this.field; - } - - getTitleDownload() { - return this.titleDownload; - } - - //return the first column in a group - getFirstColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[0].getFirstColumn(); - }else { - return false; - } - } - } - - //return the last column in a group - getLastColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[this.columns.length -1].getLastColumn(); - }else { - return false; - } - } - } - - //return all columns in a group - getColumns(traverse){ - var columns = []; - - if(traverse){ - this.columns.forEach((column) => { - columns.push(column); - - columns = columns.concat(column.getColumns(true)); - }); - }else { - columns = this.columns; - } - - return columns; - } - - //return all columns in a group - getCells(){ - return this.cells; - } - - //retrieve the top column in a group of columns - getTopColumn(){ - if(this.parent.isGroup){ - return this.parent.getTopColumn(); - }else { - return this; - } - } - - //return column definition object - getDefinition(updateBranches){ - var colDefs = []; - - if(this.isGroup && updateBranches){ - this.columns.forEach(function(column){ - colDefs.push(column.getDefinition(true)); - }); - - this.definition.columns = colDefs; - } - - return this.definition; - } - - //////////////////// Actions //////////////////// - checkColumnVisibility(){ - var visible = false; - - this.columns.forEach(function(column){ - if(column.visible){ - visible = true; - } - }); - - if(visible){ - this.show(); - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - }else { - this.hide(); - } - } - - //show column - show(silent, responsiveToggle){ - if(!this.visible){ - this.visible = true; - - this.element.style.display = ""; - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.show(); - }); - - if(!this.isGroup && this.width === null){ - this.reinitializeWidth(); - } - - this.table.columnManager.verticalAlignHeaders(); - - this.dispatch("column-show", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), true); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - //hide column - hide(silent, responsiveToggle){ - if(this.visible){ - this.visible = false; - - this.element.style.display = "none"; - - this.table.columnManager.verticalAlignHeaders(); - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.hide(); - }); - - this.dispatch("column-hide", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - matchChildWidths(){ - var childWidth = 0; - - if(this.contentElement && this.columns.length){ - this.columns.forEach(function(column){ - if(column.visible){ - childWidth += column.getWidth(); - } - }); - - this.contentElement.style.maxWidth = (childWidth - 1) + "px"; - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - } - } - - removeChild(child){ - var index = this.columns.indexOf(child); - - if(index > -1){ - this.columns.splice(index, 1); - } - - if(!this.columns.length){ - this.delete(); - } - } - - setWidth(width){ - this.widthFixed = true; - this.setWidthActual(width); - } - - setWidthActual(width){ - if(isNaN(width)){ - width = Math.floor((this.table.element.clientWidth/100) * parseInt(width)); - } - - width = Math.max(this.minWidth, width); - - if(this.maxWidth){ - width = Math.min(this.maxWidth, width); - } - - this.width = width; - this.widthStyled = width ? width + "px" : ""; - - this.element.style.width = this.widthStyled; - - if(!this.isGroup){ - this.cells.forEach(function(cell){ - cell.setWidth(); - }); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - this.dispatch("column-width", this); - } - - checkCellHeights(){ - var rows = []; - - this.cells.forEach(function(cell){ - if(cell.row.heightInitialized){ - if(cell.row.getElement().offsetParent !== null){ - rows.push(cell.row); - cell.row.clearCellHeight(); - }else { - cell.row.heightInitialized = false; - } - } - }); - - rows.forEach(function(row){ - row.calcHeight(); - }); - - rows.forEach(function(row){ - row.setCellHeight(); - }); - } - - getWidth(){ - var width = 0; - - if(this.isGroup){ - this.columns.forEach(function(column){ - if(column.visible){ - width += column.getWidth(); - } - }); - }else { - width = this.width; - } - - return width; - } - - getLeftOffset(){ - var offset = this.element.offsetLeft; - - if(this.parent.isGroup){ - offset += this.parent.getLeftOffset(); - } - - return offset; - } - - getHeight(){ - return Math.ceil(this.element.getBoundingClientRect().height); - } - - setMinWidth(minWidth){ - if(this.maxWidth && minWidth > this.maxWidth){ - minWidth = this.maxWidth; - - console.warn("the minWidth ("+ minWidth + "px) for column '" + this.field + "' cannot be bigger that its maxWidth ("+ this.maxWidthStyled + ")"); - } - - this.minWidth = minWidth; - this.minWidthStyled = minWidth ? minWidth + "px" : ""; - - this.element.style.minWidth = this.minWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMinWidth(); - }); - } - - setMaxWidth(maxWidth){ - if(this.minWidth && maxWidth < this.minWidth){ - maxWidth = this.minWidth; - - console.warn("the maxWidth ("+ maxWidth + "px) for column '" + this.field + "' cannot be smaller that its minWidth ("+ this.minWidthStyled + ")"); - } - - this.maxWidth = maxWidth; - this.maxWidthStyled = maxWidth ? maxWidth + "px" : ""; - - this.element.style.maxWidth = this.maxWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMaxWidth(); - }); - } - - delete(){ - return new Promise((resolve, reject) => { - if(this.isGroup){ - this.columns.forEach(function(column){ - column.delete(); - }); - } - - this.dispatch("column-delete", this); - - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.contentElement = false; - this.titleElement = false; - this.groupElement = false; - - if(this.parent.isGroup){ - this.parent.removeChild(this); - } - - this.table.columnManager.deregisterColumn(this); - - this.table.columnManager.rerenderColumns(true); - - resolve(); - }); - } - - columnRendered(){ - if(this.titleFormatterRendered){ - this.titleFormatterRendered(); - } - - this.dispatch("column-rendered", this); - } - - //////////////// Cell Management ///////////////// - //generate cell for this column - generateCell(row){ - var cell = new Cell(this, row); - - this.cells.push(cell); - - return cell; - } - - nextColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._nextVisibleColumn(index + 1) : false; - } - - _nextVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._nextVisibleColumn(index + 1); - } - - prevColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._prevVisibleColumn(index - 1) : false; - } - - _prevVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._prevVisibleColumn(index - 1); - } - - reinitializeWidth(force){ - this.widthFixed = false; - - //set width if present - if(typeof this.definition.width !== "undefined" && !force){ - // maxInitialWidth ignored here as width specified - this.setWidth(this.definition.width); - } - - this.dispatch("column-width-fit-before", this); - - this.fitToData(force); - - this.dispatch("column-width-fit-after", this); - } - - //set column width to maximum cell width for non group columns - fitToData(force){ - if(this.isGroup){ - return; - } - - if(!this.widthFixed){ - this.element.style.width = ""; - - this.cells.forEach((cell) => { - cell.clearWidth(); - }); - } - - var maxWidth = this.element.offsetWidth; - - if(!this.width || !this.widthFixed){ - this.cells.forEach((cell) => { - var width = cell.getWidth(); - - if(width > maxWidth){ - maxWidth = width; - } - }); - - if(maxWidth){ - var setTo = maxWidth + 1; - if (this.maxInitialWidth && !force) { - setTo = Math.min(setTo, this.maxInitialWidth); - } - this.setWidthActual(setTo); - } - } - } - - updateDefinition(updates){ - var definition; - - if(!this.isGroup){ - if(!this.parent.isGroup){ - definition = Object.assign({}, this.getDefinition()); - definition = Object.assign(definition, updates); - - return this.table.columnManager.addColumn(definition, false, this) - .then((column) => { - - if(definition.field == this.field){ - this.field = false; //clear field name to prevent deletion of duplicate column from arrays - } - - return this.delete() - .then(() => { - return column.getComponent(); - }); - - }); - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - } - - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new ColumnComponent(this); - } - - return this.component; - } -} - -Column.defaultOptionList = defaultColumnOptions; - -//public row object -class RowComponent { - - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - getIndex(){ - return this._row.getData("data")[this._row.table.options.index]; - } - - getPosition(){ - return this._row.getPosition(); - } - - watchPosition(callback){ - return this._row.watchPosition(callback); - } - - delete(){ - return this._row.delete(); - } - - scrollTo(position, ifVisible){ - return this._row.table.rowManager.scrollToRow(this._row, position, ifVisible); - } - - move(to, after){ - this._row.moveToRow(to, after); - } - - update(data){ - return this._row.updateData(data); - } - - normalizeHeight(){ - this._row.normalizeHeight(true); - } - - _getSelf(){ - return this._row; - } - - reformat(){ - return this._row.reinitialize(); - } - - getTable(){ - return this._row.table; - } - - getNextRow(){ - var row = this._row.nextRow(); - return row ? row.getComponent() : row; - } - - getPrevRow(){ - var row = this._row.prevRow(); - return row ? row.getComponent() : row; - } -} - -class Row extends CoreFeature{ - constructor (data, parent, type = "row"){ - super(parent.table); - - this.parent = parent; - this.data = {}; - this.type = type; //type of element - this.element = false; - this.modules = {}; //hold module variables; - this.cells = []; - this.height = 0; //hold element height - this.heightStyled = ""; //hold element height pre-styled to improve render efficiency - this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //hold elements outer height - this.initialized = false; //element has been rendered - this.heightInitialized = false; //element has resized cells to fit - this.position = 0; //store position of element in row list - this.positionWatchers = []; - - this.component = null; - - this.created = false; - - this.setData(data); - } - - create(){ - if(!this.created){ - this.created = true; - this.generateElement(); - } - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.setAttribute("role", "row"); - - this.element = el; - } - - getElement(){ - this.create(); - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - generateElement(){ - this.createElement(); - this.dispatch("row-init", this); - } - - generateCells(){ - this.cells = this.table.columnManager.generateCells(this); - } - - //functions to setup on first render - initialize(force, inFragment){ - this.create(); - - if(!this.initialized || force){ - - this.deleteCells(); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.dispatch("row-layout-before", this); - - this.generateCells(); - - this.initialized = true; - - this.table.columnManager.renderer.renderRowCells(this, inFragment); - - if(force){ - this.normalizeHeight(); - } - - this.dispatch("row-layout", this); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - - this.dispatch("row-layout-after", this); - }else { - this.table.columnManager.renderer.rerenderRowCells(this, inFragment); - } - } - - rendered(){ - this.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - - reinitializeHeight(){ - this.heightInitialized = false; - - if(this.element && this.element.offsetParent !== null){ - this.normalizeHeight(true); - } - } - - deinitialize(){ - this.initialized = false; - } - - deinitializeHeight(){ - this.heightInitialized = false; - } - - reinitialize(children){ - this.initialized = false; - this.heightInitialized = false; - - if(!this.manualHeight){ - this.height = 0; - this.heightStyled = ""; - } - - if(this.element && this.element.offsetParent !== null){ - this.initialize(true); - } - - this.dispatch("row-relayout", this); - } - - //get heights when doing bulk row style calcs in virtual DOM - calcHeight(force){ - var maxHeight = 0, - minHeight; - - if(this.table.options.rowHeight){ - this.height = this.table.options.rowHeight; - }else { - minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0; - - this.cells.forEach(function(cell){ - var height = cell.getHeight(); - if(height > maxHeight){ - maxHeight = height; - } - }); - - if(force){ - this.height = Math.max(maxHeight, minHeight); - }else { - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); - } - } - - this.heightStyled = this.height ? this.height + "px" : ""; - this.outerHeight = this.element.offsetHeight; - } - - //set of cells - setCellHeight(){ - this.cells.forEach(function(cell){ - cell.setHeight(); - }); - - this.heightInitialized = true; - } - - clearCellHeight(){ - this.cells.forEach(function(cell){ - cell.clearHeight(); - }); - } - - //normalize the height of elements in the row - normalizeHeight(force){ - if(force && !this.table.options.rowHeight){ - this.clearCellHeight(); - } - - this.calcHeight(force); - - this.setCellHeight(); - } - - //set height of rows - setHeight(height, force){ - if(this.height != height || force){ - - this.manualHeight = true; - - this.height = height; - this.heightStyled = height ? height + "px" : ""; - - this.setCellHeight(); - - // this.outerHeight = this.element.outerHeight(); - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - //return rows outer Width - getWidth(){ - return this.element.offsetWidth; - } - - //////////////// Cell Management ///////////////// - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Data Management ///////////////// - setData(data){ - this.data = this.chain("row-data-init-before", [this, data], undefined, data); - - this.dispatch("row-data-init-after", this); - } - - //update the rows data - updateData(updatedData){ - var visible = this.element && Helpers.elVisible(this.element), - tempData = {}, - newRowData; - - return new Promise((resolve, reject) => { - - if(typeof updatedData === "string"){ - updatedData = JSON.parse(updatedData); - } - - this.dispatch("row-data-save-before", this); - - if(this.subscribed("row-data-changing")){ - tempData = Object.assign(tempData, this.data); - tempData = Object.assign(tempData, updatedData); - } - - newRowData = this.chain("row-data-changing", [this, tempData, updatedData], null, updatedData); - - //set data - for (let attrname in newRowData) { - this.data[attrname] = newRowData[attrname]; - } - - this.dispatch("row-data-save-after", this); - - //update affected cells only - for (let attrname in updatedData) { - - let columns = this.table.columnManager.getColumnsByFieldRoot(attrname); - - columns.forEach((column) => { - let cell = this.getCell(column.getField()); - - if(cell){ - let value = column.getFieldValue(newRowData); - if(cell.getValue() !== value){ - cell.setValueProcessData(value); - - if(visible){ - cell.cellRendered(); - } - } - } - }); - } - - //Partial reinitialization if visible - if(visible){ - this.normalizeHeight(true); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - }else { - this.initialized = false; - this.height = 0; - this.heightStyled = ""; - } - - this.dispatch("row-data-changed", this, visible, updatedData); - - //this.reinitialize(); - - this.dispatchExternal("rowUpdated", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - resolve(); - }); - } - - getData(transform){ - if(transform){ - return this.chain("row-data-retrieve", [this, transform], null, this.data); - } - - return this.data; - } - - getCell(column){ - var match = false; - - column = this.table.columnManager.findColumn(column); - - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - match = this.cells.find(function(cell){ - return cell.column === column; - }); - - return match; - } - - getCellIndex(findCell){ - return this.cells.findIndex(function(cell){ - return cell === findCell; - }); - } - - findCell(subject){ - return this.cells.find((cell) => { - return cell.element === subject; - }); - } - - getCells(){ - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - return this.cells; - } - - nextRow(){ - var row = this.table.rowManager.nextDisplayRow(this, true); - return row || false; - } - - prevRow(){ - var row = this.table.rowManager.prevDisplayRow(this, true); - return row || false; - } - - moveToRow(to, before){ - var toRow = this.table.rowManager.findRow(to); - - if(toRow){ - this.table.rowManager.moveRowActual(this, toRow, !before); - this.table.rowManager.refreshActiveData("display", false, true); - }else { - console.warn("Move Error - No matching row found:", to); - } - } - - ///////////////////// Actions ///////////////////// - delete(){ - this.dispatch("row-delete", this); - - this.deleteActual(); - - return Promise.resolve(); - } - - deleteActual(blockRedraw){ - this.detachModules(); - - this.table.rowManager.deleteRow(this, blockRedraw); - - this.deleteCells(); - - this.initialized = false; - this.heightInitialized = false; - this.element = false; - - this.dispatch("row-deleted", this); - } - - detachModules(){ - this.dispatch("row-deleting", this); - } - - deleteCells(){ - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - } - - wipe(){ - this.detachModules(); - this.deleteCells(); - - if(this.element){ - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - this.element = false; - this.modules = {}; - } - - isDisplayed(){ - return this.table.rowManager.getDisplayRows().includes(this); - } - - getPosition(){ - return this.isDisplayed() ? this.position : false; - } - - setPosition(position){ - if(position != this.position){ - this.position = position; - - this.positionWatchers.forEach((callback) => { - callback(this.position); - }); - } - } - - watchPosition(callback){ - this.positionWatchers.push(callback); - - callback(this.position); - } - - getGroup(){ - return this.modules.group || false; - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new RowComponent(this); - } - - return this.component; - } -} - -var defaultCalculations = { - "avg":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2; - - if(values.length){ - output = values.reduce(function(sum, value){ - return Number(sum) + Number(value); - }); - - output = output / values.length; - - output = precision !== false ? output.toFixed(precision) : output; - } - - return parseFloat(output).toString(); - }, - "max":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value > output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "min":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value < output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "sum":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - if(values.length){ - values.forEach(function(value){ - value = Number(value); - - output += !isNaN(value) ? Number(value) : 0; - }); - } - - return precision !== false ? output.toFixed(precision) : output; - }, - "concat":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - output = values.reduce(function(sum, value){ - return String(sum) + String(value); - }); - } - - return output; - }, - "count":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - values.forEach(function(value){ - if(value){ - output ++; - } - }); - } - - return output; - }, - "unique":function(values, data, calcParams){ - var unique = values.filter((value, index) => { - return (values || value === 0) && values.indexOf(value) === index; - }); - - return unique.length; - }, -}; - -class ColumnCalcs extends Module{ - - constructor(table){ - super(table); - - this.topCalcs = []; - this.botCalcs = []; - this.genColumn = false; - this.topElement = this.createElement(); - this.botElement = this.createElement(); - this.topRow = false; - this.botRow = false; - this.topInitialized = false; - this.botInitialized = false; - - this.blocked = false; - this.recalcAfterBlock = false; - - this.registerTableOption("columnCalcs", true); - - this.registerColumnOption("topCalc"); - this.registerColumnOption("topCalcParams"); - this.registerColumnOption("topCalcFormatter"); - this.registerColumnOption("topCalcFormatterParams"); - this.registerColumnOption("bottomCalc"); - this.registerColumnOption("bottomCalcParams"); - this.registerColumnOption("bottomCalcFormatter"); - this.registerColumnOption("bottomCalcFormatterParams"); - } - - createElement (){ - var el = document.createElement("div"); - el.classList.add("tabulator-calcs-holder"); - return el; - } - - initialize(){ - this.genColumn = new Column({field:"value"}, this); - - this.subscribe("cell-value-changed", this.cellValueChanged.bind(this)); - this.subscribe("column-init", this.initializeColumnCheck.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("column-moved", this.recalcActiveRows.bind(this)); - this.subscribe("column-add", this.recalcActiveRows.bind(this)); - this.subscribe("data-refreshed", this.recalcActiveRowsRefresh.bind(this)); - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - - this.subscribe("redraw-blocked", this.blockRedraw.bind(this)); - this.subscribe("redraw-restored", this.restoreRedraw.bind(this)); - - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - - this.registerTableFunction("getCalcResults", this.getResults.bind(this)); - this.registerTableFunction("recalc", this.userRecalc.bind(this)); - - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - - tableRedraw(force){ - this.recalc(this.table.rowManager.activeRows); - - if(force){ - this.redraw(); - } - } - - blockRedraw(){ - this.blocked = true; - this.recalcAfterBlock = false; - } - - - restoreRedraw(){ - this.blocked = false; - - if(this.recalcAfterBlock){ - this.recalcAfterBlock = false; - this.recalcActiveRowsRefresh(); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - userRecalc(){ - this.recalc(this.table.rowManager.activeRows); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - blockCheck(){ - if(this.blocked){ - this.recalcAfterBlock = true; - } - - return this.blocked; - } - - visibleRows(viewable, rows){ - if(this.topRow){ - rows.unshift(this.topRow); - } - - if(this.botRow){ - rows.push(this.botRow); - } - - return rows; - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.recalcRowGroup(row); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRowsRefresh(){ - if(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){ - this.recalcAll(); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRows(){ - this.recalc(this.table.rowManager.activeRows); - } - - cellValueChanged(cell){ - if(cell.column.definition.topCalc || cell.column.definition.bottomCalc){ - if(this.table.options.groupBy){ - if(this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both"){ - this.recalcActiveRows(); - } - - if(this.table.options.columnCalcs != "table"){ - this.recalcRowGroup(cell.row); - } - }else { - this.recalcActiveRows(); - } - } - } - - initializeColumnCheck(column){ - if(column.definition.topCalc || column.definition.bottomCalc){ - this.initializeColumn(column); - } - } - - //initialize column calcs - initializeColumn(column){ - var def = column.definition; - - var config = { - topCalcParams:def.topCalcParams || {}, - botCalcParams:def.bottomCalcParams || {}, - }; - - if(def.topCalc){ - - switch(typeof def.topCalc){ - case "string": - if(ColumnCalcs.calculations[def.topCalc]){ - config.topCalc = ColumnCalcs.calculations[def.topCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc); - } - break; - - case "function": - config.topCalc = def.topCalc; - break; - - } - - if(config.topCalc){ - column.modules.columnCalcs = config; - this.topCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeTopRow(); - } - } - - } - - if(def.bottomCalc){ - switch(typeof def.bottomCalc){ - case "string": - if(ColumnCalcs.calculations[def.bottomCalc]){ - config.botCalc = ColumnCalcs.calculations[def.bottomCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc); - } - break; - - case "function": - config.botCalc = def.bottomCalc; - break; - - } - - if(config.botCalc){ - column.modules.columnCalcs = config; - this.botCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeBottomRow(); - } - } - } - - } - - //dummy functions to handle being mock column manager - registerColumnField(){} - - removeCalcs(){ - var changed = false; - - if(this.topInitialized){ - this.topInitialized = false; - this.topElement.parentNode.removeChild(this.topElement); - changed = true; - } - - if(this.botInitialized){ - this.botInitialized = false; - this.footerRemove(this.botElement); - changed = true; - } - - if(changed){ - this.table.rowManager.adjustTableSize(); - } - } - - reinitializeCalcs(){ - if(this.topCalcs.length){ - this.initializeTopRow(); - } - - if(this.botCalcs.length){ - this.initializeBottomRow(); - } - } - - initializeTopRow(){ - if(!this.topInitialized){ - this.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling); - this.topInitialized = true; - } - } - - initializeBottomRow(){ - if(!this.botInitialized){ - this.footerPrepend(this.botElement); - this.botInitialized = true; - } - } - - scrollHorizontal(left){ - if(this.botInitialized && this.botRow){ - this.botElement.scrollLeft = left; - } - } - - recalc(rows){ - var data, row; - - if(!this.blockCheck()){ - if(this.topInitialized || this.botInitialized){ - data = this.rowsToData(rows); - - if(this.topInitialized){ - if(this.topRow){ - this.topRow.deleteCells(); - } - - row = this.generateRow("top", data); - this.topRow = row; - while(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild); - this.topElement.appendChild(row.getElement()); - row.initialize(true); - } - - if(this.botInitialized){ - if(this.botRow){ - this.botRow.deleteCells(); - } - - row = this.generateRow("bottom", data); - this.botRow = row; - while(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild); - this.botElement.appendChild(row.getElement()); - row.initialize(true); - } - - this.table.rowManager.adjustTableSize(); - - //set resizable handles - if(this.table.modExists("frozenColumns")){ - this.table.modules.frozenColumns.layout(); - } - } - } - } - - recalcRowGroup(row){ - this.recalcGroup(this.table.modules.groupRows.getRowGroup(row)); - } - - recalcAll(){ - if(this.topCalcs.length || this.botCalcs.length){ - if(this.table.options.columnCalcs !== "group"){ - this.recalcActiveRows(); - } - - if(this.table.options.groupBy && this.table.options.columnCalcs !== "table"){ - - var groups = this.table.modules.groupRows.getChildGroups(); - - groups.forEach((group) => { - this.recalcGroup(group); - }); - } - } - } - - recalcGroup(group){ - var data, rowData; - - if(!this.blockCheck()){ - if(group){ - if(group.calcs){ - if(group.calcs.bottom){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("bottom", data); - - group.calcs.bottom.updateData(rowData); - group.calcs.bottom.reinitialize(); - } - - if(group.calcs.top){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("top", data); - - group.calcs.top.updateData(rowData); - group.calcs.top.reinitialize(); - } - } - } - } - } - - //generate top stats row - generateTopRow(rows){ - return this.generateRow("top", this.rowsToData(rows)); - } - //generate bottom stats row - generateBottomRow(rows){ - return this.generateRow("bottom", this.rowsToData(rows)); - } - - rowsToData(rows){ - var data = []; - - rows.forEach((row) => { - data.push(row.getData()); - - if(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){ - if(row.modules.dataTree && row.modules.dataTree.open){ - var children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row)); - data = data.concat(children); - } - } - }); - - return data; - } - - //generate stats row - generateRow(pos, data){ - var rowData = this.generateRowData(pos, data), - row; - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.disable(); - } - - row = new Row(rowData, this, "calc"); - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.enable(); - } - - row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos); - - row.component = false; - - row.getComponent = () => { - if(!row.component){ - row.component = new CalcComponent(row); - } - - return row.component; - }; - - row.generateCells = () => { - - var cells = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - - //set field name of mock column - this.genColumn.setField(column.getField()); - this.genColumn.hozAlign = column.hozAlign; - - if(column.definition[pos + "CalcFormatter"] && this.table.modExists("format")){ - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]), - params: column.definition[pos + "CalcFormatterParams"] || {}, - }; - }else { - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter("plaintext"), - params:{} - }; - } - - //ensure css class definition is replicated to calculation cell - this.genColumn.definition.cssClass = column.definition.cssClass; - - //generate cell and assign to correct column - var cell = new Cell(this.genColumn, row); - cell.getElement(); - cell.column = column; - cell.setWidth(); - - column.cells.push(cell); - cells.push(cell); - - if(!column.visible){ - cell.hide(); - } - }); - - row.cells = cells; - }; - - return row; - } - - //generate stats row - generateRowData(pos, data){ - var rowData = {}, - calcs = pos == "top" ? this.topCalcs : this.botCalcs, - type = pos == "top" ? "topCalc" : "botCalc", - params, paramKey; - - calcs.forEach(function(column){ - var values = []; - - if(column.modules.columnCalcs && column.modules.columnCalcs[type]){ - data.forEach(function(item){ - values.push(column.getFieldValue(item)); - }); - - paramKey = type + "Params"; - params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey]; - - column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params)); - } - }); - - return rowData; - } - - hasTopCalcs(){ - return !!(this.topCalcs.length); - } - - hasBottomCalcs(){ - return !!(this.botCalcs.length); - } - - //handle table redraw - redraw(){ - if(this.topRow){ - this.topRow.normalizeHeight(true); - } - if(this.botRow){ - this.botRow.normalizeHeight(true); - } - } - - //return the calculated - getResults(){ - var results = {}, - groups; - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - groups = this.table.modules.groupRows.getGroups(true); - - groups.forEach((group) => { - results[group.getKey()] = this.getGroupResults(group); - }); - }else { - results = { - top: this.topRow ? this.topRow.getData() : {}, - bottom: this.botRow ? this.botRow.getData() : {}, - }; - } - - return results; - } - - //get results from a group - getGroupResults(group){ - var groupObj = group._getSelf(), - subGroups = group.getSubGroups(), - subGroupResults = {}, - results = {}; - - subGroups.forEach((subgroup) => { - subGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup); - }); - - results = { - top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {}, - bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {}, - groups: subGroupResults, - }; - - return results; - } - - adjustForScrollbar(width){ - if(this.botRow){ - if(this.table.rtl){ - this.botElement.style.paddingLeft = width + "px"; - }else { - this.botElement.style.paddingRight = width + "px"; - } - } - } -} - -ColumnCalcs.moduleName = "columnCalcs"; - -//load defaults -ColumnCalcs.calculations = defaultCalculations; - -class DataTree extends Module{ - - constructor(table){ - super(table); - - this.indent = 10; - this.field = ""; - this.collapseEl = null; - this.expandEl = null; - this.branchEl = null; - this.elementField = false; - - this.startOpen = function(){}; - - this.registerTableOption("dataTree", false); //enable data tree - this.registerTableOption("dataTreeFilter", true); //filter child rows - this.registerTableOption("dataTreeSort", true); //sort child rows - this.registerTableOption("dataTreeElementColumn", false); - this.registerTableOption("dataTreeBranchElement", true);//show data tree branch element - this.registerTableOption("dataTreeChildIndent", 9); //data tree child indent in px - this.registerTableOption("dataTreeChildField", "_children");//data tre column field to look for child rows - this.registerTableOption("dataTreeCollapseElement", false);//data tree row collapse element - this.registerTableOption("dataTreeExpandElement", false);//data tree row expand element - this.registerTableOption("dataTreeStartExpanded", false); - this.registerTableOption("dataTreeChildColumnCalcs", false);//include visible data tree rows in column calculations - this.registerTableOption("dataTreeSelectPropagate", false);//selecting a parent row selects its children - - //register component functions - this.registerComponentFunction("row", "treeCollapse", this.collapseRow.bind(this)); - this.registerComponentFunction("row", "treeExpand", this.expandRow.bind(this)); - this.registerComponentFunction("row", "treeToggle", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "getTreeParent", this.getTreeParent.bind(this)); - this.registerComponentFunction("row", "getTreeChildren", this.getRowChildren.bind(this)); - this.registerComponentFunction("row", "addTreeChild", this.addTreeChildRow.bind(this)); - this.registerComponentFunction("row", "isTreeExpanded", this.isRowExpanded.bind(this)); - } - - initialize(){ - if(this.table.options.dataTree){ - var dummyEl = null, - options = this.table.options; - - this.field = options.dataTreeChildField; - this.indent = options.dataTreeChildIndent; - - if(this.options("movableRows")){ - console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"); - } - - if(options.dataTreeBranchElement){ - - if(options.dataTreeBranchElement === true){ - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch"); - }else { - if(typeof options.dataTreeBranchElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeBranchElement; - this.branchEl = dummyEl.firstChild; - }else { - this.branchEl = options.dataTreeBranchElement; - } - } - }else { - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch-empty"); - } - - if(options.dataTreeCollapseElement){ - if(typeof options.dataTreeCollapseElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeCollapseElement; - this.collapseEl = dummyEl.firstChild; - }else { - this.collapseEl = options.dataTreeCollapseElement; - } - }else { - this.collapseEl = document.createElement("div"); - this.collapseEl.classList.add("tabulator-data-tree-control"); - this.collapseEl.tabIndex = 0; - this.collapseEl.innerHTML = "
              "; - } - - if(options.dataTreeExpandElement){ - if(typeof options.dataTreeExpandElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeExpandElement; - this.expandEl = dummyEl.firstChild; - }else { - this.expandEl = options.dataTreeExpandElement; - } - }else { - this.expandEl = document.createElement("div"); - this.expandEl.classList.add("tabulator-data-tree-control"); - this.expandEl.tabIndex = 0; - this.expandEl.innerHTML = "
              "; - } - - - switch(typeof options.dataTreeStartExpanded){ - case "boolean": - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded; - }; - break; - - case "function": - this.startOpen = options.dataTreeStartExpanded; - break; - - default: - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded[index]; - }; - break; - } - - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("row-deleted", this.rowDelete.bind(this),0); - this.subscribe("row-data-changed", this.rowDataChanged.bind(this), 10); - this.subscribe("cell-value-updated", this.cellValueChanged.bind(this)); - this.subscribe("edit-cancelled", this.cellValueChanged.bind(this)); - this.subscribe("column-moving-rows", this.columnMoving.bind(this)); - this.subscribe("table-built", this.initializeElementField.bind(this)); - this.subscribe("table-redrawing", this.tableRedrawing.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 30); - } - } - - tableRedrawing(force){ - var rows; - - if(force){ - rows = this.table.rowManager.getRows(); - - rows.forEach((row) => { - this.reinitializeRowChildren(row); - }); - } - } - - initializeElementField(){ - var firstCol = this.table.columnManager.getFirstVisibleColumn(); - - this.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false); - } - - getRowChildren(row){ - return this.getTreeChildren(row, true); - } - - columnMoving(){ - var rows = []; - - this.table.rowManager.rows.forEach((row) => { - rows = rows.concat(this.getTreeChildren(row, false, true)); - }); - - return rows; - } - - rowDataChanged(row, visible, updatedData){ - if(this.redrawNeeded(updatedData)){ - this.initializeRow(row); - - if(visible){ - this.layoutRow(row); - this.refreshData(true); - } - } - } - - cellValueChanged(cell){ - var field = cell.column.getField(); - - if(field === this.elementField){ - this.layoutRow(cell.row); - } - } - - initializeRow(row){ - var childArray = row.getData()[this.field]; - var isArray = Array.isArray(childArray); - - var children = isArray || (!isArray && typeof childArray === "object" && childArray !== null); - - if(!children && row.modules.dataTree && row.modules.dataTree.branchEl){ - row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl); - } - - if(!children && row.modules.dataTree && row.modules.dataTree.controlEl){ - row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl); - } - - row.modules.dataTree = { - index: row.modules.dataTree ? row.modules.dataTree.index : 0, - open: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false, - controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false, - branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false, - parent: row.modules.dataTree ? row.modules.dataTree.parent : false, - children:children, - }; - } - - reinitializeRowChildren(row){ - var children = this.getTreeChildren(row, false, true); - - children.forEach(function(child){ - child.reinitialize(true); - }); - } - - layoutRow(row){ - var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0], - el = cell.getElement(), - config = row.modules.dataTree; - - if(config.branchEl){ - if(config.branchEl.parentNode){ - config.branchEl.parentNode.removeChild(config.branchEl); - } - config.branchEl = false; - } - - if(config.controlEl){ - if(config.controlEl.parentNode){ - config.controlEl.parentNode.removeChild(config.controlEl); - } - config.controlEl = false; - } - - this.generateControlElement(row, el); - - row.getElement().classList.add("tabulator-tree-level-" + config.index); - - if(config.index){ - if(this.branchEl){ - config.branchEl = this.branchEl.cloneNode(true); - el.insertBefore(config.branchEl, el.firstChild); - - if(this.table.rtl){ - config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px"; - }else { - config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px"; - } - }else { - - if(this.table.rtl){ - el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px"; - }else { - el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px"; - } - } - } - } - - generateControlElement(row, el){ - var config = row.modules.dataTree, - oldControl = config.controlEl; - - el = el || row.getCells()[0].getElement(); - - if(config.children !== false){ - - if(config.open){ - config.controlEl = this.collapseEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.collapseRow(row); - }); - }else { - config.controlEl = this.expandEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.expandRow(row); - }); - } - - config.controlEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - if(oldControl && oldControl.parentNode === el){ - oldControl.parentNode.replaceChild(config.controlEl,oldControl); - }else { - el.insertBefore(config.controlEl, el.firstChild); - } - } - } - - getRows(rows){ - var output = []; - - rows.forEach((row, i) => { - var config, children; - - output.push(row); - - if(row instanceof Row){ - - row.create(); - - config = row.modules.dataTree; - - if(!config.index && config.children !== false){ - children = this.getChildren(row); - - children.forEach((child) => { - child.create(); - output.push(child); - }); - } - } - }); - - return output; - } - - getChildren(row, allChildren){ - var config = row.modules.dataTree, - children = [], - output = []; - - if(config.children !== false && (config.open || allChildren)){ - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - if(this.table.modExists("sort") && this.table.options.dataTreeSort){ - this.table.modules.sort.sort(children); - } - - children.forEach((child) => { - output.push(child); - - var subChildren = this.getChildren(child); - - subChildren.forEach((sub) => { - output.push(sub); - }); - }); - } - - return output; - } - - generateChildren(row){ - var children = []; - - var childArray = row.getData()[this.field]; - - if(!Array.isArray(childArray)){ - childArray = [childArray]; - } - - childArray.forEach((childData) => { - var childRow = new Row(childData || {}, this.table.rowManager); - - childRow.create(); - - childRow.modules.dataTree.index = row.modules.dataTree.index + 1; - childRow.modules.dataTree.parent = row; - - if(childRow.modules.dataTree.children){ - childRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index); - } - children.push(childRow); - }); - - return children; - } - - expandRow(row, silent){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = true; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowExpanded", row.getComponent(), row.modules.dataTree.index); - } - } - - collapseRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = false; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowCollapsed", row.getComponent(), row.modules.dataTree.index); - } - } - - toggleRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - if(config.open){ - this.collapseRow(row); - }else { - this.expandRow(row); - } - } - } - - isRowExpanded(row){ - return row.modules.dataTree.open; - } - - getTreeParent(row){ - return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false; - } - - getTreeParentRoot(row){ - return row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row; - } - - getFilteredTreeChildren(row){ - var config = row.modules.dataTree, - output = [], children; - - if(config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(childRow); - } - }); - } - - return output; - } - - rowDelete(row){ - var parent = row.modules.dataTree.parent, - childIndex; - - if(parent){ - childIndex = this.findChildIndex(row, parent); - - if(childIndex !== false){ - parent.data[this.field].splice(childIndex, 1); - } - - if(!parent.data[this.field].length){ - delete parent.data[this.field]; - } - - this.initializeRow(parent); - this.layoutRow(parent); - } - - this.refreshData(true); - } - - addTreeChildRow(row, data, top, index){ - var childIndex = false; - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(!Array.isArray(row.data[this.field])){ - row.data[this.field] = []; - - row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index); - } - - if(typeof index !== "undefined"){ - childIndex = this.findChildIndex(index, row); - - if(childIndex !== false){ - row.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data); - } - } - - if(childIndex === false){ - if(top){ - row.data[this.field].unshift(data); - }else { - row.data[this.field].push(data); - } - } - - this.initializeRow(row); - this.layoutRow(row); - - this.refreshData(true); - } - - findChildIndex(subject, parent){ - var match = false; - - if(typeof subject == "object"){ - - if(subject instanceof Row){ - //subject is row element - match = subject.data; - }else if(subject instanceof RowComponent){ - //subject is public row component - match = subject._getSelf().data; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - if(parent.modules.dataTree){ - match = parent.modules.dataTree.children.find((childRow) => { - return childRow instanceof Row ? childRow.element === subject : false; - }); - - if(match){ - match = match.data; - } - } - }else if(subject === null){ - match = false; - } - - }else if(typeof subject == "undefined"){ - match = false; - }else { - //subject should be treated as the index of the row - match = parent.data[this.field].find((row) => { - return row.data[this.table.options.index] == subject; - }); - } - - if(match){ - - if(Array.isArray(parent.data[this.field])){ - match = parent.data[this.field].indexOf(match); - } - - if(match == -1){ - match = false; - } - } - - //catch all for any other type of input - - return match; - } - - getTreeChildren(row, component, recurse){ - var config = row.modules.dataTree, - output = []; - - if(config && config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - config.children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(component ? childRow.getComponent() : childRow); - - if(recurse){ - output = output.concat(this.getTreeChildren(childRow, component, recurse)); - } - } - }); - } - - return output; - } - - getChildField(){ - return this.field; - } - - redrawNeeded(data){ - return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false); - } -} - -DataTree.moduleName = "dataTree"; - -function csv(list, options = {}, setFileContents){ - var delimiter = options.delimiter ? options.delimiter : ",", - fileContents = [], - headers = []; - - list.forEach((row) => { - var item = []; - - switch(row.type){ - case "group": - console.warn("Download Warning - CSV downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - CSV downloader cannot process column calculations"); - break; - - case "header": - row.columns.forEach((col, i) => { - if(col && col.depth === 1){ - headers[i] = typeof col.value == "undefined" || col.value === null ? "" : ('"' + String(col.value).split('"').join('""') + '"'); - } - }); - break; - - case "row": - row.columns.forEach((col) => { - - if(col){ - - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - item.push('"' + String(col.value).split('"').join('""') + '"'); - } - }); - - fileContents.push(item.join(delimiter)); - break; - } - }); - - if(headers.length){ - fileContents.unshift(headers.join(delimiter)); - } - - fileContents = fileContents.join("\n"); - - if(options.bom){ - fileContents = "\ufeff" + fileContents; - } - - setFileContents(fileContents, "text/csv"); -} - -function json(list, options, setFileContents){ - var fileContents = []; - - list.forEach((row) => { - var item = {}; - - switch(row.type){ - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if(col){ - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(item); - break; - } - }); - - fileContents = JSON.stringify(fileContents, null, '\t'); - - setFileContents(fileContents, "application/json"); -} - -function pdf(list, options = {}, setFileContents){ - var header = [], - body = [], - autoTableParams = {}, - rowGroupStyles = options.rowGroupStyles || { - fontStyle: "bold", - fontSize: 12, - cellPadding: 6, - fillColor: 220, - }, - rowCalcStyles = options.rowCalcStyles || { - fontStyle: "bold", - fontSize: 10, - cellPadding: 4, - fillColor: 232, - }, - jsPDFParams = options.jsPDF || {}, - title = options.title ? options.title : ""; - - if(!jsPDFParams.orientation){ - jsPDFParams.orientation = options.orientation || "landscape"; - } - - if(!jsPDFParams.unit){ - jsPDFParams.unit = "pt"; - } - - //parse row list - list.forEach((row) => { - switch(row.type){ - case "header": - header.push(parseRow(row)); - break; - - case "group": - body.push(parseRow(row, rowGroupStyles)); - break; - - case "calc": - body.push(parseRow(row, rowCalcStyles)); - break; - - case "row": - body.push(parseRow(row)); - break; - } - }); - - function parseRow(row, styles){ - var rowData = []; - - row.columns.forEach((col) =>{ - var cell; - - if(col){ - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - cell = { - content:col.value, - colSpan:col.width, - rowSpan:col.height, - }; - - if(styles){ - cell.styles = styles; - } - - rowData.push(cell); - } - }); - - return rowData; - } - - - //configure PDF - var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables - - if(options.autoTable){ - if(typeof options.autoTable === "function"){ - autoTableParams = options.autoTable(doc) || {}; - }else { - autoTableParams = options.autoTable; - } - } - - if(title){ - autoTableParams.didDrawPage = function(data) { - doc.text(title, 40, 30); - }; - } - - autoTableParams.head = header; - autoTableParams.body = body; - - doc.autoTable(autoTableParams); - - if(options.documentProcessing){ - options.documentProcessing(doc); - } - - setFileContents(doc.output("arraybuffer"), "application/pdf"); -} - -function xlsx(list, options, setFileContents){ - var self = this, - sheetName = options.sheetName || "Sheet1", - workbook = XLSX.utils.book_new(), - tableFeatures = new CoreFeature(this), - compression = 'compress' in options ? options.compress : true, - writeOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression}, - output; - - writeOptions.type = 'binary'; - - workbook.SheetNames = []; - workbook.Sheets = {}; - - function generateSheet(){ - var rows = [], - merges = [], - worksheet = {}, - range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }}; - - //parse row list - list.forEach((row, i) => { - var rowData = []; - - row.columns.forEach(function(col, j){ - - if(col){ - rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value); - - if(col.width > 1 || col.height > -1){ - if(col.height > 1 || col.width > 1){ - merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}}); - } - } - }else { - rowData.push(""); - } - }); - - rows.push(rowData); - }); - - //convert rows to worksheet - XLSX.utils.sheet_add_aoa(worksheet, rows); - - worksheet['!ref'] = XLSX.utils.encode_range(range); - - if(merges.length){ - worksheet["!merges"] = merges; - } - - return worksheet; - } - - if(options.sheetOnly){ - setFileContents(generateSheet()); - return; - } - - if(options.sheets){ - for(var sheet in options.sheets){ - - if(options.sheets[sheet] === true){ - workbook.SheetNames.push(sheet); - workbook.Sheets[sheet] = generateSheet(); - }else { - - workbook.SheetNames.push(sheet); - - tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{ - type:"xlsx", - options:{sheetOnly:true}, - active:self.active, - intercept:function(data){ - workbook.Sheets[sheet] = data; - } - }); - } - } - }else { - workbook.SheetNames.push(sheetName); - workbook.Sheets[sheetName] = generateSheet(); - } - - if(options.documentProcessing){ - workbook = options.documentProcessing(workbook); - } - - //convert workbook to binary array - function s2ab(s) { - var buf = new ArrayBuffer(s.length); - var view = new Uint8Array(buf); - for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; - } - - output = XLSX.write(workbook, writeOptions); - - setFileContents(s2ab(output), "application/octet-stream"); -} - -function html(list, options, setFileContents){ - if(this.modExists("export", true)){ - setFileContents(this.modules.export.generateHTMLTable(list), "text/html"); - } -} - -function jsonLines (list, options, setFileContents) { - const fileContents = []; - - list.forEach((row) => { - const item = {}; - - switch (row.type) { - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if (col) { - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(JSON.stringify(item)); - break; - } - }); - - setFileContents(fileContents.join("\n"), "application/x-ndjson"); -} - -var defaultDownloaders = { - csv:csv, - json:json, - jsonLines:jsonLines, - pdf:pdf, - xlsx:xlsx, - html:html, -}; - -class Download extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("downloadEncoder", function(data, mimeType){ - return new Blob([data],{type:mimeType}); - }); //function to manipulate download data - this.registerTableOption("downloadReady", undefined); //warn of function deprecation - this.registerTableOption("downloadConfig", {}); //download config - this.registerTableOption("downloadRowRange", "active"); //restrict download to active rows only - - this.registerColumnOption("download"); - this.registerColumnOption("titleDownload"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.registerTableFunction("download", this.download.bind(this)); - this.registerTableFunction("downloadToTab", this.downloadToTab.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("downloadReady", "downloadEncoder"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - downloadToTab(type, filename, options, active){ - this.download(type, filename, options, active, true); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //trigger file download - download(type, filename, options, range, interceptCallback){ - var downloadFunc = false; - - function buildLink(data, mime){ - if(interceptCallback){ - if(interceptCallback === true){ - this.triggerDownload(data, mime, type, filename, true); - }else { - interceptCallback(data); - } - - }else { - this.triggerDownload(data, mime, type, filename); - } - } - - if(typeof type == "function"){ - downloadFunc = type; - }else { - if(Download.downloaders[type]){ - downloadFunc = Download.downloaders[type]; - }else { - console.warn("Download Error - No such download type found: ", type); - } - } - - if(downloadFunc){ - var list = this.generateExportList(range); - - downloadFunc.call(this.table, list , options || {}, buildLink.bind(this)); - } - } - - generateExportList(range){ - var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download"); - - //assign group header formatter - var groupHeader = this.table.options.groupHeaderDownload; - - if(groupHeader && !Array.isArray(groupHeader)){ - groupHeader = [groupHeader]; - } - - list.forEach((row) => { - var group; - - if(row.type === "group"){ - group = row.columns[0]; - - if(groupHeader && groupHeader[row.indent]){ - group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - }); - - return list; - } - - triggerDownload(data, mime, type, filename, newTab){ - var element = document.createElement('a'), - blob = this.table.options.downloadEncoder(data, mime); - - if(blob){ - if(newTab){ - window.open(window.URL.createObjectURL(blob)); - }else { - filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type); - - if(navigator.msSaveOrOpenBlob){ - navigator.msSaveOrOpenBlob(blob, filename); - }else { - element.setAttribute('href', window.URL.createObjectURL(blob)); - - //set file title - element.setAttribute('download', filename); - - //trigger download - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - - //remove temporary link element - document.body.removeChild(element); - } - } - - this.dispatchExternal("downloadComplete"); - } - } - - commsReceived(table, action, data){ - switch(action){ - case "intercept": - this.download(data.type, "", data.options, data.active, data.intercept); - break; - } - } -} - -Download.moduleName = "download"; - -//load defaults -Download.downloaders = defaultDownloaders; - -function maskInput(el, options){ - var mask = options.mask, - maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A", - maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9", - maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*"; - - function fillSymbols(index){ - var symbol = mask[index]; - if(typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){ - el.value = el.value + "" + symbol; - fillSymbols(index+1); - } - } - - el.addEventListener("keydown", (e) => { - var index = el.value.length, - char = e.key; - - if(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){ - if(index >= mask.length){ - e.preventDefault(); - e.stopPropagation(); - return false; - }else { - switch(mask[index]){ - case maskLetter: - if(char.toUpperCase() == char.toLowerCase()){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskNumber: - if(isNaN(char)){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskWildcard: - break; - - default: - if(char !== mask[index]){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - } - } - - return; - }); - - el.addEventListener("keyup", (e) => { - if(e.keyCode > 46){ - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - }); - - - if(!el.placeholder){ - el.placeholder = mask; - } - - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } -} - -//input element -function input(cell, onRendered, success, cancel, editorParams){ - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", editorParams.search ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = typeof cellValue !== "undefined" ? cellValue : ""; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} - -//resizable text area element -function textarea(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "hybrid", - value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""), - input = document.createElement("textarea"), - scrollHeight = 0; - - //create and style input - input.style.display = "block"; - input.style.padding = "2px"; - input.style.height = "100%"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.whiteSpace = "pre-wrap"; - input.style.resize = "none"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - input.scrollHeight; - input.style.height = input.scrollHeight + "px"; - cell.getRow().normalizeHeight(); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - - setTimeout(function(){ - cell.getRow().normalizeHeight(); - },300); - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - input.addEventListener("keyup", function(){ - - input.style.height = ""; - - var heightNow = input.scrollHeight; - - input.style.height = heightNow + "px"; - - if(heightNow != scrollHeight){ - scrollHeight = heightNow; - cell.getRow().normalizeHeight(); - } - }); - - input.addEventListener("keydown", function(e){ - - switch(e.keyCode){ - - case 13: - if(e.shiftKey && editorParams.shiftEnterSubmit){ - onChange(); - } - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - - break; - - case 40: //down arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart !== input.value.length)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} - -//input element with type of number -function number(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - input = document.createElement("input"); - - input.setAttribute("type", "number"); - - if(typeof editorParams.max != "undefined"){ - input.setAttribute("max", editorParams.max); - } - - if(typeof editorParams.min != "undefined"){ - input.setAttribute("min", editorParams.min); - } - - if(typeof editorParams.step != "undefined"){ - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - var blurFunc = function(e){ - onChange(); - }; - - onRendered(function () { - if(cell.getType() === "cell"){ - //submit new value on blur - input.removeEventListener("blur", blurFunc); - - input.focus({preventScroll: true}); - input.style.height = "100%"; - - //submit new value on blur - input.addEventListener("blur", blurFunc); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value !== cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} - -//input element with type of number -function range(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", "range"); - - if (typeof editorParams.max != "undefined") { - input.setAttribute("max", editorParams.max); - } - - if (typeof editorParams.min != "undefined") { - input.setAttribute("min", editorParams.min); - } - - if (typeof editorParams.step != "undefined") { - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - onRendered(function () { - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value != cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e){ - onChange(); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - } - }); - - return input; -} - -//input element -function date(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - function convertDate(value){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - return newDatetime.toFormat("yyyy-MM-dd"); - } - - input.type = "date"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.max){ - input.setAttribute("max", inputFormat ? convertDate(editorParams.max) : editorParams.max); - } - - if(editorParams.min){ - input.setAttribute("min", inputFormat ? convertDate(editorParams.min) : editorParams.min); - } - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - cellValue = convertDate(cellValue); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDate; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDate = DT.fromFormat(String(value), "yyyy-MM-dd"); - - switch(inputFormat){ - case true: - value = luxDate; - break; - - case "iso": - value = luxDate.toISO(); - break; - - default: - value = luxDate.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} - -//input element -function time(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "time"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("hh:mm"); - - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() == "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxTime = DT.fromFormat(String(value), "hh:mm"); - - switch(inputFormat){ - case true: - value = luxTime; - break; - - case "iso": - value = luxTime.toISO(); - break; - - default: - value = luxTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} - -//input element -function datetime(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "datetime-local"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("yyyy-MM-dd") + "T" + newDatetime.toFormat("hh:mm"); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDateTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDateTime = DT.fromISO(String(value)); - - switch(inputFormat){ - case true: - value = luxDateTime; - break; - - case "iso": - value = luxDateTime.toISO(); - break; - - default: - value = luxDateTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} - -class Edit{ - constructor(editor, cell, onRendered, success, cancel, editorParams){ - this.edit = editor; - this.table = editor.table; - this.cell = cell; - this.params = this._initializeParams(editorParams); - - this.data = []; - this.displayItems = []; - this.currentItems = []; - this.focusedItem = null; - - this.input = this._createInputElement(); - this.listEl = this._createListElement(); - - this.initialValues = null; - - this.isFilter = cell.getType() === "header"; - - this.filterTimeout = null; - this.filtered = false; - this.typing = false; - - this.values = []; - this.popup = null; - - this.listIteration = 0; - - this.lastAction=""; - this.filterTerm=""; - - this.blurable = true; - - this.actions = { - success:success, - cancel:cancel - }; - - this._deprecatedOptionsCheck(); - this._initializeValue(); - - onRendered(this._onRendered.bind(this)); - } - - _deprecatedOptionsCheck(){ - if(this.params.listItemFormatter){ - this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.sortValuesList){ - this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchFunc){ - this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchingPlaceholder){ - this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options"); - } - } - - _initializeValue(){ - var initialValue = this.cell.getValue(); - - if(typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined"){ - initialValue = this.params.defaultValue; - } - - this.initialValues = this.params.multiselect ? initialValue : [initialValue]; - - if(this.isFilter){ - this.input.value = this.initialValues ? this.initialValues.join(",") : ""; - this.headerFilterInitialListGen(); - } - } - - _onRendered(){ - var cellEl = this.cell.getElement(); - - function clickStop(e){ - e.stopPropagation(); - } - - if(!this.isFilter){ - this.input.style.height = "100%"; - this.input.focus({preventScroll: true}); - } - - - cellEl.addEventListener("click", clickStop); - - setTimeout(() => { - cellEl.removeEventListener("click", clickStop); - }, 1000); - - this.input.addEventListener("mousedown", this._preventPopupBlur.bind(this)); - } - - _createListElement(){ - var listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-list"); - - listEl.addEventListener("mousedown", this._preventBlur.bind(this)); - listEl.addEventListener("keydown", this._inputKeyDown.bind(this)); - - return listEl; - } - - _setListWidth(){ - var element = this.isFilter ? this.input : this.cell.getElement(); - - this.listEl.style.minWidth = element.offsetWidth + "px"; - - if(this.params.maxWidth){ - if(this.params.maxWidth === true){ - this.listEl.style.maxWidth = element.offsetWidth + "px"; - }else if(typeof this.params.maxWidth === "number"){ - this.listEl.style.maxWidth = this.params.maxWidth + "px"; - }else { - this.listEl.style.maxWidth = this.params.maxWidth; - } - } - - } - - _createInputElement(){ - var attribs = this.params.elementAttributes; - var input = document.createElement("input"); - - input.setAttribute("type", this.params.clearable ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(!this.params.autocomplete){ - input.style.cursor = "default"; - input.style.caretColor = "transparent"; - // input.readOnly = (this.edit.currentCell != false); - } - - if(attribs && typeof attribs == "object"){ - for (let key in attribs){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + attribs["+" + key]); - }else { - input.setAttribute(key, attribs[key]); - } - } - } - - if(this.params.mask){ - maskInput(input, this.params); - } - - this._bindInputEvents(input); - - return input; - } - - _initializeParams(params){ - var valueKeys = ["values", "valuesURL", "valuesLookup"], - valueCheck; - - params = Object.assign({}, params); - - params.verticalNavigation = params.verticalNavigation || "editor"; - params.placeholderLoading = typeof params.placeholderLoading === "undefined" ? "Searching ..." : params.placeholderLoading; - params.placeholderEmpty = typeof params.placeholderEmpty === "undefined" ? "No Results Found" : params.placeholderEmpty; - params.filterDelay = typeof params.filterDelay === "undefined" ? 300 : params.filterDelay; - - params.emptyValue = Object.keys(params).includes("emptyValue") ? params.emptyValue : ""; - - valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length; - - if(!valueCheck){ - console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"); - }else if(valueCheck > 1){ - console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"); - } - - if(params.autocomplete){ - if(params.multiselect){ - params.multiselect = false; - console.warn("list editor config error - multiselect option is not available when autocomplete is enabled"); - } - }else { - if(params.freetext){ - params.freetext = false; - console.warn("list editor config error - freetext option is only available when autocomplete is enabled"); - } - - if(params.filterFunc){ - params.filterFunc = false; - console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled"); - } - - if(params.filterRemote){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled"); - } - - if(params.mask){ - params.mask = false; - console.warn("list editor config error - mask option is only available when autocomplete is enabled"); - } - - if(params.allowEmpty){ - params.allowEmpty = false; - console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled"); - } - - if(params.listOnEmpty){ - params.listOnEmpty = false; - console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"); - } - } - - if(params.filterRemote && !(typeof params.valuesLookup === "function" || params.valuesURL)){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source"); - } - return params; - } - ////////////////////////////////////// - ////////// Event Handling //////////// - ////////////////////////////////////// - - _bindInputEvents(input){ - input.addEventListener("focus", this._inputFocus.bind(this)); - input.addEventListener("click", this._inputClick.bind(this)); - input.addEventListener("blur", this._inputBlur.bind(this)); - input.addEventListener("keydown", this._inputKeyDown.bind(this)); - input.addEventListener("search", this._inputSearch.bind(this)); - - if(this.params.autocomplete){ - input.addEventListener("keyup", this._inputKeyUp.bind(this)); - } - } - - - _inputFocus(e){ - this.rebuildOptionsList(); - } - - _filter(){ - if(this.params.filterRemote){ - clearTimeout(this.filterTimeout); - - this.filterTimeout = setTimeout(() => { - this.rebuildOptionsList(); - }, this.params.filterDelay); - }else { - this._filterList(); - } - } - - _inputClick(e){ - e.stopPropagation(); - } - - _inputBlur(e){ - if(this.blurable){ - if(this.popup){ - this.popup.hide(); - }else { - this._resolveValue(true); - } - } - } - - _inputSearch(){ - this._clearChoices(); - } - - _inputKeyDown(e){ - switch(e.keyCode){ - - case 38: //up arrow - this._keyUp(e); - break; - - case 40: //down arrow - this._keyDown(e); - break; - - case 37: //left arrow - case 39: //right arrow - this._keySide(e); - break; - - case 13: //enter - this._keyEnter(); - break; - - case 27: //escape - this._keyEsc(); - break; - - case 36: //home - case 35: //end - this._keyHomeEnd(e); - break; - - case 9: //tab - this._keyTab(e); - break; - - default: - this._keySelectLetter(e); - } - } - - _inputKeyUp(e){ - switch(e.keyCode){ - case 38: //up arrow - case 37: //left arrow - case 39: //up arrow - case 40: //right arrow - case 13: //enter - case 27: //escape - break; - - default: - this._keyAutoCompLetter(e); - } - } - - _preventPopupBlur(){ - if(this.popup){ - this.popup.blockHide(); - } - - setTimeout(() =>{ - if(this.popup){ - this.popup.restoreHide(); - } - }, 10); - } - - _preventBlur(){ - this.blurable = false; - - setTimeout(() =>{ - this.blurable = true; - }, 10); - } - - ////////////////////////////////////// - //////// Keyboard Navigation ///////// - ////////////////////////////////////// - - _keyTab(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem, true); - } - } - } - - _keyUp(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - this._focusItem(this.displayItems[index - 1]); - } - } - } - - _keyDown(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index < this.displayItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < this.displayItems.length - 1){ - if(index == -1){ - this._focusItem(this.displayItems[0]); - }else { - this._focusItem(this.displayItems[index + 1]); - } - } - } - } - - _keySide(e){ - if(!this.params.autocomplete){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - } - } - - _keyEnter(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem); - } - } - } - - _keyEsc(e){ - this._cancel(); - } - - _keyHomeEnd(e){ - if(this.params.autocomplete){ - //prevent table navigation while using input element - e.stopImmediatePropagation(); - } - } - - _keySelectLetter(e){ - if(!this.params.autocomplete){ - // if(this.edit.currentCell === false){ - e.preventDefault(); - // } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - this._scrollToValue(e.keyCode); - } - } - } - - _keyAutoCompLetter(e){ - this._filter(); - this.lastAction = "typing"; - this.typing = true; - } - - - _scrollToValue(char){ - clearTimeout(this.filterTimeout); - - var character = String.fromCharCode(char).toLowerCase(); - this.filterTerm += character.toLowerCase(); - - var match = this.displayItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(this.filterTerm); - }); - - if(match){ - this._focusItem(match); - } - - this.filterTimeout = setTimeout(() => { - this.filterTerm = ""; - }, 800); - } - - _focusItem(item){ - this.lastAction = "focus"; - - if(this.focusedItem && this.focusedItem.element){ - this.focusedItem.element.classList.remove("focused"); - } - - this.focusedItem = item; - - if(item && item.element){ - item.element.classList.add("focused"); - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - ////////////////////////////////////// - /////// Data List Generation ///////// - ////////////////////////////////////// - headerFilterInitialListGen(){ - this._generateOptions(true); - } - - rebuildOptionsList(){ - this._generateOptions() - .then(this._sortOptions.bind(this)) - .then(this._buildList.bind(this)) - .then(this._showList.bind(this)) - .catch((e) => { - if(!Number.isInteger(e)){ - console.error("List generation error", e); - } - }); - } - - _filterList(){ - this._buildList(this._filterOptions()); - this._showList(); - } - - _generateOptions(silent){ - var values = []; - var iteration = ++ this.listIteration; - - this.filtered = false; - - if(this.params.values){ - values = this.params.values; - }else if (this.params.valuesURL){ - values = this._ajaxRequest(this.params.valuesURL, this.input.value); - }else { - if(typeof this.params.valuesLookup === "function"){ - values = this.params.valuesLookup(this.cell, this.input.value); - }else if(this.params.valuesLookup){ - values = this._uniqueColumnValues(this.params.valuesLookupField); - } - } - - if(values instanceof Promise){ - if(!silent){ - this._addPlaceholder(this.params.placeholderLoading); - } - - return values.then() - .then((responseValues) => { - if(this.listIteration === iteration){ - return this._parseList(responseValues); - }else { - return Promise.reject(iteration); - } - }); - }else { - return Promise.resolve(this._parseList(values)); - } - } - - _addPlaceholder(contents){ - var placeholder = document.createElement("div"); - - if(typeof contents === "function"){ - contents = contents(this.cell.getComponent(), this.listEl); - } - - if(contents){ - this._clearList(); - - if(contents instanceof HTMLElement){ - placeholder = contents; - }else { - placeholder.classList.add("tabulator-edit-list-placeholder"); - placeholder.innerHTML = contents; - } - - this.listEl.appendChild(placeholder); - - this._showList(); - } - } - - _ajaxRequest(url, term){ - var params = this.params.filterRemote ? {term:term} : {}; - url = urlBuilder(url, {}, params); - - return fetch(url) - .then((response)=>{ - if(response.ok) { - return response.json() - .catch((error)=>{ - console.warn("List Ajax Load Error - Invalid JSON returned", error); - return Promise.reject(error); - }); - }else { - console.error("List Ajax Load Error - Connection Error: " + response.status, response.statusText); - return Promise.reject(response); - } - }) - .catch((error)=>{ - console.error("List Ajax Load Error - Connection Error: ", error); - return Promise.reject(error); - }); - } - - _uniqueColumnValues(field){ - var output = {}, - data = this.table.getData(this.params.valuesLookup), - column; - - if(field){ - column = this.table.columnManager.getColumnByField(field); - }else { - column = this.cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach((row) => { - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - }else { - console.warn("unable to find matching column to create select lookup list:", field); - output = []; - } - - return Object.keys(output); - } - - - _parseList(inputValues){ - var data = []; - - if(!Array.isArray(inputValues)){ - inputValues = Object.entries(inputValues).map(([key, value]) => { - return { - label:value, - value:key, - }; - }); - } - - inputValues.forEach((value) => { - if(typeof value !== "object"){ - value = { - label:value, - value:value, - }; - } - - this._parseListItem(value, data, 0); - }); - - if(!this.currentItems.length && this.params.freetext){ - this.input.value = this.initialValues; - this.typing = true; - this.lastAction = "typing"; - } - - this.data = data; - - return data; - } - - _parseListItem(option, data, level){ - var item = {}; - - if(option.options){ - item = this._parseListGroup(option, level + 1); - }else { - item = { - label:option.label, - value:option.value, - itemParams:option.itemParams, - elementAttributes: option.elementAttributes, - element:false, - selected:false, - visible:true, - level:level, - original:option, - }; - - if(this.initialValues && this.initialValues.indexOf(option.value) > -1){ - this._chooseItem(item, true); - } - } - - data.push(item); - } - - _parseListGroup(option, level){ - var item = { - label:option.label, - group:true, - itemParams:option.itemParams, - elementAttributes:option.elementAttributes, - element:false, - visible:true, - level:level, - options:[], - original:option, - }; - - option.options.forEach((child) => { - this._parseListItem(child, item.options, level); - }); - - return item; - } - - _sortOptions(options){ - var sorter; - - if(this.params.sort){ - sorter = typeof this.params.sort === "function" ? this.params.sort : this._defaultSortFunction.bind(this); - - this._sortGroup(sorter, options); - } - - return options; - } - - _sortGroup(sorter, options){ - options.sort((a,b) => { - return sorter(a.label, b.label, a.value, b.value, a.original, b.original); - }); - - options.forEach((option) => { - if(option.group){ - this._sortGroup(sorter, option.options); - } - }); - } - - _defaultSortFunction(as, bs){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var emptyAlign = 0; - - if(this.params.sort === "desc"){ - [as, bs] = [bs, as]; - } - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - return emptyAlign; - } - - _filterOptions(){ - var filterFunc = this.params.filterFunc || this._defaultFilterFunc, - term = this.input.value; - - if(term){ - this.filtered = true; - - this.data.forEach((item) => { - this._filterItem(filterFunc, term, item); - }); - }else { - this.filtered = false; - } - - return this.data; - } - - _filterItem(func, term, item){ - var matches = false; - - if(!item.group){ - item.visible = func(term, item.label, item.value, item.original); - }else { - item.options.forEach((option) => { - if(this._filterItem(func, term, option)){ - matches = true; - } - }); - - item.visible = matches; - } - - return item.visible; - } - - _defaultFilterFunc(term, label, value, item){ - term = String(term).toLowerCase(); - - if(label !== null && typeof label !== "undefined"){ - if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){ - return true; - } - } - - return false; - } - - ////////////////////////////////////// - /////////// Display List ///////////// - ////////////////////////////////////// - - _clearList(){ - while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild); - - this.displayItems = []; - } - - _buildList(data){ - this._clearList(); - - data.forEach((option) => { - this._buildItem(option); - }); - - if(!this.displayItems.length){ - this._addPlaceholder(this.params.placeholderEmpty); - } - } - - _buildItem(item){ - var el = item.element, - contents; - - if(!this.filtered || item.visible){ - - if(!el){ - el = document.createElement("div"); - el.tabIndex = 0; - - contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label; - - if(contents instanceof HTMLElement){ - el.appendChild(contents); - }else { - el.innerHTML = contents; - } - - if(item.group){ - el.classList.add("tabulator-edit-list-group"); - }else { - el.classList.add("tabulator-edit-list-item"); - } - - el.classList.add("tabulator-edit-list-group-level-" + item.level); - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes["+" + key]); - }else { - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - - if(item.group){ - el.addEventListener("click", this._groupClick.bind(this, item)); - }else { - el.addEventListener("click", this._itemClick.bind(this, item)); - } - - el.addEventListener("mousedown", this._preventBlur.bind(this)); - - item.element = el; - } - - this._styleItem(item); - - this.listEl.appendChild(el); - - if(item.group){ - item.options.forEach((option) => { - this._buildItem(option); - }); - }else { - this.displayItems.push(item); - } - } - } - - _showList(){ - var startVis = this.popup && this.popup.isVisible(); - - if(this.input.parentNode){ - if(this.params.autocomplete && this.input.value === "" && !this.params.listOnEmpty){ - if(this.popup){ - this.popup.hide(true); - } - return; - } - - this._setListWidth(); - - if(!this.popup){ - this.popup = this.edit.popup(this.listEl); - } - - this.popup.show(this.cell.getElement(), "bottom"); - - if(!startVis){ - setTimeout(() => { - this.popup.hideOnBlur(this._resolveValue.bind(this, true)); - }, 10); - } - } - } - - _styleItem(item){ - if(item && item.element){ - if(item.selected){ - item.element.classList.add("active"); - }else { - item.element.classList.remove("active"); - } - } - } - - ////////////////////////////////////// - ///////// User Interaction /////////// - ////////////////////////////////////// - - _itemClick(item, e){ - e.stopPropagation(); - - this._chooseItem(item); - } - - _groupClick(item, e){ - e.stopPropagation(); - } - - - ////////////////////////////////////// - ////// Current Item Management /////// - ////////////////////////////////////// - - _cancel(){ - this.popup.hide(true); - this.actions.cancel(); - } - - _clearChoices(){ - this.typing = true; - - this.currentItems.forEach((item) => { - item.selected = false; - this._styleItem(item); - }); - - this.currentItems = []; - - this.focusedItem = null; - } - - _chooseItem(item, silent){ - var index; - - this.typing = false; - - if(this.params.multiselect){ - index = this.currentItems.indexOf(item); - - if(index > -1){ - this.currentItems.splice(index, 1); - item.selected = false; - }else { - this.currentItems.push(item); - item.selected = true; - } - - this.input.value = this.currentItems.map(item => item.label).join(","); - - this._styleItem(item); - - }else { - this.currentItems = [item]; - item.selected = true; - - this.input.value = item.label; - - this._styleItem(item); - - if(!silent){ - this._resolveValue(); - } - } - - this._focusItem(item); - } - - _resolveValue(blur){ - var output, initialValue; - - if(this.popup){ - this.popup.hide(true); - } - - if(this.params.multiselect){ - output = this.currentItems.map(item => item.value); - }else { - if(blur && this.params.autocomplete && this.typing){ - if(this.params.freetext || (this.params.allowEmpty && this.input.value === "")){ - output = this.input.value; - }else { - this.actions.cancel(); - return; - } - }else { - if(this.currentItems[0]){ - output = this.currentItems[0].value; - }else { - initialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues; - - if(initialValue === null || typeof initialValue === "undefined" || initialValue === ""){ - output = initialValue; - }else { - output = this.params.emptyValue; - } - } - - } - } - - if(output === ""){ - output = this.params.emptyValue; - } - - this.actions.success(output); - - if(this.isFilter){ - this.initialValues = output && !Array.isArray(output) ? [output] : output; - this.currentItems = []; - } - } - -} - -function select(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The select editor has been deprecated, please use the new list editor"); - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} - -function list(cell, onRendered, success, cancel, editorParams){ - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} - -function autocomplete(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - - editorParams.autocomplete = true; - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} - -//star rating -function star(cell, onRendered, success, cancel, editorParams){ - var self = this, - element = cell.getElement(), - value = cell.getValue(), - maxStars = element.getElementsByTagName("svg").length || 5, - size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14, - stars = [], - starsHolder = document.createElement("div"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"); - - - //change star type - function starChange(val){ - stars.forEach(function(star, i){ - if(i < val){ - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-active"); - }else { - star.classList.replace("tabulator-star-inactive", "tabulator-star-active"); - } - - star.innerHTML = ''; - }else { - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-inactive"); - }else { - star.classList.replace("tabulator-star-active", "tabulator-star-inactive"); - } - - star.innerHTML = ''; - } - }); - } - - //build stars - function buildStar(i){ - - var starHolder = document.createElement("span"); - var nextStar = star.cloneNode(true); - - stars.push(nextStar); - - starHolder.addEventListener("mouseenter", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - starChange(i); - }); - - starHolder.addEventListener("mousemove", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - }); - - starHolder.addEventListener("click", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - success(i); - element.blur(); - }); - - starHolder.appendChild(nextStar); - starsHolder.appendChild(starHolder); - - } - - //handle keyboard navigation value change - function changeValue(val){ - value = val; - starChange(val); - } - - //style cell - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - //style holding element - starsHolder.style.verticalAlign = "middle"; - starsHolder.style.display = "inline-block"; - starsHolder.style.padding = "4px"; - - //style star - star.setAttribute("width", size); - star.setAttribute("height", size); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - starsHolder.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //create correct number of stars - for(var i=1;i<= maxStars;i++){ - buildStar(i); - } - - //ensure value does not exceed number of stars - value = Math.min(parseInt(value), maxStars); - - // set initial styling of stars - starChange(value); - - starsHolder.addEventListener("mousemove", function(e){ - starChange(0); - }); - - starsHolder.addEventListener("click", function(e){ - success(0); - }); - - element.addEventListener("blur", function(e){ - cancel(); - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - changeValue(value + 1); - break; - - case 37: //left arrow - changeValue(value - 1); - break; - - case 13: //enter - success(value); - break; - - case 27: //escape - cancel(); - break; - } - }); - - return starsHolder; -} - -//draggable progress bar -function progress(cell, onRendered, success, cancel, editorParams){ - var element = cell.getElement(), - max = typeof editorParams.max === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max")) || 100) : editorParams.max, - min = typeof editorParams.min === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min")) || 0) : editorParams.min, - percent = (max - min) / 100, - value = cell.getValue() || 0, - handle = document.createElement("div"), - bar = document.createElement("div"), - mouseDrag, mouseDragWidth; - - //set new value - function updateValue(){ - var style = window.getComputedStyle(element, null); - - var calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue("padding-left")) - parseInt(style.getPropertyValue("padding-right")))/100))) + min; - success(calcVal); - element.setAttribute("aria-valuenow", calcVal); - element.setAttribute("aria-label", value); - } - - //style handle - handle.style.position = "absolute"; - handle.style.right = "0"; - handle.style.top = "0"; - handle.style.bottom = "0"; - handle.style.width = "5px"; - handle.classList.add("tabulator-progress-handle"); - - //style bar - bar.style.display = "inline-block"; - bar.style.position = "relative"; - // bar.style.top = "8px"; - // bar.style.bottom = "8px"; - // bar.style.left = "4px"; - // bar.style.marginRight = "4px"; - bar.style.height = "100%"; - bar.style.backgroundColor = "#488CE9"; - bar.style.maxWidth = "100%"; - bar.style.minWidth = "0%"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - bar.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //style cell - element.style.padding = "4px 4px"; - - //make sure value is in range - value = Math.min(parseFloat(value), max); - value = Math.max(parseFloat(value), min); - - //workout percentage - value = Math.round((value - min) / percent); - // bar.style.right = value + "%"; - bar.style.width = value + "%"; - - element.setAttribute("aria-valuemin", min); - element.setAttribute("aria-valuemax", max); - - bar.appendChild(handle); - - handle.addEventListener("mousedown", function(e){ - mouseDrag = e.screenX; - mouseDragWidth = bar.offsetWidth; - }); - - handle.addEventListener("mouseover", function(){ - handle.style.cursor = "ew-resize"; - }); - - element.addEventListener("mousemove", function(e){ - if(mouseDrag){ - bar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + "px"; - } - }); - - element.addEventListener("mouseup", function(e){ - if(mouseDrag){ - e.stopPropagation(); - e.stopImmediatePropagation(); - - mouseDrag = false; - mouseDragWidth = false; - - updateValue(); - } - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth + element.clientWidth/100) + "px"; - break; - - case 37: //left arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth - element.clientWidth/100) + "px"; - break; - - case 9: //tab - case 13: //enter - updateValue(); - break; - - case 27: //escape - cancel(); - break; - - } - }); - - element.addEventListener("blur", function(){ - cancel(); - }); - - return bar; -} - -//checkbox -function tickCross(cell, onRendered, success, cancel, editorParams){ - var value = cell.getValue(), - input = document.createElement("input"), - tristate = editorParams.tristate, - indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false, - trueValueSet = Object.keys(editorParams).includes("trueValue"), - falseValueSet = Object.keys(editorParams).includes("falseValue"); - - input.setAttribute("type", "checkbox"); - input.style.marginTop = "5px"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - if(tristate && (typeof value === "undefined" || value === indetermValue || value === "")){ - indetermState = true; - input.indeterminate = true; - } - - if(this.table.browser != "firefox" && this.table.browser != "safari"){ //prevent blur issue on mac firefox - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - } - }); - } - - input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); - - function setValue(blur){ - var checkedValue = input.checked; - - if(trueValueSet && checkedValue){ - checkedValue = editorParams.trueValue; - }else if(falseValueSet && !checkedValue){ - checkedValue = editorParams.falseValue; - } - - if(tristate){ - if(!blur){ - if(input.checked && !indetermState){ - input.checked = false; - input.indeterminate = true; - indetermState = true; - return indetermValue; - }else { - indetermState = false; - return checkedValue; - } - }else { - if(indetermState){ - return indetermValue; - }else { - return checkedValue; - } - } - }else { - return checkedValue; - } - } - - //submit new value on blur - input.addEventListener("change", function(e){ - success(setValue()); - }); - - input.addEventListener("blur", function(e){ - success(setValue(true)); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - if(e.keyCode == 13){ - success(setValue()); - } - if(e.keyCode == 27){ - cancel(); - } - }); - - return input; -} - -var defaultEditors = { - input:input, - textarea:textarea, - number:number, - range:range, - date:date, - time:time, - datetime:datetime, - select:select, - list:list, - autocomplete:autocomplete, - star:star, - progress:progress, - tickCross:tickCross, -}; - -class Edit$1 extends Module{ - - constructor(table){ - super(table); - - this.currentCell = false; //hold currently editing cell - this.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening - this.recursionBlock = false; //prevent focus recursion - this.invalidEdit = false; - this.editedCells = []; - - this.editors = Edit$1.editors; - - this.registerColumnOption("editable"); - this.registerColumnOption("editor"); - this.registerColumnOption("editorParams"); - - this.registerColumnOption("cellEditing"); - this.registerColumnOption("cellEdited"); - this.registerColumnOption("cellEditCancelled"); - - this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this)); - this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this)); - this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this)); - this.registerTableFunction("navigateNext", this.navigateNext.bind(this)); - this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this)); - this.registerTableFunction("navigateRight", this.navigateRight.bind(this)); - this.registerTableFunction("navigateUp", this.navigateUp.bind(this)); - this.registerTableFunction("navigateDown", this.navigateDown.bind(this)); - - this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this)); - this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this)); - this.registerComponentFunction("cell", "edit", this.editCell.bind(this)); - this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this)); - - this.registerComponentFunction("cell", "navigatePrev", this.navigatePrev.bind(this)); - this.registerComponentFunction("cell", "navigateNext", this.navigateNext.bind(this)); - this.registerComponentFunction("cell", "navigateLeft", this.navigateLeft.bind(this)); - this.registerComponentFunction("cell", "navigateRight", this.navigateRight.bind(this)); - this.registerComponentFunction("cell", "navigateUp", this.navigateUp.bind(this)); - this.registerComponentFunction("cell", "navigateDown", this.navigateDown.bind(this)); - } - - initialize(){ - this.subscribe("cell-init", this.bindEditor.bind(this)); - this.subscribe("cell-delete", this.clearEdited.bind(this)); - this.subscribe("cell-value-changed", this.updateCellClass.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - this.subscribe("column-delete", this.columnDeleteCheck.bind(this)); - this.subscribe("row-deleting", this.rowDeleteCheck.bind(this)); - this.subscribe("row-layout", this.rowEditableCheck.bind(this)); - this.subscribe("data-refreshing", this.cancelEdit.bind(this)); - - this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined)); - this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this)); - this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined)); - this.subscribe("keybinding-nav-right", this.navigateRight.bind(this, undefined)); - this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined)); - this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined)); - } - - - /////////////////////////////////// - ////// Keybinding Functions /////// - /////////////////////////////////// - - keybindingNavigateNext(e){ - var cell = this.currentCell, - newRow = this.options("tabEndNewRow"); - - if(cell){ - if(!this.navigateNext(cell, e)){ - if(newRow){ - cell.getElement().firstChild.blur(); - - if(newRow === true){ - newRow = this.table.addRow({}); - }else { - if(typeof newRow == "function"){ - newRow = this.table.addRow(newRow(cell.row.getComponent())); - }else { - newRow = this.table.addRow(Object.assign({}, newRow)); - } - } - - newRow.then(() => { - setTimeout(() => { - cell.getComponent().navigateNext(); - }); - }); - } - } - } - } - - /////////////////////////////////// - ///////// Cell Functions ////////// - /////////////////////////////////// - - cellIsEdited(cell){ - return !! cell.modules.edit && cell.modules.edit.edited; - } - - cellCancelEdit(cell){ - if(cell === this.currentCell){ - this.table.modules.edit.cancelEdit(); - }else { - console.warn("Cancel Editor Error - This cell is not currently being edited "); - } - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - updateCellClass(cell){ - if(this.allowEdit(cell)) { - cell.getElement().classList.add("tabulator-editable"); - } - else { - cell.getElement().classList.remove("tabulator-editable"); - } - } - - clearCellEdited(cells){ - if(!cells){ - cells = this.table.modules.edit.getEditedCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.table.modules.edit.clearEdited(cell._getSelf()); - }); - } - - navigatePrev(cell = this.currentCell, e){ - var nextCell, prevRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateLeft(); - - if(nextCell){ - return true; - }else { - prevRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(prevRow){ - nextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateNext(cell = this.currentCell, e){ - var nextCell, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateRight(); - - if(nextCell){ - return true; - }else { - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextCell = this.findNextEditableCell(nextRow, -1); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateLeft(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findPrevEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateRight(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findNextEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateUp(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - navigateDown(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - findNextEditableCell(row, index){ - var nextCell = false; - - if(index < row.cells.length-1){ - for(var i = index+1; i < row.cells.length; i++){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - nextCell = cell; - break; - } - } - } - } - - return nextCell; - } - - findPrevEditableCell(row, index){ - var prevCell = false; - - if(index > 0){ - for(var i = index-1; i >= 0; i--){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - prevCell = cell; - break; - } - } - } - } - - return prevCell; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.editor !== "undefined"){ - this.initializeColumn(column); - } - } - - columnDeleteCheck(column){ - if(this.currentCell && this.currentCell.column === column){ - this.cancelEdit(); - } - } - - rowDeleteCheck(row){ - if(this.currentCell && this.currentCell.row === row){ - this.cancelEdit(); - } - } - - rowEditableCheck(row){ - row.getCells().forEach((cell) => { - if(cell.column.modules.edit && typeof cell.column.modules.edit.check === "function"){ - this.updateCellClass(cell); - } - }); - } - - //initialize column editor - initializeColumn(column){ - var config = { - editor:false, - blocked:false, - check:column.definition.editable, - params:column.definition.editorParams || {} - }; - - //set column editor - switch(typeof column.definition.editor){ - case "string": - if(this.editors[column.definition.editor]){ - config.editor = this.editors[column.definition.editor]; - }else { - console.warn("Editor Error - No such editor found: ", column.definition.editor); - } - break; - - case "function": - config.editor = column.definition.editor; - break; - - case "boolean": - if(column.definition.editor === true){ - if(typeof column.definition.formatter !== "function"){ - if(this.editors[column.definition.formatter]){ - config.editor = this.editors[column.definition.formatter]; - }else { - config.editor = this.editors["input"]; - } - }else { - console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter); - } - } - break; - } - - if(config.editor){ - column.modules.edit = config; - } - } - - getCurrentCell(){ - return this.currentCell ? this.currentCell.getComponent() : false; - } - - clearEditor(cancel){ - var cell = this.currentCell, - cellEl; - - this.invalidEdit = false; - - if(cell){ - this.currentCell = false; - - cellEl = cell.getElement(); - - this.dispatch("edit-editor-clear", cell, cancel); - - cellEl.classList.remove("tabulator-editing"); - - while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild); - - cell.row.getElement().classList.remove("tabulator-editing"); - - cell.table.element.classList.remove("tabulator-editing"); - } - } - - cancelEdit(){ - if(this.currentCell){ - var cell = this.currentCell; - var component = this.currentCell.getComponent(); - - this.clearEditor(true); - cell.setValueActual(cell.getValue()); - cell.cellRendered(); - - if(cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight){ - cell.row.normalizeHeight(true); - } - - if(cell.column.definition.cellEditCancelled){ - cell.column.definition.cellEditCancelled.call(this.table, component); - } - - this.dispatch("edit-cancelled", cell); - this.dispatchExternal("cellEditCancelled", component); - } - } - - //return a formatted value for a cell - bindEditor(cell){ - if(cell.column.modules.edit){ - var self = this, - element = cell.getElement(true); - - this.updateCellClass(cell); - element.setAttribute("tabindex", 0); - - element.addEventListener("click", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - } - }); - - element.addEventListener("mousedown", function(e){ - if (e.button === 2) { - e.preventDefault(); - }else { - self.mouseClick = true; - } - }); - - element.addEventListener("focus", function(e){ - if(!self.recursionBlock){ - self.edit(cell, e, false); - } - }); - } - } - - focusCellNoEvent(cell, block){ - this.recursionBlock = true; - - if(!(block && this.table.browser === "ie")){ - cell.getElement().focus({preventScroll: true}); - } - - this.recursionBlock = false; - } - - editCell(cell, forceEdit){ - this.focusCellNoEvent(cell); - this.edit(cell, false, forceEdit); - } - - focusScrollAdjust(cell){ - if(this.table.rowManager.getRenderMode() == "virtual"){ - var topEdge = this.table.rowManager.element.scrollTop, - bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop, - rowEl = cell.row.getElement(); - - if(rowEl.offsetTop < topEdge){ - this.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop); - }else { - if(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){ - this.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge); - } - } - - var leftEdge = this.table.rowManager.element.scrollLeft, - rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft, - cellEl = cell.getElement(); - - if(this.table.modExists("frozenColumns")){ - leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0); - rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0); - } - - if(this.table.options.renderHorizontal === "virtual"){ - leftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - rightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - } - - if(cellEl.offsetLeft < leftEdge){ - this.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft); - }else { - if(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){ - this.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge); - } - } - } - } - - allowEdit(cell) { - var check = cell.column.modules.edit ? true : false; - - if(cell.column.modules.edit){ - switch(typeof cell.column.modules.edit.check){ - case "function": - if(cell.row.initialized){ - check = cell.column.modules.edit.check(cell.getComponent()); - } - break; - - case "string": - check = !!cell.row.data[cell.column.modules.edit.check]; - break; - - case "boolean": - check = cell.column.modules.edit.check; - break; - } - } - - return check; - } - - edit(cell, e, forceEdit){ - var self = this, - allowEdit = true, - rendered = function(){}, - element = cell.getElement(), - cellEditor, component, params; - - //prevent editing if another cell is refusing to leave focus (eg. validation fail) - - if(this.currentCell){ - if(!this.invalidEdit && this.currentCell !== cell){ - this.cancelEdit(); - } - return; - } - - //handle successful value change - function success(value){ - if(self.currentCell === cell){ - var valid = self.chain("edit-success", [cell, value], true, true); - - if(valid === true || self.table.options.validationMode === "highlight"){ - self.clearEditor(); - - - if(!cell.modules.edit){ - cell.modules.edit = {}; - } - - cell.modules.edit.edited = true; - - if(self.editedCells.indexOf(cell) == -1){ - self.editedCells.push(cell); - } - - cell.setValue(value, true); - - return valid === true; - }else { - self.invalidEdit = true; - self.focusCellNoEvent(cell, true); - rendered(); - return false; - } - } - } - - //handle aborted edit - function cancel(){ - if(self.currentCell === cell){ - self.cancelEdit(); - } - } - - function onRendered(callback){ - rendered = callback; - } - - if(!cell.column.modules.edit.blocked){ - if(e){ - e.stopPropagation(); - } - - allowEdit = this.allowEdit(cell); - - if(allowEdit || forceEdit){ - - self.cancelEdit(); - - self.currentCell = cell; - - this.focusScrollAdjust(cell); - - component = cell.getComponent(); - - if(this.mouseClick){ - this.mouseClick = false; - - if(cell.column.definition.cellClick){ - cell.column.definition.cellClick.call(this.table, e, component); - } - } - - if(cell.column.definition.cellEditing){ - cell.column.definition.cellEditing.call(this.table, component); - } - - this.dispatch("cell-editing", cell); - this.dispatchExternal("cellEditing", component); - - params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params; - - cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params); - - //if editor returned, add to DOM, if false, abort edit - if(this.currentCell && cellEditor !== false){ - if(cellEditor instanceof Node){ - element.classList.add("tabulator-editing"); - cell.row.getElement().classList.add("tabulator-editing"); - cell.table.element.classList.add("tabulator-editing"); - while(element.firstChild) element.removeChild(element.firstChild); - element.appendChild(cellEditor); - - //trigger onRendered Callback - rendered(); - - //prevent editing from triggering rowClick event - var children = element.children; - - for (var i = 0; i < children.length; i++) { - children[i].addEventListener("click", function(e){ - e.stopPropagation(); - }); - } - }else { - console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor); - element.blur(); - return false; - } - }else { - element.blur(); - return false; - } - - return true; - }else { - this.mouseClick = false; - element.blur(); - return false; - } - }else { - this.mouseClick = false; - element.blur(); - return false; - } - } - - getEditedCells(){ - var output = []; - - this.editedCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearEdited(cell){ - var editIndex; - - if(cell.modules.edit && cell.modules.edit.edited){ - cell.modules.edit.edited = false; - - this.dispatch("edit-edited-clear", cell); - } - - editIndex = this.editedCells.indexOf(cell); - - if(editIndex > -1){ - this.editedCells.splice(editIndex, 1); - } - } -} - -Edit$1.moduleName = "edit"; - -//load defaults -Edit$1.editors = defaultEditors; - -class ExportRow{ - constructor(type, columns, component, indent){ - this.type = type; - this.columns = columns; - this.component = component || false; - this.indent = indent || 0; - } -} - -class ExportColumn{ - constructor(value, component, width, height, depth){ - this.value = value; - this.component = component || false; - this.width = width; - this.height = height; - this.depth = depth; - } -} - -class Export extends Module{ - - constructor(table){ - super(table); - - this.config = {}; - this.cloneTableStyle = true; - this.colVisProp = ""; - - this.registerTableOption("htmlOutputConfig", false); //html output config - - this.registerColumnOption("htmlOutput"); - this.registerColumnOption("titleHtmlOutput"); - } - - initialize(){ - this.registerTableFunction("getHtml", this.getHtml.bind(this)); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - generateExportList(config, style, range, colVisProp){ - this.cloneTableStyle = style; - this.config = config || {}; - this.colVisProp = colVisProp; - - var headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : []; - var body = this.bodyToExportRows(this.rowLookup(range)); - - return headers.concat(body); - } - - generateTable(config, style, range, colVisProp){ - var list = this.generateExportList(config, style, range, colVisProp); - - return this.generateTableElement(list); - } - - rowLookup(range){ - var rows = []; - - if(typeof range == "function"){ - range.call(this.table).forEach((row) =>{ - row = this.table.rowManager.findRow(row); - - if(row){ - rows.push(row); - } - }); - }else { - switch(range){ - case true: - case "visible": - rows = this.table.rowManager.getVisibleRows(false, true); - break; - - case "all": - rows = this.table.rowManager.rows; - break; - - case "selected": - rows = this.table.modules.selectRow.selectedRows; - break; - - case "active": - default: - if(this.table.options.pagination){ - rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2); - }else { - rows = this.table.rowManager.getDisplayRows(); - } - } - } - - return Object.assign([], rows); - } - - generateColumnGroupHeaders(){ - var output = []; - - var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex; - - columns.forEach((column) => { - var colData = this.processColumnGroup(column); - - if(colData){ - output.push(colData); - } - }); - - return output; - } - - processColumnGroup(column){ - var subGroups = column.columns, - maxDepth = 0, - title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title; - - var groupData = { - title:title, - column:column, - depth:1, - }; - - if(subGroups.length){ - groupData.subGroups = []; - groupData.width = 0; - - subGroups.forEach((subGroup) => { - var subGroupData = this.processColumnGroup(subGroup); - - if(subGroupData){ - groupData.width += subGroupData.width; - groupData.subGroups.push(subGroupData); - - if(subGroupData.depth > maxDepth){ - maxDepth = subGroupData.depth; - } - } - }); - - groupData.depth += maxDepth; - - if(!groupData.width){ - return false; - } - }else { - if(this.columnVisCheck(column)){ - groupData.width = 1; - }else { - return false; - } - } - - return groupData; - } - - columnVisCheck(column){ - var visProp = column.definition[this.colVisProp]; - - if(typeof visProp === "function"){ - visProp = visProp.call(this.table, column.getComponent()); - } - - return visProp !== false && (column.visible || (!column.visible && visProp)); - } - - headersToExportRows(columns){ - var headers = [], - headerDepth = 0, - exportRows = []; - - function parseColumnGroup(column, level){ - - var depth = headerDepth - level; - - if(typeof headers[level] === "undefined"){ - headers[level] = []; - } - - column.height = column.subGroups ? 1 : (depth - column.depth) + 1; - - headers[level].push(column); - - if(column.height > 1){ - for(let i = 1; i < column.height; i ++){ - - if(typeof headers[level + i] === "undefined"){ - headers[level + i] = []; - } - - headers[level + i].push(false); - } - } - - if(column.width > 1){ - for(let i = 1; i < column.width; i ++){ - headers[level].push(false); - } - } - - if(column.subGroups){ - column.subGroups.forEach(function(subGroup){ - parseColumnGroup(subGroup, level+1); - }); - } - } - - //calculate maximum header depth - columns.forEach(function(column){ - if(column.depth > headerDepth){ - headerDepth = column.depth; - } - }); - - columns.forEach(function(column){ - parseColumnGroup(column,0); - }); - - headers.forEach((header) => { - var columns = []; - - header.forEach((col) => { - if(col){ - let title = typeof col.title === "undefined" ? "" : col.title; - columns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth)); - }else { - columns.push(null); - } - }); - - exportRows.push(new ExportRow("header", columns)); - }); - - return exportRows; - } - - bodyToExportRows(rows){ - - var columns = []; - var exportRows = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if (this.columnVisCheck(column)) { - columns.push(column.getComponent()); - } - }); - - if(this.config.columnCalcs !== false && this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized){ - rows.unshift(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized){ - rows.push(this.table.modules.columnCalcs.botRow); - } - } - - rows = rows.filter((row) => { - switch(row.type){ - case "group": - return this.config.rowGroups !== false; - - case "calc": - return this.config.columnCalcs !== false; - - case "row": - return !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent); - } - - return true; - }); - - rows.forEach((row, i) => { - var rowData = row.getData(this.colVisProp); - var exportCols = []; - var indent = 0; - - switch(row.type){ - case "group": - indent = row.level; - exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1)); - break; - - case "calc" : - case "row" : - columns.forEach((col) => { - exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1)); - }); - - if(this.table.options.dataTree && this.config.dataTree !== false){ - indent = row.modules.dataTree.index; - } - break; - } - - exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent)); - }); - - return exportRows; - } - - generateTableElement(list){ - var table = document.createElement("table"), - headerEl = document.createElement("thead"), - bodyEl = document.createElement("tbody"), - styles = this.lookupTableStyles(), - rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))], - setup = {}; - - setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter; - - if(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists("columnCalcs")){ - setup.treeElementField = this.table.modules.dataTree.elementField; - } - - //assign group header formatter - setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))]; - - if(setup.groupHeader && !Array.isArray(setup.groupHeader)){ - setup.groupHeader = [setup.groupHeader]; - } - - table.classList.add("tabulator-print-table"); - - this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - - - if(list.length > 1000){ - console.warn("It may take a long time to render an HTML table with more than 1000 rows"); - } - - list.forEach((row, i) => { - let rowEl; - - switch(row.type){ - case "header": - headerEl.appendChild(this.generateHeaderElement(row, setup, styles)); - break; - - case "group": - bodyEl.appendChild(this.generateGroupElement(row, setup, styles)); - break; - - case "calc": - bodyEl.appendChild(this.generateCalcElement(row, setup, styles)); - break; - - case "row": - rowEl = this.generateRowElement(row, setup, styles); - - this.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - bodyEl.appendChild(rowEl); - break; - } - }); - - if(headerEl.innerHTML){ - table.appendChild(headerEl); - } - - table.appendChild(bodyEl); - - - this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]); - return table; - } - - lookupTableStyles(){ - var styles = {}; - - //lookup row styles - if(this.cloneTableStyle && window.getComputedStyle){ - styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"); - styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"); - styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs"); - styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"); - styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0]; - - if(styles.firstRow){ - styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell"); - styles.firstCell = styles.styleCells[0]; - styles.lastCell = styles.styleCells[styles.styleCells.length - 1]; - } - } - - return styles; - } - - generateHeaderElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - row.columns.forEach((column) => { - if(column){ - var cellEl = document.createElement("th"); - var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : []; - - cellEl.colSpan = column.width; - cellEl.rowSpan = column.height; - - cellEl.innerHTML = column.value; - - if(this.cloneTableStyle){ - cellEl.style.boxSizing = "border-box"; - } - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - this.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - this.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - if(column.component._column.visible){ - this.mapElementStyles(column.component.getElement(), cellEl, ["width"]); - }else { - if(column.component._column.definition.width){ - cellEl.style.width = column.component._column.definition.width + "px"; - } - } - - if(column.component._column.parent){ - this.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]); - } - - rowEl.appendChild(cellEl); - } - }); - - return rowEl; - } - - generateGroupElement(row, setup, styles){ - - var rowEl = document.createElement("tr"), - cellEl = document.createElement("td"), - group = row.columns[0]; - - rowEl.classList.add("tabulator-print-table-row"); - - if(setup.groupHeader && setup.groupHeader[row.indent]){ - group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - }else { - if(setup.groupHeader !== false){ - group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - - cellEl.colSpan = group.width; - cellEl.innerHTML = group.value; - - rowEl.classList.add("tabulator-print-table-group"); - rowEl.classList.add("tabulator-group-level-" + row.indent); - - if(group.component.isVisible()){ - rowEl.classList.add("tabulator-group-visible"); - } - - this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - rowEl.appendChild(cellEl); - - return rowEl; - } - - generateCalcElement(row, setup, styles){ - var rowEl = this.generateRowElement(row, setup, styles); - - rowEl.classList.add("tabulator-print-table-calcs"); - this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - - return rowEl; - } - - generateRowElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - rowEl.classList.add("tabulator-print-table-row"); - - row.columns.forEach((col, i) => { - if(col){ - var cellEl = document.createElement("td"), - column = col.component._column, - index = this.table.columnManager.findColumnIndex(column), - value = col.value, - cellStyle; - - var cellWrapper = { - modules:{}, - getValue:function(){ - return value; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return cellEl; - }, - getType:function(){ - return "cell"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getData:function(){ - return row.component.getData(); - }, - getRow:function(){ - return row.component; - }, - getComponent:function(){ - return cellWrapper; - }, - column:column, - }; - - var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : []; - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - if(this.table.modExists("format") && this.config.formatCells !== false){ - value = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp); - }else { - switch(typeof value){ - case "object": - value = value !== null ? JSON.stringify(value) : ""; - break; - - case "undefined": - value = ""; - break; - } - } - - if(value instanceof Node){ - cellEl.appendChild(value); - }else { - cellEl.innerHTML = value; - } - - cellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell; - - if(cellStyle){ - this.mapElementStyles(cellStyle, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]); - - if(column.definition.align){ - cellEl.style.textAlign = column.definition.align; - } - } - - if(this.table.options.dataTree && this.config.dataTree !== false){ - if((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){ - if(row.component._row.modules.dataTree.controlEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild); - } - if(row.component._row.modules.dataTree.branchEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild); - } - } - } - - rowEl.appendChild(cellEl); - - if(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){ - cellWrapper.modules.format.renderedCallback(); - } - } - }); - - if(setup.rowFormatter && row.type === "row" && this.config.formatCells !== false){ - let formatComponent = Object.assign(row.component); - - formatComponent.getElement = function(){return rowEl;}; - - setup.rowFormatter(row.component); - } - - return rowEl; - } - - generateHTMLTable(list){ - var holder = document.createElement("div"); - - holder.appendChild(this.generateTableElement(list)); - - return holder.innerHTML; - } - - getHtml(visible, style, config, colVisProp){ - var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"); - - return this.generateHTMLTable(list); - } - - mapElementStyles(from, to, props){ - if(this.cloneTableStyle && from && to){ - - var lookup = { - "background-color" : "backgroundColor", - "color" : "fontColor", - "width" : "width", - "font-weight" : "fontWeight", - "font-family" : "fontFamily", - "font-size" : "fontSize", - "text-align" : "textAlign", - "border-top" : "borderTop", - "border-left" : "borderLeft", - "border-right" : "borderRight", - "border-bottom" : "borderBottom", - "padding-top" : "paddingTop", - "padding-left" : "paddingLeft", - "padding-right" : "paddingRight", - "padding-bottom" : "paddingBottom", - }; - - if(window.getComputedStyle){ - var fromStyle = window.getComputedStyle(from); - - props.forEach(function(prop){ - if(!to.style[lookup[prop]]){ - to.style[lookup[prop]] = fromStyle.getPropertyValue(prop); - } - }); - } - } - } -} - -Export.moduleName = "export"; - -var defaultFilters = { - - //equal to - "=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal == filterVal ? true : false; - }, - - //less than - "<":function(filterVal, rowVal, rowData, filterParams){ - return rowVal < filterVal ? true : false; - }, - - //less than or equal to - "<=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal <= filterVal ? true : false; - }, - - //greater than - ">":function(filterVal, rowVal, rowData, filterParams){ - return rowVal > filterVal ? true : false; - }, - - //greater than or equal to - ">=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal >= filterVal ? true : false; - }, - - //not equal to - "!=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal != filterVal ? true : false; - }, - - "regex":function(filterVal, rowVal, rowData, filterParams){ - - if(typeof filterVal == "string"){ - filterVal = new RegExp(filterVal); - } - - return filterVal.test(rowVal); - }, - - //contains the string - "like":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1; - } - else { - return false; - } - } - }, - - //contains the keywords - "keywords":function(filterVal, rowVal, rowData, filterParams){ - var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator), - value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(), - matches = []; - - keywords.forEach((keyword) =>{ - if(value.includes(keyword)){ - matches.push(true); - } - }); - - return filterParams.matchAll ? matches.length === keywords.length : !!matches.length; - }, - - //starts with the string - "starts":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //ends with the string - "ends":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //in array - "in":function(filterVal, rowVal, rowData, filterParams){ - if(Array.isArray(filterVal)){ - return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true; - }else { - console.warn("Filter Error - filter value is not an array:", filterVal); - return false; - } - }, -}; - -class Filter extends Module{ - - constructor(table){ - super(table); - - this.filterList = []; //hold filter list - this.headerFilters = {}; //hold column filters - this.headerFilterColumns = []; //hold columns that use header filters - - this.prevHeaderFilterChangeCheck = ""; - this.prevHeaderFilterChangeCheck = "{}"; - - this.changed = false; //has filtering changed since last render - this.tableInitialized = false; - - this.registerTableOption("filterMode", "local"); //local or remote filtering - - this.registerTableOption("initialFilter", false); //initial filtering criteria - this.registerTableOption("initialHeaderFilter", false); //initial header filtering criteria - this.registerTableOption("headerFilterLiveFilterDelay", 300); //delay before updating column after user types in header filter - this.registerTableOption("placeholderHeaderFilter", false); //placeholder when header filter is empty - - this.registerColumnOption("headerFilter"); - this.registerColumnOption("headerFilterPlaceholder"); - this.registerColumnOption("headerFilterParams"); - this.registerColumnOption("headerFilterEmptyCheck"); - this.registerColumnOption("headerFilterFunc"); - this.registerColumnOption("headerFilterFuncParams"); - this.registerColumnOption("headerFilterLiveFilter"); - - this.registerTableFunction("searchRows", this.searchRows.bind(this)); - this.registerTableFunction("searchData", this.searchData.bind(this)); - - this.registerTableFunction("setFilter", this.userSetFilter.bind(this)); - this.registerTableFunction("refreshFilter", this.userRefreshFilter.bind(this)); - this.registerTableFunction("addFilter", this.userAddFilter.bind(this)); - this.registerTableFunction("getFilters", this.getFilters.bind(this)); - this.registerTableFunction("setHeaderFilterFocus", this.userSetHeaderFilterFocus.bind(this)); - this.registerTableFunction("getHeaderFilterValue", this.userGetHeaderFilterValue.bind(this)); - this.registerTableFunction("setHeaderFilterValue", this.userSetHeaderFilterValue.bind(this)); - this.registerTableFunction("getHeaderFilters", this.getHeaderFilters.bind(this)); - this.registerTableFunction("removeFilter", this.userRemoveFilter.bind(this)); - this.registerTableFunction("clearFilter", this.userClearFilter.bind(this)); - this.registerTableFunction("clearHeaderFilter", this.userClearHeaderFilter.bind(this)); - - this.registerComponentFunction("column", "headerFilterFocus", this.setHeaderFilterFocus.bind(this)); - this.registerComponentFunction("column", "reloadHeaderFilter", this.reloadHeaderFilter.bind(this)); - this.registerComponentFunction("column", "getHeaderFilterValue", this.getHeaderFilterValue.bind(this)); - this.registerComponentFunction("column", "setHeaderFilterValue", this.setHeaderFilterValue.bind(this)); - } - - initialize(){ - this.subscribe("column-init", this.initializeColumnHeaderFilter.bind(this)); - this.subscribe("column-width-fit-before", this.hideHeaderFilterElements.bind(this)); - this.subscribe("column-width-fit-after", this.showHeaderFilterElements.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.subscribe("placeholder", this.generatePlaceholder.bind(this)); - - if(this.table.options.filterMode === "remote"){ - this.subscribe("data-params", this.remoteFilterParams.bind(this)); - } - - this.registerDataHandler(this.filter.bind(this), 10); - } - - tableBuilt(){ - if(this.table.options.initialFilter){ - this.setFilter(this.table.options.initialFilter); - } - - if(this.table.options.initialHeaderFilter){ - this.table.options.initialHeaderFilter.forEach((item) => { - - var column = this.table.columnManager.findColumn(item.field); - - if(column){ - this.setHeaderFilterValue(column, item.value); - }else { - console.warn("Column Filter Error - No matching column found:", item.field); - return false; - } - }); - } - - this.tableInitialized = true; - } - - remoteFilterParams(data, config, silent, params){ - params.filter = this.getFilters(true, true); - return params; - } - - generatePlaceholder(text){ - if(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){ - return this.table.options.placeholderHeaderFilter; - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - //set standard filters - userSetFilter(field, type, value, params){ - this.setFilter(field, type, value, params); - this.refreshFilter(); - } - - //set standard filters - userRefreshFilter(){ - this.refreshFilter(); - } - - //add filter to array - userAddFilter(field, type, value, params){ - this.addFilter(field, type, value, params); - this.refreshFilter(); - } - - userSetHeaderFilterFocus(field){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterFocus(column); - }else { - console.warn("Column Filter Focus Error - No matching column found:", field); - return false; - } - } - - userGetHeaderFilterValue(field) { - var column = this.table.columnManager.findColumn(field); - - if(column){ - return this.getHeaderFilterValue(column); - }else { - console.warn("Column Filter Error - No matching column found:", field); - } - } - - userSetHeaderFilterValue(field, value){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterValue(column, value); - }else { - console.warn("Column Filter Error - No matching column found:", field); - return false; - } - } - - //remove filter from array - userRemoveFilter(field, type, value){ - this.removeFilter(field, type, value); - this.refreshFilter(); - } - - //clear filters - userClearFilter(all){ - this.clearFilter(all); - this.refreshFilter(); - } - - //clear header filters - userClearHeaderFilter(){ - this.clearHeaderFilter(); - this.refreshFilter(); - } - - - //search for specific row components - searchRows(field, type, value){ - return this.search("rows", field, type, value); - } - - //search for specific data - searchData(field, type, value){ - return this.search("data", field, type, value); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnHeaderFilter(column){ - var def = column.definition; - - if(def.headerFilter){ - this.initializeColumn(column); - } - } - - //initialize column header filter - initializeColumn(column, value){ - var self = this, - field = column.getField(); - - //handle successfully value change - function success(value){ - var filterType = (column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text") || column.modules.filter.tagType == "textarea" ? "partial" : "match", - type = "", - filterChangeCheck = "", - filterFunc; - - if(typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value){ - - column.modules.filter.prevSuccess = value; - - if(!column.modules.filter.emptyFunc(value)){ - column.modules.filter.value = value; - - switch(typeof column.definition.headerFilterFunc){ - case "string": - if(Filter.filters[column.definition.headerFilterFunc]){ - type = column.definition.headerFilterFunc; - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params); - }; - }else { - console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc); - } - break; - - case "function": - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return column.definition.headerFilterFunc(value, fieldVal, data, params); - }; - - type = filterFunc; - break; - } - - if(!filterFunc){ - switch(filterType){ - case "partial": - filterFunc = function(data){ - var colVal = column.getFieldValue(data); - - if(typeof colVal !== 'undefined' && colVal !== null){ - return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1; - }else { - return false; - } - }; - type = "like"; - break; - - default: - filterFunc = function(data){ - return column.getFieldValue(data) == value; - }; - type = "="; - } - } - - self.headerFilters[field] = {value:value, func:filterFunc, type:type}; - }else { - delete self.headerFilters[field]; - } - - column.modules.filter.value = value; - - filterChangeCheck = JSON.stringify(self.headerFilters); - - if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ - self.prevHeaderFilterChangeCheck = filterChangeCheck; - - self.trackChanges(); - self.refreshFilter(); - } - } - - return true; - } - - column.modules.filter = { - success:success, - attrType:false, - tagType:false, - emptyFunc:false, - }; - - this.generateHeaderFilterElement(column); - } - - generateHeaderFilterElement(column, initialValue, reinitialize){ - var self = this, - success = column.modules.filter.success, - field = column.getField(), - filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback; - - column.modules.filter.value = initialValue; - - //handle aborted edit - function cancel(){} - - function onRendered(callback){ - onRenderedCallback = callback; - } - - if(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){ - column.contentElement.removeChild(column.modules.filter.headerElement.parentNode); - } - - if(field){ - - //set empty value function - column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){ - return !value && value !== 0; - }; - - filterElement = document.createElement("div"); - filterElement.classList.add("tabulator-header-filter"); - - //set column editor - switch(typeof column.definition.headerFilter){ - case "string": - if(self.table.modules.edit.editors[column.definition.headerFilter]){ - editor = self.table.modules.edit.editors[column.definition.headerFilter]; - - if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor); - } - break; - - case "function": - editor = column.definition.headerFilter; - break; - - case "boolean": - if(column.modules.edit && column.modules.edit.editor){ - editor = column.modules.edit.editor; - }else { - if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){ - editor = self.table.modules.edit.editors[column.definition.formatter]; - - if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - editor = self.table.modules.edit.editors["input"]; - } - } - break; - } - - if(editor){ - - cellWrapper = { - getValue:function(){ - return typeof initialValue !== "undefined" ? initialValue : ""; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return filterElement; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - getType:() => { - return "header"; - }, - getRow:function(){ - return { - normalizeHeight:function(){ - - } - }; - } - }; - - params = column.definition.headerFilterParams || {}; - - params = typeof params === "function" ? params.call(self.table, cellWrapper) : params; - - editorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params); - - if(!editorElement){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false"); - return; - } - - if(!(editorElement instanceof Node)){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement); - return; - } - - //set Placeholder Text - self.langBind("headerFilters|columns|" + column.definition.field, function(value){ - editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : (column.definition.headerFilterPlaceholder || self.langText("headerFilters|default"))); - }); - - //focus on element on click - editorElement.addEventListener("click", function(e){ - e.stopPropagation(); - editorElement.focus(); - }); - - editorElement.addEventListener("focus", (e) => { - var left = this.table.columnManager.contentsElement.scrollLeft; - - var headerPos = this.table.rowManager.element.scrollLeft; - - if(left !== headerPos){ - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - - //live update filters as user types - typingTimer = false; - - searchTrigger = function(e){ - if(typingTimer){ - clearTimeout(typingTimer); - } - - typingTimer = setTimeout(function(){ - success(editorElement.value); - },self.table.options.headerFilterLiveFilterDelay); - }; - - column.modules.filter.headerElement = editorElement; - column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "" ; - column.modules.filter.tagType = editorElement.tagName.toLowerCase(); - - if(column.definition.headerFilterLiveFilter !== false){ - - if ( - !( - column.definition.headerFilter === 'autocomplete' || - column.definition.headerFilter === 'tickCross' || - ((column.definition.editor === 'autocomplete' || - column.definition.editor === 'tickCross') && - column.definition.headerFilter === true) - ) - ) { - editorElement.addEventListener("keyup", searchTrigger); - editorElement.addEventListener("search", searchTrigger); - - - //update number filtered columns on change - if(column.modules.filter.attrType == "number"){ - editorElement.addEventListener("change", function(e){ - success(editorElement.value); - }); - } - - //change text inputs to search inputs to allow for clearing of field - if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){ - editorElement.setAttribute("type", "search"); - // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click - } - - } - - //prevent input and select elements from propagating click to column sorters etc - if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){ - editorElement.addEventListener("mousedown",function(e){ - e.stopPropagation(); - }); - } - } - - filterElement.appendChild(editorElement); - - column.contentElement.appendChild(filterElement); - - if(!reinitialize){ - self.headerFilterColumns.push(column); - } - - if(onRenderedCallback){ - onRenderedCallback(); - } - } - }else { - console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title); - } - } - - //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode) - hideHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = 'none'; - } - }); - } - - //show all header filter elements (used to ensure correct column widths in "fitData" layout mode) - showHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = ''; - } - }); - } - - //programmatically set focus of header filter - setHeaderFilterFocus(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.focus(); - }else { - console.warn("Column Filter Focus Error - No header filter set on column:", column.getField()); - } - } - - //programmatically get value of header filter - getHeaderFilterValue(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.value; - } else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - - //programmatically set value of header filter - setHeaderFilterValue(column, value){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, value, true); - column.modules.filter.success(value); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - reloadHeaderFilter(column){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, column.modules.filter.value, true); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - refreshFilter(){ - if(this.tableInitialized){ - if(this.table.options.filterMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the filters has changed since last use - trackChanges(){ - this.changed = true; - this.dispatch("filter-changed"); - } - - //check if the filters has changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //set standard filters - setFilter(field, type, value, params){ - this.filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - this.addFilter(field); - } - - //add filter to array - addFilter(field, type, value, params){ - var changed = false; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - this.filterList.push(filter); - changed = true; - } - }); - - if(changed){ - this.trackChanges(); - } - } - - findFilter(filter){ - var column; - - if(Array.isArray(filter)){ - return this.findSubFilters(filter); - } - - var filterFunc = false; - - if(typeof filter.field == "function"){ - filterFunc = function(data){ - return filter.field(data, filter.type || {});// pass params to custom filter function - }; - }else { - - if(Filter.filters[filter.type]){ - - column = this.table.columnManager.getColumnByField(filter.field); - - if(column){ - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {}); - }; - }else { - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {}); - }; - } - - - }else { - console.warn("Filter Error - No such filter type found, ignoring: ", filter.type); - } - } - - filter.func = filterFunc; - - return filter.func ? filter : false; - } - - findSubFilters(filters){ - var output = []; - - filters.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - output.push(filter); - } - }); - - return output.length ? output : false; - } - - //get all filters - getFilters(all, ajax){ - var output = []; - - if(all){ - output = this.getHeaderFilters(); - } - - if(ajax){ - output.forEach(function(item){ - if(typeof item.type == "function"){ - item.type = "function"; - } - }); - } - - output = output.concat(this.filtersToArray(this.filterList, ajax)); - - return output; - } - - //filter to Object - filtersToArray(filterList, ajax){ - var output = []; - - filterList.forEach((filter) => { - var item; - - if(Array.isArray(filter)){ - output.push(this.filtersToArray(filter, ajax)); - }else { - item = {field:filter.field, type:filter.type, value:filter.value}; - - if(ajax){ - if(typeof item.type == "function"){ - item.type = "function"; - } - } - - output.push(item); - } - }); - - return output; - } - - //get all filters - getHeaderFilters(){ - var output = []; - - for(var key in this.headerFilters){ - output.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value}); - } - - return output; - } - - //remove filter from array - removeFilter(field, type, value){ - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - var index = -1; - - if(typeof filter.field == "object"){ - index = this.filterList.findIndex((element) => { - return filter === element; - }); - }else { - index = this.filterList.findIndex((element) => { - return filter.field === element.field && filter.type === element.type && filter.value === element.value; - }); - } - - if(index > -1){ - this.filterList.splice(index, 1); - }else { - console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type); - } - }); - - this.trackChanges(); - } - - //clear filters - clearFilter(all){ - this.filterList = []; - - if(all){ - this.clearHeaderFilter(); - } - - this.trackChanges(); - } - - //clear header filters - clearHeaderFilter(){ - this.headerFilters = {}; - this.prevHeaderFilterChangeCheck = "{}"; - - this.headerFilterColumns.forEach((column) => { - if(typeof column.modules.filter.value !== "undefined"){ - delete column.modules.filter.value; - } - column.modules.filter.prevSuccess = undefined; - this.reloadHeaderFilter(column); - }); - - this.trackChanges(); - } - - //search data and return matching rows - search (searchType, field, type, value){ - var activeRows = [], - filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - filterList.push(filter); - } - }); - - this.table.rowManager.rows.forEach((row) => { - var match = true; - - filterList.forEach((filter) => { - if(!this.filterRecurse(filter, row.getData())){ - match = false; - } - }); - - if(match){ - activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent()); - } - - }); - - return activeRows; - } - - //filter row array - filter(rowList, filters){ - var activeRows = [], - activeRowComponents = []; - - if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters(true)); - } - - if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ - - rowList.forEach((row) => { - if(this.filterRow(row)){ - activeRows.push(row); - } - }); - - }else { - activeRows = rowList.slice(0); - } - - if(this.subscribedExternal("dataFiltered")){ - - activeRows.forEach((row) => { - activeRowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); - } - - return activeRows; - } - - //filter individual row - filterRow(row, filters){ - var match = true, - data = row.getData(); - - this.filterList.forEach((filter) => { - if(!this.filterRecurse(filter, data)){ - match = false; - } - }); - - - for(var field in this.headerFilters){ - if(!this.headerFilters[field].func(data)){ - match = false; - } - } - - return match; - } - - filterRecurse(filter, data){ - var match = false; - - if(Array.isArray(filter)){ - filter.forEach((subFilter) => { - if(this.filterRecurse(subFilter, data)){ - match = true; - } - }); - }else { - match = filter.func(data); - } - - return match; - } -} - -Filter.moduleName = "filter"; - -//load defaults -Filter.filters = defaultFilters; - -function plaintext(cell, formatterParams, onRendered){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); -} - -function html$1(cell, formatterParams, onRendered){ - return cell.getValue(); -} - -function textarea$1(cell, formatterParams, onRendered){ - cell.getElement().style.whiteSpace = "pre-wrap"; - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); -} - -function money(cell, formatterParams, onRendered){ - var floatVal = parseFloat(cell.getValue()), - sign = "", - number, integer, decimal, rgx, value; - - var decimalSym = formatterParams.decimal || "."; - var thousandSym = formatterParams.thousand || ","; - var negativeSign = formatterParams.negativeSign || "-"; - var symbol = formatterParams.symbol || ""; - var after = !!formatterParams.symbolAfter; - var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2; - - if(isNaN(floatVal)){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - if(floatVal < 0){ - floatVal = Math.abs(floatVal); - sign = negativeSign; - } - - number = precision !== false ? floatVal.toFixed(precision) : floatVal; - number = String(number).split("."); - - integer = number[0]; - decimal = number.length > 1 ? decimalSym + number[1] : ""; - - if (formatterParams.thousand !== false) { - rgx = /(\d+)(\d{3})/; - - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); - } - } - - value = integer + decimal; - - if(sign === true){ - value = "(" + value + ")"; - return after ? value + symbol : symbol + value; - }else { - return after ? sign + value + symbol : sign + symbol + value; - } -} - -function link(cell, formatterParams, onRendered){ - var value = cell.getValue(), - urlPrefix = formatterParams.urlPrefix || "", - download = formatterParams.download, - label = value, - el = document.createElement("a"), - data; - - function labelTraverse(path, data){ - var item = path.shift(), - value = data[item]; - - if(path.length && typeof value === "object"){ - return labelTraverse(path, value); - } - - return value; - } - - if(formatterParams.labelField){ - data = cell.getData(); - label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); - } - - if(formatterParams.label){ - switch(typeof formatterParams.label){ - case "string": - label = formatterParams.label; - break; - - case "function": - label = formatterParams.label(cell); - break; - } - } - - if(label){ - if(formatterParams.urlField){ - data = cell.getData(); - value = data[formatterParams.urlField]; - } - - if(formatterParams.url){ - switch(typeof formatterParams.url){ - case "string": - value = formatterParams.url; - break; - - case "function": - value = formatterParams.url(cell); - break; - } - } - - el.setAttribute("href", urlPrefix + value); - - if(formatterParams.target){ - el.setAttribute("target", formatterParams.target); - } - - if(formatterParams.download){ - - if(typeof download == "function"){ - download = download(cell); - }else { - download = download === true ? "" : download; - } - - el.setAttribute("download", download); - } - - el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label)); - - return el; - }else { - return " "; - } -} - -function image(cell, formatterParams, onRendered){ - var el = document.createElement("img"), - src = cell.getValue(); - - if(formatterParams.urlPrefix){ - src = formatterParams.urlPrefix + cell.getValue(); - } - - if(formatterParams.urlSuffix){ - src = src + formatterParams.urlSuffix; - } - - el.setAttribute("src", src); - - switch(typeof formatterParams.height){ - case "number": - el.style.height = formatterParams.height + "px"; - break; - - case "string": - el.style.height = formatterParams.height; - break; - } - - switch(typeof formatterParams.width){ - case "number": - el.style.width = formatterParams.width + "px"; - break; - - case "string": - el.style.width = formatterParams.width; - break; - } - - el.addEventListener("load", function(){ - cell.getRow().normalizeHeight(); - }); - - return el; -} - -function tickCross$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - empty = formatterParams.allowEmpty, - truthy = formatterParams.allowTruthy, - trueValueSet = Object.keys(formatterParams).includes("trueValue"), - tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '', - cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : ''; - - if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){ - element.setAttribute("aria-checked", true); - return tick || ""; - }else { - if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){ - element.setAttribute("aria-checked", "mixed"); - return ""; - }else { - element.setAttribute("aria-checked", false); - return cross || ""; - } - } -} - -function datetime$1(cell, formatterParams, onRendered){ - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var outputFormat = formatterParams.outputFormat || "dd/MM/yyyy HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if(newDatetime.isValid){ - if(formatterParams.timezone){ - newDatetime = newDatetime.setZone(formatterParams.timezone); - } - - return newDatetime.toFormat(outputFormat); - }else { - if(invalid === true || !value){ - return value; - }else if(typeof invalid === "function"){ - return invalid(value); - }else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetime' formatter is dependant on luxon.js"); - } -} - -function datetimediff (cell, formatterParams, onRendered) { - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false; - var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : "days"; - var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false; - var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : DT.now(); - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if (newDatetime.isValid){ - if(humanize){ - return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); - }else { - return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); - } - } else { - - if (invalid === true) { - return value; - } else if (typeof invalid === "function") { - return invalid(value); - } else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js"); - } -} - -function lookup (cell, formatterParams, onRendered) { - var value = cell.getValue(); - - if (typeof formatterParams[value] === "undefined") { - console.warn('Missing display value for ' + value); - return value; - } - - return formatterParams[value]; -} - -function star$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5, - stars = document.createElement("span"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"), - starActive = '', - starInactive = ''; - - //style stars holder - stars.style.verticalAlign = "middle"; - - //style star - star.setAttribute("width", "14"); - star.setAttribute("height", "14"); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - value = value && !isNaN(value) ? parseInt(value) : 0; - - value = Math.max(0, Math.min(value, maxStars)); - - for(var i=1;i<= maxStars;i++){ - var nextStar = star.cloneNode(true); - nextStar.innerHTML = i <= value ? starActive : starInactive; - - stars.appendChild(nextStar); - } - - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - element.setAttribute("aria-label", value); - - return stars; -} - -function traffic(cell, formatterParams, onRendered){ - var value = this.sanitizeHTML(cell.getValue()) || 0, - el = document.createElement("span"), - max = formatterParams && formatterParams.max ? formatterParams.max : 100, - min = formatterParams && formatterParams.min ? formatterParams.min : 0, - colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"], - color = "#666666", - percent, percentValue; - - if(isNaN(value) || typeof cell.getValue() === "undefined"){ - return; - } - - el.classList.add("tabulator-traffic-light"); - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set color - switch(typeof colors){ - case "string": - color = colors; - break; - case "function": - color = colors(value); - break; - case "object": - if(Array.isArray(colors)){ - var unit = 100 / colors.length; - var index = Math.floor(percentValue / unit); - - index = Math.min(index, colors.length - 1); - index = Math.max(index, 0); - color = colors[index]; - break; - } - } - - el.style.backgroundColor = color; - - return el; -} - -function progress$1(cell, formatterParams = {}, onRendered){ //progress bar - var value = this.sanitizeHTML(cell.getValue()) || 0, - element = cell.getElement(), - max = formatterParams.max ? formatterParams.max : 100, - min = formatterParams.min ? formatterParams.min : 0, - legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center", - percent, percentValue, color, legend, legendColor; - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set bar color - switch(typeof formatterParams.color){ - case "string": - color = formatterParams.color; - break; - case "function": - color = formatterParams.color(value); - break; - case "object": - if(Array.isArray(formatterParams.color)){ - let unit = 100 / formatterParams.color.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.color.length - 1); - index = Math.max(index, 0); - color = formatterParams.color[index]; - break; - } - default: - color = "#2DC214"; - } - - //generate legend - switch(typeof formatterParams.legend){ - case "string": - legend = formatterParams.legend; - break; - case "function": - legend = formatterParams.legend(value); - break; - case "boolean": - legend = value; - break; - default: - legend = false; - } - - //set legend color - switch(typeof formatterParams.legendColor){ - case "string": - legendColor = formatterParams.legendColor; - break; - case "function": - legendColor = formatterParams.legendColor(value); - break; - case "object": - if(Array.isArray(formatterParams.legendColor)){ - let unit = 100 / formatterParams.legendColor.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.legendColor.length - 1); - index = Math.max(index, 0); - legendColor = formatterParams.legendColor[index]; - } - break; - default: - legendColor = "#000"; - } - - element.style.minWidth = "30px"; - element.style.position = "relative"; - - element.setAttribute("aria-label", percentValue); - - var barEl = document.createElement("div"); - barEl.style.display = "inline-block"; - barEl.style.width = percentValue + "%"; - barEl.style.backgroundColor = color; - barEl.style.height = "100%"; - - barEl.setAttribute('data-max', max); - barEl.setAttribute('data-min', min); - - var barContainer = document.createElement("div"); - barContainer.style.position = "relative"; - barContainer.style.width = "100%"; - barContainer.style.height = "100%"; - - if(legend){ - var legendEl = document.createElement("div"); - legendEl.style.position = "absolute"; - legendEl.style.top = 0; - legendEl.style.left = 0; - legendEl.style.textAlign = legendAlign; - legendEl.style.width = "100%"; - legendEl.style.color = legendColor; - legendEl.innerHTML = legend; - } - - onRendered(function(){ - - //handle custom element needed if formatter is to be included in printed/downloaded output - if(!(cell instanceof CellComponent)){ - var holderEl = document.createElement("div"); - holderEl.style.position = "absolute"; - holderEl.style.top = "4px"; - holderEl.style.bottom = "4px"; - holderEl.style.left = "4px"; - holderEl.style.right = "4px"; - - element.appendChild(holderEl); - - element = holderEl; - } - - element.appendChild(barContainer); - barContainer.appendChild(barEl); - - if(legend){ - barContainer.appendChild(legendEl); - } - }); - - return ""; -} - -function color(cell, formatterParams, onRendered){ - cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue()); - return ""; -} - -function buttonTick(cell, formatterParams, onRendered){ - return ''; -} - -function buttonCross(cell, formatterParams, onRendered){ - return ''; -} - -function rownum(cell, formatterParams, onRendered){ - var content = document.createElement("span"); - var row = cell.getRow(); - - row.watchPosition((position) => { - content.innerText = position; - }); - - return content; -} - -function handle(cell, formatterParams, onRendered){ - cell.getElement().classList.add("tabulator-row-handle"); - return "
              "; -} - -function responsiveCollapse(cell, formatterParams, onRendered){ - var el = document.createElement("div"), - config = cell.getRow()._row.modules.responsiveLayout; - - el.classList.add("tabulator-responsive-collapse-toggle"); - - el.innerHTML = ` - - - - - - -`; - - cell.getElement().classList.add("tabulator-row-handle"); - - function toggleList(isOpen){ - var collapseEl = config.element; - - config.open = isOpen; - - if(collapseEl){ - - if(config.open){ - el.classList.add("open"); - collapseEl.style.display = ''; - }else { - el.classList.remove("open"); - collapseEl.style.display = 'none'; - } - } - } - - el.addEventListener("click", function(e){ - e.stopImmediatePropagation(); - toggleList(!config.open); - cell.getTable().rowManager.adjustTableSize(); - }); - - toggleList(config.open); - - return el; -} - -function rowSelection(cell, formatterParams, onRendered){ - var checkbox = document.createElement("input"); - var blocked = false; - - checkbox.type = 'checkbox'; - - checkbox.setAttribute("aria-label", "Select Row"); - - if(this.table.modExists("selectRow", true)){ - - checkbox.addEventListener("click", (e) => { - e.stopPropagation(); - }); - - if(typeof cell.getRow == 'function'){ - var row = cell.getRow(); - - if(row instanceof RowComponent){ - - checkbox.addEventListener("change", (e) => { - if(this.table.options.selectableRangeMode === "click"){ - if(!blocked){ - row.toggleSelect(); - }else { - blocked = false; - } - }else { - row.toggleSelect(); - } - }); - - if(this.table.options.selectableRangeMode === "click"){ - checkbox.addEventListener("click", (e) => { - blocked = true; - this.table.modules.selectRow.handleComplexRowClick(row._row, e); - }); - } - - checkbox.checked = row.isSelected && row.isSelected(); - this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox); - }else { - checkbox = ""; - } - }else { - checkbox.addEventListener("change", (e) => { - if(this.table.modules.selectRow.selectedRows.length){ - this.table.deselectRow(); - }else { - this.table.selectRow(formatterParams.rowRange); - } - }); - - this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox); - } - } - - return checkbox; -} - -var defaultFormatters = { - plaintext:plaintext, - html:html$1, - textarea:textarea$1, - money:money, - link:link, - image:image, - tickCross:tickCross$1, - datetime:datetime$1, - datetimediff:datetimediff, - lookup:lookup, - star:star$1, - traffic:traffic, - progress:progress$1, - color:color, - buttonTick:buttonTick, - buttonCross:buttonCross, - rownum:rownum, - handle:handle, - responsiveCollapse:responsiveCollapse, - rowSelection:rowSelection, -}; - -class Format extends Module{ - - constructor(table){ - super(table); - - this.registerColumnOption("formatter"); - this.registerColumnOption("formatterParams"); - - this.registerColumnOption("formatterPrint"); - this.registerColumnOption("formatterPrintParams"); - this.registerColumnOption("formatterClipboard"); - this.registerColumnOption("formatterClipboardParams"); - this.registerColumnOption("formatterHtmlOutput"); - this.registerColumnOption("formatterHtmlOutputParams"); - this.registerColumnOption("titleFormatter"); - this.registerColumnOption("titleFormatterParams"); - } - - initialize(){ - this.subscribe("cell-format", this.formatValue.bind(this)); - this.subscribe("cell-rendered", this.cellRendered.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-format", this.formatHeader.bind(this)); - } - - //initialize column formatter - initializeColumn(column){ - column.modules.format = this.lookupFormatter(column, ""); - - if(typeof column.definition.formatterPrint !== "undefined"){ - column.modules.format.print = this.lookupFormatter(column, "Print"); - } - - if(typeof column.definition.formatterClipboard !== "undefined"){ - column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard"); - } - - if(typeof column.definition.formatterHtmlOutput !== "undefined"){ - column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput"); - } - } - - lookupFormatter(column, type){ - var config = {params:column.definition["formatter" + type + "Params"] || {}}, - formatter = column.definition["formatter" + type]; - - //set column formatter - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - config.formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - config.formatter = Format.formatters.plaintext; - } - break; - - case "function": - config.formatter = formatter; - break; - - default: - config.formatter = Format.formatters.plaintext; - break; - } - - return config; - } - - cellRendered(cell){ - if(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){ - cell.modules.format.renderedCallback(); - cell.modules.format.rendered = true; - } - } - - //return a formatted value for a column header - formatHeader(column, title, el){ - var formatter, params, onRendered, mockCell; - - if(column.definition.titleFormatter){ - formatter = this.getFormatter(column.definition.titleFormatter); - - onRendered = (callback) => { - column.titleFormatterRendered = callback; - }; - - mockCell = { - getValue:function(){ - return title; - }, - getElement:function(){ - return el; - }, - getType:function(){ - return "header"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - } - }; - - params = column.definition.titleFormatterParams || {}; - - params = typeof params === "function" ? params() : params; - - return formatter.call(this, mockCell, params, onRendered); - }else { - return title; - } - } - - - //return a formatted value for a cell - formatValue(cell){ - var component = cell.getComponent(), - params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return cell.column.modules.format.formatter.call(this, component, params, onRendered); - } - - formatExportValue(cell, type){ - var formatter = cell.column.modules.format[type], - params; - - if(formatter){ - params = typeof formatter.params === "function" ? formatter.params(cell.getComponent()) : formatter.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return formatter.formatter.call(this, cell.getComponent(), params, onRendered); - - }else { - return this.formatValue(cell); - } - } - - sanitizeHTML(value){ - if(value){ - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/', - '`': '`', - '=': '=' - }; - - return String(value).replace(/[&<>"'`=/]/g, function (s) { - return entityMap[s]; - }); - }else { - return value; - } - } - - emptyToSpace(value){ - return value === null || typeof value === "undefined" || value === "" ? " " : value; - } - - //get formatter for cell - getFormatter(formatter){ - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - formatter = Format.formatters.plaintext; - } - break; - - case "function": - //Custom formatter Function, do nothing - break; - - default: - formatter = Format.formatters.plaintext; - break; - } - - return formatter; - } -} - -Format.moduleName = "format"; - -//load defaults -Format.formatters = defaultFormatters; - -class FrozenColumns extends Module{ - - constructor(table){ - super(table); - - this.leftColumns = []; - this.rightColumns = []; - this.initializationMode = "left"; - this.active = false; - this.blocked = true; - - this.registerColumnOption("frozen"); - } - - //reset initial state - reset(){ - this.initializationMode = "left"; - this.leftColumns = []; - this.rightColumns = []; - this.active = false; - } - - initialize(){ - this.subscribe("cell-layout", this.layoutCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-width", this.layout.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("table-layout", this.layout.bind(this)); - this.subscribe("columns-loading", this.reset.bind(this)); - - this.subscribe("column-add", this.reinitializeColumns.bind(this)); - this.subscribe("column-delete", this.reinitializeColumns.bind(this)); - - this.subscribe("table-redraw", this.layout.bind(this)); - this.subscribe("layout-refreshing", this.blockLayout.bind(this)); - this.subscribe("layout-refreshed", this.unblockLayout.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - } - - blockLayout(){ - this.blocked = true; - } - - unblockLayout(){ - this.blocked = false; - } - - layoutCell(cell){ - this.layoutElement(cell.element, cell.column); - } - - reinitializeColumns(){ - this.reset(); - - this.table.columnManager.columnsByIndex.forEach((column) => { - this.initializeColumn(column); - }); - } - - //initialize specific column - initializeColumn(column){ - var config = {margin:0, edge:false}; - - if(!column.isGroup){ - - if(this.frozenCheck(column)){ - - config.position = this.initializationMode; - - if(this.initializationMode == "left"){ - this.leftColumns.push(column); - }else { - this.rightColumns.unshift(column); - } - - this.active = true; - - column.modules.frozen = config; - }else { - this.initializationMode = "right"; - } - } - } - - frozenCheck(column){ - if(column.parent.isGroup && column.definition.frozen){ - console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"); - } - - if(column.parent.isGroup){ - return this.frozenCheck(column.parent); - }else { - return column.definition.frozen; - } - } - - //layout calculation rows - layoutCalcRows(){ - if(this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){ - this.layoutRow(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){ - this.layoutRow(this.table.modules.columnCalcs.botRow); - } - - if(this.table.modExists("groupRows")){ - this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()); - } - } - } - - layoutGroupCalcs(groups){ - groups.forEach((group) => { - if(group.calcs.top){ - this.layoutRow(group.calcs.top); - } - - if(group.calcs.bottom){ - this.layoutRow(group.calcs.bottom); - } - - if(group.groupList && group.groupList.length){ - this.layoutGroupCalcs(group.groupList); - } - }); - } - - //calculate column positions and layout headers - layoutColumnPosition(allCells){ - var leftParents = []; - - var leftMargin = 0; - var rightMargin = 0; - - this.leftColumns.forEach((column, i) => { - column.modules.frozen.marginValue = leftMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - leftMargin += column.getWidth(); - } - - if(i == this.leftColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - var parentEl = this.getColGroupParentElement(column); - if(!leftParents.includes(parentEl)){ - this.layoutElement(parentEl, column); - leftParents.push(parentEl); - } - - if(column.modules.frozen.edge){ - parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position); - } - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - - this.rightColumns.forEach((column, i) => { - - column.modules.frozen.marginValue = rightMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - rightMargin += column.getWidth(); - } - - if(i == this.rightColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - this.layoutElement(this.getColGroupParentElement(column), column); - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - } - - getColGroupParentElement(column){ - return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement(); - } - - //layout columns appropriately - layout(){ - if(this.active && !this.blocked){ - - //calculate left columns - this.layoutColumnPosition(); - - this.reinitializeRows(); - - this.layoutCalcRows(); - } - } - - reinitializeRows(){ - var visibleRows = this.table.rowManager.getVisibleRows(true); - var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - - visibleRows.forEach((row) =>{ - if(row.type === "row"){ - this.layoutRow(row); - } - }); - } - - layoutRow(row){ - if(this.table.options.layout === "fitDataFill" && this.rightColumns.length){ - this.table.rowManager.getTableElement().style.minWidth = "calc(100% - " + this.rightMargin + ")"; - } - - this.leftColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - - this.rightColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - } - - layoutElement(element, column){ - var position; - - if(column.modules.frozen && element){ - element.style.position = "sticky"; - - if(this.table.rtl){ - position = column.modules.frozen.position === "left" ? "right" : "left"; - }else { - position = column.modules.frozen.position; - } - - element.style[position] = column.modules.frozen.margin; - - element.classList.add("tabulator-frozen"); - - if(column.modules.frozen.edge){ - element.classList.add("tabulator-frozen-" + column.modules.frozen.position); - } - } - } - - adjustForScrollbar(width){ - if(this.rightColumns.length){ - this.table.columnManager.getContentsElement().style.width = "calc(100% - " + width + "px)"; - } - } - - _calcSpace(columns, index){ - var width = 0; - - for (let i = 0; i < index; i++){ - if(columns[i].visible){ - width += columns[i].getWidth(); - } - } - - return width; - } -} - -FrozenColumns.moduleName = "frozenColumns"; - -class FrozenRows extends Module{ - - constructor(table){ - super(table); - - this.topElement = document.createElement("div"); - this.rows = []; - - //register component functions - this.registerComponentFunction("row", "freeze", this.freezeRow.bind(this)); - this.registerComponentFunction("row", "unfreeze", this.unfreezeRow.bind(this)); - this.registerComponentFunction("row", "isFrozen", this.isRowFrozen.bind(this)); - - //register table options - this.registerTableOption("frozenRowsField", "id"); //field to choose frozen rows by - this.registerTableOption("frozenRows", false); //holder for frozen row identifiers - } - - initialize(){ - this.rows = []; - - this.topElement.classList.add("tabulator-frozen-rows-holder"); - - // this.table.columnManager.element.append(this.topElement); - this.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling); - - this.subscribe("row-deleting", this.detachRow.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 10); - - if(this.table.options.frozenRows){ - this.subscribe("data-processed", this.initializeRows.bind(this)); - this.subscribe("row-added", this.initializeRow.bind(this)); - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - } - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - initializeRows(){ - this.table.rowManager.getRows().forEach((row) => { - this.initializeRow(row); - }); - } - - initializeRow(row){ - var frozenRows = this.table.options.frozenRows, - rowType = typeof frozenRows; - - if(rowType === "number"){ - if(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){ - this.freezeRow(row); - } - }else if(rowType === "function"){ - if(frozenRows.call(this.table, row.getComponent())){ - this.freezeRow(row); - } - }else if(Array.isArray(frozenRows)){ - if(frozenRows.includes(row.data[this.options("frozenRowsField")])){ - this.freezeRow(row); - } - } - } - - isRowFrozen(row){ - var index = this.rows.indexOf(row); - return index > -1; - } - - isFrozen(){ - return !!this.rows.length; - } - - visibleRows(viewable, rows){ - this.rows.forEach((row) => { - rows.push(row); - }); - - return rows; - } - - //filter frozen rows out of display data - getRows(rows){ - var output = rows.slice(0); - - this.rows.forEach(function(row){ - var index = output.indexOf(row); - - if(index > -1){ - output.splice(index, 1); - } - }); - - return output; - } - - freezeRow(row){ - if(!row.modules.frozen){ - row.modules.frozen = true; - this.topElement.appendChild(row.getElement()); - row.initialize(); - row.normalizeHeight(); - - this.rows.push(row); - - this.refreshData(false, "display"); - - this.table.rowManager.adjustTableSize(); - - this.styleRows(); - - }else { - console.warn("Freeze Error - Row is already frozen"); - } - } - - unfreezeRow(row){ - if(row.modules.frozen){ - - row.modules.frozen = false; - - this.detachRow(row); - - this.table.rowManager.adjustTableSize(); - - this.refreshData(false, "display"); - - if(this.rows.length){ - this.styleRows(); - } - - }else { - console.warn("Freeze Error - Row is already unfrozen"); - } - } - - detachRow(row){ - var index = this.rows.indexOf(row); - - if(index > -1){ - var rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - - this.rows.splice(index, 1); - } - } - - styleRows(row){ - this.rows.forEach((row, i) => { - this.table.rowManager.styleRow(row, i); - }); - } -} - -FrozenRows.moduleName = "frozenRows"; - -//public group object -class GroupComponent { - constructor (group){ - this._group = group; - this.type = "GroupComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._group.groupManager.table.componentFunctionBinder.handle("group", target._group, name); - } - } - }); - } - - getKey(){ - return this._group.key; - } - - getField(){ - return this._group.field; - } - - getElement(){ - return this._group.element; - } - - getRows(){ - return this._group.getRows(true); - } - - getSubGroups(){ - return this._group.getSubGroups(true); - } - - getParentGroup(){ - return this._group.parent ? this._group.parent.getComponent() : false; - } - - isVisible(){ - return this._group.visible; - } - - show(){ - this._group.show(); - } - - hide(){ - this._group.hide(); - } - - toggle(){ - this._group.toggleVisibility(); - } - - scrollTo(position, ifVisible){ - return this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible); - } - - _getSelf(){ - return this._group; - } - - getTable(){ - return this._group.groupManager.table; - } -} - -//Group functions -class Group{ - - constructor(groupManager, parent, level, key, field, generator, oldGroup){ - this.groupManager = groupManager; - this.parent = parent; - this.key = key; - this.level = level; - this.field = field; - this.hasSubGroups = level < (groupManager.groupIDLookups.length - 1); - this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow; - this.type = "group"; //type of element - this.old = oldGroup; - this.rows = []; - this.groups = []; - this.groupList = []; - this.generator = generator; - this.element = false; - this.elementContents = false; - this.height = 0; - this.outerHeight = 0; - this.initialized = false; - this.calcs = {}; - this.initialized = false; - this.modules = {}; - this.arrowElement = false; - - this.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0]); - - this.component = null; - - this.createElements(); - this.addBindings(); - - this.createValueGroups(); - } - - wipe(elementsOnly){ - if(!elementsOnly){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - }else { - this.rows.forEach((row) => { - if(row.modules){ - delete row.modules.group; - } - }); - } - } - - this.element = false; - this.arrowElement = false; - this.elementContents = false; - } - - createElements(){ - var arrow = document.createElement("div"); - arrow.classList.add("tabulator-arrow"); - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-row"); - this.element.classList.add("tabulator-group"); - this.element.classList.add("tabulator-group-level-" + this.level); - this.element.setAttribute("role", "rowgroup"); - - this.arrowElement = document.createElement("div"); - this.arrowElement.classList.add("tabulator-group-toggle"); - this.arrowElement.appendChild(arrow); - - //setup movable rows - if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){ - this.groupManager.table.modules.moveRow.initializeGroupHeader(this); - } - } - - createValueGroups(){ - var level = this.level + 1; - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - this.groupManager.allowedValues[level].forEach((value) => { - this._createGroup(value, level); - }); - } - } - - addBindings(){ - var toggleElement; - - if(this.groupManager.table.options.groupToggleElement){ - toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element; - - toggleElement.addEventListener("click", (e) => { - if(this.groupManager.table.options.groupToggleElement === "arrow"){ - e.stopPropagation(); - e.stopImmediatePropagation(); - } - - //allow click event to propagate before toggling visibility - setTimeout(() => { - this.toggleVisibility(); - }); - }); - } - } - - _createGroup(groupID, level){ - var groupKey = level + "_" + groupID; - var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - _addRowToGroup(row){ - - var level = this.level + 1; - - if(this.hasSubGroups){ - var groupID = this.groupManager.groupIDLookups[level].func(row.getData()), - groupKey = level + "_" + groupID; - - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - }else { - if(!this.groups[groupKey]){ - this._createGroup(groupID, level); - } - - this.groups[groupKey].addRow(row); - } - } - } - - _addRow(row){ - this.rows.push(row); - row.modules.group = this; - } - - insertRow(row, to, after){ - var data = this.conformRowData({}); - - row.updateData(data); - - var toIndex = this.rows.indexOf(to); - - if(toIndex > -1){ - if(after){ - this.rows.splice(toIndex+1, 0, row); - }else { - this.rows.splice(toIndex, 0, row); - } - }else { - if(after){ - this.rows.push(row); - }else { - this.rows.unshift(row); - } - } - - row.modules.group = this; - - // this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - - this.groupManager.updateGroupRows(true); - } - - scrollHeader(left){ - if(this.arrowElement){ - this.arrowElement.style.marginLeft = left; - - this.groupList.forEach(function(child){ - child.scrollHeader(left); - }); - } - } - - getRowIndex(row){} - - //update row data to match grouping constraints - conformRowData(data){ - if(this.field){ - data[this.field] = this.key; - }else { - console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"); - } - - if(this.parent){ - data = this.parent.conformRowData(data); - } - - return data; - } - - removeRow(row){ - var index = this.rows.indexOf(row); - var el = row.getElement(); - - if(index > -1){ - this.rows.splice(index, 1); - } - - if(!this.groupManager.table.options.groupValues && !this.rows.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - - this.groupManager.updateGroupRows(true); - - }else { - - if(el.parentNode){ - el.parentNode.removeChild(el); - } - - if(!this.groupManager.blockRedraw){ - this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - } - - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - - if(!this.groupList.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - } - } - } - - getHeadersAndRows(){ - var output = []; - - output.push(this); - - this._visSet(); - - - if(this.calcs.top){ - this.calcs.top.detachElement(); - this.calcs.top.deleteCells(); - } - - if(this.calcs.bottom){ - this.calcs.bottom.detachElement(); - this.calcs.bottom.deleteCells(); - } - - - - if(this.visible){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - output = output.concat(group.getHeadersAndRows()); - }); - - }else { - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - - output = output.concat(this.rows); - - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - }else { - if(!this.groupList.length && this.groupManager.table.options.columnCalcs != "table"){ - - if(this.groupManager.table.modExists("columnCalcs")){ - if(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - } - - if(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - } - } - - } - - return output; - } - - getData(visible, transform){ - var output = []; - - this._visSet(); - - if(!visible || (visible && this.visible)){ - this.rows.forEach((row) => { - output.push(row.getData(transform || "data")); - }); - } - - return output; - } - - getRowCount(){ - var count = 0; - - if(this.groupList.length){ - this.groupList.forEach((group) => { - count += group.getRowCount(); - }); - }else { - count = this.rows.length; - } - return count; - } - - - toggleVisibility(){ - if(this.visible){ - this.hide(); - }else { - this.show(); - } - } - - hide(){ - this.visible = false; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.remove("tabulator-group-visible"); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - row.detachElement(); - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - rowEl.parentNode.removeChild(rowEl); - }); - } - - this.groupManager.updateGroupRows(true); - - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), false); - } - - show(){ - this.visible = true; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.add("tabulator-group-visible"); - - var prev = this.generateElement(); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - } - - this.groupManager.updateGroupRows(true); - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), true); - } - - _visSet(){ - var data = []; - - if(typeof this.visible == "function"){ - - this.rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent()); - } - } - - getRowGroup(row){ - var match = false; - if(this.groupList.length){ - this.groupList.forEach(function(group){ - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - }else { - if(this.rows.find(function(item){ - return item === row; - })){ - match = this; - } - } - - return match; - } - - getSubGroups(component){ - var output = []; - - this.groupList.forEach(function(child){ - output.push(component ? child.getComponent() : child); - }); - - return output; - } - - getRows(component, includeChildren){ - var output = []; - - if(includeChildren && this.groupList.length){ - this.groupList.forEach((group) => { - output = output.concat(group.getRows(component, includeChildren)); - }); - }else { - this.rows.forEach(function(row){ - output.push(component ? row.getComponent() : row); - }); - } - - return output; - } - - generateGroupHeaderContents(){ - var data = []; - - var rows = this.getRows(false, true); - - rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent()); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(typeof this.elementContents === "string"){ - this.element.innerHTML = this.elementContents; - }else { - this.element.appendChild(this.elementContents); - } - - this.element.insertBefore(this.arrowElement, this.element.firstChild); - } - - getPath(path = []) { - path.unshift(this.key); - if(this.parent) { - this.parent.getPath(path); - } - return path; - } - - ////////////// Standard Row Functions ////////////// - - getElement(){ - return this.elementContents ? this.element : this.generateElement(); - } - - generateElement(){ - this.addBindings = false; - - this._visSet(); - - if(this.visible){ - this.element.classList.add("tabulator-group-visible"); - }else { - this.element.classList.remove("tabulator-group-visible"); - } - - for(var i = 0; i < this.element.childNodes.length; ++i){ - this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]); - } - - this.generateGroupHeaderContents(); - - // this.addBindings(); - - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - //normalize the height of elements in the row - normalizeHeight(){ - this.setHeight(this.element.clientHeight); - } - - initialize(force){ - if(!this.initialized || force){ - this.normalizeHeight(); - this.initialized = true; - } - } - - reinitialize(){ - this.initialized = false; - this.height = 0; - - if(Helpers.elVisible(this.element)){ - this.initialize(true); - } - } - - setHeight(height){ - if(this.height != height){ - this.height = height; - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - getGroup(){ - return this; - } - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - deinitializeHeight(){} - - rendered(){} - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new GroupComponent(this); - } - - return this.component; - } -} - -class GroupRows extends Module{ - - constructor(table){ - super(table); - - this.groupIDLookups = false; //enable table grouping and set field to group by - this.startOpen = [function(){return false;}]; //starting state of group - this.headerGenerator = [function(){return "";}]; - this.groupList = []; //ordered list of groups - this.allowedValues = false; - this.groups = {}; //hold row groups - - this.displayHandler = this.getRows.bind(this); - - this.blockRedraw = false; - - //register table options - this.registerTableOption("groupBy", false); //enable table grouping and set field to group by - this.registerTableOption("groupStartOpen", true); //starting state of group - this.registerTableOption("groupValues", false); - this.registerTableOption("groupUpdateOnCellEdit", false); - this.registerTableOption("groupHeader", false); //header generation function - this.registerTableOption("groupHeaderPrint", null); - this.registerTableOption("groupHeaderClipboard", null); - this.registerTableOption("groupHeaderHtmlOutput", null); - this.registerTableOption("groupHeaderDownload", null); - this.registerTableOption("groupToggleElement", "arrow"); - this.registerTableOption("groupClosedShowCalcs", false); - - //register table functions - this.registerTableFunction("setGroupBy", this.setGroupBy.bind(this)); - this.registerTableFunction("setGroupValues", this.setGroupValues.bind(this)); - this.registerTableFunction("setGroupStartOpen", this.setGroupStartOpen.bind(this)); - this.registerTableFunction("setGroupHeader", this.setGroupHeader.bind(this)); - this.registerTableFunction("getGroups", this.userGetGroups.bind(this)); - this.registerTableFunction("getGroupedData", this.userGetGroupedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "getGroup", this.rowGetGroup.bind(this)); - } - - //initialize group configuration - initialize(){ - this.subscribe("table-destroy", this._blockRedrawing.bind(this)); - this.subscribe("rows-wipe", this._blockRedrawing.bind(this)); - this.subscribe("rows-wiped", this._restore_redrawing.bind(this)); - - if(this.table.options.groupBy){ - if(this.table.options.groupUpdateOnCellEdit){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0); - } - - this.subscribe("table-built", this.configureGroupSetup.bind(this)); - - this.subscribe("row-deleting", this.rowDeleting.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this)); - this.subscribe("rows-wipe", this.wipe.bind(this)); - this.subscribe("rows-added", this.rowsUpdated.bind(this)); - this.subscribe("row-moving", this.rowMoving.bind(this)); - this.subscribe("row-adding-index", this.rowAddingIndex.bind(this)); - - this.subscribe("rows-sample", this.rowSample.bind(this)); - - this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this)); - - this.registerDisplayHandler(this.displayHandler, 20); - - this.initialized = true; - } - } - - _blockRedrawing(){ - this.blockRedraw = true; - } - - _restore_redrawing(){ - this.blockRedraw = false; - } - - configureGroupSetup(){ - if(this.table.options.groupBy){ - var groupBy = this.table.options.groupBy, - startOpen = this.table.options.groupStartOpen, - groupHeader = this.table.options.groupHeader; - - this.allowedValues = this.table.options.groupValues; - - if(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){ - console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"); - } - - this.headerGenerator = [function(){return "";}]; - this.startOpen = [function(){return false;}]; //starting state of group - - this.langBind("groups|item", (langValue, lang) => { - this.headerGenerator[0] = (value, count, data) => { //header layout function - return (typeof value === "undefined" ? "" : value) + "(" + count + " " + ((count === 1) ? langValue : lang.groups.items) + ")"; - }; - }); - - this.groupIDLookups = []; - - if(groupBy){ - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){ - this.table.modules.columnCalcs.removeCalcs(); - } - }else { - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group"){ - - var cols = this.table.columnManager.getRealColumns(); - - cols.forEach((col) => { - if(col.definition.topCalc){ - this.table.modules.columnCalcs.initializeTopRow(); - } - - if(col.definition.bottomCalc){ - this.table.modules.columnCalcs.initializeBottomRow(); - } - }); - } - } - - if(!Array.isArray(groupBy)){ - groupBy = [groupBy]; - } - - groupBy.forEach((group, i) => { - var lookupFunc, column; - - if(typeof group == "function"){ - lookupFunc = group; - }else { - column = this.table.columnManager.getColumnByField(group); - - if(column){ - lookupFunc = function(data){ - return column.getFieldValue(data); - }; - }else { - lookupFunc = function(data){ - return data[group]; - }; - } - } - - this.groupIDLookups.push({ - field: typeof group === "function" ? false : group, - func:lookupFunc, - values:this.allowedValues ? this.allowedValues[i] : false, - }); - }); - - if(startOpen){ - if(!Array.isArray(startOpen)){ - startOpen = [startOpen]; - } - - startOpen.forEach((level) => { - }); - - this.startOpen = startOpen; - } - - if(groupHeader){ - this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader]; - } - }else { - this.groupList = []; - this.groups = {}; - } - } - - rowSample(rows, prevValue){ - if(this.table.options.groupBy){ - var group = this.getGroups(false)[0]; - - prevValue.push(group.getRows(false)[0]); - } - - return prevValue; - } - - virtualRenderFill(){ - var el = this.table.rowManager.tableElement; - var rows = this.table.rowManager.getVisibleRows(); - - if(this.table.options.groupBy){ - rows = rows.filter((row) => { - return row.type !== "group"; - }); - - el.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + "px" : ""; - }else { - return rows; - } - } - - rowAddingIndex(row, index, top){ - if(this.table.options.groupBy){ - this.assignRowToGroup(row); - - var groupRows = row.modules.group.rows; - - if(groupRows.length > 1){ - if(!index || (index && groupRows.indexOf(index) == -1)){ - if(top){ - if(groupRows[0] !== row){ - index = groupRows[0]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - }else { - if(groupRows[groupRows.length -1] !== row){ - index = groupRows[groupRows.length -1]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - }else { - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - - return index; - } - } - - trackChanges(){ - this.dispatch("group-changed"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - setGroupBy(groups){ - this.table.options.groupBy = groups; - - if(!this.initialized){ - this.initialize(); - } - - this.configureGroupSetup(); - - if(!groups && this.table.modExists("columnCalcs") && this.table.options.columnCalcs === true){ - this.table.modules.columnCalcs.reinitializeCalcs(); - } - - this.refreshData(); - - this.trackChanges(); - } - - setGroupValues(groupValues){ - this.table.options.groupValues = groupValues; - this.configureGroupSetup(); - this.refreshData(); - - this.trackChanges(); - } - - setGroupStartOpen(values){ - this.table.options.groupStartOpen = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - setGroupHeader(values){ - this.table.options.groupHeader = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - userGetGroups(values){ - return this.getGroups(true); - } - - // get grouped table data in the same format as getData() - userGetGroupedData(){ - return this.table.options.groupBy ? this.getGroupedData() : this.getData(); - } - - - /////////////////////////////////////// - ///////// Component Functions ///////// - /////////////////////////////////////// - - rowGetGroup(row){ - return row.modules.group ? row.modules.group.getComponent() : false; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - rowMoving(from, to, after){ - if(this.table.options.groupBy){ - if(!after && to instanceof Group){ - to = this.table.rowManager.prevDisplayRow(from) || to; - } - - var toGroup = to instanceof Group ? to : to.modules.group; - var fromGroup = from instanceof Group ? from : from.modules.group; - - if(toGroup === fromGroup){ - this.table.rowManager.moveRowInArray(toGroup.rows, from, to, after); - }else { - if(fromGroup){ - fromGroup.removeRow(from); - } - - toGroup.insertRow(from, to, after); - } - } - } - - - rowDeleting(row){ - //remove from group - if(this.table.options.groupBy && row.modules.group){ - row.modules.group.removeRow(row); - } - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.updateGroupRows(true); - } - } - - cellUpdated(cell){ - if(this.table.options.groupBy){ - this.reassignRowToGroup(cell.row); - } - } - - //return appropriate rows with group headers - getRows(rows){ - if(this.table.options.groupBy && this.groupIDLookups.length){ - - this.dispatchExternal("dataGrouping"); - - this.generateGroups(rows); - - if(this.subscribedExternal("dataGrouped")){ - this.dispatchExternal("dataGrouped", this.getGroups(true)); - } - - return this.updateGroupRows(); - - }else { - return rows.slice(0); - } - } - - getGroups(component){ - var groupComponents = []; - - this.groupList.forEach(function(group){ - groupComponents.push(component ? group.getComponent() : group); - }); - - return groupComponents; - } - - getChildGroups(group){ - var groupComponents = []; - - if(!group){ - group = this; - } - - group.groupList.forEach((child) => { - if(child.groupList.length){ - groupComponents = groupComponents.concat(this.getChildGroups(child)); - }else { - groupComponents.push(child); - } - }); - - return groupComponents; - } - - wipe(){ - if(this.table.options.groupBy){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - - this.groupList = []; - this.groups = {}; - } - } - - pullGroupListData(groupList) { - var groupListData = []; - - groupList.forEach((group) => { - var groupHeader = {}; - groupHeader.level = 0; - groupHeader.rowCount = 0; - groupHeader.headerContent = ""; - var childData = []; - - if (group.hasSubGroups) { - childData = this.pullGroupListData(group.groupList); - - groupHeader.level = group.level; - groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers - groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group); - - groupListData.push(groupHeader); - groupListData = groupListData.concat(childData); - } - - else { - groupHeader.level = group.level; - groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group); - groupHeader.rowCount = group.getRows().length; - - groupListData.push(groupHeader); - - group.getRows().forEach((row) => { - groupListData.push(row.getData("data")); - }); - } - }); - - return groupListData; - } - - getGroupedData(){ - - return this.pullGroupListData(this.groupList); - } - - getRowGroup(row){ - var match = false; - - if(this.options("dataTree")){ - row = this.table.modules.dataTree.getTreeParentRoot(row); - } - - this.groupList.forEach((group) => { - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - - return match; - } - - countGroups(){ - return this.groupList.length; - } - - generateGroups(rows){ - var oldGroups = this.groups; - - this.groups = {}; - this.groupList = []; - - if(this.allowedValues && this.allowedValues[0]){ - this.allowedValues[0].forEach((value) => { - this.createGroup(value, 0, oldGroups); - }); - - rows.forEach((row) => { - this.assignRowToExistingGroup(row, oldGroups); - }); - }else { - rows.forEach((row) => { - this.assignRowToGroup(row, oldGroups); - }); - } - - Object.values(oldGroups).forEach((group) => { - group.wipe(true); - }); - } - - - createGroup(groupID, level, oldGroups){ - var groupKey = level + "_" + groupID, - group; - - oldGroups = oldGroups || []; - - group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - assignRowToExistingGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - groupKey = "0_" + groupID; - - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - } - - assignRowToGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - newGroupNeeded = !this.groups["0_" + groupID]; - - if(newGroupNeeded){ - this.createGroup(groupID, 0, oldGroups); - } - - this.groups["0_" + groupID].addRow(row); - - return !newGroupNeeded; - } - - reassignRowToGroup(row){ - if(row.type === "row"){ - var oldRowGroup = row.modules.group, - oldGroupPath = oldRowGroup.getPath(), - newGroupPath = this.getExpectedPath(row), - samePath; - - // figure out if new group path is the same as old group path - samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => { - return element === newGroupPath[index]; - }); - - // refresh if they new path and old path aren't the same (aka the row's groupings have changed) - if(!samePath) { - oldRowGroup.removeRow(row); - this.assignRowToGroup(row, this.groups); - this.refreshData(true); - } - } - } - - getExpectedPath(row) { - var groupPath = [], rowData = row.getData(); - - this.groupIDLookups.forEach((groupId) => { - groupPath.push(groupId.func(rowData)); - }); - - return groupPath; - } - - updateGroupRows(force){ - var output = []; - - if(!this.blockRedraw){ - this.groupList.forEach((group) => { - output = output.concat(group.getHeadersAndRows()); - }); - - if(force){ - this.refreshData(true); - } - } - - return output; - } - - scrollHeaders(left){ - if(this.table.options.groupBy){ - if(this.table.options.renderHorizontal === "virtual"){ - left -= this.table.columnManager.renderer.vDomPadLeft; - } - - left = left + "px"; - - this.groupList.forEach((group) => { - group.scrollHeader(left); - }); - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - } - } - - checkBasicModeGroupHeaderWidth(){ - var element = this.table.rowManager.tableElement, - onlyGroupHeaders = true; - - this.table.rowManager.getDisplayRows().forEach((row, index) =>{ - this.table.rowManager.styleRow(row, index); - element.appendChild(row.getElement()); - row.initialize(true); - - if(row.type !== "group"){ - onlyGroupHeaders = false; - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - -} - -GroupRows.moduleName = "groupRows"; - -var defaultUndoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.oldValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - action.component.deleteActual(); - }, - - rowDelete: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - }, - - rowMove: function(action){ - var after = (action.data.posFrom - action.data.posTo) > 0; - - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, -}; - -var defaultRedoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.newValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - }, - - rowDelete:function(action){ - action.component.deleteActual(); - }, - - rowMove: function(action){ - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, -}; - -class History extends Module{ - - constructor(table){ - super(table); - - this.history = []; - this.index = -1; - - this.registerTableOption("history", false); //enable edit history - } - - initialize(){ - if(this.table.options.history){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("cell-delete", this.clearComponentHistory.bind(this)); - this.subscribe("row-delete", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clear.bind(this)); - this.subscribe("row-added", this.rowAdded.bind(this)); - this.subscribe("row-move", this.rowMoved.bind(this)); - } - - this.registerTableFunction("undo", this.undo.bind(this)); - this.registerTableFunction("redo", this.redo.bind(this)); - this.registerTableFunction("getHistoryUndoSize", this.getHistoryUndoSize.bind(this)); - this.registerTableFunction("getHistoryRedoSize", this.getHistoryRedoSize.bind(this)); - this.registerTableFunction("clearHistory", this.clear.bind(this)); - } - - rowMoved(from, to, after){ - this.action("rowMove", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after}); - } - - rowAdded(row, data, pos, index){ - this.action("rowAdd", row, {data:data, pos:pos, index:index}); - } - - rowDeleted(row){ - var index, rows; - - if(this.table.options.groupBy){ - - rows = row.getComponent().getGroup()._getSelf().rows; - index = rows.indexOf(row); - - if(index){ - index = rows[index-1]; - } - }else { - index = row.table.rowManager.getRowIndex(row); - - if(index){ - index = row.table.rowManager.rows[index-1]; - } - } - - this.action("rowDelete", row, {data:row.getData(), pos:!index, index:index}); - } - - cellUpdated(cell){ - this.action("cellEdit", cell, {oldValue:cell.oldValue, newValue:cell.value}); - } - - clear(){ - this.history = []; - this.index = -1; - } - - action(type, component, data){ - this.history = this.history.slice(0, this.index + 1); - - this.history.push({ - type:type, - component:component, - data:data, - }); - - this.index ++; - } - - getHistoryUndoSize(){ - return this.index + 1; - } - - getHistoryRedoSize(){ - return this.history.length - (this.index + 1); - } - - clearComponentHistory(component){ - var index = this.history.findIndex(function(item){ - return item.component === component; - }); - - if(index > -1){ - this.history.splice(index, 1); - if(index <= this.index){ - this.index--; - } - - this.clearComponentHistory(component); - } - } - - undo(){ - if(this.index > -1){ - let action = this.history[this.index]; - - History.undoers[action.type].call(this, action); - - this.index--; - - this.dispatchExternal("historyUndo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn("History Undo Error - No more history to undo"); - return false; - } - } - - redo(){ - if(this.history.length-1 > this.index){ - - this.index++; - - let action = this.history[this.index]; - - History.redoers[action.type].call(this, action); - - this.dispatchExternal("historyRedo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn("History Redo Error - No more history to redo"); - return false; - } - } - - //rebind rows to new element after deletion - _rebindRow(oldRow, newRow){ - this.history.forEach(function(action){ - if(action.component instanceof Row){ - if(action.component === oldRow){ - action.component = newRow; - } - }else if(action.component instanceof Cell){ - if(action.component.row === oldRow){ - var field = action.component.column.getField(); - - if(field){ - action.component = newRow.getCell(field); - } - - } - } - }); - } -} - -History.moduleName = "history"; - -//load defaults -History.undoers = defaultUndoers; -History.redoers = defaultRedoers; - -class HtmlTableImport extends Module{ - - constructor(table){ - super(table); - - this.fieldIndex = []; - this.hasIndex = false; - } - - initialize(){ - this.tableElementCheck(); - } - - tableElementCheck(){ - if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - if(this.table.originalElement.childNodes.length){ - this.parseTable(); - }else { - console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."); - } - } - } - - parseTable(){ - var element = this.table.originalElement, - options = this.table.options, - headers = element.getElementsByTagName("th"), - rows = element.getElementsByTagName("tbody")[0], - data = []; - - this.hasIndex = false; - - this.dispatchExternal("htmlImporting"); - - rows = rows ? rows.getElementsByTagName("tr") : []; - - //check for Tabulator inline options - this._extractOptions(element, options); - - if(headers.length){ - this._extractHeaders(headers, rows); - }else { - this._generateBlankHeaders(headers, rows); - } - - //iterate through table rows and build data set - for(var index = 0; index < rows.length; index++){ - var row = rows[index], - cells = row.getElementsByTagName("td"), - item = {}; - - //create index if the don't exist in table - if(!this.hasIndex){ - item[options.index] = index; - } - - for(var i = 0; i < cells.length; i++){ - var cell = cells[i]; - if(typeof this.fieldIndex[i] !== "undefined"){ - item[this.fieldIndex[i]] = cell.innerHTML; - } - } - - //add row data to item - data.push(item); - } - - options.data = data; - - this.dispatchExternal("htmlImported"); - } - - //extract tabulator attribute options - _extractOptions(element, options, defaultOptions){ - var attributes = element.attributes; - var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options); - var optionsList = {}; - - optionsArr.forEach((item) => { - optionsList[item.toLowerCase()] = item; - }); - - for(var index in attributes){ - var attrib = attributes[index]; - var name; - - if(attrib && typeof attrib == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0){ - name = attrib.name.replace("tabulator-", ""); - - if(typeof optionsList[name] !== "undefined"){ - options[optionsList[name]] = this._attribValue(attrib.value); - } - } - } - } - - //get value of attribute - _attribValue(value){ - if(value === "true"){ - return true; - } - - if(value === "false"){ - return false; - } - - return value; - } - - //find column if it has already been defined - _findCol(title){ - var match = this.table.options.columns.find((column) => { - return column.title === title; - }); - - return match || false; - } - - //extract column from headers - _extractHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - exists = false, - col = this._findCol(header.textContent), - width; - - if(col){ - exists = true; - }else { - col = {title:header.textContent.trim()}; - } - - if(!col.field) { - col.field = header.textContent.trim().toLowerCase().replaceAll(" ", "_"); - } - - width = header.getAttribute("width"); - - if(width && !col.width) { - col.width = width; - } - - //check for Tabulator inline options - this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults); - - this.fieldIndex[index] = col.field; - - if(col.field == this.table.options.index){ - this.hasIndex = true; - } - - if(!exists){ - this.table.options.columns.push(col); - } - - } - } - - //generate blank headers - _generateBlankHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - col = {title:"", field:"col" + index}; - - this.fieldIndex[index] = col.field; - - var width = header.getAttribute("width"); - - if(width){ - col.width = width; - } - - this.table.options.columns.push(col); - } - } -} - -HtmlTableImport.moduleName = "htmlTableImport"; - -function csvImporter(input){ - var data = [], - row = 0, - col = 0, - inQuote = false; - - //Iterate over each character - for (let index = 0; index < input.length; index++) { - let char = input[index], - nextChar = input[index+1]; - - //Initialize empty row - if(!data[row]){ - data[row] = []; - } - - //Initialize empty column - if(!data[row][col]){ - data[row][col] = ""; - } - - //Handle quotation mark inside string - if (char == '"' && inQuote && nextChar == '"') { - data[row][col] += char; - index++; - continue; - } - - //Begin / End Quote - if (char == '"') { - inQuote = !inQuote; - continue; - } - - //Next column (if not in quote) - if (char == ',' && !inQuote) { - col++; - continue; - } - - //New row if new line and not in quote (CRLF) - if (char == '\r' && nextChar == '\n' && !inQuote) { - col = 0; - row++; - index++; - continue; - } - - //New row if new line and not in quote (CR or LF) - if ((char == '\r' || char == '\n') && !inQuote) { - col = 0; - row++; - continue; - } - - //Normal Character, append to column - data[row][col] += char; - } - - return data; -} - -function json$1(input){ - try { - return JSON.parse(input); - } catch(e) { - console.warn("JSON Import Error - File contents is invalid JSON", e); - return Promise.reject(); - } -} - -function arrayImporter(input){ - return input; -} - -var defaultImporters = { - csv:csvImporter, - json:json$1, - array:arrayImporter, -}; - -class Import extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("importFormat"); - this.registerTableOption("importReader", "text"); - } - - initialize(){ - this.registerTableFunction("import", this.importFromFile.bind(this)); - - if(this.table.options.importFormat){ - this.subscribe("data-loading", this.loadDataCheck.bind(this), 10); - this.subscribe("data-load", this.loadData.bind(this), 10); - } - } - - loadDataCheck(data){ - return this.table.options.importFormat && (typeof data === "string" || (Array.isArray(data) && data.length && Array.isArray(data))); - } - - loadData(data, params, config, silent, previousData){ - return this.importData(this.lookupImporter(), data) - .then(this.structureData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import data"); - return Promise.reject(err); - }); - } - - lookupImporter(importFormat){ - var importer; - - if(!importFormat){ - importFormat = this.table.options.importFormat; - } - - if(typeof importFormat === "string"){ - importer = Import.importers[importFormat]; - }else { - importer = importFormat; - } - - if(!importer){ - console.error("Import Error - Importer not found:", importFormat); - } - - return importer; - } - - importFromFile(importFormat, extension){ - var importer = this.lookupImporter(importFormat); - - if(importer){ - return this.pickFile(extension) - .then(this.importData.bind(this, importer)) - .then(this.structureData.bind(this)) - .then(this.setData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import file"); - return Promise.reject(err); - }); - } - } - - pickFile(extensions){ - return new Promise((resolve, reject) => { - var input = document.createElement("input"); - input.type = "file"; - input.accept = extensions; - - input.addEventListener("change", (e) => { - var file = input.files[0], - reader = new FileReader(); - - switch(this.table.options.importReader){ - case "buffer": - reader.readAsArrayBuffer(file); - break; - - case "binary": - reader.readAsBinaryString(file); - break; - - case "url": - reader.readAsDataURL(file); - break; - - case "text": - default: - reader.readAsText(file); - } - - reader.onload = (e) => { - resolve(reader.result); - }; - - reader.onerror = (e) => { - console.warn("File Load Error - Unable to read file"); - reject(); - }; - }); - - input.click(); - }); - } - - importData(importer, fileContents){ - var data = importer.call(this.table, fileContents); - - if(data instanceof Promise){ - return data; - }else { - return data ? Promise.resolve(data) : Promise.reject(); - } - } - - structureData(parsedData){ - var data = []; - - if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){ - if(this.table.options.autoColumns){ - data = this.structureArrayToObject(parsedData); - }else { - data = this.structureArrayToColumns(parsedData); - } - - return data; - }else { - return parsedData; - } - } - - structureArrayToObject(parsedData){ - var columns = parsedData.shift(); - - var data = parsedData.map((values) => { - var row = {}; - - columns.forEach((key, i) => { - row[key] = values[i]; - }); - - return row; - }); - - return data; - } - - structureArrayToColumns(parsedData){ - var data = [], - columns = this.table.getColumns(); - - //remove first row if it is the column names - if(columns[0] && parsedData[0][0]){ - if(columns[0].getDefinition().title === parsedData[0][0]){ - parsedData.shift(); - } - } - - //convert row arrays to objects - parsedData.forEach((rowData) => { - var row = {}; - - rowData.forEach((value, index) => { - var column = columns[index]; - - if(column){ - row[column.getField()] = value; - } - }); - - data.push(row); - }); - - return data; - } - - setData(data){ - return this.table.setData(data); - } -} - -Import.moduleName = "import"; - -//load defaults -Import.importers = defaultImporters; - -class Interaction extends Module{ - - constructor(table){ - super(table); - - this.eventMap = { - //row events - rowClick:"row-click", - rowDblClick:"row-dblclick", - rowContext:"row-contextmenu", - rowMouseEnter:"row-mouseenter", - rowMouseLeave:"row-mouseleave", - rowMouseOver:"row-mouseover", - rowMouseOut:"row-mouseout", - rowMouseMove:"row-mousemove", - rowMouseDown:"row-mousedown", - rowMouseUp:"row-mouseup", - rowTap:"row", - rowDblTap:"row", - rowTapHold:"row", - - //cell events - cellClick:"cell-click", - cellDblClick:"cell-dblclick", - cellContext:"cell-contextmenu", - cellMouseEnter:"cell-mouseenter", - cellMouseLeave:"cell-mouseleave", - cellMouseOver:"cell-mouseover", - cellMouseOut:"cell-mouseout", - cellMouseMove:"cell-mousemove", - cellMouseDown:"cell-mousedown", - cellMouseUp:"cell-mouseup", - cellTap:"cell", - cellDblTap:"cell", - cellTapHold:"cell", - - //column header events - headerClick:"column-click", - headerDblClick:"column-dblclick", - headerContext:"column-contextmenu", - headerMouseEnter:"column-mouseenter", - headerMouseLeave:"column-mouseleave", - headerMouseOver:"column-mouseover", - headerMouseOut:"column-mouseout", - headerMouseMove:"column-mousemove", - headerMouseDown:"column-mousedown", - headerMouseUp:"column-mouseup", - headerTap:"column", - headerDblTap:"column", - headerTapHold:"column", - - //group header - groupClick:"group-click", - groupDblClick:"group-dblclick", - groupContext:"group-contextmenu", - groupMouseEnter:"group-mouseenter", - groupMouseLeave:"group-mouseleave", - groupMouseOver:"group-mouseover", - groupMouseOut:"group-mouseout", - groupMouseMove:"group-mousemove", - groupMouseDown:"group-mousedown", - groupMouseUp:"group-mouseup", - groupTap:"group", - groupDblTap:"group", - groupTapHold:"group", - }; - - this.subscribers = {}; - - this.touchSubscribers = {}; - - this.columnSubscribers = {}; - - this.touchWatchers = { - row:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - cell:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - column:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - group:{ - tap:null, - tapDbl:null, - tapHold:null, - } - }; - - this.registerColumnOption("headerClick"); - this.registerColumnOption("headerDblClick"); - this.registerColumnOption("headerContext"); - this.registerColumnOption("headerMouseEnter"); - this.registerColumnOption("headerMouseLeave"); - this.registerColumnOption("headerMouseOver"); - this.registerColumnOption("headerMouseOut"); - this.registerColumnOption("headerMouseMove"); - this.registerColumnOption("headerMouseDown"); - this.registerColumnOption("headerMouseUp"); - this.registerColumnOption("headerTap"); - this.registerColumnOption("headerDblTap"); - this.registerColumnOption("headerTapHold"); - - this.registerColumnOption("cellClick"); - this.registerColumnOption("cellDblClick"); - this.registerColumnOption("cellContext"); - this.registerColumnOption("cellMouseEnter"); - this.registerColumnOption("cellMouseLeave"); - this.registerColumnOption("cellMouseOver"); - this.registerColumnOption("cellMouseOut"); - this.registerColumnOption("cellMouseMove"); - this.registerColumnOption("cellMouseDown"); - this.registerColumnOption("cellMouseUp"); - this.registerColumnOption("cellTap"); - this.registerColumnOption("cellDblTap"); - this.registerColumnOption("cellTapHold"); - - } - - initialize(){ - this.initializeExternalEvents(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("cell-dblclick", this.cellContentsSelectionFixer.bind(this)); - this.subscribe("scroll-horizontal", this.clearTouchWatchers.bind(this)); - this.subscribe("scroll-vertical", this.clearTouchWatchers.bind(this)); - } - - clearTouchWatchers(){ - var types = Object.values(this.touchWatchers); - - types.forEach((type) => { - for(let key in type){ - type[key] = null; - } - }); - } - - cellContentsSelectionFixer(e, cell){ - var range; - - if(this.table.modExists("edit")){ - if (this.table.modules.edit.currentCell === cell){ - return; //prevent instant selection of editor content - } - } - - e.preventDefault(); - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - initializeExternalEvents(){ - for(let key in this.eventMap){ - this.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key)); - } - } - - subscriptionChanged(key, added){ - if(added){ - if(!this.subscribers[key]){ - if(this.eventMap[key].includes("-")){ - this.subscribers[key] = this.handle.bind(this, key); - this.subscribe(this.eventMap[key], this.subscribers[key]); - }else { - this.subscribeTouchEvents(key); - } - } - }else { - if(this.eventMap[key].includes("-")){ - if(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){ - this.unsubscribe(this.eventMap[key], this.subscribers[key]); - delete this.subscribers[key]; - } - }else { - this.unsubscribeTouchEvents(key); - } - } - } - - - subscribeTouchEvents(key){ - var type = this.eventMap[key]; - - if(!this.touchSubscribers[type + "-touchstart"]){ - this.touchSubscribers[type + "-touchstart"] = this.handleTouch.bind(this, type, "start"); - this.touchSubscribers[type + "-touchend"] = this.handleTouch.bind(this, type, "end"); - - this.subscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.subscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - } - - this.subscribers[key] = true; - } - - unsubscribeTouchEvents(key){ - var noTouch = true, - type = this.eventMap[key]; - - if(this.subscribers[key] && !this.subscribedExternal(key)){ - delete this.subscribers[key]; - - for(let i in this.eventMap){ - if(this.eventMap[i] === type){ - if(this.subscribers[i]){ - noTouch = false; - } - } - } - - if(noTouch){ - this.unsubscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.unsubscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - - delete this.touchSubscribers[type + "-touchstart"]; - delete this.touchSubscribers[type + "-touchend"]; - } - } - } - - initializeColumn(column){ - var def = column.definition; - - for(let key in this.eventMap){ - if(def[key]){ - this.subscriptionChanged(key, true); - - if(!this.columnSubscribers[key]){ - this.columnSubscribers[key] = []; - } - - this.columnSubscribers[key].push(column); - } - } - } - - handle(action, e, component){ - this.dispatchEvent(action, e, component); - } - - handleTouch(type, action, e, component){ - var watchers = this.touchWatchers[type]; - - if(type === "column"){ - type = "header"; - } - - switch(action){ - case "start": - watchers.tap = true; - - clearTimeout(watchers.tapHold); - - watchers.tapHold = setTimeout(() => { - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - - watchers.tap = null; - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "TapHold", e, component); - }, 1000); - break; - - case "end": - if(watchers.tap){ - - watchers.tap = null; - this.dispatchEvent(type + "Tap", e, component); - } - - if(watchers.tapDbl){ - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "DblTap", e, component); - }else { - watchers.tapDbl = setTimeout(() => { - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - }, 300); - } - - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - break; - } - } - - dispatchEvent(action, e, component){ - var componentObj = component.getComponent(), - callback; - - if(this.columnSubscribers[action]){ - - if(component instanceof Cell){ - callback = component.column.definition[action]; - }else if(component instanceof Column){ - callback = component.definition[action]; - } - - if(callback){ - callback(e, componentObj); - } - } - - this.dispatchExternal(action, e, componentObj); - } -} - -Interaction.moduleName = "interaction"; - -var defaultBindings = { - navPrev:"shift + 9", - navNext:9, - navUp:38, - navDown:40, - scrollPageUp:33, - scrollPageDown:34, - scrollToStart:36, - scrollToEnd:35, - undo:["ctrl + 90", "meta + 90"], - redo:["ctrl + 89", "meta + 89"], - copyToClipboard:["ctrl + 67", "meta + 67"], -}; - -var defaultActions = { - keyBlock:function(e){ - e.stopPropagation(); - e.preventDefault(); - }, - scrollPageUp:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop - rowManager.element.clientHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos >= 0){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - } - - this.table.element.focus(); - }, - scrollPageDown:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop + rowManager.element.clientHeight, - scrollMax = rowManager.element.scrollHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos <= scrollMax){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - } - - this.table.element.focus(); - - }, - scrollToStart:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - - this.table.element.focus(); - }, - scrollToEnd:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - - this.table.element.focus(); - }, - navPrev:function(e){ - this.dispatch("keybinding-nav-prev", e); - }, - - navNext:function(e){ - this.dispatch("keybinding-nav-next", e); - }, - - navLeft:function(e){ - this.dispatch("keybinding-nav-left", e); - }, - - navRight:function(e){ - this.dispatch("keybinding-nav-right", e); - }, - - navUp:function(e){ - this.dispatch("keybinding-nav-up", e); - }, - - navDown:function(e){ - this.dispatch("keybinding-nav-down", e); - }, - - undo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.undo(); - } - } - }, - - redo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.redo(); - } - } - }, - - copyToClipboard:function(e){ - if(!this.table.modules.edit.currentCell){ - if(this.table.modExists("clipboard", true)){ - this.table.modules.clipboard.copy(false, true); - } - } - }, -}; - -class Keybindings extends Module{ - - constructor(table){ - super(table); - - this.watchKeys = null; - this.pressedKeys = null; - this.keyupBinding = false; - this.keydownBinding = false; - - this.registerTableOption("keybindings", {}); //array for keybindings - this.registerTableOption("tabEndNewRow", false); //create new row when tab to end of table - } - - initialize(){ - var bindings = this.table.options.keybindings, - mergedBindings = {}; - - this.watchKeys = {}; - this.pressedKeys = []; - - if(bindings !== false){ - Object.assign(mergedBindings, Keybindings.bindings); - Object.assign(mergedBindings, bindings); - - this.mapBindings(mergedBindings); - this.bindEvents(); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - - mapBindings(bindings){ - for(let key in bindings){ - if(Keybindings.actions[key]){ - if(bindings[key]){ - if(typeof bindings[key] !== "object"){ - bindings[key] = [bindings[key]]; - } - - bindings[key].forEach((binding) => { - var bindingList = Array.isArray(binding) ? binding : [binding]; - - bindingList.forEach((item) => { - this.mapBinding(key, item); - }); - }); - } - }else { - console.warn("Key Binding Error - no such action:", key); - } - } - } - - mapBinding(action, symbolsList){ - var binding = { - action: Keybindings.actions[action], - keys: [], - ctrl: false, - shift: false, - meta: false, - }; - - var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+"); - - symbols.forEach((symbol) => { - switch(symbol){ - case "ctrl": - binding.ctrl = true; - break; - - case "shift": - binding.shift = true; - break; - - case "meta": - binding.meta = true; - break; - - default: - symbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol); - binding.keys.push(symbol); - - if(!this.watchKeys[symbol]){ - this.watchKeys[symbol] = []; - } - - this.watchKeys[symbol].push(binding); - } - }); - } - - bindEvents(){ - var self = this; - - this.keyupBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - self.pressedKeys.push(code); - - bindings.forEach(function(binding){ - self.checkBinding(e, binding); - }); - } - }; - - this.keydownBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - var index = self.pressedKeys.indexOf(code); - - if(index > -1){ - self.pressedKeys.splice(index, 1); - } - } - }; - - this.table.element.addEventListener("keydown", this.keyupBinding); - - this.table.element.addEventListener("keyup", this.keydownBinding); - } - - clearBindings(){ - if(this.keyupBinding){ - this.table.element.removeEventListener("keydown", this.keyupBinding); - } - - if(this.keydownBinding){ - this.table.element.removeEventListener("keyup", this.keydownBinding); - } - } - - checkBinding(e, binding){ - var match = true; - - if(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){ - binding.keys.forEach((key) => { - var index = this.pressedKeys.indexOf(key); - - if(index == -1){ - match = false; - } - }); - - if(match){ - binding.action.call(this, e); - } - - return true; - } - - return false; - } -} - -Keybindings.moduleName = "keybindings"; - -//load defaults -Keybindings.bindings = defaultBindings; -Keybindings.actions = defaultActions; - -class Menu extends Module{ - - constructor(table){ - super(table); - - this.menuContainer = null; - this.nestedMenuBlock = false; - - this.currentComponent = null; - this.rootPopup = null; - - this.columnSubscribers = {}; - - this.registerTableOption("menuContainer", undefined); //deprecated - - this.registerTableOption("rowContextMenu", false); - this.registerTableOption("rowClickMenu", false); - this.registerTableOption("rowDblClickMenu", false); - this.registerTableOption("groupContextMenu", false); - this.registerTableOption("groupClickMenu", false); - this.registerTableOption("groupDblClickMenu", false); - - this.registerColumnOption("headerContextMenu"); - this.registerColumnOption("headerClickMenu"); - this.registerColumnOption("headerDblClickMenu"); - this.registerColumnOption("headerMenu"); - this.registerColumnOption("headerMenuIcon"); - this.registerColumnOption("contextMenu"); - this.registerColumnOption("clickMenu"); - this.registerColumnOption("dblClickMenu"); - - } - - initialize(){ - this.deprecatedOptionsCheck(); - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - if(!this.deprecationCheck("menuContainer", "popupContainer")){ - this.table.options.popupContainer = this.table.options.menuContainer; - } - } - - initializeRowWatchers(){ - if(this.table.options.rowContextMenu){ - this.subscribe("row-contextmenu", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - this.table.on("rowTapHold", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - } - - if(this.table.options.rowClickMenu){ - this.subscribe("row-click", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu)); - } - - if(this.table.options.rowDblClickMenu){ - this.subscribe("row-dblclick", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextMenu){ - this.subscribe("group-contextmenu", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - this.table.on("groupTapHold", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - } - - if(this.table.options.groupClickMenu){ - this.subscribe("group-click", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu)); - } - - if(this.table.options.groupDblClickMenu){ - this.subscribe("group-dblclick", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){ - this.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, "headerContextMenu"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextMenu); - this.table.on("headerTapHold", this.loadMenuTableColumnEvent.bind(this, "headerContextMenu")); - } - - if(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){ - this.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerClickMenu"); - this.subscribe("column-click", this.columnSubscribers.headerClickMenu); - } - - if(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){ - this.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerDblClickMenu"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickMenu); - } - - if(def.headerMenu){ - this.initializeColumnHeaderMenu(column); - } - - //handle cell events - if(def.contextMenu && !this.columnSubscribers.contextMenu){ - this.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, "contextMenu"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextMenu); - this.table.on("cellTapHold", this.loadMenuTableCellEvent.bind(this, "contextMenu")); - } - - if(def.clickMenu && !this.columnSubscribers.clickMenu){ - this.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, "clickMenu"); - this.subscribe("cell-click", this.columnSubscribers.clickMenu); - } - - if(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){ - this.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, "dblClickMenu"); - this.subscribe("cell-dblclick", this.columnSubscribers.dblClickMenu); - } - } - - initializeColumnHeaderMenu(column){ - var icon = column.definition.headerMenuIcon, - headerMenuEl; - - headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerMenuEl.appendChild(icon); - }else { - headerMenuEl.innerHTML = icon; - } - }else { - headerMenuEl.innerHTML = "⋮"; - } - - headerMenuEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadMenuEvent(column.definition.headerMenu, e, column); - }); - - column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild); - } - - loadMenuTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadMenuEvent(cell.column.definition[option], e, cell); - } - } - - loadMenuTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadMenuEvent(column.definition[option], e, column); - } - } - - loadMenuEvent(menu, e, component){ - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; - - this.loadMenu(e, component, menu); - } - - loadMenu(e, component, menu, parentEl, parentPopup){ - var touch = !(e instanceof MouseEvent), - menuEl = document.createElement("div"), - popup; - - menuEl.classList.add("tabulator-menu"); - - if(!touch){ - e.preventDefault(); - } - - //abort if no menu set - if(!menu || !menu.length){ - return; - } - - if(!parentEl){ - if(this.nestedMenuBlock){ - //abort if child menu already open - if(this.rootPopup){ - return; - } - }else { - this.nestedMenuBlock = setTimeout(() => { - this.nestedMenuBlock = false; - }, 100); - } - - if(this.rootPopup){ - this.rootPopup.hide(); - } - - this.rootPopup = popup = this.popup(menuEl); - - }else { - popup = parentPopup.child(menuEl); - } - - menu.forEach((item) => { - var itemEl = document.createElement("div"), - label = item.label, - disabled = item.disabled; - - if(item.separator){ - itemEl.classList.add("tabulator-menu-separator"); - }else { - itemEl.classList.add("tabulator-menu-item"); - - if(typeof label == "function"){ - label = label.call(this.table, component.getComponent()); - } - - if(label instanceof Node){ - itemEl.appendChild(label); - }else { - itemEl.innerHTML = label; - } - - if(typeof disabled == "function"){ - disabled = disabled.call(this.table, component.getComponent()); - } - - if(disabled){ - itemEl.classList.add("tabulator-menu-item-disabled"); - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - }); - }else { - if(item.menu && item.menu.length){ - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.loadMenu(e, component, item.menu, itemEl, popup); - }); - }else { - if(item.action){ - itemEl.addEventListener("click", (e) => { - item.action(e, component.getComponent()); - }); - } - } - } - - if(item.menu && item.menu.length){ - itemEl.classList.add("tabulator-menu-item-submenu"); - } - } - - menuEl.appendChild(itemEl); - }); - - menuEl.addEventListener("click", (e) => { - if(this.rootPopup){ - this.rootPopup.hide(); - } - }); - - popup.show(parentEl || e); - - if(popup === this.rootPopup){ - this.rootPopup.hideOnBlur(() => { - this.rootPopup = null; - - if(this.currentComponent){ - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; - } - }); - - this.currentComponent = component; - - this.dispatchExternal("menuOpened", component.getComponent()); - } - } -} - -Menu.moduleName = "menu"; - -class MoveColumns extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating column header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving column - this.toCol = false; //destination column - this.toColAfter = false; //position of moving column relative to the destination column - this.startX = 0; //starting position within header element - this.autoScrollMargin = 40; //auto scroll on edge when within margin - this.autoScrollStep = 5; //auto scroll distance in pixels - this.autoScrollTimeout = false; //auto scroll timeout - this.touchMove = false; - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - - this.registerTableOption("movableColumns", false); //enable movable columns - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.classList.add("tabulator-col-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableColumns){ - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - } - - initializeColumn(column){ - var self = this, - config = {}, - colEl; - - if(!column.modules.frozen && !column.isGroup){ - colEl = column.getElement(); - - config.mousemove = function(e){ - if(column.parent === self.moving.parent){ - if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){ - if(self.toCol !== column || !self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling); - self.moveColumn(column, true); - } - }else { - if(self.toCol !== column || self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl); - self.moveColumn(column, false); - } - } - } - }.bind(self); - - colEl.addEventListener("mousedown", function(e){ - self.touchMove = false; - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, column); - }, self.checkPeriod); - } - }); - - colEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - self.bindTouchEvents(column); - } - - column.modules.moveColumn = config; - } - - bindTouchEvents(column){ - var colEl = column.getElement(), - startXMove = false, //shifting center position of the cell - nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast; - - colEl.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextCol = column.nextColumn(); - nextColWidth = nextCol ? nextCol.getWidth()/2 : 0; - prevCol = column.prevColumn(); - prevColWidth = prevCol ? prevCol.getWidth()/2 : 0; - nextColWidthLast = 0; - prevColWidthLast = 0; - startXMove = false; - - this.startMove(e, column); - }, this.checkPeriod); - }, {passive: true}); - - colEl.addEventListener("touchmove", (e) => { - var diff, moveToCol; - - if(this.moving){ - this.moveHover(e); - - if(!startXMove){ - startXMove = e.touches[0].pageX; - } - - diff = e.touches[0].pageX - startXMove; - - if(diff > 0){ - if(nextCol && diff - nextColWidthLast > nextColWidth){ - moveToCol = nextCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling); - this.moveColumn(moveToCol, true); - } - } - }else { - if(prevCol && -diff - prevColWidthLast > prevColWidth){ - moveToCol = prevCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement()); - this.moveColumn(moveToCol, false); - } - } - } - - if(moveToCol){ - nextCol = moveToCol.nextColumn(); - nextColWidthLast = nextColWidth; - nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0; - prevCol = moveToCol.prevColumn(); - prevColWidthLast = prevColWidth; - prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0; - } - } - }, {passive: true}); - - colEl.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - } - }); - } - - startMove(e, column){ - var element = column.getElement(), - headerElement = this.table.columnManager.getContentsElement(), - headersElement = this.table.columnManager.getHeadersElement(); - - this.moving = column; - this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = column.getWidth() + "px"; - this.placeholderElement.style.height = column.getHeight() + "px"; - - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - headerElement.appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + "px"; - - if(!this.touchMove){ - this._bindMouseMove(); - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - } - - this.moveHover(e); - } - - _bindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - moveColumn(column, after){ - var movingCells = this.moving.getCells(); - - this.toCol = column; - this.toColAfter = after; - - if(after){ - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling); - } - }); - }else { - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl); - } - }); - } - } - - endMove(e){ - if(e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toCol){ - this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter); - } - - this.moving = false; - this.toCol = false; - this.toColAfter = false; - - if(!this.touchMove){ - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - } - } - } - - moveHover(e){ - var columnHolder = this.table.columnManager.getContentsElement(), - scrollLeft = columnHolder.scrollLeft, - xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft, - scrollPos; - - this.hoverElement.style.left = (xPos - this.startX) + "px"; - - if(xPos - scrollLeft < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.max(0,scrollLeft-5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - - if(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - } -} - -MoveColumns.moduleName = "moveColumn"; - -class MoveRows extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating row header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving row - this.toRow = false; //destination row - this.toRowAfter = false; //position of moving row relative to the destination row - this.hasHandle = false; //row has handle instead of fully movable row - this.startY = 0; //starting Y position within header element - this.startX = 0; //starting X position within header element - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - this.tableRowDropEvent = false; - - this.touchMove = false; - - this.connection = false; - this.connectionSelectorsTables = false; - this.connectionSelectorsElements = false; - this.connectionElements = []; - this.connections = []; - - this.connectedTable = false; - this.connectedRow = false; - - this.registerTableOption("movableRows", false); //enable movable rows - this.registerTableOption("movableRowsConnectedTables", false); //tables for movable rows to be connected to - this.registerTableOption("movableRowsConnectedElements", false); //other elements for movable rows to be connected to - this.registerTableOption("movableRowsSender", false); - this.registerTableOption("movableRowsReceiver", "insert"); - - this.registerColumnOption("rowHandle"); - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.classList.add("tabulator-row-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableRows){ - this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables; - this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements; - - this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements; - - this.subscribe("cell-init", this.initializeCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - } - } - - initializeGroupHeader(group){ - var self = this, - config = {}; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, group); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl; - - if(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){ - if(self.toRow !== group || !self.toRowAfter){ - rowEl = group.getElement(); - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(group, true); - } - }else { - if(self.toRow !== group || self.toRowAfter){ - rowEl = group.getElement(); - if(rowEl.previousSibling){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(group, false); - } - } - } - }.bind(self); - - group.modules.moveRow = config; - } - - initializeRow(row){ - var self = this, - config = {}, - rowEl; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, row); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl = row.getElement(); - - if(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){ - if(self.toRow !== row || !self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(row, true); - } - }else { - if(self.toRow !== row || self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(row, false); - } - } - }.bind(self); - - - if(!this.hasHandle){ - - rowEl = row.getElement(); - - rowEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, row); - }, self.checkPeriod); - } - }); - - rowEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(row, row.getElement()); - } - - row.modules.moveRow = config; - } - - initializeColumn(column){ - if(column.definition.rowHandle && this.table.options.movableRows !== false){ - this.hasHandle = true; - } - } - - initializeCell(cell){ - if(cell.column.definition.rowHandle && this.table.options.movableRows !== false){ - var self = this, - cellEl = cell.getElement(true); - - cellEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, cell.row); - }, self.checkPeriod); - } - }); - - cellEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(cell.row, cellEl); - } - } - - bindTouchEvents(row, element){ - var startYMove = false, //shifting center position of the cell - nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast; - - element.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextRow = row.nextRow(); - nextRowHeight = nextRow ? nextRow.getHeight()/2 : 0; - prevRow = row.prevRow(); - prevRowHeight = prevRow ? prevRow.getHeight()/2 : 0; - nextRowHeightLast = 0; - prevRowHeightLast = 0; - startYMove = false; - - this.startMove(e, row); - }, this.checkPeriod); - }, {passive: true}); - this.moving, this.toRow, this.toRowAfter; - element.addEventListener("touchmove", (e) => { - - var diff, moveToRow; - - if(this.moving){ - e.preventDefault(); - - this.moveHover(e); - - if(!startYMove){ - startYMove = e.touches[0].pageY; - } - - diff = e.touches[0].pageY - startYMove; - - if(diff > 0){ - if(nextRow && diff - nextRowHeightLast > nextRowHeight){ - moveToRow = nextRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling); - this.moveRow(moveToRow, true); - } - } - }else { - if(prevRow && -diff - prevRowHeightLast > prevRowHeight){ - moveToRow = prevRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement()); - this.moveRow(moveToRow, false); - } - } - } - - if(moveToRow){ - nextRow = moveToRow.nextRow(); - nextRowHeightLast = nextRowHeight; - nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0; - prevRow = moveToRow.prevRow(); - prevRowHeightLast = prevRowHeight; - prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0; - } - } - }); - - element.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - this.touchMove = false; - } - }); - } - - _bindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - startMove(e, row){ - var element = row.getElement(); - - this.setStartPosition(e, row); - - this.moving = row; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = row.getWidth() + "px"; - this.placeholderElement.style.height = row.getHeight() + "px"; - - if(!this.connection){ - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - }else { - this.table.element.classList.add("tabulator-movingrow-sending"); - this.connectToTables(row); - } - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - if(this.connection){ - document.body.appendChild(this.hoverElement); - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - this.hoverElement.style.width = this.table.element.clientWidth + "px"; - this.hoverElement.style.whiteSpace = "nowrap"; - this.hoverElement.style.overflow = "hidden"; - this.hoverElement.style.pointerEvents = "none"; - }else { - this.table.rowManager.getTableElement().appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - - this._bindMouseMove(); - } - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - - this.dispatchExternal("rowMoving", row.getComponent()); - - this.moveHover(e); - } - - setStartPosition(e, row){ - var pageX = this.touchMove ? e.touches[0].pageX : e.pageX, - pageY = this.touchMove ? e.touches[0].pageY : e.pageY, - element, position; - - element = row.getElement(); - if(this.connection){ - position = element.getBoundingClientRect(); - - this.startX = position.left - pageX + window.pageXOffset; - this.startY = position.top - pageY + window.pageYOffset; - }else { - this.startY = (pageY - element.getBoundingClientRect().top); - } - } - - endMove(e){ - if(!e || e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - if(!this.connection){ - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - } - - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toRow){ - this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter); - }else { - this.dispatchExternal("rowMoveCancelled", this.moving.getComponent()); - } - - this.moving = false; - this.toRow = false; - this.toRowAfter = false; - - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - - if(this.connection){ - this.table.element.classList.remove("tabulator-movingrow-sending"); - this.disconnectFromTables(); - } - } - } - - moveRow(row, after){ - this.toRow = row; - this.toRowAfter = after; - } - - moveHover(e){ - if(this.connection){ - this.moveHoverConnections.call(this, e); - }else { - this.moveHoverTable.call(this, e); - } - } - - moveHoverTable(e){ - var rowHolder = this.table.rowManager.getElement(), - scrollTop = rowHolder.scrollTop, - yPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop; - - this.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + "px"; - } - - moveHoverConnections(e){ - this.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + "px"; - this.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + "px"; - } - - elementRowDrop(e, element, row){ - this.dispatchExternal("movableRowsElementDrop", e, element, row ? row.getComponent() : false); - } - - //establish connection with other tables - connectToTables(row){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStart", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "connect", { - row:row, - }); - } - - if(this.connectionSelectorsElements){ - - this.connectionElements = []; - - if(!Array.isArray(this.connectionSelectorsElements)){ - this.connectionSelectorsElements = [this.connectionSelectorsElements]; - } - - this.connectionSelectorsElements.forEach((query) => { - if(typeof query === "string"){ - this.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query))); - }else { - this.connectionElements.push(query); - } - }); - - this.connectionElements.forEach((element) => { - var dropEvent = (e) => { - this.elementRowDrop(e, element, this.moving); - }; - - element.addEventListener("mouseup", dropEvent); - element.tabulatorElementDropEvent = dropEvent; - - element.classList.add("tabulator-movingrow-receiving"); - }); - } - } - - //disconnect from other tables - disconnectFromTables(){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStop", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "disconnect"); - } - - this.connectionElements.forEach((element) => { - element.classList.remove("tabulator-movingrow-receiving"); - element.removeEventListener("mouseup", element.tabulatorElementDropEvent); - delete element.tabulatorElementDropEvent; - }); - } - - //accept incomming connection - connect(table, row){ - if(!this.connectedTable){ - this.connectedTable = table; - this.connectedRow = row; - - this.table.element.classList.add("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) => { - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.tableRowDropEvent = this.tableRowDrop.bind(this); - - this.table.element.addEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStart", row, table); - - return true; - }else { - console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable); - return false; - } - } - - //close incoming connection - disconnect(table){ - if(table === this.connectedTable){ - this.connectedTable = false; - this.connectedRow = false; - - this.table.element.classList.remove("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.table.element.removeEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStop", table); - }else { - console.warn("Move Row Error - trying to disconnect from non connected table"); - } - } - - dropComplete(table, row, success){ - var sender = false; - - if(success){ - - switch(typeof this.table.options.movableRowsSender){ - case "string": - sender = this.senders[this.table.options.movableRowsSender]; - break; - - case "function": - sender = this.table.options.movableRowsSender; - break; - } - - if(sender){ - sender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table); - }else { - if(this.table.options.movableRowsSender){ - console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender); - } - } - - this.dispatchExternal("movableRowsSent", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - }else { - this.dispatchExternal("movableRowsSentFailed", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - } - - this.endMove(); - } - - tableRowDrop(e, row){ - var receiver = false, - success = false; - - e.stopImmediatePropagation(); - - switch(typeof this.table.options.movableRowsReceiver){ - case "string": - receiver = this.receivers[this.table.options.movableRowsReceiver]; - break; - - case "function": - receiver = this.table.options.movableRowsReceiver; - break; - } - - if(receiver){ - success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver); - } - - if(success){ - this.dispatchExternal("movableRowsReceived", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - this.dispatchExternal("movableRowsReceivedFailed", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - } - - this.commsSend(this.connectedTable, "moveRow", "dropcomplete", { - row:row, - success:success, - }); - } - - commsReceived(table, action, data){ - switch(action){ - case "connect": - return this.connect(table, data.row); - - case "disconnect": - return this.disconnect(table); - - case "dropcomplete": - return this.dropComplete(table, data.row, data.success); - } - } -} - -MoveRows.prototype.receivers = { - insert:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData(), undefined, toRow); - return true; - }, - - add:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData()); - return true; - }, - - update:function(fromRow, toRow, fromTable){ - if(toRow){ - toRow.update(fromRow.getData()); - return true; - } - - return false; - }, - - replace:function(fromRow, toRow, fromTable){ - if(toRow){ - this.table.addRow(fromRow.getData(), undefined, toRow); - toRow.delete(); - return true; - } - - return false; - }, -}; - -MoveRows.prototype.senders = { - delete:function(fromRow, toRow, toTable){ - fromRow.delete(); - } -}; - -MoveRows.moduleName = "moveRow"; - -var defaultMutators = {}; - -class Mutator extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of mutation types - this.enabled = true; - - this.registerColumnOption("mutator"); - this.registerColumnOption("mutatorParams"); - this.registerColumnOption("mutatorData"); - this.registerColumnOption("mutatorDataParams"); - this.registerColumnOption("mutatorEdit"); - this.registerColumnOption("mutatorEditParams"); - this.registerColumnOption("mutatorClipboard"); - this.registerColumnOption("mutatorClipboardParams"); - this.registerColumnOption("mutateLink"); - } - - initialize(){ - this.subscribe("cell-value-changing", this.transformCell.bind(this)); - this.subscribe("cell-value-changed", this.mutateLink.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-init-before", this.rowDataChanged.bind(this)); - this.subscribe("row-data-changing", this.rowDataChanged.bind(this)); - } - - rowDataChanged(row, tempData, updatedData){ - return this.transformRow(tempData, "data", updatedData); - } - - //initialize column mutator - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - mutator; - - if(column.definition[key]){ - mutator = this.lookupMutator(column.definition[key]); - - if(mutator){ - match = true; - - config[key] = { - mutator:mutator, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.mutate = config; - } - } - - lookupMutator(value){ - var mutator = false; - - //set column mutator - switch(typeof value){ - case "string": - if(Mutator.mutators[value]){ - mutator = Mutator.mutators[value]; - }else { - console.warn("Mutator Error - No such mutator found, ignoring: ", value); - } - break; - - case "function": - mutator = value; - break; - } - - return mutator; - } - - //apply mutator to row - transformRow(data, type, updatedData){ - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - value; - - if(this.enabled){ - - this.table.columnManager.traverse((column) => { - var mutator, params, component; - - if(column.modules.mutate){ - mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false; - - if(mutator){ - value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data); - - if((type == "data" && !updatedData)|| typeof value !== "undefined"){ - component = column.getComponent(); - params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params; - column.setFieldValue(data, mutator.mutator(value, data, type, params, component)); - } - } - } - }); - } - - return data; - } - - //apply mutator to new cell value - transformCell(cell, value){ - if(cell.column.modules.mutate){ - var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false, - tempData = {}; - - if(mutator){ - tempData = Object.assign(tempData, cell.row.getData()); - cell.column.setFieldValue(tempData, value); - return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent()); - } - } - - return value; - } - - mutateLink(cell){ - var links = cell.column.definition.mutateLink; - - if(links){ - if(!Array.isArray(links)){ - links = [links]; - } - - links.forEach((link) => { - var linkCell = cell.row.getCell(link); - - if(linkCell){ - linkCell.setValue(linkCell.getValue(), true, true); - } - }); - } - } - - enable(){ - this.enabled = true; - } - - disable(){ - this.enabled = false; - } -} - -Mutator.moduleName = "mutator"; - -//load defaults -Mutator.mutators = defaultMutators; - -function rows(pageSize, currentRow, currentPage, totalRows, totalPages){ - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|rows", (value) => { - rowsEl.innerHTML = value; - }); - - if(totalRows){ - valueEl.innerHTML = " " + currentRow + "-" + Math.min((currentRow + pageSize - 1), totalRows) + " "; - - totalEl.innerHTML = " " + totalRows + " "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - }else { - valueEl.innerHTML = " 0 "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(rowsEl); - } - - return el; -} - -function pages(pageSize, currentRow, currentPage, totalRows, totalPages){ - - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - valueEl.innerHTML = " " + currentPage + " "; - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - totalEl.innerHTML = " " + totalPages + " "; - - this.table.modules.localize.langBind("pagination|counter|pages", (value) => { - rowsEl.innerHTML = value; - }); - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - - return el; -} - -var defaultPageCounters = { - rows:rows, - pages:pages, -}; - -class Page extends Module{ - - constructor(table){ - super(table); - - this.mode = "local"; - this.progressiveLoad = false; - - this.element = null; - this.pageCounterElement = null; - this.pageCounter = null; - - this.size = 0; - this.page = 1; - this.count = 5; - this.max = 1; - - this.remoteRowCountEstimate = null; - - this.initialLoad = true; - this.dataChanging = false; //flag to check if data is being changed by this module - - this.pageSizes = []; - - this.registerTableOption("pagination", false); //set pagination type - this.registerTableOption("paginationMode", "local"); //local or remote pagination - this.registerTableOption("paginationSize", false); //set number of rows to a page - this.registerTableOption("paginationInitialPage", 1); //initial page to show on load - this.registerTableOption("paginationCounter", false); // set pagination counter - this.registerTableOption("paginationCounterElement", false); // set pagination counter - this.registerTableOption("paginationButtonCount", 5); // set count of page button - this.registerTableOption("paginationSizeSelector", false); //add pagination size selector element - this.registerTableOption("paginationElement", false); //element to hold pagination numbers - // this.registerTableOption("paginationDataSent", {}); //pagination data sent to the server - // this.registerTableOption("paginationDataReceived", {}); //pagination data received from the server - this.registerTableOption("paginationAddRow", "page"); //add rows on table or page - - this.registerTableOption("progressiveLoad", false); //progressive loading - this.registerTableOption("progressiveLoadDelay", 0); //delay between requests - this.registerTableOption("progressiveLoadScrollMargin", 0); //margin before scroll begins - - this.registerTableFunction("setMaxPage", this.setMaxPage.bind(this)); - this.registerTableFunction("setPage", this.setPage.bind(this)); - this.registerTableFunction("setPageToRow", this.userSetPageToRow.bind(this)); - this.registerTableFunction("setPageSize", this.userSetPageSize.bind(this)); - this.registerTableFunction("getPageSize", this.getPageSize.bind(this)); - this.registerTableFunction("previousPage", this.previousPage.bind(this)); - this.registerTableFunction("nextPage", this.nextPage.bind(this)); - this.registerTableFunction("getPage", this.getPage.bind(this)); - this.registerTableFunction("getPageMax", this.getPageMax.bind(this)); - - //register component functions - this.registerComponentFunction("row", "pageTo", this.setPageToRow.bind(this)); - } - - initialize(){ - if(this.table.options.pagination){ - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("footer-redraw", this.footerRedraw.bind(this)); - - if(this.table.options.paginationAddRow == "page"){ - this.subscribe("row-adding-position", this.rowAddingPosition.bind(this)); - } - - if(this.table.options.paginationMode === "remote"){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - } - - if(this.table.options.progressiveLoad){ - console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"); - } - - this.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40); - this.registerDisplayHandler(this.getRows.bind(this), 50); - - this.createElements(); - this.initializePageCounter(); - this.initializePaginator(); - }else if(this.table.options.progressiveLoad){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - - this.initializeProgressive(this.table.options.progressiveLoad); - - if(this.table.options.progressiveLoad === "scroll"){ - this.subscribe("scroll-vertical", this.scrollVertical.bind(this)); - } - } - } - - rowAddingPosition(row, top){ - var rowManager = this.table.rowManager, - displayRows = rowManager.getDisplayRows(), - index; - - if(top){ - if(displayRows.length){ - index = displayRows[0]; - }else { - if(rowManager.activeRows.length){ - index = rowManager.activeRows[rowManager.activeRows.length-1]; - top = false; - } - } - }else { - if(displayRows.length){ - index = displayRows[displayRows.length - 1]; - top = displayRows.length < this.size ? false : true; - } - } - - return {index, top}; - } - - calculatePageSizes(){ - var testElRow, testElCell; - - if(this.table.options.paginationSize){ - this.size = this.table.options.paginationSize; - }else { - testElRow = document.createElement("div"); - testElRow.classList.add("tabulator-row"); - testElRow.style.visibility = "hidden"; - - testElCell = document.createElement("div"); - testElCell.classList.add("tabulator-cell"); - testElCell.innerHTML = "Page Row Test"; - - testElRow.appendChild(testElCell); - - this.table.rowManager.getTableElement().appendChild(testElRow); - - this.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight); - - this.table.rowManager.getTableElement().removeChild(testElRow); - } - - this.dispatchExternal("pageSizeChanged", this.size); - - this.generatePageSizeSelectList(); - } - - initialLoadComplete(){ - this.initialLoad = false; - } - - remotePageParams(data, config, silent, params){ - if(!this.initialLoad){ - if((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){ - this.reset(true); - } - } - - //configure request params - params.page = this.page; - - //set page size if defined - if(this.size){ - params.size = this.size; - } - - return params; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetPageToRow(row){ - if(this.table.options.pagination){ - row = this.rowManager.findRow(row); - - if(row){ - return this.setPageToRow(row); - } - } - - return Promise.reject(); - } - - userSetPageSize(size){ - if(this.table.options.pagination){ - this.setPageSize(size); - return this.setPage(1); - }else { - return false; - } - } - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - scrollVertical(top, dir){ - var element, diff, margin; - if(!dir && !this.table.dataLoader.loading){ - element = this.table.rowManager.getElement(); - diff = element.scrollHeight - element.clientHeight - top; - margin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2); - - if(diff < margin){ - this.nextPage() - .catch(() => {}); //consume the exception thrown when on the last page - } - } - } - - restOnRenderBefore(rows, renderInPosition){ - if(!renderInPosition){ - if(this.mode === "local"){ - this.reset(); - } - } - - return rows; - } - - rowsUpdated(){ - this.refreshData(true, "all"); - } - - createElements(){ - var button; - - this.element = document.createElement("span"); - this.element.classList.add("tabulator-paginator"); - - this.pagesElement = document.createElement("span"); - this.pagesElement.classList.add("tabulator-pages"); - - button = document.createElement("button"); - button.classList.add("tabulator-page"); - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - button.setAttribute("aria-label", ""); - button.setAttribute("title", ""); - - this.firstBut = button.cloneNode(true); - this.firstBut.setAttribute("data-page", "first"); - - this.prevBut = button.cloneNode(true); - this.prevBut.setAttribute("data-page", "prev"); - - this.nextBut = button.cloneNode(true); - this.nextBut.setAttribute("data-page", "next"); - - this.lastBut = button.cloneNode(true); - this.lastBut.setAttribute("data-page", "last"); - - if(this.table.options.paginationSizeSelector){ - this.pageSizeSelect = document.createElement("select"); - this.pageSizeSelect.classList.add("tabulator-page-size"); - } - } - - generatePageSizeSelectList(){ - var pageSizes = []; - - if(this.pageSizeSelect){ - - if(Array.isArray(this.table.options.paginationSizeSelector)){ - pageSizes = this.table.options.paginationSizeSelector; - this.pageSizes = pageSizes; - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes.unshift(this.size); - } - }else { - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes = []; - - for (let i = 1; i < 5; i++){ - pageSizes.push(this.size * i); - } - - this.pageSizes = pageSizes; - }else { - pageSizes = this.pageSizes; - } - } - - while(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild); - - pageSizes.forEach((item) => { - var itemEl = document.createElement("option"); - itemEl.value = item; - - if(item === true){ - this.langBind("pagination|all", function(value){ - itemEl.innerHTML = value; - }); - }else { - itemEl.innerHTML = item; - } - - - - this.pageSizeSelect.appendChild(itemEl); - }); - - this.pageSizeSelect.value = this.size; - } - } - - initializePageCounter(){ - var counter = this.table.options.paginationCounter, - pageCounter = null; - - if(counter){ - if(typeof counter === "function"){ - pageCounter = counter; - }else { - pageCounter = Page.pageCounters[counter]; - } - - if(pageCounter){ - this.pageCounter = pageCounter; - - this.pageCounterElement = document.createElement("span"); - this.pageCounterElement.classList.add("tabulator-page-counter"); - }else { - console.warn("Pagination Error - No such page counter found: ", counter); - } - } - } - - //setup pagination - initializePaginator(hidden){ - var pageSelectLabel, paginationCounterHolder; - - if(!hidden){ - //build pagination element - - //bind localizations - this.langBind("pagination|first", (value) => { - this.firstBut.innerHTML = value; - }); - - this.langBind("pagination|first_title", (value) => { - this.firstBut.setAttribute("aria-label", value); - this.firstBut.setAttribute("title", value); - }); - - this.langBind("pagination|prev", (value) => { - this.prevBut.innerHTML = value; - }); - - this.langBind("pagination|prev_title", (value) => { - this.prevBut.setAttribute("aria-label", value); - this.prevBut.setAttribute("title", value); - }); - - this.langBind("pagination|next", (value) => { - this.nextBut.innerHTML = value; - }); - - this.langBind("pagination|next_title", (value) => { - this.nextBut.setAttribute("aria-label", value); - this.nextBut.setAttribute("title", value); - }); - - this.langBind("pagination|last", (value) => { - this.lastBut.innerHTML = value; - }); - - this.langBind("pagination|last_title", (value) => { - this.lastBut.setAttribute("aria-label", value); - this.lastBut.setAttribute("title", value); - }); - - //click bindings - this.firstBut.addEventListener("click", () => { - this.setPage(1); - }); - - this.prevBut.addEventListener("click", () => { - this.previousPage(); - }); - - this.nextBut.addEventListener("click", () => { - this.nextPage(); - }); - - this.lastBut.addEventListener("click", () => { - this.setPage(this.max); - }); - - if(this.table.options.paginationElement){ - this.element = this.table.options.paginationElement; - } - - if(this.pageSizeSelect){ - pageSelectLabel = document.createElement("label"); - - this.langBind("pagination|page_size", (value) => { - this.pageSizeSelect.setAttribute("aria-label", value); - this.pageSizeSelect.setAttribute("title", value); - pageSelectLabel.innerHTML = value; - }); - - this.element.appendChild(pageSelectLabel); - this.element.appendChild(this.pageSizeSelect); - - this.pageSizeSelect.addEventListener("change", (e) => { - this.setPageSize(this.pageSizeSelect.value == "true" ? true : this.pageSizeSelect.value); - this.setPage(1); - }); - } - - //append to DOM - this.element.appendChild(this.firstBut); - this.element.appendChild(this.prevBut); - this.element.appendChild(this.pagesElement); - this.element.appendChild(this.nextBut); - this.element.appendChild(this.lastBut); - - if(!this.table.options.paginationElement){ - if(this.table.options.paginationCounter){ - - if(this.table.options.paginationCounterElement){ - if(this.table.options.paginationCounterElement instanceof HTMLElement){ - this.table.options.paginationCounterElement.appendChild(this.pageCounterElement); - }else if(typeof this.table.options.paginationCounterElement === "string"){ - paginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement); - - if(paginationCounterHolder){ - paginationCounterHolder.appendChild(this.pageCounterElement); - }else { - console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:", this.table.options.paginationCounterElement); - } - } - }else { - this.footerAppend(this.pageCounterElement); - } - - } - - this.footerAppend(this.element); - } - - this.page = this.table.options.paginationInitialPage; - this.count = this.table.options.paginationButtonCount; - } - - //set default values - this.mode = this.table.options.paginationMode; - } - - initializeProgressive(mode){ - this.initializePaginator(true); - this.mode = "progressive_" + mode; - this.progressiveLoad = true; - } - - trackChanges(){ - this.dispatch("page-changed"); - } - - //calculate maximum page from number of rows - setMaxRows(rowCount){ - if(!rowCount){ - this.max = 1; - }else { - this.max = this.size === true ? 1 : Math.ceil(rowCount/this.size); - } - - if(this.page > this.max){ - this.page = this.max; - } - } - - //reset to first page without triggering action - reset(force){ - if(!this.initialLoad){ - if(this.mode == "local" || force){ - this.page = 1; - this.trackChanges(); - } - } - } - - //set the maximum page - setMaxPage(max){ - - max = parseInt(max); - - this.max = max || 1; - - if(this.page > this.max){ - this.page = this.max; - this.trigger(); - } - } - - //set current page number - setPage(page){ - switch(page){ - case "first": - return this.setPage(1); - - case "prev": - return this.previousPage(); - - case "next": - return this.nextPage(); - - case "last": - return this.setPage(this.max); - } - - page = parseInt(page); - - if((page > 0 && page <= this.max) || this.mode !== "local"){ - this.page = page; - - this.trackChanges(); - - return this.trigger(); - }else { - console.warn("Pagination Error - Requested page is out of range of 1 - " + this.max + ":", page); - return Promise.reject(); - } - } - - setPageToRow(row){ - var rows = this.displayRows(-1); - var index = rows.indexOf(row); - - if(index > -1){ - var page = this.size === true ? 1 : Math.ceil((index + 1) / this.size); - - return this.setPage(page); - }else { - console.warn("Pagination Error - Requested row is not visible"); - return Promise.reject(); - } - } - - setPageSize(size){ - if(size !== true){ - size = parseInt(size); - } - - if(size > 0){ - this.size = size; - this.dispatchExternal("pageSizeChanged", size); - } - - if(this.pageSizeSelect){ - // this.pageSizeSelect.value = size; - this.generatePageSizeSelectList(); - } - - this.trackChanges(); - } - - _setPageCounter(totalRows, size, currentRow){ - var content; - - if(this.pageCounter){ - - if(this.mode === "remote"){ - size = this.size; - currentRow = ((this.page - 1) * this.size) + 1; - totalRows = this.remoteRowCountEstimate; - } - - content = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max); - - switch(typeof content){ - case "object": - if(content instanceof Node){ - - //clear previous cell contents - while(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild); - - this.pageCounterElement.appendChild(content); - }else { - this.pageCounterElement.innerHTML = ""; - - if(content != null){ - console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:", content); - } - } - break; - case "undefined": - this.pageCounterElement.innerHTML = ""; - break; - default: - this.pageCounterElement.innerHTML = content; - } - } - } - - //setup the pagination buttons - _setPageButtons(){ - let leftSize = Math.floor((this.count-1) / 2); - let rightSize = Math.ceil((this.count-1) / 2); - let min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1); - let max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max); - - while(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild); - - if(this.page == 1){ - this.firstBut.disabled = true; - this.prevBut.disabled = true; - }else { - this.firstBut.disabled = false; - this.prevBut.disabled = false; - } - - if(this.page == this.max){ - this.lastBut.disabled = true; - this.nextBut.disabled = true; - }else { - this.lastBut.disabled = false; - this.nextBut.disabled = false; - } - - for(let i = min; i <= max; i++){ - if(i>0 && i <= this.max){ - this.pagesElement.appendChild(this._generatePageButton(i)); - } - } - - this.footerRedraw(); - } - - _generatePageButton(page){ - var button = document.createElement("button"); - - button.classList.add("tabulator-page"); - if(page == this.page){ - button.classList.add("active"); - } - - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - - this.langBind("pagination|page_title", (value) => { - button.setAttribute("aria-label", value + " " + page); - button.setAttribute("title", value + " " + page); - }); - - button.setAttribute("data-page", page); - button.textContent = page; - - button.addEventListener("click", (e) => { - this.setPage(page); - }); - - return button; - } - - //previous page - previousPage(){ - if(this.page > 1){ - this.page--; - - this.trackChanges(); - - return this.trigger(); - - }else { - console.warn("Pagination Error - Previous page would be less than page 1:", 0); - return Promise.reject(); - } - } - - //next page - nextPage(){ - if(this.page < this.max){ - this.page++; - - this.trackChanges(); - - return this.trigger(); - - }else { - if(!this.progressiveLoad){ - console.warn("Pagination Error - Next page would be greater than maximum page of " + this.max + ":", this.max + 1); - } - return Promise.reject(); - } - } - - //return current page number - getPage(){ - return this.page; - } - - //return max page number - getPageMax(){ - return this.max; - } - - getPageSize(size){ - return this.size; - } - - getMode(){ - return this.mode; - } - - //return appropriate rows for current page - getRows(data){ - var actualRowPageSize = 0, - output, start, end, actualStartRow; - - var actualRows = data.filter((row) => { - return row.type === "row"; - }); - - if(this.mode == "local"){ - output = []; - - this.setMaxRows(data.length); - - if(this.size === true){ - start = 0; - end = data.length; - }else { - start = this.size * (this.page - 1); - end = start + parseInt(this.size); - } - - this._setPageButtons(); - - for(let i = start; i < end; i++){ - let row = data[i]; - - if(row){ - output.push(row); - - if(row.type === "row"){ - if(!actualStartRow){ - actualStartRow = row; - } - - actualRowPageSize++; - } - } - } - - this._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0); - - return output; - }else { - this._setPageButtons(); - this._setPageCounter(actualRows.length); - - return data.slice(0); - } - } - - trigger(){ - var left; - - switch(this.mode){ - case "local": - left = this.table.rowManager.scrollLeft; - - this.refreshData(); - this.table.rowManager.scrollHorizontal(left); - - this.dispatchExternal("pageLoaded", this.getPage()); - - return Promise.resolve(); - - case "remote": - this.dataChanging = true; - return this.reloadData(null) - .finally(() => { - this.dataChanging = false; - }); - - case "progressive_load": - case "progressive_scroll": - return this.reloadData(null, true); - - default: - console.warn("Pagination Error - no such pagination mode:", this.mode); - return Promise.reject(); - } - } - - _parseRemoteData(data){ - var margin; - - if(typeof data.last_page === "undefined"){ - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").last_page || "last_page") + "' property"); - } - - if(data.data){ - this.max = parseInt(data.last_page) || 1; - - this.remoteRowCountEstimate = typeof data.last_row !== "undefined" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0)); - - if(this.progressiveLoad){ - switch(this.mode){ - case "progressive_load": - - if(this.page == 1){ - this.table.rowManager.setData(data.data, false, this.page == 1); - }else { - this.table.rowManager.addRows(data.data); - } - - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }, this.table.options.progressiveLoadDelay); - } - break; - - case "progressive_scroll": - data = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data); - - this.table.rowManager.setData(data, this.page !== 1, this.page == 1); - - margin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2); - - if(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){ - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }); - } - } - break; - } - - return false; - }else { - // left = this.table.rowManager.scrollLeft; - this.dispatchExternal("pageLoaded", this.getPage()); - // this.table.rowManager.scrollHorizontal(left); - // this.table.columnManager.scrollHorizontal(left); - } - - }else { - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").data || "data") + "' property"); - } - - return data.data; - } - - //handle the footer element being redrawn - footerRedraw(){ - var footer = this.table.footerManager.containerElement; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - }else { - this.pagesElement.style.display = ''; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - } - } - } -} - -Page.moduleName = "page"; - -//load defaults -Page.pageCounters = defaultPageCounters; - -// read persistance information from storage -var defaultReaders = { - local:function(id, type){ - var data = localStorage.getItem(id + "-" + type); - - return data ? JSON.parse(data) : false; - }, - cookie:function(id, type){ - var cookie = document.cookie, - key = id + "-" + type, - cookiePos = cookie.indexOf(key + "="), - end, data; - - //if cookie exists, decode and load column data into tabulator - if(cookiePos > -1){ - cookie = cookie.slice(cookiePos); - - end = cookie.indexOf(";"); - - if(end > -1){ - cookie = cookie.slice(0, end); - } - - data = cookie.replace(key + "=", ""); - } - - return data ? JSON.parse(data) : false; - } -}; - -//write persistence information to storage -var defaultWriters = { - local:function(id, type, data){ - localStorage.setItem(id + "-" + type, JSON.stringify(data)); - }, - cookie:function(id, type, data){ - var expireDate = new Date(); - - expireDate.setDate(expireDate.getDate() + 10000); - - document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString(); - } -}; - -class Persistence extends Module{ - - constructor(table){ - super(table); - - this.mode = ""; - this.id = ""; - // this.persistProps = ["field", "width", "visible"]; - this.defWatcherBlock = false; - this.config = {}; - this.readFunc = false; - this.writeFunc = false; - - this.registerTableOption("persistence", false); - this.registerTableOption("persistenceID", ""); //key for persistent storage - this.registerTableOption("persistenceMode", true); //mode for storing persistence information - this.registerTableOption("persistenceReaderFunc", false); //function for handling persistence data reading - this.registerTableOption("persistenceWriterFunc", false); //function for handling persistence data writing - } - - // Test for whether localStorage is available for use. - localStorageTest() { - var testKey = "_tabulator_test"; - - try { - window.localStorage.setItem( testKey, testKey); - window.localStorage.removeItem( testKey ); - return true; - } catch(e) { - return false; - } - } - - //setup parameters - initialize(){ - if(this.table.options.persistence){ - //determine persistent layout storage type - var mode = this.table.options.persistenceMode, - id = this.table.options.persistenceID, - retrievedData; - - this.mode = mode !== true ? mode : (this.localStorageTest() ? "local" : "cookie"); - - if(this.table.options.persistenceReaderFunc){ - if(typeof this.table.options.persistenceReaderFunc === "function"){ - this.readFunc = this.table.options.persistenceReaderFunc; - }else { - if(Persistence.readers[this.table.options.persistenceReaderFunc]){ - this.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc); - } - } - }else { - if(Persistence.readers[this.mode]){ - this.readFunc = Persistence.readers[this.mode]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.mode); - } - } - - if(this.table.options.persistenceWriterFunc){ - if(typeof this.table.options.persistenceWriterFunc === "function"){ - this.writeFunc = this.table.options.persistenceWriterFunc; - }else { - if(Persistence.writers[this.table.options.persistenceWriterFunc]){ - this.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc]; - }else { - console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc); - } - } - }else { - if(Persistence.writers[this.mode]){ - this.writeFunc = Persistence.writers[this.mode]; - }else { - console.warn("Persistence Write Error - invalid writer set", this.mode); - } - } - - //set storage tag - this.id = "tabulator-" + (id || (this.table.element.getAttribute("id") || "")); - - this.config = { - sort:this.table.options.persistence === true || this.table.options.persistence.sort, - filter:this.table.options.persistence === true || this.table.options.persistence.filter, - headerFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter, - group:this.table.options.persistence === true || this.table.options.persistence.group, - page:this.table.options.persistence === true || this.table.options.persistence.page, - columns:this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns, - }; - - //load pagination data if needed - if(this.config.page){ - retrievedData = this.retrieveData("page"); - - if(retrievedData){ - if(typeof retrievedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)){ - this.table.options.paginationSize = retrievedData.paginationSize; - } - - if(typeof retrievedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)){ - this.table.options.paginationInitialPage = retrievedData.paginationInitialPage; - } - } - } - - //load group data if needed - if(this.config.group){ - retrievedData = this.retrieveData("group"); - - if(retrievedData){ - if(typeof retrievedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)){ - this.table.options.groupBy = retrievedData.groupBy; - } - if(typeof retrievedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)){ - this.table.options.groupStartOpen = retrievedData.groupStartOpen; - } - if(typeof retrievedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)){ - this.table.options.groupHeader = retrievedData.groupHeader; - } - } - } - - if(this.config.columns){ - this.table.options.columns = this.load("columns", this.table.options.columns); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.save.bind(this, "columns")); - this.subscribe("column-hide", this.save.bind(this, "columns")); - this.subscribe("column-moved", this.save.bind(this, "columns")); - } - - this.subscribe("table-built", this.tableBuilt.bind(this), 0); - - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - - this.subscribe("filter-changed", this.eventSave.bind(this, "filter")); - this.subscribe("filter-changed", this.eventSave.bind(this, "headerFilter")); - this.subscribe("sort-changed", this.eventSave.bind(this, "sort")); - this.subscribe("group-changed", this.eventSave.bind(this, "group")); - this.subscribe("page-changed", this.eventSave.bind(this, "page")); - this.subscribe("column-resized", this.eventSave.bind(this, "columns")); - this.subscribe("column-width", this.eventSave.bind(this, "columns")); - this.subscribe("layout-refreshed", this.eventSave.bind(this, "columns")); - } - - this.registerTableFunction("getColumnLayout", this.getColumnLayout.bind(this)); - this.registerTableFunction("setColumnLayout", this.setColumnLayout.bind(this)); - } - - eventSave(type){ - if(this.config[type]){ - this.save(type); - } - } - - tableBuilt(){ - var sorters, filters, headerFilters; - - if(this.config.sort){ - sorters = this.load("sort"); - - if(!sorters === false){ - this.table.options.initialSort = sorters; - } - } - - if(this.config.filter){ - filters = this.load("filter"); - - if(!filters === false){ - this.table.options.initialFilter = filters; - } - } - if(this.config.headerFilter){ - headerFilters = this.load("headerFilter"); - - if(!headerFilters === false){ - this.table.options.initialHeaderFilter = headerFilters; - } - } - - } - - tableRedraw(force){ - if(force && this.config.columns){ - this.save("columns"); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - getColumnLayout(){ - return this.parseColumns(this.table.columnManager.getColumns()); - } - - setColumnLayout(layout){ - this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout)); - return true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumn(column){ - var def, keys; - - if(this.config.columns){ - this.defWatcherBlock = true; - - def = column.getDefinition(); - - keys = this.config.columns === true ? Object.keys(def) : this.config.columns; - - keys.forEach((key)=>{ - var props = Object.getOwnPropertyDescriptor(def, key); - var value = def[key]; - - if(props){ - Object.defineProperty(def, key, { - set: (newValue) => { - value = newValue; - - if(!this.defWatcherBlock){ - this.save("columns"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - if(props.get){ - props.get(); - } - return value; - } - }); - } - }); - - this.defWatcherBlock = false; - } - } - - //load saved definitions - load(type, current){ - var data = this.retrieveData(type); - - if(current){ - data = data ? this.mergeDefinition(current, data) : current; - } - - return data; - } - - //retrieve data from memory - retrieveData(type){ - return this.readFunc ? this.readFunc(this.id, type) : false; - } - - //merge old and new column definitions - mergeDefinition(oldCols, newCols){ - var output = []; - - newCols = newCols || []; - - newCols.forEach((column, to) => { - var from = this._findColumn(oldCols, column), - keys; - - if(from){ - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(from); - keys.push("width"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - if(key !== "columns" && typeof column[key] !== "undefined"){ - from[key] = column[key]; - } - }); - - if(from.columns){ - from.columns = this.mergeDefinition(from.columns, column.columns); - } - - output.push(from); - } - }); - - oldCols.forEach((column, i) => { - var from = this._findColumn(newCols, column); - - if (!from) { - if(output.length>i){ - output.splice(i, 0, column); - }else { - output.push(column); - } - } - }); - - return output; - } - - //find matching columns - _findColumn(columns, subject){ - var type = subject.columns ? "group" : (subject.field ? "field" : "object"); - - return columns.find(function(col){ - switch(type){ - case "group": - return col.title === subject.title && col.columns.length === subject.columns.length; - - case "field": - return col.field === subject.field; - - case "object": - return col === subject; - } - }); - } - - //save data - save(type){ - var data = {}; - - switch(type){ - case "columns": - data = this.parseColumns(this.table.columnManager.getColumns()); - break; - - case "filter": - data = this.table.modules.filter.getFilters(); - break; - - case "headerFilter": - data = this.table.modules.filter.getHeaderFilters(); - break; - - case "sort": - data = this.validateSorters(this.table.modules.sort.getSort()); - break; - - case "group": - data = this.getGroupConfig(); - break; - - case "page": - data = this.getPageConfig(); - break; - } - - if(this.writeFunc){ - this.writeFunc(this.id, type, data); - } - - } - - //ensure sorters contain no function data - validateSorters(data){ - data.forEach(function(item){ - item.column = item.field; - delete item.field; - }); - - return data; - } - - getGroupConfig(){ - var data = {}; - - if(this.config.group){ - if(this.config.group === true || this.config.group.groupBy){ - data.groupBy = this.table.options.groupBy; - } - - if(this.config.group === true || this.config.group.groupStartOpen){ - data.groupStartOpen = this.table.options.groupStartOpen; - } - - if(this.config.group === true || this.config.group.groupHeader){ - data.groupHeader = this.table.options.groupHeader; - } - } - - return data; - } - - getPageConfig(){ - var data = {}; - - if(this.config.page){ - if(this.config.page === true || this.config.page.size){ - data.paginationSize = this.table.modules.page.getPageSize(); - } - - if(this.config.page === true || this.config.page.page){ - data.paginationInitialPage = this.table.modules.page.getPage(); - } - } - - return data; - } - - - //parse columns for data to store - parseColumns(columns){ - var definitions = [], - excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; - - columns.forEach((column) => { - var defStore = {}, - colDef = column.getDefinition(), - keys; - - if(column.isGroup){ - defStore.title = colDef.title; - defStore.columns = this.parseColumns(column.getColumns()); - }else { - defStore.field = column.getField(); - - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(colDef); - keys.push("width"); - keys.push("visible"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - switch(key){ - case "width": - defStore.width = column.getWidth(); - break; - case "visible": - defStore.visible = column.visible; - break; - - default: - if(typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1){ - defStore[key] = colDef[key]; - } - } - }); - } - - definitions.push(defStore); - }); - - return definitions; - } -} - -Persistence.moduleName = "persistence"; - -Persistence.moduleInitOrder = -10; - -//load defaults -Persistence.readers = defaultReaders; -Persistence.writers = defaultWriters; - -class Popup$1 extends Module{ - - constructor(table){ - super(table); - - this.columnSubscribers = {}; - - this.registerTableOption("rowContextPopup", false); - this.registerTableOption("rowClickPopup", false); - this.registerTableOption("rowDblClickPopup", false); - this.registerTableOption("groupContextPopup", false); - this.registerTableOption("groupClickPopup", false); - this.registerTableOption("groupDblClickPopup", false); - - this.registerColumnOption("headerContextPopup"); - this.registerColumnOption("headerClickPopup"); - this.registerColumnOption("headerDblClickPopup"); - this.registerColumnOption("headerPopup"); - this.registerColumnOption("headerPopupIcon"); - this.registerColumnOption("contextPopup"); - this.registerColumnOption("clickPopup"); - this.registerColumnOption("dblClickPopup"); - - this.registerComponentFunction("cell", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("column", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("row", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("group", "popup", this._componentPopupCall.bind(this)); - - } - - initialize(){ - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - _componentPopupCall(component, contents, position){ - this.loadPopupEvent(contents, null, component, position); - } - - initializeRowWatchers(){ - if(this.table.options.rowContextPopup){ - this.subscribe("row-contextmenu", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - this.table.on("rowTapHold", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - } - - if(this.table.options.rowClickPopup){ - this.subscribe("row-click", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup)); - } - - if(this.table.options.rowDblClickPopup){ - this.subscribe("row-dblclick", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextPopup){ - this.subscribe("group-contextmenu", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - this.table.on("groupTapHold", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - } - - if(this.table.options.groupClickPopup){ - this.subscribe("group-click", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup)); - } - - if(this.table.options.groupDblClickPopup){ - this.subscribe("group-dblclick", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){ - this.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, "headerContextPopup"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextPopup); - this.table.on("headerTapHold", this.loadPopupTableColumnEvent.bind(this, "headerContextPopup")); - } - - if(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){ - this.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerClickPopup"); - this.subscribe("column-click", this.columnSubscribers.headerClickPopup); - - - }if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){ - this.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerDblClickPopup"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickPopup); - } - - if(def.headerPopup){ - this.initializeColumnHeaderPopup(column); - } - - //handle cell events - if(def.contextPopup && !this.columnSubscribers.contextPopup){ - this.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, "contextPopup"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextPopup); - this.table.on("cellTapHold", this.loadPopupTableCellEvent.bind(this, "contextPopup")); - } - - if(def.clickPopup && !this.columnSubscribers.clickPopup){ - this.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, "clickPopup"); - this.subscribe("cell-click", this.columnSubscribers.clickPopup); - } - - if(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){ - this.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, "dblClickPopup"); - this.subscribe("cell-click", this.columnSubscribers.dblClickPopup); - } - } - - initializeColumnHeaderPopup(column){ - var icon = column.definition.headerPopupIcon, - headerPopupEl; - - headerPopupEl = document.createElement("span"); - headerPopupEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerPopupEl.appendChild(icon); - }else { - headerPopupEl.innerHTML = icon; - } - }else { - headerPopupEl.innerHTML = "⋮"; - } - - headerPopupEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadPopupEvent(column.definition.headerPopup, e, column); - }); - - column.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild); - } - - loadPopupTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadPopupEvent(cell.column.definition[option], e, cell); - } - } - - loadPopupTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadPopupEvent(column.definition[option], e, column); - } - } - - loadPopupEvent(contents, e, component, position){ - var renderedCallback; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - contents = typeof contents == "function" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents; - - this.loadPopup(e, component, contents, renderedCallback, position); - } - - loadPopup(e, component, contents, renderedCallback, position){ - var touch = !(e instanceof MouseEvent), - contentsEl, popup; - - if(contents instanceof HTMLElement){ - contentsEl = contents; - }else { - contentsEl = document.createElement("div"); - contentsEl.innerHTML = contents; - } - - contentsEl.classList.add("tabulator-popup"); - - contentsEl.addEventListener("click", (e) =>{ - e.stopPropagation(); - }); - - if(!touch){ - e.preventDefault(); - } - - popup = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - popup.renderCallback(renderedCallback); - } - - if(e){ - popup.show(e); - }else { - popup.show(component.getElement(), position || "center"); - } - - - popup.hideOnBlur(() => { - this.dispatchExternal("popupClosed", component.getComponent()); - }); - - - - this.dispatchExternal("popupOpened", component.getComponent()); - } -} - -Popup$1.moduleName = "popup"; - -class Print extends Module{ - - constructor(table){ - super(table); - - this.element = false; - this.manualBlock = false; - this.beforeprintEventHandler = null; - this.afterprintEventHandler = null; - - this.registerTableOption("printAsHtml", false); //enable print as html - this.registerTableOption("printFormatter", false); //printing page formatter - this.registerTableOption("printHeader", false); //page header contents - this.registerTableOption("printFooter", false); //page footer contents - this.registerTableOption("printStyled", true); //enable print as html styling - this.registerTableOption("printRowRange", "visible"); //restrict print to visible rows only - this.registerTableOption("printConfig", {}); //print config options - - this.registerColumnOption("print"); - this.registerColumnOption("titlePrint"); - } - - initialize(){ - if(this.table.options.printAsHtml){ - this.beforeprintEventHandler = this.replaceTable.bind(this); - this.afterprintEventHandler = this.cleanup.bind(this); - - window.addEventListener("beforeprint", this.beforeprintEventHandler ); - window.addEventListener("afterprint", this.afterprintEventHandler); - this.subscribe("table-destroy", this.destroy.bind(this)); - } - - this.registerTableFunction("print", this.printFullscreen.bind(this)); - } - - destroy(){ - if(this.table.options.printAsHtml){ - window.removeEventListener( "beforeprint", this.beforeprintEventHandler ); - window.removeEventListener( "afterprint", this.afterprintEventHandler ); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - replaceTable(){ - if(!this.manualBlock){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-table"); - - this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print")); - - this.table.element.style.display = "none"; - - this.table.element.parentNode.insertBefore(this.element, this.table.element); - } - } - - cleanup(){ - document.body.classList.remove("tabulator-print-fullscreen-hide"); - - if(this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - this.table.element.style.display = ""; - } - } - - printFullscreen(visible, style, config){ - var scrollX = window.scrollX, - scrollY = window.scrollY, - headerEl = document.createElement("div"), - footerEl = document.createElement("div"), - tableEl = this.table.modules.export.generateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, "print"), - headerContent, footerContent; - - this.manualBlock = true; - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-fullscreen"); - - if(this.table.options.printHeader){ - headerEl.classList.add("tabulator-print-header"); - - headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader; - - if(typeof headerContent == "string"){ - headerEl.innerHTML = headerContent; - }else { - headerEl.appendChild(headerContent); - } - - this.element.appendChild(headerEl); - } - - this.element.appendChild(tableEl); - - if(this.table.options.printFooter){ - footerEl.classList.add("tabulator-print-footer"); - - footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter; - - - if(typeof footerContent == "string"){ - footerEl.innerHTML = footerContent; - }else { - footerEl.appendChild(footerContent); - } - - this.element.appendChild(footerEl); - } - - document.body.classList.add("tabulator-print-fullscreen-hide"); - document.body.appendChild(this.element); - - if(this.table.options.printFormatter){ - this.table.options.printFormatter(this.element, tableEl); - } - - window.print(); - - this.cleanup(); - - window.scrollTo(scrollX, scrollY); - - this.manualBlock = false; - } -} - -Print.moduleName = "print"; - -class ReactiveData extends Module{ - - constructor(table){ - super(table); - - this.data = false; - this.blocked = false; //block reactivity while performing update - this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with - this.currentVersion = 0; - - this.registerTableOption("reactiveData", false); //enable data reactivity - } - - initialize(){ - if(this.table.options.reactiveData){ - this.subscribe("cell-value-save-before", this.block.bind(this, "cellsave")); - this.subscribe("cell-value-save-after", this.unblock.bind(this, "cellsave")); - this.subscribe("row-data-save-before", this.block.bind(this, "rowsave")); - this.subscribe("row-data-save-after", this.unblock.bind(this, "rowsave")); - this.subscribe("row-data-init-after", this.watchRow.bind(this)); - this.subscribe("data-processing", this.watchData.bind(this)); - this.subscribe("table-destroy", this.unwatchData.bind(this)); - } - } - - watchData(data){ - var self = this, - version; - - this.currentVersion ++; - - version = this.currentVersion; - - this.unwatchData(); - - this.data = data; - - //override array push function - this.origFuncs.push = data.push; - - Object.defineProperty(this.data, "push", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-push"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, false); - }); - - result = self.origFuncs.push.apply(data, arguments); - - self.unblock("data-push"); - } - - return result; - } - }); - - //override array unshift function - this.origFuncs.unshift = data.unshift; - - Object.defineProperty(this.data, "unshift", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-unshift"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, true); - }); - - result = self.origFuncs.unshift.apply(data, arguments); - - self.unblock("data-unshift"); - } - - return result; - } - }); - - - //override array shift function - this.origFuncs.shift = data.shift; - - Object.defineProperty(this.data, "shift", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-shift"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[0]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.shift.call(data); - - self.unblock("data-shift"); - } - - return result; - } - }); - - //override array pop function - this.origFuncs.pop = data.pop; - - Object.defineProperty(this.data, "pop", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-pop"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.pop.call(data); - - self.unblock("data-pop"); - } - - return result; - } - }); - - - //override array splice function - this.origFuncs.splice = data.splice; - - Object.defineProperty(this.data, "splice", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - start = args[0] < 0 ? data.length + args[0] : args[0], - end = args[1], - newRows = args[2] ? args.slice(2) : false, - startRow, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-splice"); - //add new rows - if(newRows){ - startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false; - - if(startRow){ - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, startRow, true); - }); - }else { - newRows = newRows.slice().reverse(); - - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, false, true); - }); - } - } - - //delete removed rows - if(end !== 0){ - var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end); - - oldRows.forEach((rowData, i) => { - var row = self.table.rowManager.getRowFromDataObject(rowData); - - if(row){ - row.deleteActual(i !== oldRows.length - 1); - } - }); - } - - if(newRows || end !== 0){ - self.table.rowManager.reRenderInPosition(); - } - - result = self.origFuncs.splice.apply(data, arguments); - - self.unblock("data-splice"); - } - - return result ; - } - }); - } - - unwatchData(){ - if(this.data !== false){ - for(var key in this.origFuncs){ - Object.defineProperty(this.data, key, { - enumerable: true, - configurable:true, - writable:true, - value: this.origFuncs.key, - }); - } - } - } - - watchRow(row){ - var data = row.getData(); - - for(var key in data){ - this.watchKey(row, data, key); - } - - if(this.table.options.dataTree){ - this.watchTreeChildren(row); - } - } - - watchTreeChildren (row){ - var self = this, - childField = row.getData()[this.table.options.dataTreeChildField], - origFuncs = {}; - - if(childField){ - - origFuncs.push = childField.push; - - Object.defineProperty(childField, "push", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-push"); - - var result = origFuncs.push.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-push"); - } - - return result; - } - }); - - origFuncs.unshift = childField.unshift; - - Object.defineProperty(childField, "unshift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-unshift"); - - var result = origFuncs.unshift.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-unshift"); - } - - return result; - } - }); - - origFuncs.shift = childField.shift; - - Object.defineProperty(childField, "shift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-shift"); - - var result = origFuncs.shift.call(childField); - this.rebuildTree(row); - - self.unblock("tree-shift"); - } - - return result; - } - }); - - origFuncs.pop = childField.pop; - - Object.defineProperty(childField, "pop", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-pop"); - - var result = origFuncs.pop.call(childField); - this.rebuildTree(row); - - self.unblock("tree-pop"); - } - - return result; - } - }); - - origFuncs.splice = childField.splice; - - Object.defineProperty(childField, "splice", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-splice"); - - var result = origFuncs.splice.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-splice"); - } - - return result; - } - }); - } - } - - rebuildTree(row){ - this.table.modules.dataTree.initializeRow(row); - this.table.modules.dataTree.layoutRow(row); - this.table.rowManager.refreshActiveData("tree", false, true); - } - - watchKey(row, data, key){ - var self = this, - props = Object.getOwnPropertyDescriptor(data, key), - value = data[key], - version = this.currentVersion; - - Object.defineProperty(data, key, { - set: (newValue) => { - value = newValue; - if(!self.blocked && version === self.currentVersion){ - self.block("key"); - - var update = {}; - update[key] = newValue; - row.updateData(update); - - self.unblock("key"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - - if(props.get){ - props.get(); - } - - return value; - } - }); - } - - unwatchRow(row){ - var data = row.getData(); - - for(var key in data){ - Object.defineProperty(data, key, { - value:data[key], - }); - } - } - - block(key){ - if(!this.blocked){ - this.blocked = key; - } - } - - unblock(key){ - if(this.blocked === key){ - this.blocked = false; - } - } -} - -ReactiveData.moduleName = "reactiveData"; - -class ResizeColumns extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startX = false; - this.startWidth = false; - this.latestX = false; - this.handle = null; - this.initialNextColumn = null; - this.nextColumn = null; - - this.initialized = false; - this.registerColumnOption("resizable", true); - this.registerTableOption("resizableColumnFit", false); - } - - initialize(){ - this.subscribe("column-rendered", this.layoutColumnHeader.bind(this)); - } - - initializeEventWatchers(){ - if(!this.initialized){ - - this.subscribe("cell-rendered", this.layoutCellHandles.bind(this)); - this.subscribe("cell-delete", this.deInitializeComponent.bind(this)); - - this.subscribe("cell-height", this.resizeHandle.bind(this)); - this.subscribe("column-moved", this.columnLayoutUpdated.bind(this)); - - this.subscribe("column-hide", this.deInitializeColumn.bind(this)); - this.subscribe("column-show", this.columnLayoutUpdated.bind(this)); - this.subscribe("column-width", this.columnWidthUpdated.bind(this)); - - this.subscribe("column-delete", this.deInitializeComponent.bind(this)); - this.subscribe("column-height", this.resizeHandle.bind(this)); - - this.initialized = true; - } - } - - - layoutCellHandles(cell){ - if(cell.row.type === "row"){ - this.deInitializeComponent(cell); - this.initializeColumn("cell", cell, cell.column, cell.element); - } - } - - layoutColumnHeader(column){ - if(column.definition.resizable){ - this.initializeEventWatchers(); - this.deInitializeComponent(column); - this.initializeColumn("header", column, column, column.element); - } - } - - columnLayoutUpdated(column){ - var prev = column.prevColumn(); - - this.reinitializeColumn(column); - - if(prev){ - this.reinitializeColumn(prev); - } - } - - columnWidthUpdated(column){ - if(column.modules.frozen){ - if(this.table.modules.frozenColumns.leftColumns.includes(column)){ - this.table.modules.frozenColumns.leftColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - }else if(this.table.modules.frozenColumns.rightColumns.includes(column)){ - this.table.modules.frozenColumns.rightColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - } - } - } - - frozenColumnOffset(column){ - var offset = false; - - if(column.modules.frozen){ - offset = column.modules.frozen.marginValue; - - if(column.modules.frozen.position === "left"){ - offset += column.getWidth() - 3; - }else { - if(offset){ - offset -= 3; - } - } - } - - return offset !== false ? offset + "px" : false; - } - - reinitializeColumn(column){ - var frozenOffset = this.frozenColumnOffset(column); - - column.cells.forEach((cell) => { - if(cell.modules.resize && cell.modules.resize.handleEl){ - if(frozenOffset){ - cell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - cell.modules.resize.handleEl.style["z-index"] = 11; - } - - cell.element.after(cell.modules.resize.handleEl); - } - }); - - if(column.modules.resize && column.modules.resize.handleEl){ - if(frozenOffset){ - column.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - } - - column.element.after(column.modules.resize.handleEl); - } - } - - initializeColumn(type, component, column, element){ - var self = this, - variableHeight = false, - mode = column.definition.resizable, - config = {}, - nearestColumn = column.getLastColumn(); - - //set column resize mode - if(type === "header"){ - variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - config = {variableHeight:variableHeight}; - } - - if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - - var handle = document.createElement('span'); - handle.className = "tabulator-col-resize-handle"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startColumn = column; - self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); - self._mouseDown(e, nearestColumn, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - //resize column on double click - handle.addEventListener("dblclick", (e) => { - var oldWidth = nearestColumn.getWidth(); - - e.stopPropagation(); - nearestColumn.reinitializeWidth(true); - - if(oldWidth !== nearestColumn.getWidth()){ - self.dispatch("column-resized", nearestColumn); - self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); - } - }); - - if(column.modules.frozen){ - handle.style.position = "sticky"; - handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column); - } - - config.handleEl = handle; - - if(element.parentNode && column.visible){ - element.after(handle); - } - } - - component.modules.resize = config; - } - - deInitializeColumn(column){ - this.deInitializeComponent(column); - - column.cells.forEach((cell) => { - this.deInitializeComponent(cell); - }); - } - - deInitializeComponent(component){ - var handleEl; - - if(component.modules.resize){ - handleEl = component.modules.resize.handleEl; - - if(handleEl && handleEl.parentElement){ - handleEl.parentElement.removeChild(handleEl); - } - } - } - - resizeHandle(component, height){ - if(component.modules.resize && component.modules.resize.handleEl){ - component.modules.resize.handleEl.style.height = height; - } - } - - _checkResizability(column){ - return column.definition.resizable; - } - - _mouseDown(e, column, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - var x = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX, - startDiff = x - self.startX, - moveDiff = x - self.latestX, - blockedBefore, blockedAfter; - - self.latestX = x; - - if(self.table.rtl){ - startDiff = -startDiff; - moveDiff = -moveDiff; - } - - blockedBefore = column.width == column.minWidth || column.width == column.maxWidth; - - column.setWidth(self.startWidth + startDiff); - - blockedAfter = column.width == column.minWidth || column.width == column.maxWidth; - - if(moveDiff < 0){ - self.nextColumn = self.initialNextColumn; - } - - if(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){ - let colWidth = self.nextColumn.getWidth(); - - if(moveDiff > 0){ - if(colWidth <= self.nextColumn.minWidth){ - self.nextColumn = self.nextColumn.nextColumn(); - } - } - - if(self.nextColumn){ - self.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff); - } - } - - self.table.columnManager.rerenderColumns(true); - - if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - } - - function mouseUp(e){ - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = false; - } - - if(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - - document.body.removeEventListener("mouseup", mouseUp); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - if(self.startWidth !== column.getWidth()){ - self.table.columnManager.verticalAlignHeaders(); - - self.dispatch("column-resized", column); - self.table.externalEvents.dispatch("columnResized", column.getComponent()); - } - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = true; - } - - self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX; - self.latestX = self.startX; - self.startWidth = column.getWidth(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } -} - -ResizeColumns.moduleName = "resizeColumns"; - -class ResizeRows extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startY = false; - this.startHeight = false; - this.handle = null; - this.prevHandle = null; - - this.registerTableOption("resizableRows", false); //resizable rows - } - - initialize(){ - if(this.table.options.resizableRows){ - this.subscribe("row-layout-after", this.initializeRow.bind(this)); - } - } - - initializeRow(row){ - var self = this, - rowEl = row.getElement(); - - var handle = document.createElement('div'); - handle.className = "tabulator-row-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-row-resize-handle prev"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startRow = row; - self._mouseDown(e, row, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - prevHandle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var prevRow = self.table.rowManager.prevDisplayRow(row); - - if(prevRow){ - self.startRow = prevRow; - self._mouseDown(e, prevRow, prevHandle); - } - }; - - prevHandle.addEventListener("mousedown",prevHandleDown); - prevHandle.addEventListener("touchstart",prevHandleDown, {passive: true}); - - rowEl.appendChild(handle); - rowEl.appendChild(prevHandle); - } - - _mouseDown(e, row, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY)); - } - - function mouseUp(e){ - - // //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = false; - // } - - document.body.removeEventListener("mouseup", mouseMove); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - self.dispatchExternal("rowResized", row.getComponent()); - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = true; - // } - - self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY; - self.startHeight = row.getHeight(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } -} - -ResizeRows.moduleName = "resizeRows"; - -class ResizeTable extends Module{ - - constructor(table){ - super(table); - - this.binding = false; - this.visibilityObserver = false; - this.resizeObserver = false; - this.containerObserver = false; - - this.tableHeight = 0; - this.tableWidth = 0; - this.containerHeight = 0; - this.containerWidth = 0; - - this.autoResize = false; - - this.visible = false; - - this.initialized = false; - this.initialRedraw = false; - - this.registerTableOption("autoResize", true); //auto resize table - } - - initialize(){ - if(this.table.options.autoResize){ - var table = this.table, - tableStyle; - - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - if(typeof IntersectionObserver !== "undefined" && typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual"){ - - this.initializeVisibilityObserver(); - - this.autoResize = true; - - this.resizeObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){ - this.tableHeight = nodeHeight; - this.tableWidth = nodeWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - this.redrawTable(); - } - } - }); - - this.resizeObserver.observe(table.element); - - tableStyle = window.getComputedStyle(table.element); - - if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){ - - this.containerObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){ - this.containerHeight = nodeHeight; - this.containerWidth = nodeWidth; - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - } - - this.redrawTable(); - } - }); - - this.containerObserver.observe(this.table.element.parentNode); - } - - this.subscribe("table-resize", this.tableResized.bind(this)); - - }else { - this.binding = function(){ - if(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){ - table.columnManager.rerenderColumns(true); - table.redraw(); - } - }; - - window.addEventListener("resize", this.binding); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - } - - initializeVisibilityObserver(){ - this.visibilityObserver = new IntersectionObserver((entries) => { - this.visible = entries[0].isIntersecting; - - if(!this.initialized){ - this.initialized = true; - this.initialRedraw = !this.visible; - }else { - if(this.visible){ - this.redrawTable(this.initialRedraw); - this.initialRedraw = false; - } - } - }); - - this.visibilityObserver.observe(this.table.element); - } - - redrawTable(force){ - if(this.initialized && this.visible){ - this.table.columnManager.rerenderColumns(true); - this.table.redraw(force); - } - } - - tableResized(){ - this.table.rowManager.redraw(); - } - - clearBindings(){ - if(this.binding){ - window.removeEventListener("resize", this.binding); - } - - if(this.resizeObserver){ - this.resizeObserver.unobserve(this.table.element); - } - - if(this.visibilityObserver){ - this.visibilityObserver.unobserve(this.table.element); - } - - if(this.containerObserver){ - this.containerObserver.unobserve(this.table.element.parentNode); - } - } -} - -ResizeTable.moduleName = "resizeTable"; - -class ResponsiveLayout extends Module{ - - constructor(table){ - super(table); - - this.columns = []; - this.hiddenColumns = []; - this.mode = ""; - this.index = 0; - this.collapseFormatter = []; - this.collapseStartOpen = true; - this.collapseHandleColumn = false; - - this.registerTableOption("responsiveLayout", false); //responsive layout flags - this.registerTableOption("responsiveLayoutCollapseStartOpen", true); //start showing collapsed data - this.registerTableOption("responsiveLayoutCollapseUseFormatters", true); //responsive layout collapse formatter - this.registerTableOption("responsiveLayoutCollapseFormatter", false); //responsive layout collapse formatter - - this.registerColumnOption("responsive"); - } - - //generate responsive columns list - initialize(){ - if(this.table.options.responsiveLayout){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.updateColumnVisibility.bind(this)); - this.subscribe("column-hide", this.updateColumnVisibility.bind(this)); - this.subscribe("columns-loaded", this.initializeResponsivity.bind(this)); - this.subscribe("column-moved", this.initializeResponsivity.bind(this)); - this.subscribe("column-add", this.initializeResponsivity.bind(this)); - this.subscribe("column-delete", this.initializeResponsivity.bind(this)); - - this.subscribe("table-redrawing", this.tableRedraw.bind(this)); - - if(this.table.options.responsiveLayout === "collapse"){ - this.subscribe("row-data-changed", this.generateCollapsedRowContent.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout", this.layoutRow.bind(this)); - } - } - } - - tableRedraw(force){ - if(["fitColumns", "fitDataStretch"].indexOf(this.layoutMode()) === -1){ - if(!force){ - this.update(); - } - } - } - - initializeResponsivity(){ - var columns = []; - - this.mode = this.table.options.responsiveLayout; - this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData; - this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen; - this.hiddenColumns = []; - - //determine level of responsivity for each column - this.table.columnManager.columnsByIndex.forEach((column, i) => { - if(column.modules.responsive){ - if(column.modules.responsive.order && column.modules.responsive.visible){ - column.modules.responsive.index = i; - columns.push(column); - - if(!column.visible && this.mode === "collapse"){ - this.hiddenColumns.push(column); - } - } - } - }); - - //sort list by responsivity - columns = columns.reverse(); - columns = columns.sort((a, b) => { - var diff = b.modules.responsive.order - a.modules.responsive.order; - return diff || (b.modules.responsive.index - a.modules.responsive.index); - }); - - this.columns = columns; - - if(this.mode === "collapse"){ - this.generateCollapsedContent(); - } - - //assign collapse column - for (let col of this.table.columnManager.columnsByIndex){ - if(col.definition.formatter == "responsiveCollapse"){ - this.collapseHandleColumn = col; - break; - } - } - - if(this.collapseHandleColumn){ - if(this.hiddenColumns.length){ - this.collapseHandleColumn.show(); - }else { - this.collapseHandleColumn.hide(); - } - } - } - - //define layout information - initializeColumn(column){ - var def = column.getDefinition(); - - column.modules.responsive = {order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible:def.visible === false ? false : true}; - } - - initializeRow(row){ - var el; - - if(row.type !== "calc"){ - el = document.createElement("div"); - el.classList.add("tabulator-responsive-collapse"); - - row.modules.responsiveLayout = { - element:el, - open:this.collapseStartOpen, - }; - - if(!this.collapseStartOpen){ - el.style.display = 'none'; - } - } - } - - layoutRow(row){ - var rowEl = row.getElement(); - - if(row.modules.responsiveLayout){ - rowEl.appendChild(row.modules.responsiveLayout.element); - this.generateCollapsedRowContent(row); - } - } - - //update column visibility - updateColumnVisibility(column, responsiveToggle){ - if(!responsiveToggle && column.modules.responsive){ - column.modules.responsive.visible = column.visible; - this.initializeResponsivity(); - } - } - - hideColumn(column){ - var colCount = this.hiddenColumns.length; - - column.hide(false, true); - - if(this.mode === "collapse"){ - this.hiddenColumns.unshift(column); - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !colCount){ - this.collapseHandleColumn.show(); - } - } - } - - showColumn(column){ - var index; - - column.show(false, true); - //set column width to prevent calculation loops on uninitialized columns - column.setWidth(column.getWidth()); - - if(this.mode === "collapse"){ - index = this.hiddenColumns.indexOf(column); - - if(index > -1){ - this.hiddenColumns.splice(index, 1); - } - - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !this.hiddenColumns.length){ - this.collapseHandleColumn.hide(); - } - } - } - - //redraw columns to fit space - update(){ - var working = true; - - while(working){ - - let width = this.table.modules.layout.getMode() == "fitColumns" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth(); - - let diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width; - - if(diff < 0){ - //table is too wide - let column = this.columns[this.index]; - - if(column){ - this.hideColumn(column); - this.index ++; - }else { - working = false; - } - - }else { - - //table has spare space - let column = this.columns[this.index -1]; - - if(column){ - if(diff > 0){ - if(diff >= column.getWidth()){ - this.showColumn(column); - this.index --; - }else { - working = false; - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(!this.table.rowManager.activeRowsCount){ - this.table.rowManager.renderEmptyScroll(); - } - } - } - - generateCollapsedContent(){ - var rows = this.table.rowManager.getDisplayRows(); - - rows.forEach((row) => { - this.generateCollapsedRowContent(row); - }); - } - - generateCollapsedRowContent(row){ - var el, contents; - - if(row.modules.responsiveLayout){ - el = row.modules.responsiveLayout.element; - - while(el.firstChild) el.removeChild(el.firstChild); - - contents = this.collapseFormatter(this.generateCollapsedRowData(row)); - if(contents){ - el.appendChild(contents); - } - } - } - - generateCollapsedRowData(row){ - var data = row.getData(), - output = [], - mockCellComponent; - - this.hiddenColumns.forEach((column) => { - var value = column.getFieldValue(data); - - if(column.definition.title && column.field){ - if(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){ - - mockCellComponent = { - value:false, - data:{}, - getValue:function(){ - return value; - }, - getData:function(){ - return data; - }, - getType:function(){ - return "cell"; - }, - getElement:function(){ - return document.createElement("div"); - }, - getRow:function(){ - return row.getComponent(); - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - }; - - function onRendered(callback){ - callback(); - } - - output.push({ - field: column.field, - title: column.definition.title, - value: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered) - }); - }else { - output.push({ - field: column.field, - title: column.definition.title, - value: value - }); - } - } - }); - - return output; - } - - formatCollapsedData(data){ - var list = document.createElement("table"); - - data.forEach(function(item){ - var row = document.createElement("tr"); - var titleData = document.createElement("td"); - var valueData = document.createElement("td"); - var node_content; - - var titleHighlight = document.createElement("strong"); - titleData.appendChild(titleHighlight); - this.langBind("columns|" + item.field, function(text){ - titleHighlight.innerHTML = text || item.title; - }); - - if(item.value instanceof Node){ - node_content = document.createElement("div"); - node_content.appendChild(item.value); - valueData.appendChild(node_content); - }else { - valueData.innerHTML = item.value; - } - - row.appendChild(titleData); - row.appendChild(valueData); - list.appendChild(row); - }, this); - - return Object.keys(data).length ? list : ""; - } -} - -ResponsiveLayout.moduleName = "responsiveLayout"; - -class SelectRow extends Module{ - - constructor(table){ - super(table); - - this.selecting = false; //flag selecting in progress - this.lastClickedRow = false; //last clicked row - this.selectPrev = []; //hold previously selected element for drag drop selection - this.selectedRows = []; //hold selected rows - this.headerCheckboxElement = null; // hold header select element - - this.registerTableOption("selectable", "highlight"); //highlight rows on hover - this.registerTableOption("selectableRangeMode", "drag"); //highlight rows on hover - this.registerTableOption("selectableRollingSelection", true); //roll selection once maximum number of selectable rows is reached - this.registerTableOption("selectablePersistence", true); // maintain selection when table view is updated - this.registerTableOption("selectableCheck", function(data, row){return true;}); //check whether row is selectable - - this.registerTableFunction("selectRow", this.selectRows.bind(this)); - this.registerTableFunction("deselectRow", this.deselectRows.bind(this)); - this.registerTableFunction("toggleSelectRow", this.toggleRow.bind(this)); - this.registerTableFunction("getSelectedRows", this.getSelectedRows.bind(this)); - this.registerTableFunction("getSelectedData", this.getSelectedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "select", this.selectRows.bind(this)); - this.registerComponentFunction("row", "deselect", this.deselectRows.bind(this)); - this.registerComponentFunction("row", "toggleSelect", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "isSelected", this.isRowSelected.bind(this)); - } - - initialize(){ - if(this.table.options.selectable !== false){ - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-deleting", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clearSelectionData.bind(this)); - this.subscribe("rows-retrieve", this.rowRetrieve.bind(this)); - - if(this.table.options.selectable && !this.table.options.selectablePersistence){ - this.subscribe("data-refreshing", this.deselectRows.bind(this)); - } - } - } - - rowRetrieve(type, prevValue){ - return type === "selected" ? this.selectedRows : prevValue; - } - - rowDeleted(row){ - this._deselectRow(row, true); - } - - clearSelectionData(silent){ - var prevSelected = this.selectedRows.length; - - this.selecting = false; - this.lastClickedRow = false; - this.selectPrev = []; - this.selectedRows = []; - - if(prevSelected && silent !== true){ - this._rowSelectionChanged(); - } - } - - initializeRow(row){ - var self = this, - element = row.getElement(); - - // trigger end of row selection - var endSelect = function(){ - - setTimeout(function(){ - self.selecting = false; - }, 50); - - document.body.removeEventListener("mouseup", endSelect); - }; - - row.modules.select = {selected:false}; - - //set row selection class - if(self.checkRowSelectability(row)){ - element.classList.add("tabulator-selectable"); - element.classList.remove("tabulator-unselectable"); - - if(self.table.options.selectable && self.table.options.selectable != "highlight"){ - if(self.table.options.selectableRangeMode === "click"){ - element.addEventListener("click", this.handleComplexRowClick.bind(this, row)); - }else { - element.addEventListener("click", function(e){ - if(!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()){ - self.table._clearSelection(); - } - - if(!self.selecting){ - self.toggleRow(row); - } - }); - - element.addEventListener("mousedown", function(e){ - if(e.shiftKey){ - self.table._clearSelection(); - - self.selecting = true; - - self.selectPrev = []; - - document.body.addEventListener("mouseup", endSelect); - document.body.addEventListener("keyup", endSelect); - - self.toggleRow(row); - - return false; - } - }); - - element.addEventListener("mouseenter", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.toggleRow(row); - - if(self.selectPrev[1] == row){ - self.toggleRow(self.selectPrev[0]); - } - } - }); - - element.addEventListener("mouseout", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.selectPrev.unshift(row); - } - }); - } - } - - }else { - element.classList.add("tabulator-unselectable"); - element.classList.remove("tabulator-selectable"); - } - } - - handleComplexRowClick(row, e){ - if(e.shiftKey){ - this.table._clearSelection(); - this.lastClickedRow = this.lastClickedRow || row; - - var lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow); - var rowIdx = this.table.rowManager.getDisplayRowIndex(row); - - var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx; - var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx; - - var rows = this.table.rowManager.getDisplayRows().slice(0); - var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1); - - if(e.ctrlKey || e.metaKey){ - toggledRows.forEach((toggledRow)=>{ - if(toggledRow !== this.lastClickedRow){ - - if(this.table.options.selectable !== true && !this.isRowSelected(row)){ - if(this.selectedRows.length < this.table.options.selectable){ - this.toggleRow(toggledRow); - } - }else { - this.toggleRow(toggledRow); - } - } - }); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - - if(this.table.options.selectable !== true){ - if(toggledRows.length > this.table.options.selectable){ - toggledRows = toggledRows.slice(0, this.table.options.selectable); - } - } - - this.selectRows(toggledRows); - } - this.table._clearSelection(); - } - else if(e.ctrlKey || e.metaKey){ - this.toggleRow(row); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - this.selectRows(row); - this.lastClickedRow = row; - } - } - - checkRowSelectability(row){ - if(row && row.type === "row"){ - return this.table.options.selectableCheck.call(this.table, row.getComponent()); - } - - return false; - } - - //toggle row selection - toggleRow(row){ - if(this.checkRowSelectability(row)){ - if(row.modules.select && row.modules.select.selected){ - this._deselectRow(row); - }else { - this._selectRow(row); - } - } - } - - //select a number of rows - selectRows(rows){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = this.table.rowManager.rows; - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._selectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(false, changes); - } - }else { - if(rowMatch){ - this._selectRow(rowMatch, false, true); - } - } - } - - //select an individual row - _selectRow(rowInfo, silent, force){ - //handle max row count - if(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){ - if(this.selectedRows.length >= this.table.options.selectable){ - if(this.table.options.selectableRollingSelection){ - this._deselectRow(this.selectedRows[0]); - }else { - return false; - } - } - } - - var row = this.table.rowManager.findRow(rowInfo); - - if(row){ - if(this.selectedRows.indexOf(row) == -1){ - row.getElement().classList.add("tabulator-selected"); - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = true; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = true; - } - - this.selectedRows.push(row); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, true); - } - - this.dispatchExternal("rowSelected", row.getComponent()); - - this._rowSelectionChanged(silent, row); - - return row; - } - }else { - if(!silent){ - console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - isRowSelected(row){ - return this.selectedRows.indexOf(row) !== -1; - } - - //deselect a number of rows - deselectRows(rows, silent){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = Object.assign([], this.selectedRows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._deselectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(silent, [], changes); - } - }else { - if(rowMatch){ - this._deselectRow(rowMatch, silent, true); - } - } - } - - //deselect an individual row - _deselectRow(rowInfo, silent){ - var self = this, - row = self.table.rowManager.findRow(rowInfo), - index, element; - - if(row){ - index = self.selectedRows.findIndex(function(selectedRow){ - return selectedRow == row; - }); - - if(index > -1){ - - element = row.getElement(); - - if(element){ - element.classList.remove("tabulator-selected"); - } - - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = false; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = false; - } - self.selectedRows.splice(index, 1); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, false); - } - - this.dispatchExternal("rowDeselected", row.getComponent()); - - self._rowSelectionChanged(silent, undefined, row); - - return row; - } - }else { - if(!silent){ - console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - getSelectedData(){ - var data = []; - - this.selectedRows.forEach(function(row){ - data.push(row.getData()); - }); - - return data; - } - - getSelectedRows(){ - var rows = []; - - this.selectedRows.forEach(function(row){ - rows.push(row.getComponent()); - }); - - return rows; - } - - _rowSelectionChanged(silent, selected = [], deselected = []){ - if(this.headerCheckboxElement){ - if(this.selectedRows.length === 0){ - this.headerCheckboxElement.checked = false; - this.headerCheckboxElement.indeterminate = false; - } else if(this.table.rowManager.rows.length === this.selectedRows.length){ - this.headerCheckboxElement.checked = true; - this.headerCheckboxElement.indeterminate = false; - } else { - this.headerCheckboxElement.indeterminate = true; - this.headerCheckboxElement.checked = false; - } - } - - if(!silent){ - if(!Array.isArray(selected)){ - selected = [selected]; - } - - selected = selected.map(row => row.getComponent()); - - if(!Array.isArray(deselected)){ - deselected = [deselected]; - } - - deselected = deselected.map(row => row.getComponent()); - - this.dispatchExternal("rowSelectionChanged", this.getSelectedData(), this.getSelectedRows(), selected, deselected); - } - } - - registerRowSelectCheckbox (row, element) { - if(!row._row.modules.select){ - row._row.modules.select = {}; - } - - row._row.modules.select.checkboxEl = element; - } - - registerHeaderSelectCheckbox (element) { - this.headerCheckboxElement = element; - } - - childRowSelection(row, select){ - var children = this.table.modules.dataTree.getChildren(row, true); - - if(select){ - for(let child of children){ - this._selectRow(child, true); - } - }else { - for(let child of children){ - this._deselectRow(child, true); - } - } - } -} - -SelectRow.moduleName = "selectRow"; - -//sort numbers -function number$1(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var decimal = params.decimalSeparator; - var thousand = params.thousandSeparator; - var emptyAlign = 0; - - a = String(a); - b = String(b); - - if(thousand){ - a = a.split(thousand).join(""); - b = b.split(thousand).join(""); - } - - if(decimal){ - a = a.split(decimal).join("."); - b = b.split(decimal).join("."); - } - - a = parseFloat(a); - b = parseFloat(b); - - //handle non numeric values - if(isNaN(a)){ - emptyAlign = isNaN(b) ? 0 : -1; - }else if(isNaN(b)){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -//sort strings -function string(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - var locale; - - //handle empty values - if(!a){ - emptyAlign = !b ? 0 : -1; - }else if(!b){ - emptyAlign = 1; - }else { - //compare valid values - switch(typeof params.locale){ - case "boolean": - if(params.locale){ - locale = this.langLocale(); - } - break; - case "string": - locale = params.locale; - break; - } - - return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -//sort datetime -function datetime$2(a, b, aRow, bRow, column, dir, params){ - var DT = window.DateTime || luxon.DateTime; - var format = params.format || "dd/MM/yyyy HH:mm:ss", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - if(typeof DT != "undefined"){ - if(!DT.isDateTime(a)){ - if(format === "iso"){ - a = DT.fromISO(String(a)); - }else { - a = DT.fromFormat(String(a), format); - } - } - - if(!DT.isDateTime(b)){ - if(format === "iso"){ - b = DT.fromISO(String(b)); - }else { - b = DT.fromFormat(String(b), format); - } - } - - if(!a.isValid){ - emptyAlign = !b.isValid ? 0 : -1; - }else if(!b.isValid){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - - }else { - console.error("Sort Error - 'datetime' sorter is dependant on luxon.js"); - } -} - -//sort date -function date$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "dd/MM/yyyy"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); -} - -//sort times -function time$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "HH:mm"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); -} - -//sort booleans -function boolean(a, b, aRow, bRow, column, dir, params){ - var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0; - var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0; - - return el1 - el2; -} - -//sort if element contains any data -function array(a, b, aRow, bRow, column, dir, params){ - var type = params.type || "length", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - function calc(value){ - var result; - - switch(type){ - case "length": - result = value.length; - break; - - case "sum": - result = value.reduce(function(c, d){ - return c + d; - }); - break; - - case "max": - result = Math.max.apply(null, value) ; - break; - - case "min": - result = Math.min.apply(null, value) ; - break; - - case "avg": - result = value.reduce(function(c, d){ - return c + d; - }) / value.length; - break; - } - - return result; - } - - //handle non array values - if(!Array.isArray(a)){ - emptyAlign = !Array.isArray(b) ? 0 : -1; - }else if(!Array.isArray(b)){ - emptyAlign = 1; - }else { - return calc(b) - calc(a); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -//sort if element contains any data -function exists(a, b, aRow, bRow, column, dir, params){ - var el1 = typeof a == "undefined" ? 0 : 1; - var el2 = typeof b == "undefined" ? 0 : 1; - - return el1 - el2; -} - -//sort alpha numeric strings -function alphanum(as, bs, aRow, bRow, column, dir, params){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -var defaultSorters = { - number:number$1, - string:string, - date:date$1, - time:time$1, - datetime:datetime$2, - boolean:boolean, - array:array, - exists:exists, - alphanum:alphanum -}; - -class Sort extends Module{ - - constructor(table){ - super(table); - - this.sortList = []; //holder current sort - this.changed = false; //has the sort changed since last render - - this.registerTableOption("sortMode", "local"); //local or remote sorting - - this.registerTableOption("initialSort", false); //initial sorting criteria - this.registerTableOption("columnHeaderSortMulti", true); //multiple or single column sorting - this.registerTableOption("sortOrderReverse", false); //reverse internal sort ordering - this.registerTableOption("headerSortElement", "
              "); //header sort element - this.registerTableOption("headerSortClickElement", "header"); //element which triggers sort when clicked - - this.registerColumnOption("sorter"); - this.registerColumnOption("sorterParams"); - - this.registerColumnOption("headerSort", true); - this.registerColumnOption("headerSortStartingDir"); - this.registerColumnOption("headerSortTristate"); - - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.registerDataHandler(this.sort.bind(this), 20); - - this.registerTableFunction("setSort", this.userSetSort.bind(this)); - this.registerTableFunction("getSorters", this.getSort.bind(this)); - this.registerTableFunction("clearSort", this.clearSort.bind(this)); - - if(this.table.options.sortMode === "remote"){ - this.subscribe("data-params", this.remoteSortParams.bind(this)); - } - } - - tableBuilt(){ - if(this.table.options.initialSort){ - this.setSort(this.table.options.initialSort); - } - } - - remoteSortParams(data, config, silent, params){ - var sorters = this.getSort(); - - sorters.forEach((item) => { - delete item.column; - }); - - params.sort = sorters; - - return params; - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetSort(sortList, dir){ - this.setSort(sortList, dir); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - clearSort(){ - this.clear(); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //initialize column header for sorting - initializeColumn(column){ - var sorter = false, - colEl, - arrowEl; - - switch(typeof column.definition.sorter){ - case "string": - if(Sort.sorters[column.definition.sorter]){ - sorter = Sort.sorters[column.definition.sorter]; - }else { - console.warn("Sort Error - No such sorter found: ", column.definition.sorter); - } - break; - - case "function": - sorter = column.definition.sorter; - break; - } - - column.modules.sort = { - sorter:sorter, dir:"none", - params:column.definition.sorterParams || {}, - startingDir:column.definition.headerSortStartingDir || "asc", - tristate: column.definition.headerSortTristate, - }; - - if(column.definition.headerSort !== false){ - - colEl = column.getElement(); - - colEl.classList.add("tabulator-sortable"); - - arrowEl = document.createElement("div"); - arrowEl.classList.add("tabulator-col-sorter"); - - switch(this.table.options.headerSortClickElement){ - case "icon": - arrowEl.classList.add("tabulator-col-sorter-element"); - break; - case "header": - colEl.classList.add("tabulator-col-sorter-element"); - break; - default: - colEl.classList.add("tabulator-col-sorter-element"); - break; - } - - switch(this.table.options.headerSortElement){ - case "function": - //do nothing - break; - - case "object": - arrowEl.appendChild(this.table.options.headerSortElement); - break; - - default: - arrowEl.innerHTML = this.table.options.headerSortElement; - } - - //create sorter arrow - column.titleHolderElement.appendChild(arrowEl); - - column.modules.sort.element = arrowEl; - - this.setColumnHeaderSortIcon(column, "none"); - - //sort on click - (this.table.options.headerSortClickElement === "icon" ? arrowEl : colEl).addEventListener("click", (e) => { - var dir = "", - sorters=[], - match = false; - - if(column.modules.sort){ - if(column.modules.sort.tristate){ - if(column.modules.sort.dir == "none"){ - dir = column.modules.sort.startingDir; - }else { - if(column.modules.sort.dir == column.modules.sort.startingDir){ - dir = column.modules.sort.dir == "asc" ? "desc" : "asc"; - }else { - dir = "none"; - } - } - }else { - switch(column.modules.sort.dir){ - case "asc": - dir = "desc"; - break; - - case "desc": - dir = "asc"; - break; - - default: - dir = column.modules.sort.startingDir; - } - } - - if (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) { - sorters = this.getSort(); - - match = sorters.findIndex((sorter) => { - return sorter.field === column.getField(); - }); - - if(match > -1){ - sorters[match].dir = dir; - - match = sorters.splice(match, 1)[0]; - if(dir != "none"){ - sorters.push(match); - } - }else { - if(dir != "none"){ - sorters.push({column:column, dir:dir}); - } - } - - //add to existing sort - this.setSort(sorters); - }else { - if(dir == "none"){ - this.clear(); - }else { - //sort by column only - this.setSort(column, dir); - } - - } - - // this.table.rowManager.sorterRefresh(!this.sortList.length); - this.refreshSort(); - } - }); - } - } - - refreshSort(){ - if(this.table.options.sortMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the sorters have changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //return current sorters - getSort(){ - var self = this, - sorters = []; - - self.sortList.forEach(function(item){ - if(item.column){ - sorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir}); - } - }); - - return sorters; - } - - //change sort list and trigger sort - setSort(sortList, dir){ - var self = this, - newSortList = []; - - if(!Array.isArray(sortList)){ - sortList = [{column: sortList, dir:dir}]; - } - - sortList.forEach(function(item){ - var column; - - column = self.table.columnManager.findColumn(item.column); - - if(column){ - item.column = column; - newSortList.push(item); - self.changed = true; - }else { - console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column); - } - - }); - - self.sortList = newSortList; - - this.dispatch("sort-changed"); - } - - //clear sorters - clear(){ - this.setSort([]); - } - - //find appropriate sorter for column - findSorter(column){ - var row = this.table.rowManager.activeRows[0], - sorter = "string", - field, value; - - if(row){ - row = row.getData(); - field = column.getField(); - - if(field){ - - value = column.getFieldValue(row); - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - } - } - break; - } - } - } - - return Sort.sorters[sorter]; - } - - //work through sort list sorting data - sort(data){ - var self = this, - sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList, - sortListActual = [], - rowComponents = []; - - if(this.subscribedExternal("dataSorting")){ - this.dispatchExternal("dataSorting", self.getSort()); - } - - self.clearColumnHeaders(); - - if(this.table.options.sortMode !== "remote"){ - - //build list of valid sorters and trigger column specific callbacks before sort begins - sortList.forEach(function(item, i){ - var sortObj; - - if(item.column){ - sortObj = item.column.modules.sort; - - if(sortObj){ - - //if no sorter has been defined, take a guess - if(!sortObj.sorter){ - sortObj.sorter = self.findSorter(item.column); - } - - item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params; - - sortListActual.push(item); - } - - self.setColumnHeader(item.column, item.dir); - } - }); - - //sort data - if (sortListActual.length) { - self._sortItems(data, sortListActual); - } - - }else { - sortList.forEach(function(item, i){ - self.setColumnHeader(item.column, item.dir); - }); - } - - if(this.subscribedExternal("dataSorted")){ - data.forEach((row) => { - rowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataSorted", self.getSort(), rowComponents); - } - - return data; - } - - //clear sort arrows on columns - clearColumnHeaders(){ - this.table.columnManager.getRealColumns().forEach((column) => { - if(column.modules.sort){ - column.modules.sort.dir = "none"; - column.getElement().setAttribute("aria-sort", "none"); - this.setColumnHeaderSortIcon(column, "none"); - } - }); - } - - //set the column header sort direction - setColumnHeader(column, dir){ - column.modules.sort.dir = dir; - column.getElement().setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending"); - this.setColumnHeaderSortIcon(column, dir); - } - - setColumnHeaderSortIcon(column, dir){ - var sortEl = column.modules.sort.element, - arrowEl; - - if(column.definition.headerSort && typeof this.table.options.headerSortElement === "function"){ - while(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild); - - arrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir); - - if(typeof arrowEl === "object"){ - sortEl.appendChild(arrowEl); - }else { - sortEl.innerHTML = arrowEl; - } - } - } - - //sort each item in sort list - _sortItems(data, sortList){ - var sorterCount = sortList.length - 1; - - data.sort((a, b) => { - var result; - - for(var i = sorterCount; i>= 0; i--){ - let sortItem = sortList[i]; - - result = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params); - - if(result !== 0){ - break; - } - } - - return result; - }); - } - - //process individual rows for a sort function on active data - _sortRow(a, b, column, dir, params){ - var el1Comp, el2Comp; - - //switch elements depending on search direction - var el1 = dir == "asc" ? a : b; - var el2 = dir == "asc" ? b : a; - - a = column.getFieldValue(el1.getData()); - b = column.getFieldValue(el2.getData()); - - a = typeof a !== "undefined" ? a : ""; - b = typeof b !== "undefined" ? b : ""; - - el1Comp = el1.getComponent(); - el2Comp = el2.getComponent(); - - return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params); - } -} - -Sort.moduleName = "sort"; - -//load defaults -Sort.sorters = defaultSorters; - -class Tooltip extends Module{ - - constructor(table){ - super(table); - - this.tooltipSubscriber = null, - this.headerSubscriber = null, - - this.timeout = null; - this.popupInstance = null; - - this.registerTableOption("tooltipGenerationMode", undefined); //deprecated - this.registerTableOption("tooltipDelay", 300); - - this.registerColumnOption("tooltip"); - this.registerColumnOption("headerTooltip"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheckMsg("tooltipGenerationMode", "This option is no longer needed as tooltips are always generated on hover now"); - } - - initializeColumn(column){ - if(column.definition.headerTooltip && !this.headerSubscriber){ - this.headerSubscriber = true; - - this.subscribe("column-mousemove", this.mousemoveCheck.bind(this, "headerTooltip")); - this.subscribe("column-mouseout", this.mouseoutCheck.bind(this, "headerTooltip")); - } - - if(column.definition.tooltip && !this.tooltipSubscriber){ - this.tooltipSubscriber = true; - - this.subscribe("cell-mousemove", this.mousemoveCheck.bind(this, "tooltip")); - this.subscribe("cell-mouseout", this.mouseoutCheck.bind(this, "tooltip")); - } - } - - mousemoveCheck(action, e, component){ - var tooltip = action === "tooltip" ? component.column.definition.tooltip : component.definition.headerTooltip; - - if(tooltip){ - this.clearPopup(); - this.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay); - } - } - - mouseoutCheck(action, e, component){ - if(!this.popupInstance){ - this.clearPopup(); - } - } - - clearPopup(action, e, component){ - clearTimeout(this.timeout); - this.timeout = null; - - if(this.popupInstance){ - this.popupInstance.hide(); - } - } - - loadTooltip(e, component, tooltip){ - var contentsEl, renderedCallback, coords; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(typeof tooltip === "function"){ - tooltip = tooltip(e, component.getComponent(), onRendered); - } - - if(tooltip instanceof HTMLElement){ - contentsEl = tooltip; - }else { - contentsEl = document.createElement("div"); - - if(tooltip === true){ - if(component instanceof Cell){ - tooltip = component.value; - }else { - if(component.definition.field){ - this.langBind("columns|" + component.definition.field, (value) => { - contentsEl.innerHTML = tooltip = value || component.definition.title; - }); - }else { - tooltip = component.definition.title; - } - } - } - - contentsEl.innerHTML = tooltip; - } - - if(tooltip || tooltip === 0 || tooltip === false){ - contentsEl.classList.add("tabulator-tooltip"); - - contentsEl.addEventListener("mousemove", e => e.preventDefault()); - - this.popupInstance = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - this.popupInstance.renderCallback(renderedCallback); - } - - coords = this.popupInstance.containerEventCoords(e); - - this.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => { - this.dispatchExternal("TooltipClosed", component.getComponent()); - this.popupInstance = null; - }); - - this.dispatchExternal("TooltipOpened", component.getComponent()); - } - } -} - -Tooltip.moduleName = "tooltip"; - -var defaultValidators = { - //is integer - integer: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && Math.floor(value) === value; - }, - - //is float - float: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && value % 1 !== 0; - }, - - //must be a number - numeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return !isNaN(value); - }, - - //must be a string - string: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return isNaN(value); - }, - - //maximum value - max: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) <= parameters; - }, - - //minimum value - min: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) >= parameters; - }, - - //starts with value - starts: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().startsWith(String(parameters).toLowerCase()); - }, - - //ends with value - ends: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().endsWith(String(parameters).toLowerCase()); - }, - - - //minimum string length - minLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length >= parameters; - }, - - //maximum string length - maxLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length <= parameters; - }, - - //in provided value list - in: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - if(typeof parameters == "string"){ - parameters = parameters.split("|"); - } - - return parameters.indexOf(value) > -1; - }, - - //must match provided regex - regex: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var reg = new RegExp(parameters); - - return reg.test(value); - }, - - //value must be unique in this column - unique: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var unique = true; - - var cellData = cell.getData(); - var column = cell.getColumn()._getSelf(); - - this.table.rowManager.rows.forEach(function(row){ - var data = row.getData(); - - if(data !== cellData){ - if(value == column.getFieldValue(data)){ - unique = false; - } - } - }); - - return unique; - }, - - //must have a value - required:function(cell, value, parameters){ - return value !== "" && value !== null && typeof value !== "undefined"; - }, -}; - -class Validate extends Module{ - - constructor(table){ - super(table); - - this.invalidCells = []; - - this.registerTableOption("validationMode", "blocking"); - - this.registerColumnOption("validator"); - - this.registerTableFunction("getInvalidCells", this.getInvalidCells.bind(this)); - this.registerTableFunction("clearCellValidation", this.userClearCellValidation.bind(this)); - this.registerTableFunction("validate", this.userValidate.bind(this)); - - this.registerComponentFunction("cell", "isValid", this.cellIsValid.bind(this)); - this.registerComponentFunction("cell", "clearValidation", this.clearValidation.bind(this)); - this.registerComponentFunction("cell", "validate", this.cellValidate.bind(this)); - - this.registerComponentFunction("column", "validate", this.columnValidate.bind(this)); - this.registerComponentFunction("row", "validate", this.rowValidate.bind(this)); - } - - - initialize(){ - this.subscribe("cell-delete", this.clearValidation.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - - this.subscribe("edit-success", this.editValidate.bind(this)); - this.subscribe("edit-editor-clear", this.editorClear.bind(this)); - this.subscribe("edit-edited-clear", this.editedClear.bind(this)); - } - - /////////////////////////////////// - ///////// Event Handling ////////// - /////////////////////////////////// - - editValidate(cell, value, previousValue){ - var valid = this.table.options.validationMode !== "manual" ? this.validate(cell.column.modules.validate, cell, value) : true; - - // allow time for editor to make render changes then style cell - if(valid !== true){ - setTimeout(() => { - cell.getElement().classList.add("tabulator-validation-fail"); - this.dispatchExternal("validationFailed", cell.getComponent(), value, valid); - }); - } - - return valid; - } - - editorClear(cell, cancelled){ - if(cancelled){ - if(cell.column.modules.validate){ - this.cellValidate(cell); - } - } - - cell.getElement().classList.remove("tabulator-validation-fail"); - } - - editedClear(cell){ - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } - } - - /////////////////////////////////// - ////////// Cell Functions ///////// - /////////////////////////////////// - - cellIsValid(cell){ - return cell.modules.validate ? (cell.modules.validate.invalid || true) : true; - } - - cellValidate(cell){ - return this.validate(cell.column.modules.validate, cell, cell.getValue()); - } - - /////////////////////////////////// - ///////// Column Functions //////// - /////////////////////////////////// - - columnValidate(column){ - var invalid = []; - - column.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ////////// Row Functions ////////// - /////////////////////////////////// - - rowValidate(row){ - var invalid = []; - - row.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - userClearCellValidation(cells){ - if(!cells){ - cells = this.getInvalidCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.clearValidation(cell._getSelf()); - }); - } - - userValidate(cells){ - var output = []; - - //clear row data - this.table.rowManager.rows.forEach((row) => { - row = row.getComponent(); - - var valid = row.validate(); - - if(valid !== true){ - output = output.concat(valid); - } - }); - - return output.length ? output : true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.validator !== "undefined"){ - this.initializeColumn(column); - } - } - - //validate - initializeColumn(column){ - var self = this, - config = [], - validator; - - if(column.definition.validator){ - - if(Array.isArray(column.definition.validator)){ - column.definition.validator.forEach((item) => { - validator = self._extractValidator(item); - - if(validator){ - config.push(validator); - } - }); - - }else { - validator = this._extractValidator(column.definition.validator); - - if(validator){ - config.push(validator); - } - } - - column.modules.validate = config.length ? config : false; - } - } - - _extractValidator(value){ - var type, params, pos; - - switch(typeof value){ - case "string": - pos = value.indexOf(':'); - - if(pos > -1){ - type = value.substring(0,pos); - params = value.substring(pos+1); - }else { - type = value; - } - - return this._buildValidator(type, params); - - case "function": - return this._buildValidator(value); - - case "object": - return this._buildValidator(value.type, value.parameters); - } - } - - _buildValidator(type, params){ - - var func = typeof type == "function" ? type : Validate.validators[type]; - - if(!func){ - console.warn("Validator Setup Error - No matching validator found:", type); - return false; - }else { - return { - type:typeof type == "function" ? "function" : type, - func:func, - params:params, - }; - } - } - - validate(validators, cell, value){ - var self = this, - failedValidators = [], - invalidIndex = this.invalidCells.indexOf(cell); - - if(validators){ - validators.forEach((item) => { - if(!item.func.call(self, cell.getComponent(), value, item.params)){ - failedValidators.push({ - type:item.type, - parameters:item.params - }); - } - }); - } - - if(!cell.modules.validate){ - cell.modules.validate = {}; - } - - if(!failedValidators.length){ - cell.modules.validate.invalid = false; - cell.getElement().classList.remove("tabulator-validation-fail"); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - }else { - cell.modules.validate.invalid = failedValidators; - - if(this.table.options.validationMode !== "manual"){ - cell.getElement().classList.add("tabulator-validation-fail"); - } - - if(invalidIndex == -1){ - this.invalidCells.push(cell); - } - } - - return failedValidators.length ? failedValidators : true; - } - - getInvalidCells(){ - var output = []; - - this.invalidCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearValidation(cell){ - var invalidIndex; - - if(cell.modules.validate && cell.modules.validate.invalid){ - - cell.getElement().classList.remove("tabulator-validation-fail"); - cell.modules.validate.invalid = false; - - invalidIndex = this.invalidCells.indexOf(cell); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - } - } -} - -Validate.moduleName = "validate"; - -//load defaults -Validate.validators = defaultValidators; - -var modules = /*#__PURE__*/Object.freeze({ - __proto__: null, - AccessorModule: Accessor, - AjaxModule: Ajax, - ClipboardModule: Clipboard, - ColumnCalcsModule: ColumnCalcs, - DataTreeModule: DataTree, - DownloadModule: Download, - EditModule: Edit$1, - ExportModule: Export, - FilterModule: Filter, - FormatModule: Format, - FrozenColumnsModule: FrozenColumns, - FrozenRowsModule: FrozenRows, - GroupRowsModule: GroupRows, - HistoryModule: History, - HtmlTableImportModule: HtmlTableImport, - ImportModule: Import, - InteractionModule: Interaction, - KeybindingsModule: Keybindings, - MenuModule: Menu, - MoveColumnsModule: MoveColumns, - MoveRowsModule: MoveRows, - MutatorModule: Mutator, - PageModule: Page, - PersistenceModule: Persistence, - PopupModule: Popup$1, - PrintModule: Print, - ReactiveDataModule: ReactiveData, - ResizeColumnsModule: ResizeColumns, - ResizeRowsModule: ResizeRows, - ResizeTableModule: ResizeTable, - ResponsiveLayoutModule: ResponsiveLayout, - SelectRowModule: SelectRow, - SortModule: Sort, - TooltipModule: Tooltip, - ValidateModule: Validate -}); - -var defaultOptions = { - - debugEventsExternal:false, //flag to console log events - debugEventsInternal:false, //flag to console log events - debugInvalidOptions:true, //allow toggling of invalid option warnings - debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings - debugInitialization:true, //allow toggling of pre initialization function call warnings - debugDeprecation:true, //allow toggling of deprecation warnings - - height:false, //height of tabulator - minHeight:false, //minimum height of tabulator - maxHeight:false, //maximum height of tabulator - - columnHeaderVertAlign:"top", //vertical alignment of column headers - - popupContainer:false, - - columns:[],//store for colum header info - columnDefaults:{}, //store column default props - - data:false, //default starting data - - autoColumns:false, //build columns from data row structure - autoColumnsDefinitions:false, - - nestedFieldSeparator:".", //separator for nested data - - footerElement:false, //hold footer element - - index:"id", //filed for row index - - textDirection:"auto", - - addRowPos:"bottom", //position to insert blank rows, top|bottom - - headerVisible:true, //hide header - - renderVertical:"virtual", - renderHorizontal:"basic", - renderVerticalBuffer:0, // set virtual DOM buffer size - - scrollToRowPosition:"top", - scrollToRowIfVisible:true, - - scrollToColumnPosition:"left", - scrollToColumnIfVisible:true, - - rowFormatter:false, - rowFormatterPrint:null, - rowFormatterClipboard:null, - rowFormatterHtmlOutput:null, - - rowHeight:null, - - placeholder:false, - - dataLoader:true, - dataLoaderLoading:false, - dataLoaderError:false, - dataLoaderErrorTimeout:3000, - - dataSendParams:{}, - - dataReceiveParams:{}, -}; - -class OptionsList { - constructor(table, msgType, defaults = {}){ - this.table = table; - this.msgType = msgType; - this.registeredDefaults = Object.assign({}, defaults); - } - - register(option, value){ - this.registeredDefaults[option] = value; - } - - generate(defaultOptions, userOptions = {}){ - var output = Object.assign({}, this.registeredDefaults), - warn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true; - - Object.assign(output, defaultOptions); - - for (let key in userOptions){ - if(!output.hasOwnProperty(key)){ - if(warn){ - console.warn("Invalid " + this.msgType + " option:", key); - } - - output[key] = userOptions.key; - } - } - - - for (let key in output){ - if(key in userOptions){ - output[key] = userOptions[key]; - }else { - if(Array.isArray(output[key])){ - output[key] = Object.assign([], output[key]); - }else if(typeof output[key] === "object" && output[key] !== null){ - output[key] = Object.assign({}, output[key]); - }else if (typeof output[key] === "undefined"){ - delete output[key]; - } - } - } - - return output; - } -} - -class Renderer extends CoreFeature{ - constructor(table){ - super(table); - - this.elementVertical = table.rowManager.element; - this.elementHorizontal = table.columnManager.element; - this.tableElement = table.rowManager.tableElement; - - this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it) - } - - - /////////////////////////////////// - /////// Internal Bindings ///////// - /////////////////////////////////// - - initialize(){ - //initialize core functionality - } - - clearRows(){ - //clear down existing rows layout - } - - clearColumns(){ - //clear down existing columns layout - } - - - reinitializeColumnWidths(columns){ - //resize columns to fit data - } - - - renderRows(){ - //render rows from a clean slate - } - - renderColumns(){ - //render columns from a clean slate - } - - rerenderRows(callback){ - // rerender rows and keep position - if(callback){ - callback(); - } - } - - rerenderColumns(update, blockRedraw){ - //rerender columns - } - - renderRowCells(row){ - //render the cells in a row - } - - rerenderRowCells(row, force){ - //rerender the cells in a row - } - - scrollColumns(left, dir){ - //handle horizontal scrolling - } - - scrollRows(top, dir){ - //handle vertical scrolling - } - - resize(){ - //container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION) - } - - scrollToRow(row){ - //scroll to a specific row - } - - scrollToRowNearestTop(row){ - //determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom - } - - visibleRows(includingBuffer){ - //return the visible rows - return []; - } - - /////////////////////////////////// - //////// Helper Functions ///////// - /////////////////////////////////// - - rows(){ - return this.table.rowManager.getDisplayRows(); - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - /////////////////////////////////// - /////// External Triggers ///////// - /////// (DO NOT OVERRIDE) ///////// - /////////////////////////////////// - - clear(){ - //clear down existing layout - this.clearRows(); - this.clearColumns(); - } - - render(){ - //render from a clean slate - this.renderRows(); - this.renderColumns(); - } - - rerender(callback){ - // rerender and keep position - this.rerenderRows(); - this.rerenderColumns(); - } - - scrollToRowPosition(row, position, ifVisible){ - var rowIndex = this.rows().indexOf(row), - rowEl = row.getElement(), - offset = 0; - - return new Promise((resolve, reject) => { - if(rowIndex > -1){ - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToRowIfVisible; - } - - //check row visibility - if(!ifVisible){ - if(Helpers.elVisible(rowEl)){ - offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top; - - if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){ - resolve(); - return false; - } - } - } - - if(typeof position === "undefined"){ - position = this.table.options.scrollToRowPosition; - } - - if(position === "nearest"){ - position = this.scrollToRowNearestTop(row) ? "top" : "bottom"; - } - - //scroll to row - this.scrollToRow(row); - - //align to correct position - switch(position){ - case "middle": - case "center": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2); - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2); - } - - break; - - case "bottom": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight; - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight; - } - - break; - - case "top": - this.elementVertical.scrollTop = rowEl.offsetTop; - break; - } - - resolve(); - - }else { - console.warn("Scroll Error - Row not visible"); - reject("Scroll Error - Row not visible"); - } - }); - } -} - -class BasicHorizontal extends Renderer{ - constructor(table){ - super(table); - } - - renderRowCells(row, inFragment) { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - if(!inFragment){ - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - reinitializeColumnWidths(columns){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - } -} - -class VirtualDomHorizontal extends Renderer{ - constructor(table){ - super(table); - - this.leftCol = 0; - this.rightCol = 0; - this.scrollLeft = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - - this.fitDataColAvg = 0; - - this.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen - - this.visibleRows = null; - - this.initialized = false; - this.isFitData = false; - - this.columns = []; - } - - initialize(){ - this.compatibilityCheck(); - this.layoutCheck(); - this.vertScrollListen(); - } - - compatibilityCheck(){ - if(this.options("layout") == "fitDataTable"){ - console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"); - } - - if(this.options("responsiveLayout")){ - console.warn("Horizontal Virtual DOM is not compatible with responsive columns"); - } - - if(this.options("rtl")){ - console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"); - } - } - - layoutCheck(){ - this.isFitData = this.options("layout").startsWith('fitData'); - } - - vertScrollListen(){ - this.subscribe("scroll-vertical", this.clearVisRowCache.bind(this)); - this.subscribe("data-refreshed", this.clearVisRowCache.bind(this)); - } - - clearVisRowCache(){ - this.visibleRows = null; - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - renderColumns(row, force){ - this.dataChange(); - } - - - scrollColumns(left, dir){ - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer)); - } - } - - calcWindowBuffer(){ - var buffer = this.elementVertical.clientWidth; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if(column.visible){ - var width = column.getWidth(); - - if(width > buffer){ - buffer = width; - } - } - }); - - this.windowBuffer = buffer * 2; - } - - rerenderColumns(update, blockRedraw){ - var old = { - cols:this.columns, - leftCol:this.leftCol, - rightCol:this.rightCol, - }, - colPos = 0; - - if(update && !this.initialized){ - return; - } - - this.clear(); - - this.calcWindowBuffer(); - - this.scrollLeft = this.elementVertical.scrollLeft; - - this.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer; - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - this.table.columnManager.columnsByIndex.forEach((column) => { - var config = {}, - width; - - if(column.visible){ - if(!column.modules.frozen){ - width = column.getWidth(); - - config.leftPos = colPos; - config.rightPos = colPos + width; - - config.width = width; - - if (this.isFitData) { - config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true; - } - - if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){ - //column is visible - - if(this.leftCol == -1){ - this.leftCol = this.columns.length; - this.vDomPadLeft = colPos; - } - - this.rightCol = this.columns.length; - }else { - // column is hidden - if(this.leftCol !== -1){ - this.vDomPadRight += width; - } - } - - this.columns.push(column); - - column.modules.vdomHoz = config; - - colPos += width; - } - } - }); - - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - - this.initialized = true; - - if(!blockRedraw){ - if(!update || this.reinitChanged(old)){ - this.reinitializeRows(); - } - } - - this.elementVertical.scrollLeft = this.scrollLeft; - } - - renderRowCells(row){ - if(this.initialized){ - this.initializeRow(row); - }else { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - rerenderRowCells(row, force){ - this.reinitializeRow(row, force); - } - - reinitializeColumnWidths(columns){ - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.columns[i].reinitializeWidth(); - } - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - deinitialize(){ - this.initialized = false; - } - - clear(){ - this.columns = []; - - this.leftCol = -1; - this.rightCol = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - } - - dataChange(){ - var change = false, - row, rowEl; - - if(this.isFitData){ - this.table.columnManager.columnsByIndex.forEach((column) => { - if(!column.definition.width && column.visible){ - change = true; - } - }); - - if(change && this.table.rowManager.getDisplayRows().length){ - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - row = this.chain("rows-sample", [1], [], () => { - return this.table.rowManager.getDisplayRows(); - })[0]; - - if(row){ - rowEl = row.getElement(); - - row.generateCells(); - - this.tableElement.appendChild(rowEl); - - for(let colEnd = 0; colEnd < row.cells.length; colEnd++){ - let cell = row.cells[colEnd]; - rowEl.appendChild(cell.getElement()); - - cell.column.reinitializeWidth(); - } - - rowEl.parentNode.removeChild(rowEl); - - this.rerenderColumns(false, true); - } - } - }else { - if(this.options("layout") === "fitColumns"){ - this.layoutRefresh(); - this.rerenderColumns(false, true); - } - } - } - - reinitChanged(old){ - var match = true; - - if(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){ - return true; - } - - old.cols.forEach((col, i) => { - if(col !== this.columns[i]){ - match = false; - } - }); - - return !match; - } - - reinitializeRows(){ - var visibleRows = this.getVisibleRows(), - otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - visibleRows.forEach((row) => { - this.reinitializeRow(row, true); - }); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - } - - getVisibleRows(){ - if (!this.visibleRows){ - this.visibleRows = this.table.rowManager.getVisibleRows(); - } - - return this.visibleRows; - } - - scroll(diff){ - this.vDomScrollPosLeft += diff; - this.vDomScrollPosRight += diff; - - if(Math.abs(diff) > (this.windowBuffer / 2)){ - this.rerenderColumns(); - }else { - if(diff > 0){ - //scroll right - this.addColRight(); - this.removeColLeft(); - }else { - //scroll left - this.addColLeft(); - this.removeColRight(); - } - } - } - - colPositionAdjust (start, end, diff){ - for(let i = start; i < end; i++){ - let column = this.columns[i]; - - column.modules.vdomHoz.leftPos += diff; - column.modules.vdomHoz.rightPos += diff; - } - } - - addColRight(){ - var changes = false, - working = true; - - while(working){ - - let column = this.columns[this.rightCol + 1]; - - if(column){ - if(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling); - cell.cellRendered(); - } - }); - - this.fitDataColActualWidthCheck(column); - - this.rightCol++; // Don't move this below the >= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - - if(this.rightCol >= (this.columns.length - 1)){ - this.vDomPadRight = 0; - }else { - this.vDomPadRight -= column.getWidth(); - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - addColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol - 1]; - - if(column){ - if(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement()); - cell.cellRendered(); - } - }); - - this.leftCol--; // don't move this below the <= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - - if(this.leftCol <= 0){ // replicating logic in addColRight - this.vDomPadLeft = 0; - }else { - this.vDomPadLeft -= column.getWidth(); - } - - let diff = this.fitDataColActualWidthCheck(column); - - if(diff){ - this.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff; - this.vDomPadRight -= diff; - } - - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - removeColRight(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.rightCol]; - - if(column){ - if(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColRight", ex.message); - } - } - }); - - this.vDomPadRight += column.getWidth(); - this.rightCol --; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - removeColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol]; - - if(column){ - if(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColLeft", ex.message); - } - } - }); - - this.vDomPadLeft += column.getWidth(); - this.leftCol ++; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - fitDataColActualWidthCheck(column){ - var newWidth, widthDiff; - - if(column.modules.vdomHoz.fitDataCheck){ - column.reinitializeWidth(); - - newWidth = column.getWidth(); - widthDiff = newWidth - column.modules.vdomHoz.width; - - if(widthDiff){ - column.modules.vdomHoz.rightPos += widthDiff; - column.modules.vdomHoz.width = newWidth; - this.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff); - } - - column.modules.vdomHoz.fitDataCheck = false; - } - - return widthDiff; - } - - initializeRow(row){ - if(row.type !== "group"){ - row.modules.vdomHoz = { - leftCol:this.leftCol, - rightCol:this.rightCol, - }; - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.leftColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.appendCell(row, this.columns[i]); - } - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.rightColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - } - } - - appendCell(row, column){ - if(column && column.visible){ - let cell = row.getCell(column); - - row.getElement().appendChild(cell.getElement()); - cell.cellRendered(); - } - } - - reinitializeRow(row, force){ - if(row.type !== "group"){ - if(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){ - - var rowEl = row.getElement(); - while(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild); - - this.initializeRow(row); - } - } - } -} - -class ColumnManager extends CoreFeature { - - constructor (table){ - super(table); - - this.blockHozScrollEvent = false; - this.headersElement = null; - this.contentsElement = null; - this.element = null ; //containing element - this.columns = []; // column definition object - this.columnsByIndex = []; //columns by index - this.columnsByField = {}; //columns by field - this.scrollLeft = 0; - this.optionsList = new OptionsList(this.table, "column definition", defaultColumnOptions); - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockUpdate = null; //store latest redraw update only status - - this.renderer = null; - } - - ////////////// Setup Functions ///////////////// - - initialize(){ - this.initializeRenderer(); - - this.headersElement = this.createHeadersElement(); - this.contentsElement = this.createHeaderContentsElement(); - this.element = this.createHeaderElement(); - - this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild); - this.element.insertBefore(this.contentsElement, this.element.firstChild); - - this.initializeScrollWheelWatcher(); - - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this)); - } - - padVerticalScrollbar(width){ - if(this.table.rtl){ - this.headersElement.style.marginLeft = width + "px"; - }else { - this.headersElement.style.marginRight = width + "px"; - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomHorizontal, - "basic": BasicHorizontal, - }; - - if(typeof this.table.options.renderHorizontal === "string"){ - renderClass = renderers[this.table.options.renderHorizontal]; - }else { - renderClass = this.table.options.renderHorizontal; - } - - if(renderClass){ - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - }else { - console.error("Unable to find matching renderer:", this.table.options.renderHorizontal); - } - } - - - createHeadersElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-headers"); - el.setAttribute("role", "row"); - - return el; - } - - createHeaderContentsElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header-contents"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - createHeaderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header"); - el.setAttribute("role", "rowgroup"); - - if(!this.table.options.headerVisible){ - el.classList.add("tabulator-header-hidden"); - } - - return el; - } - - //return containing element - getElement(){ - return this.element; - } - - //return containing contents element - getContentsElement(){ - return this.contentsElement; - } - - - //return header containing element - getHeadersElement(){ - return this.headersElement; - } - - //scroll horizontally to match table body - scrollHorizontal(left){ - this.contentsElement.scrollLeft = left; - - this.scrollLeft = left; - - this.renderer.scrollColumns(left); - } - - initializeScrollWheelWatcher(){ - this.contentsElement.addEventListener("wheel", (e) => { - var left; - - if(e.deltaX){ - left = this.contentsElement.scrollLeft + e.deltaX; - - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - } - - ///////////// Column Setup Functions ///////////// - generateColumnsFromRowData(data){ - var cols = [], - definitions = this.table.options.autoColumnsDefinitions, - row, sorter; - - if(data && data.length){ - - row = data[0]; - - for(var key in row){ - let col = { - field:key, - title:key, - }; - - let value = row[key]; - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - case "object": - if(Array.isArray(value)){ - sorter = "array"; - }else { - sorter = "string"; - } - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - }else { - sorter = "string"; - } - } - break; - } - - col.sorter = sorter; - - cols.push(col); - } - - if(definitions){ - - switch(typeof definitions){ - case "function": - this.table.options.columns = definitions.call(this.table, cols); - break; - - case "object": - if(Array.isArray(definitions)){ - cols.forEach((col) => { - var match = definitions.find((def) => { - return def.field === col.field; - }); - - if(match){ - Object.assign(col, match); - } - }); - - }else { - cols.forEach((col) => { - if(definitions[col.field]){ - Object.assign(col, definitions[col.field]); - } - }); - } - - this.table.options.columns = cols; - break; - } - }else { - this.table.options.columns = cols; - } - - this.setColumns(this.table.options.columns); - } - } - - setColumns(cols, row){ - while(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild); - - this.columns = []; - this.columnsByIndex = []; - this.columnsByField = {}; - - this.dispatch("columns-loading"); - - cols.forEach((def, i) => { - this._addColumn(def); - }); - - this._reIndexColumns(); - - this.dispatch("columns-loaded"); - - this.rerenderColumns(false, true); - - this.redraw(true); - } - - _addColumn(definition, before, nextToColumn){ - var column = new Column(definition, this), - colEl = column.getElement(), - index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn; - - if(nextToColumn && index > -1){ - var topColumn = nextToColumn.getTopColumn(); - var parentIndex = this.columns.indexOf(topColumn); - var nextEl = topColumn.getElement(); - - if(before){ - this.columns.splice(parentIndex, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl); - }else { - this.columns.splice(parentIndex + 1, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling); - } - }else { - if(before){ - this.columns.unshift(column); - this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild); - }else { - this.columns.push(column); - this.headersElement.appendChild(column.getElement()); - } - } - - column.columnRendered(); - - return column; - } - - registerColumnField(col){ - if(col.definition.field){ - this.columnsByField[col.definition.field] = col; - } - } - - registerColumnPosition(col){ - this.columnsByIndex.push(col); - } - - _reIndexColumns(){ - this.columnsByIndex = []; - - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - } - - //ensure column headers take up the correct amount of space in column groups - verticalAlignHeaders(){ - var minHeight = 0; - - if(!this.redrawBlock){ - - this.headersElement.style.height=""; - - this.columns.forEach((column) => { - column.clearVerticalAlign(); - }); - - this.columns.forEach((column) => { - var height = column.getHeight(); - - if(height > minHeight){ - minHeight = height; - } - }); - - this.headersElement.style.height = minHeight + "px"; - - this.columns.forEach((column) => { - column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight); - }); - - this.table.rowManager.adjustTableSize(); - } - } - - //////////////// Column Details ///////////////// - findColumn(subject){ - var columns; - - if(typeof subject == "object"){ - - if(subject instanceof Column){ - //subject is column element - return subject; - }else if(subject instanceof ColumnComponent){ - //subject is public column component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - - columns = []; - - this.columns.forEach((column) => { - columns.push(column); - columns = columns.concat(column.getColumns(true)); - }); - - //subject is a HTML element of the column header - let match = columns.find((column) => { - return column.element === subject; - }); - - return match || false; - } - - }else { - //subject should be treated as the field name of the column - return this.columnsByField[subject] || false; - } - - //catch all for any other type of input - return false; - } - - getColumnByField(field){ - return this.columnsByField[field]; - } - - getColumnsByFieldRoot(root){ - var matches = []; - - Object.keys(this.columnsByField).forEach((field) => { - var fieldRoot = field.split(".")[0]; - if(fieldRoot === root){ - matches.push(this.columnsByField[field]); - } - }); - - return matches; - } - - getColumnByIndex(index){ - return this.columnsByIndex[index]; - } - - getFirstVisibleColumn(){ - var index = this.columnsByIndex.findIndex((col) => { - return col.visible; - }); - - return index > -1 ? this.columnsByIndex[index] : false; - } - - getColumns(){ - return this.columns; - } - - findColumnIndex(column){ - return this.columnsByIndex.findIndex((col) => { - return column === col; - }); - } - - //return all columns that are not groups - getRealColumns(){ - return this.columnsByIndex; - } - - //traverse across columns and call action - traverse(callback){ - this.columnsByIndex.forEach((column,i) =>{ - callback(column, i); - }); - } - - //get definitions of actual columns - getDefinitions(active){ - var output = []; - - this.columnsByIndex.forEach((column) => { - if(!active || (active && column.visible)){ - output.push(column.getDefinition()); - } - }); - - return output; - } - - //get full nested definition tree - getDefinitionTree(){ - var output = []; - - this.columns.forEach((column) => { - output.push(column.getDefinition(true)); - }); - - return output; - } - - getComponents(structured){ - var output = [], - columns = structured ? this.columns : this.columnsByIndex; - - columns.forEach((column) => { - output.push(column.getComponent()); - }); - - return output; - } - - getWidth(){ - var width = 0; - - this.columnsByIndex.forEach((column) => { - if(column.visible){ - width += column.getWidth(); - } - }); - - return width; - } - - moveColumn(from, to, after){ - to.element.parentNode.insertBefore(from.element, to.element); - - if(after){ - to.element.parentNode.insertBefore(to.element, from.element); - } - - this.moveColumnActual(from, to, after); - - this.verticalAlignHeaders(); - - this.table.rowManager.reinitialize(); - } - - moveColumnActual(from, to, after){ - if(from.parent.isGroup){ - this._moveColumnInArray(from.parent.columns, from, to, after); - }else { - this._moveColumnInArray(this.columns, from, to, after); - } - - this._moveColumnInArray(this.columnsByIndex, from, to, after, true); - - this.rerenderColumns(true); - - this.dispatch("column-moved", from, to, after); - - if(this.subscribedExternal("columnMoved")){ - this.dispatchExternal("columnMoved", from.getComponent(), this.table.columnManager.getComponents()); - } - } - - _moveColumnInArray(columns, from, to, after, updateRows){ - var fromIndex = columns.indexOf(from), - toIndex, rows = []; - - if (fromIndex > -1) { - - columns.splice(fromIndex, 1); - - toIndex = columns.indexOf(to); - - if (toIndex > -1) { - - if(after){ - toIndex = toIndex+1; - } - - }else { - toIndex = fromIndex; - } - - columns.splice(toIndex, 0, from); - - if(updateRows){ - - rows = this.chain("column-moving-rows", [from, to, after], null, []) || []; - - rows = rows.concat(this.table.rowManager.rows); - - rows.forEach(function(row){ - if(row.cells.length){ - var cell = row.cells.splice(fromIndex, 1)[0]; - row.cells.splice(toIndex, 0, cell); - } - }); - - } - } - } - - scrollToColumn(column, position, ifVisible){ - var left = 0, - offset = column.getLeftOffset(), - adjust = 0, - colEl = column.getElement(); - - - return new Promise((resolve, reject) => { - - if(typeof position === "undefined"){ - position = this.table.options.scrollToColumnPosition; - } - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToColumnIfVisible; - } - - if(column.visible){ - - //align to correct position - switch(position){ - case "middle": - case "center": - adjust = -this.element.clientWidth / 2; - break; - - case "right": - adjust = colEl.clientWidth - this.headersElement.clientWidth; - break; - } - - //check column visibility - if(!ifVisible){ - if(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){ - return false; - } - } - - //calculate scroll position - left = offset + adjust; - - left = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0); - - this.table.rowManager.scrollHorizontal(left); - this.scrollHorizontal(left); - - resolve(); - }else { - console.warn("Scroll Error - Column not visible"); - reject("Scroll Error - Column not visible"); - } - - }); - } - - //////////////// Cell Management ///////////////// - generateCells(row){ - var cells = []; - - this.columnsByIndex.forEach((column) => { - cells.push(column.generateCell(row)); - }); - - return cells; - } - - //////////////// Column Management ///////////////// - getFlexBaseWidth(){ - var totalWidth = this.table.element.clientWidth, //table element width - fixedWidth = 0; - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - this.columnsByIndex.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width || 0; - - minWidth = parseInt(column.minWidth); - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width) ; - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - } - }); - - return fixedWidth; - } - - addColumn(definition, before, nextToColumn){ - return new Promise((resolve, reject) => { - var column = this._addColumn(definition, before, nextToColumn); - - this._reIndexColumns(); - - this.dispatch("column-add", definition, before, nextToColumn); - - if(this.layoutMode() != "fitColumns"){ - column.reinitializeWidth(); - } - - this.redraw(true); - - this.table.rowManager.reinitialize(); - - this.rerenderColumns(); - - resolve(column); - }); - } - - //remove column from system - deregisterColumn(column){ - var field = column.getField(), - index; - - //remove from field list - if(field){ - delete this.columnsByField[field]; - } - - //remove from index list - index = this.columnsByIndex.indexOf(column); - - if(index > -1){ - this.columnsByIndex.splice(index, 1); - } - - //remove from column list - index = this.columns.indexOf(column); - - if(index > -1){ - this.columns.splice(index, 1); - } - - this.verticalAlignHeaders(); - - this.redraw(); - } - - rerenderColumns(update, silent){ - if(!this.redrawBlock){ - this.renderer.rerenderColumns(update, silent); - }else { - if(update === false || (update === true && this.redrawBlockUpdate === null)){ - this.redrawBlockUpdate = update; - } - } - } - - blockRedraw(){ - this.redrawBlock = true; - this.redrawBlockUpdate = null; - } - - restoreRedraw(){ - this.redrawBlock = false; - this.verticalAlignHeaders(); - this.renderer.rerenderColumns(this.redrawBlockUpdate); - - } - - //redraw columns - redraw(force){ - if(Helpers.elVisible(this.element)){ - this.verticalAlignHeaders(); - } - - if(force){ - this.table.rowManager.resetScroll(); - this.table.rowManager.reinitialize(); - } - - if(!this.confirm("table-redrawing", force)){ - this.layoutRefresh(force); - } - - this.dispatch("table-redraw", force); - - this.table.footerManager.redraw(); - } -} - -class BasicVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - } - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.scrollTop = 0; - element.scrollLeft = 0; - - element.style.minWidth = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - } - - renderRows() { - var element = this.tableElement, - onlyGroupHeaders = true, - tableFrag = document.createDocumentFragment(), - rows = this.rows(); - - rows.forEach((row, index) => { - this.styleRow(row, index); - row.initialize(false, true); - - if (row.type !== "group") { - onlyGroupHeaders = false; - } - - tableFrag.appendChild(row.getElement()); - }); - - element.appendChild(tableFrag); - - rows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - rows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - - - rerenderRows(callback){ - this.clearRows(); - - if(callback){ - callback(); - } - - this.renderRows(); - } - - scrollToRowNearestTop(row){ - var rowTop = Helpers.elOffset(row.getElement()).top; - - return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop)); - } - - scrollToRow(row){ - var rowEl = row.getElement(); - - this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; - } - - visibleRows(includingBuffer){ - return this.rows(); - } - -} - -class VirtualDomVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomRowHeight = 20; //approximation of row heights for padding - - this.vDomTop = 0; //hold position for first rendered row in the virtual DOM - this.vDomBottom = 0; //hold position for last rendered row in the virtual DOM - - this.vDomScrollPosTop = 0; //last scroll position of the vDom top; - this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom; - - this.vDomTopPad = 0; //hold value of padding for top of virtual DOM - this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM - - this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go - - this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling - - this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows) - this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin - - this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed - this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.style.paddingTop = ""; - element.style.paddingBottom = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - - this.elementVertical.scrollTop = 0; - this.elementVertical.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomTop = 0; - this.vDomBottom = 0; - this.vDomTopPad = 0; - this.vDomBottomPad = 0; - this.vDomScrollPosTop = 0; - this.vDomScrollPosBottom = 0; - } - - renderRows(){ - this._virtualRenderFill(); - } - - rerenderRows(callback){ - var scrollTop = this.elementVertical.scrollTop; - var topRow = false; - var topOffset = false; - - var left = this.table.rowManager.scrollLeft; - - var rows = this.rows(); - - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - - if(rows[i]){ - var diff = scrollTop - rows[i].getElement().offsetTop; - - if(topOffset === false || Math.abs(diff) < topOffset){ - topOffset = diff; - topRow = i; - }else { - break; - } - } - } - - rows.forEach((row) => { - row.deinitializeHeight(); - }); - - if(callback){ - callback(); - } - - if(this.rows().length){ - this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0); - }else { - this.clear(); - this.table.rowManager.tableEmpty(); - } - - this.scrollColumns(left); - } - - scrollColumns(left){ - this.table.rowManager.scrollHorizontal(left); - } - - scrollRows(top, dir){ - var topDiff = top - this.vDomScrollPosTop; - var bottomDiff = top - this.vDomScrollPosBottom; - var margin = this.vDomWindowBuffer * 2; - var rows = this.rows(); - - this.scrollTop = top; - - if(-topDiff > margin || bottomDiff > margin){ - //if big scroll redraw table; - var left = this.table.rowManager.scrollLeft; - this._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length)); - this.scrollColumns(left); - }else { - - if(dir){ - //scrolling up - if(topDiff < 0){ - this._addTopRow(rows, -topDiff); - } - - if(bottomDiff < 0){ - //hide bottom row if needed - if(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){ - this._removeBottomRow(rows, -bottomDiff); - }else { - this.vDomScrollPosBottom = this.scrollTop; - } - } - }else { - - if(bottomDiff >= 0){ - this._addBottomRow(rows, bottomDiff); - } - - //scrolling down - if(topDiff >= 0){ - //hide top row if needed - if(this.scrollTop > this.vDomWindowBuffer){ - this._removeTopRow(rows, topDiff); - }else { - this.vDomScrollPosTop = this.scrollTop; - } - } - } - } - } - - resize(){ - this.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight; - } - - scrollToRowNearestTop(row){ - var rowIndex = this.rows().indexOf(row); - - return !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex)); - } - - scrollToRow(row){ - var index = this.rows().indexOf(row); - - if(index > -1){ - this._virtualRenderFill(index, true); - } - } - - visibleRows(includingBuffer){ - var topEdge = this.elementVertical.scrollTop, - bottomEdge = this.elementVertical.clientHeight + topEdge, - topFound = false, - topRow = 0, - bottomRow = 0, - rows = this.rows(); - - if(includingBuffer){ - topRow = this.vDomTop; - bottomRow = this.vDomBottom; - }else { - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - if(rows[i]){ - if(!topFound){ - if((topEdge - rows[i].getElement().offsetTop) >= 0){ - topRow = i; - }else { - topFound = true; - - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - }else { - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - } - } - } - - return rows.slice(topRow, bottomRow + 1); - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - //full virtual render - _virtualRenderFill(position, forceMove, offset) { - var element = this.tableElement, - holder = this.elementVertical, - topPad = 0, - rowsHeight = 0, - rowHeight = 0, - heightOccupied = 0, - topPadHeight = 0, - i = 0, - rows = this.rows(), - rowsCount = rows.length, - index = 0, - row, - rowFragment, - renderedRows = [], - totalRowsRendered = 0, - rowsToRender = 0, - fixedHeight = this.table.rowManager.fixedHeight, - containerHeight = this.elementVertical.clientHeight, - avgRowHeight = this.table.options.rowHeight, - resized = true; - - position = position || 0; - - offset = offset || 0; - - if(!position){ - this.clear(); - }else { - while(element.firstChild) element.removeChild(element.firstChild); - - //check if position is too close to bottom of table - heightOccupied = (rowsCount - position + 1) * this.vDomRowHeight; - - if(heightOccupied < containerHeight){ - position -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight); - if(position < 0){ - position = 0; - } - } - - //calculate initial pad - topPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position); - position -= topPad; - } - - if(rowsCount && Helpers.elVisible(this.elementVertical)){ - this.vDomTop = position; - this.vDomBottom = position -1; - - if(fixedHeight || this.table.options.maxHeight) { - if(avgRowHeight) { - rowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight); - } - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender)); - } - else { - rowsToRender = rowsCount; - } - - while(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) { - renderedRows = []; - rowFragment = document.createDocumentFragment(); - - i = 0; - - while ((i < rowsToRender) && this.vDomBottom < rowsCount -1) { - index = this.vDomBottom + 1, - row = rows[index]; - - this.styleRow(row, index); - - row.initialize(false, true); - if(!row.heightInitialized && !this.table.options.rowHeight){ - row.clearCellHeight(); - } - - rowFragment.appendChild(row.getElement()); - renderedRows.push(row); - this.vDomBottom ++; - i++; - } - - if(!renderedRows.length){ - break; - } - - element.appendChild(rowFragment); - - // NOTE: The next 3 loops are separate on purpose - // This is to batch up the dom writes and reads which drastically improves performance - - renderedRows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - renderedRows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - renderedRows.forEach((row) => { - rowHeight = row.getHeight(); - - if(totalRowsRendered < topPad){ - topPadHeight += rowHeight; - }else { - rowsHeight += rowHeight; - } - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - totalRowsRendered++; - }); - - resized = this.table.rowManager.adjustTableSize(); - containerHeight = this.elementVertical.clientHeight; - if(resized && (fixedHeight || this.table.options.maxHeight)) - { - avgRowHeight = rowsHeight / totalRowsRendered; - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight))); - } - } - - if(!position){ - this.vDomTopPad = 0; - //adjust row height to match average of rendered elements - this.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered); - this.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1); - - this.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight; - }else { - this.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset; - this.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0); - } - - element.style.paddingTop = this.vDomTopPad+"px"; - element.style.paddingBottom = this.vDomBottomPad+"px"; - - if(forceMove){ - this.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0); - } - - this.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight); - - //adjust for horizontal scrollbar if present (and not at top of table) - if(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){ - this.scrollTop += this.elementVertical.offsetHeight - containerHeight; - } - - this.vDomScrollPosTop = this.scrollTop; - this.vDomScrollPosBottom = this.scrollTop; - - holder.scrollTop = this.scrollTop; - - this.dispatch("render-virtual-fill"); - } - } - - _addTopRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomTop -1, - i = 0, - working = true; - - while(working){ - if(this.vDomTop){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.insertBefore(row.getElement(), table.firstChild); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomTop--; - index--; - i++; - - }else { - working = false; - } - - }else { - working = false; - } - - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomTopPad -= paddingAdjust; - - if(this.vDomTopPad < 0){ - this.vDomTopPad = index * this.vDomRowHeight; - } - - if(index < 1){ - this.vDomTopPad = 0; - } - - table.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop -= paddingAdjust; - } - } - - _removeTopRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomTop], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomTop++; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomTopPad += paddingAdjust; - this.tableElement.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer; - } - } - - _addBottomRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomBottom + 1, - i = 0, - working = true; - - while(working){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.appendChild(row.getElement()); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomBottom++; - index++; - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomBottomPad -= paddingAdjust; - - if(this.vDomBottomPad < 0 || index == rows.length -1){ - this.vDomBottomPad = 0; - } - - table.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom += paddingAdjust; - } - } - - _removeBottomRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomBottom], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomBottom --; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomBottomPad += paddingAdjust; - - if(this.vDomBottomPad < 0){ - this.vDomBottomPad = 0; - } - - this.tableElement.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom -= paddingAdjust; - } - } - - _quickNormalizeRowHeight(rows){ - for(let row of rows){ - row.calcHeight(); - } - - for(let row of rows){ - row.setCellHeight(); - } - } -} - -class RowManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.element = this.createHolderElement(); //containing element - this.tableElement = this.createTableElement(); //table element - this.heightFixer = this.createTableElement(); //table element - this.placeholder = null; //placeholder element - this.placeholderContents = null; //placeholder element - - this.firstRender = false; //handle first render - this.renderMode = "virtual"; //current rendering mode - this.fixedHeight = false; //current rendering mode - - this.rows = []; //hold row data objects - this.activeRowsPipeline = []; //hold calculation of active rows - this.activeRows = []; //rows currently available to on display in the table - this.activeRowsCount = 0; //count of active rows - - this.displayRows = []; //rows currently on display in the table - this.displayRowsCount = 0; //count of display rows - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed - this.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed - - this.dataPipeline = []; //hold data pipeline tasks - this.displayPipeline = []; //hold data display pipeline tasks - - this.scrollbarWidth = 0; - - this.renderer = null; - } - - //////////////// Setup Functions ///////////////// - - createHolderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-tableholder"); - el.setAttribute("tabindex", 0); - // el.setAttribute("role", "rowgroup"); - - return el; - } - - createTableElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-table"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - initializePlaceholder(){ - var placeholder = this.table.options.placeholder; - - if(typeof placeholder === "function"){ - placeholder = placeholder.call(this.table); - } - - placeholder = this.chain("placeholder", [placeholder], placeholder, placeholder) || placeholder; - - //configure placeholder element - if(placeholder){ - let el = document.createElement("div"); - el.classList.add("tabulator-placeholder"); - - if(typeof placeholder == "string"){ - let contents = document.createElement("div"); - contents.classList.add("tabulator-placeholder-contents"); - contents.innerHTML = placeholder; - - el.appendChild(contents); - - this.placeholderContents = contents; - - }else if(typeof HTMLElement !== "undefined" && placeholder instanceof HTMLElement){ - - el.appendChild(placeholder); - this.placeholderContents = placeholder; - }else { - console.warn("Invalid placeholder provided, must be string or HTML Element", placeholder); - - this.el = null; - } - - this.placeholder = el; - } - } - - //return containing element - getElement(){ - return this.element; - } - - //return table element - getTableElement(){ - return this.tableElement; - } - - initialize(){ - this.initializePlaceholder(); - this.initializeRenderer(); - - //initialize manager - this.element.appendChild(this.tableElement); - - this.firstRender = true; - - //scroll header along with table body - this.element.addEventListener("scroll", () => { - var left = this.element.scrollLeft, - leftDir = this.scrollLeft > left, - top = this.element.scrollTop, - topDir = this.scrollTop > top; - - //handle horizontal scrolling - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.dispatch("scroll-horizontal", left, leftDir); - this.dispatchExternal("scrollHorizontal", left, leftDir); - - this._positionPlaceholder(); - } - - //handle vertical scrolling - if(this.scrollTop != top){ - this.scrollTop = top; - - this.renderer.scrollRows(top, topDir); - - this.dispatch("scroll-vertical", top, topDir); - this.dispatchExternal("scrollVertical", top, topDir); - } - }); - } - - ////////////////// Row Manipulation ////////////////// - findRow(subject){ - if(typeof subject == "object"){ - if(subject instanceof Row){ - //subject is row element - return subject; - }else if(subject instanceof RowComponent){ - //subject is public row component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - //subject is a HTML element of the row - let match = this.rows.find((row) => { - return row.getElement() === subject; - }); - - return match || false; - }else if(subject === null){ - return false; - } - }else if(typeof subject == "undefined"){ - return false; - }else { - //subject should be treated as the index of the row - let match = this.rows.find((row) => { - return row.data[this.table.options.index] == subject; - }); - - return match || false; - } - - //catch all for any other type of input - return false; - } - - getRowFromDataObject(data){ - var match = this.rows.find((row) => { - return row.data === data; - }); - - return match || false; - } - - getRowFromPosition(position){ - return this.getDisplayRows().find((row) => { - return row.getPosition() === position && row.isDisplayed(); - }); - } - - scrollToRow(row, position, ifVisible){ - return this.renderer.scrollToRowPosition(row, position, ifVisible); - } - - ////////////////// Data Handling ////////////////// - setData(data, renderInPosition, columnsChanged){ - return new Promise((resolve, reject)=>{ - if(renderInPosition && this.getDisplayRows().length){ - if(this.table.options.pagination){ - this._setDataActual(data, true); - }else { - this.reRenderInPosition(() => { - this._setDataActual(data); - }); - } - }else { - if(this.table.options.autoColumns && columnsChanged && this.table.initialized){ - this.table.columnManager.generateColumnsFromRowData(data); - } - this.resetScroll(); - - this._setDataActual(data); - } - - resolve(); - }); - } - - _setDataActual(data, renderInPosition){ - this.dispatchExternal("dataProcessing", data); - - this._wipeElements(); - - if(Array.isArray(data)){ - this.dispatch("data-processing", data); - - data.forEach((def, i) => { - if(def && typeof def === "object"){ - var row = new Row(def, this); - this.rows.push(row); - }else { - console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def); - } - }); - - this.refreshActiveData(false, false, renderInPosition); - - this.dispatch("data-processed", data); - this.dispatchExternal("dataProcessed", data); - }else { - console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data, "\nData: ", data); - } - } - - _wipeElements(){ - this.dispatch("rows-wipe"); - - this.destroy(); - - this.adjustTableSize(); - - this.dispatch("rows-wiped"); - } - - destroy(){ - this.rows.forEach((row) => { - row.wipe(); - }); - - this.rows = []; - this.activeRows = []; - this.activeRowsPipeline = []; - this.activeRowsCount = 0; - this.displayRows = []; - this.displayRowsCount = 0; - } - - deleteRow(row, blockRedraw){ - var allIndex = this.rows.indexOf(row), - activeIndex = this.activeRows.indexOf(row); - - if(activeIndex > -1){ - this.activeRows.splice(activeIndex, 1); - } - - if(allIndex > -1){ - this.rows.splice(allIndex, 1); - } - - this.setActiveRows(this.activeRows); - - this.displayRowIterator((rows) => { - var displayIndex = rows.indexOf(row); - - if(displayIndex > -1){ - rows.splice(displayIndex, 1); - } - }); - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - this.regenerateRowPositions(); - - this.dispatchExternal("rowDeleted", row.getComponent()); - - if(!this.displayRowsCount){ - this.tableEmpty(); - } - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.getData()); - } - } - - addRow(data, pos, index, blockRedraw){ - var row = this.addRowActual(data, pos, index, blockRedraw); - return row; - } - - //add multiple rows - addRows(data, pos, index, refreshDisplayOnly){ - var rows = []; - - return new Promise((resolve, reject) => { - pos = this.findAddRowPos(pos); - - if(!Array.isArray(data)){ - data = [data]; - } - - if((typeof index == "undefined" && pos) || (typeof index !== "undefined" && !pos)){ - data.reverse(); - } - - data.forEach((item, i) => { - var row = this.addRow(item, pos, index, true); - rows.push(row); - this.dispatch("row-added", row, item, pos, index); - }); - - this.refreshActiveData(refreshDisplayOnly ? "displayPipeline" : false, false, true); - - this.regenerateRowPositions(); - - if(rows.length){ - this._clearPlaceholder(); - } - - resolve(rows); - }); - } - - findAddRowPos(pos){ - if(typeof pos === "undefined"){ - pos = this.table.options.addRowPos; - } - - if(pos === "pos"){ - pos = true; - } - - if(pos === "bottom"){ - pos = false; - } - - return pos; - } - - addRowActual(data, pos, index, blockRedraw){ - var row = data instanceof Row ? data : new Row(data || {}, this), - top = this.findAddRowPos(pos), - allIndex = -1, - activeIndex, chainResult; - - if(!index){ - chainResult = this.chain("row-adding-position", [row, top], null, {index, top}); - - index = chainResult.index; - top = chainResult.top; - } - - if(typeof index !== "undefined"){ - index = this.findRow(index); - } - - index = this.chain("row-adding-index", [row, index, top], null, index); - - if(index){ - allIndex = this.rows.indexOf(index); - } - - if(index && allIndex > -1){ - activeIndex = this.activeRows.indexOf(index); - - this.displayRowIterator(function(rows){ - var displayIndex = rows.indexOf(index); - - if(displayIndex > -1){ - rows.splice((top ? displayIndex : displayIndex + 1), 0, row); - } - }); - - if(activeIndex > -1){ - this.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row); - } - - this.rows.splice((top ? allIndex : allIndex + 1), 0, row); - - }else { - - if(top){ - - this.displayRowIterator(function(rows){ - rows.unshift(row); - }); - - this.activeRows.unshift(row); - this.rows.unshift(row); - }else { - this.displayRowIterator(function(rows){ - rows.push(row); - }); - - this.activeRows.push(row); - this.rows.push(row); - } - } - - this.setActiveRows(this.activeRows); - - this.dispatchExternal("rowAdded", row.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - return row; - } - - moveRow(from, to, after){ - this.dispatch("row-move", from, to, after); - - this.moveRowActual(from, to, after); - - this.regenerateRowPositions(); - - this.dispatch("row-moved", from, to, after); - this.dispatchExternal("rowMoved", from.getComponent()); - } - - moveRowActual(from, to, after){ - this.moveRowInArray(this.rows, from, to, after); - this.moveRowInArray(this.activeRows, from, to, after); - - this.displayRowIterator((rows) => { - this.moveRowInArray(rows, from, to, after); - }); - - this.dispatch("row-moving", from, to, after); - } - - moveRowInArray(rows, from, to, after){ - var fromIndex, toIndex, start, end; - - if(from !== to){ - - fromIndex = rows.indexOf(from); - - if (fromIndex > -1) { - - rows.splice(fromIndex, 1); - - toIndex = rows.indexOf(to); - - if (toIndex > -1) { - - if(after){ - rows.splice(toIndex+1, 0, from); - }else { - rows.splice(toIndex, 0, from); - } - - }else { - rows.splice(fromIndex, 0, from); - } - } - - //restyle rows - if(rows === this.getDisplayRows()){ - - start = fromIndex < toIndex ? fromIndex : toIndex; - end = toIndex > fromIndex ? toIndex : fromIndex +1; - - for(let i = start; i <= end; i++){ - if(rows[i]){ - this.styleRow(rows[i], i); - } - } - } - } - } - - clearData(){ - this.setData([]); - } - - getRowIndex(row){ - return this.findRowIndex(row, this.rows); - } - - getDisplayRowIndex(row){ - var index = this.getDisplayRows().indexOf(row); - return index > -1 ? index : false; - } - - nextDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - nextRow = false; - - - if(index !== false && index < this.displayRowsCount -1){ - nextRow = this.getDisplayRows()[index+1]; - } - - if(nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")){ - return this.nextDisplayRow(nextRow, rowOnly); - } - - return nextRow; - } - - prevDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - prevRow = false; - - if(index){ - prevRow = this.getDisplayRows()[index-1]; - } - - if(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")){ - return this.prevDisplayRow(prevRow, rowOnly); - } - - return prevRow; - } - - findRowIndex(row, list){ - var rowIndex; - - row = this.findRow(row); - - if(row){ - rowIndex = list.indexOf(row); - - if(rowIndex > -1){ - return rowIndex; - } - } - - return false; - } - - getData(active, transform){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - if(row.type == "row"){ - output.push(row.getData(transform || "data")); - } - }); - - return output; - } - - getComponents(active){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - return output; - } - - getDataCount(active){ - var rows = this.getRows(active); - - return rows.length; - } - - scrollHorizontal(left){ - this.scrollLeft = left; - this.element.scrollLeft = left; - - this.dispatch("scroll-horizontal", left); - } - - registerDataPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.dataPipeline.push({handler, priority}); - this.dataPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Data pipeline handlers must have a priority in order to be registered"); - } - } - - registerDisplayPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.displayPipeline.push({handler, priority}); - this.displayPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Display pipeline handlers must have a priority in order to be registered"); - } - } - - //set active data set - refreshActiveData(handler, skipStage, renderInPosition){ - var table = this.table, - stage = "", - index = 0, - cascadeOrder = ["all", "dataPipeline", "display", "displayPipeline", "end"]; - - if(!this.table.destroyed){ - if(typeof handler === "function"){ - index = this.dataPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "dataPipeline"; - - if(skipStage){ - if(index == this.dataPipeline.length - 1){ - stage = "display"; - }else { - index++; - } - } - }else { - index = this.displayPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "displayPipeline"; - - if(skipStage){ - if(index == this.displayPipeline.length - 1){ - stage = "end"; - }else { - index++; - } - } - }else { - console.error("Unable to refresh data, invalid handler provided", handler); - return; - } - } - }else { - stage = handler || "all"; - index = 0; - } - - if(this.redrawBlock){ - if(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){ - this.redrawBlockRestoreConfig = { - handler: handler, - skipStage: skipStage, - renderInPosition: renderInPosition, - stage:stage, - index:index, - }; - } - - return; - }else { - if(Helpers.elVisible(this.element)){ - if(renderInPosition){ - this.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition)); - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - - if(!handler){ - this.table.columnManager.renderer.renderColumns(); - } - - this.renderTable(); - - if(table.options.layoutColumnsOnNewData){ - this.table.columnManager.redraw(true); - } - } - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - } - - this.dispatch("data-refreshed"); - } - } - } - - refreshPipelines(handler, stage, index, renderInPosition){ - this.dispatch("data-refreshing"); - - if(!handler){ - this.activeRowsPipeline[0] = this.rows.slice(0); - } - - //cascade through data refresh stages - switch(stage){ - case "all": - //handle case where all data needs refreshing - - case "dataPipeline": - - for(let i = index; i < this.dataPipeline.length; i++){ - let result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0)); - - this.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0); - } - - this.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]); - - case "display": - index = 0; - this.resetDisplayRows(); - - case "displayPipeline": - for(let i = index; i < this.displayPipeline.length; i++){ - let result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition); - - this.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i); - } - - case "end": - //case to handle scenario when trying to skip past end stage - this.regenerateRowPositions(); - } - - if(this.getDisplayRows().length){ - this._clearPlaceholder(); - } - } - - //regenerate row positions - regenerateRowPositions(){ - var rows = this.getDisplayRows(); - var index = 1; - - rows.forEach((row) => { - if (row.type === "row"){ - row.setPosition(index); - index++; - } - }); - } - - setActiveRows(activeRows){ - this.activeRows = this.activeRows = Object.assign([], activeRows); - this.activeRowsCount = this.activeRows.length; - } - - //reset display rows array - resetDisplayRows(){ - this.displayRows = []; - - this.displayRows.push(this.activeRows.slice(0)); - - this.displayRowsCount = this.displayRows[0].length; - } - - //set display row pipeline data - setDisplayRows(displayRows, index){ - this.displayRows[index] = displayRows; - - if(index == this.displayRows.length -1){ - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - } - - getDisplayRows(index){ - if(typeof index == "undefined"){ - return this.displayRows.length ? this.displayRows[this.displayRows.length -1] : []; - }else { - return this.displayRows[index] || []; - } - } - - getVisibleRows(chain, viewable){ - var rows = Object.assign([], this.renderer.visibleRows(!viewable)); - - if(chain){ - rows = this.chain("rows-visible", [viewable], rows, rows); - } - - return rows; - } - - //repeat action across display rows - displayRowIterator(callback){ - this.activeRowsPipeline.forEach(callback); - this.displayRows.forEach(callback); - - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - - //return only actual rows (not group headers etc) - getRows(type){ - var rows = []; - - switch(type){ - case "active": - rows = this.activeRows; - break; - - case "display": - rows = this.table.rowManager.getDisplayRows(); - break; - - case "visible": - rows = this.getVisibleRows(false, true); - break; - - default: - rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows; - } - - return rows; - } - - ///////////////// Table Rendering ///////////////// - //trigger rerender of table in current position - reRenderInPosition(callback){ - if(this.redrawBlock){ - if(callback){ - callback(); - }else { - this.redrawBlockRenderInPosition = true; - } - }else { - this.dispatchExternal("renderStarted"); - - this.renderer.rerenderRows(callback); - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - } - - scrollBarCheck(){ - var scrollbarWidth = 0; - - //adjust for vertical scrollbar moving table when present - if(this.element.scrollHeight > this.element.clientHeight){ - scrollbarWidth = this.element.offsetWidth - this.element.clientWidth; - } - - if(scrollbarWidth !== this.scrollbarWidth){ - this.scrollbarWidth = scrollbarWidth; - this.dispatch("scrollbar-vertical", scrollbarWidth); - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomVertical, - "basic": BasicVertical, - }; - - if(typeof this.table.options.renderVertical === "string"){ - renderClass = renderers[this.table.options.renderVertical]; - }else { - renderClass = this.table.options.renderVertical; - } - - if(renderClass){ - this.renderMode = this.table.options.renderVertical; - - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - - if((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){ - this.fixedHeight = true; - }else { - this.fixedHeight = false; - } - }else { - console.error("Unable to find matching renderer:", this.table.options.renderVertical); - } - } - - getRenderMode(){ - return this.renderMode; - } - - renderTable(){ - this.dispatchExternal("renderStarted"); - - this.element.scrollTop = 0; - - this._clearTable(); - - if(this.displayRowsCount){ - this.renderer.renderRows(); - - if(this.firstRender){ - this.firstRender = false; - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.layoutRefresh(true); - } - }else { - this.renderEmptyScroll(); - } - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.dispatch("table-layout"); - - if(!this.displayRowsCount){ - this._showPlaceholder(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - - //show scrollbars on empty table div - renderEmptyScroll(){ - if(this.placeholder){ - this.tableElement.style.display = "none"; - }else { - this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px"; - // this.tableElement.style.minHeight = "1px"; - // this.tableElement.style.visibility = "hidden"; - } - } - - _clearTable(){ - this._clearPlaceholder(); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.renderer.clearRows(); - } - - tableEmpty(){ - this.renderEmptyScroll(); - this._showPlaceholder(); - } - - _showPlaceholder(){ - if(this.placeholder){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - this.initializePlaceholder(); - - this.placeholder.setAttribute("tabulator-render-mode", this.renderMode); - - this.getElement().appendChild(this.placeholder); - this._positionPlaceholder(); - - this.adjustTableSize(); - } - } - - _clearPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - // clear empty table placeholder min - this.tableElement.style.minWidth = ""; - this.tableElement.style.display = ""; - } - - _positionPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.style.width = this.table.columnManager.getWidth() + "px"; - this.placeholderContents.style.width = this.table.rowManager.element.clientWidth + "px"; - this.placeholderContents.style.marginLeft = this.scrollLeft + "px"; - } - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - //normalize height of active rows - normalizeHeight(){ - this.activeRows.forEach(function(row){ - row.normalizeHeight(); - }); - } - - //adjust the height of the table holder to fit in the Tabulator element - adjustTableSize(){ - let initialHeight = this.element.clientHeight, minHeight; - let resized = false; - - if(this.renderer.verticalFillMode === "fill"){ - let otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0)); - - if(this.fixedHeight){ - minHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + "px"; - - const height = "calc(100% - " + otherHeight + "px)"; - this.element.style.minHeight = minHeight || "calc(100% - " + otherHeight + "px)"; - this.element.style.height = height; - this.element.style.maxHeight = height; - } else { - this.element.style.height = ""; - this.element.style.height = - this.table.element.clientHeight - otherHeight + "px"; - this.element.scrollTop = this.scrollTop; - } - - this.renderer.resize(); - - //check if the table has changed size when dealing with variable height tables - if(!this.fixedHeight && initialHeight != this.element.clientHeight){ - resized = true; - if(this.subscribed("table-resize")){ - this.dispatch("table-resize"); - }else { - this.redraw(); - } - } - - this.scrollBarCheck(); - } - - this._positionPlaceholder(); - return resized; - } - - //reinitialize all rows - reinitialize(){ - this.rows.forEach(function(row){ - row.reinitialize(true); - }); - } - - //prevent table from being redrawn - blockRedraw (){ - this.redrawBlock = true; - this.redrawBlockRestoreConfig = false; - } - - //restore table redrawing - restoreRedraw (){ - this.redrawBlock = false; - - if(this.redrawBlockRestoreConfig){ - this.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition); - - this.redrawBlockRestoreConfig = false; - }else { - if(this.redrawBlockRenderInPosition){ - this.reRenderInPosition(); - } - } - - this.redrawBlockRenderInPosition = false; - } - - //redraw table - redraw (force){ - const resized = this.adjustTableSize(); - this.table.tableWidth = this.table.element.clientWidth; - - if(!force){ - if(resized) { - this.reRenderInPosition(); - } - this.scrollHorizontal(this.scrollLeft); - }else { - this.renderTable(); - } - } - - resetScroll(){ - this.element.scrollLeft = 0; - this.element.scrollTop = 0; - - if(this.table.browser === "ie"){ - var event = document.createEvent("Event"); - event.initEvent("scroll", false, true); - this.element.dispatchEvent(event); - }else { - this.element.dispatchEvent(new Event('scroll')); - } - } -} - -class FooterManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.active = false; - this.element = this.createElement(); //containing element - this.containerElement = this.createContainerElement(); //containing element - this.external = false; - } - - initialize(){ - this.initializeElement(); - } - - createElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer"); - - return el; - } - - - createContainerElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer-contents"); - - this.element.appendChild(el); - - return el; - } - - initializeElement(){ - if(this.table.options.footerElement){ - - switch(typeof this.table.options.footerElement){ - case "string": - if(this.table.options.footerElement[0] === "<"){ - this.containerElement.innerHTML = this.table.options.footerElement; - }else { - this.external = true; - this.containerElement = document.querySelector(this.table.options.footerElement); - } - break; - - default: - this.element = this.table.options.footerElement; - break; - } - } - } - - getElement(){ - return this.element; - } - - append(element){ - this.activate(); - - this.containerElement.appendChild(element); - this.table.rowManager.adjustTableSize(); - } - - prepend(element){ - this.activate(); - - this.element.insertBefore(element, this.element.firstChild); - this.table.rowManager.adjustTableSize(); - } - - remove(element){ - element.parentNode.removeChild(element); - this.deactivate(); - } - - deactivate(force){ - if(!this.element.firstChild || force){ - if(!this.external){ - this.element.parentNode.removeChild(this.element); - } - this.active = false; - } - } - - activate(){ - if(!this.active){ - this.active = true; - if(!this.external){ - this.table.element.appendChild(this.getElement()); - this.table.element.style.display = ''; - } - } - } - - redraw(){ - this.dispatch("footer-redraw"); - } -} - -class InteractionManager extends CoreFeature { - - constructor (table){ - super(table); - - this.el = null; - - this.abortClasses = ["tabulator-headers", "tabulator-table"]; - - this.previousTargets = {}; - - this.listeners = [ - "click", - "dblclick", - "contextmenu", - "mouseenter", - "mouseleave", - "mouseover", - "mouseout", - "mousemove", - "mouseup", - "mousedown", - "touchstart", - "touchend", - ]; - - this.componentMap = { - "tabulator-cell":"cell", - "tabulator-row":"row", - "tabulator-group":"group", - "tabulator-col":"column", - }; - - this.pseudoTrackers = { - "row":{ - subscriber:null, - target:null, - }, - "cell":{ - subscriber:null, - target:null, - }, - "group":{ - subscriber:null, - target:null, - }, - "column":{ - subscriber:null, - target:null, - }, - }; - - this.pseudoTracking = false; - } - - initialize(){ - this.el = this.table.element; - - this.buildListenerMap(); - this.bindSubscriptionWatchers(); - } - - buildListenerMap(){ - var listenerMap = {}; - - this.listeners.forEach((listener) => { - listenerMap[listener] = { - handler:null, - components:[], - }; - }); - - this.listeners = listenerMap; - } - - bindPseudoEvents(){ - Object.keys(this.pseudoTrackers).forEach((key) => { - this.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key); - this.subscribe(key + "-mouseover", this.pseudoTrackers[key].subscriber); - }); - - this.pseudoTracking = true; - } - - pseudoMouseEnter(key, e, target){ - if(this.pseudoTrackers[key].target !== target){ - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); - } - - this.pseudoMouseLeave(key, e); - - this.pseudoTrackers[key].target = target; - - this.dispatch(key + "-mouseenter", e, target); - } - } - - pseudoMouseLeave(key, e){ - var leaveList = Object.keys(this.pseudoTrackers), - linkedKeys = { - "row":["cell"], - "cell":["row"], - }; - - leaveList = leaveList.filter((item) => { - var links = linkedKeys[key]; - return item !== key && (!links || (links && !links.includes(item))); - }); - - - leaveList.forEach((key) => { - var target = this.pseudoTrackers[key].target; - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); - - this.pseudoTrackers[key].target = null; - } - }); - } - - - bindSubscriptionWatchers(){ - var listeners = Object.keys(this.listeners), - components = Object.values(this.componentMap); - - for(let comp of components){ - for(let listener of listeners){ - let key = comp + "-" + listener; - - this.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener)); - } - } - - this.subscribe("table-destroy", this.clearWatchers.bind(this)); - } - - subscriptionChanged(component, key, added){ - var listener = this.listeners[key].components, - index = listener.indexOf(component), - changed = false; - - if(added){ - if(index === -1){ - listener.push(component); - changed = true; - } - }else { - if(!this.subscribed(component + "-" + key)){ - if(index > -1){ - listener.splice(index, 1); - changed = true; - } - } - } - - if((key === "mouseenter" || key === "mouseleave") && !this.pseudoTracking){ - this.bindPseudoEvents(); - } - - if(changed){ - this.updateEventListeners(); - } - } - - updateEventListeners(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.components.length){ - if(!listener.handler){ - listener.handler = this.track.bind(this, key); - this.el.addEventListener(key, listener.handler); - // this.el.addEventListener(key, listener.handler, {passive: true}) - } - }else { - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - track(type, e){ - var path = (e.composedPath && e.composedPath()) || e.path; - - var targets = this.findTargets(path); - targets = this.bindComponents(type, targets); - - this.triggerEvents(type, e, targets); - - if(this.pseudoTracking && (type == "mouseover" || type == "mouseleave") && !Object.keys(targets).length){ - this.pseudoMouseLeave("none", e); - } - } - - findTargets(path){ - var targets = {}; - - let componentMap = Object.keys(this.componentMap); - - for (let el of path) { - let classList = el.classList ? [...el.classList] : []; - - let abort = classList.filter((item) => { - return this.abortClasses.includes(item); - }); - - if(abort.length){ - break; - } - - let elTargets = classList.filter((item) => { - return componentMap.includes(item); - }); - - for (let target of elTargets) { - if(!targets[this.componentMap[target]]){ - targets[this.componentMap[target]] = el; - } - } - } - - if(targets.group && targets.group === targets.row){ - delete targets.row; - } - - return targets; - } - - bindComponents(type, targets){ - //ensure row component is looked up before cell - var keys = Object.keys(targets).reverse(), - listener = this.listeners[type], - matches = {}, - targetMatches = {}; - - for(let key of keys){ - let component, - target = targets[key], - previousTarget = this.previousTargets[key]; - - if(previousTarget && previousTarget.target === target){ - component = previousTarget.component; - }else { - switch(key){ - case "row": - case "group": - if(listener.components.includes("row") || listener.components.includes("cell") || listener.components.includes("group")){ - let rows = this.table.rowManager.getVisibleRows(true); - - component = rows.find((row) => { - return row.getElement() === target; - }); - - if(targets["row"] && targets["row"].parentNode && targets["row"].parentNode.closest(".tabulator-row")){ - targets[key] = false; - } - } - break; - - case "column": - if(listener.components.includes("column")){ - component = this.table.columnManager.findColumn(target); - } - break; - - case "cell": - if(listener.components.includes("cell")){ - if(matches["row"] instanceof Row){ - component = matches["row"].findCell(target); - }else { - if(targets["row"]){ - console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"); - } - } - } - break; - } - } - - if(component){ - matches[key] = component; - targetMatches[key] = { - target:target, - component:component, - }; - } - } - - this.previousTargets = targetMatches; - - return matches; - } - - triggerEvents(type, e, targets){ - var listener = this.listeners[type]; - - for(let key in targets){ - if(targets[key] && listener.components.includes(key)){ - this.dispatch(key + "-" + type, e, targets[key]); - } - } - } - - clearWatchers(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } -} - -class ComponentFunctionBinder{ - - constructor(table){ - this.table = table; - - this.bindings = {}; - } - - bind(type, funcName, handler){ - if(!this.bindings[type]){ - this.bindings[type] = {}; - } - - if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, handler); - }else { - this.bindings[type][funcName] = handler; - } - } - - handle(type, component, name){ - if(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){ - return this.bindings[type][name].bind(null, component); - }else { - if(name !== "then" && typeof name === "string" && !name.startsWith("_")){ - if(this.table.options.debugInvalidComponentFuncs){ - console.error("The " + type + " component does not have a " + name + " function, have you checked that you have the correct Tabulator module installed?"); - } - } - } - } -} - -class DataLoader extends CoreFeature{ - constructor(table){ - super(table); - - this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request - this.loading = false; - } - - initialize(){} - - load(data, params, config, replace, silent, columnsChanged){ - var requestNo = ++this.requestOrder; - - if(this.table.destroyed){ - return Promise.resolve(); - } - - this.dispatchExternal("dataLoading", data); - - //parse json data to array - if (data && (data.indexOf("{") == 0 || data.indexOf("[") == 0)){ - data = JSON.parse(data); - } - - if(this.confirm("data-loading", [data, params, config, silent])){ - this.loading = true; - - if(!silent){ - this.alertLoader(); - } - - //get params for request - params = this.chain("data-params", [data, config, silent], params || {}, params || {}); - - params = this.mapParams(params, this.table.options.dataSendParams); - - var result = this.chain("data-load", [data, params, config, silent], false, Promise.resolve([])); - - return result.then((response) => { - if(!this.table.destroyed){ - if(!Array.isArray(response) && typeof response == "object"){ - response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams)); - } - - var rowData = this.chain("data-loaded", response, null, response); - - if(requestNo == this.requestOrder){ - this.clearAlert(); - - if(rowData !== false){ - this.dispatchExternal("dataLoaded", rowData); - this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - } - }else { - console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made"); - } - }else { - console.warn("Data Load Response Blocked - Table has been destroyed"); - } - }).catch((error) => { - console.error("Data Load Error: ", error); - this.dispatchExternal("dataLoadError", error); - - if(!silent){ - this.alertError(); - } - - setTimeout(() => { - this.clearAlert(); - }, this.table.options.dataLoaderErrorTimeout); - }) - .finally(() => { - this.loading = false; - }); - }else { - this.dispatchExternal("dataLoaded", data); - - if(!data){ - data = []; - } - - this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - return Promise.resolve(); - } - } - - mapParams(params, map){ - var output = {}; - - for(let key in params){ - output[map.hasOwnProperty(key) ? map[key] : key] = params[key]; - } - - return output; - } - - objectInvert(obj){ - var output = {}; - - for(let key in obj){ - output[obj[key]] = key; - } - - return output; - } - - blockActiveLoad(){ - this.requestOrder++; - } - - alertLoader(){ - var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; - - if(shouldLoad){ - this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); - } - } - - alertError(){ - this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); - } - - clearAlert(){ - this.table.alertManager.clear(); - } -} - -class ExternalEventBus { - - constructor(table, optionsList, debug){ - this.table = table; - this.events = {}; - this.optionsList = optionsList || {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push(callback); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - }else { - delete this.events[key]; - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(), - result; - - if(this.events[key]){ - this.events[key].forEach((callback, i) => { - let callResult = callback.apply(this.table, args); - - if(!i){ - result = callResult; - } - }); - } - - return result; - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "ExternalEvent:" + args[0]; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } -} - -class InternalEventBus { - - constructor(debug){ - this.events = {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this); - this.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback, priority = 10000){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push({callback, priority}); - - this.events[key].sort((a, b) => { - return a.priority - b.priority; - }); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item.callback === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _chain(key, args, initialValue, fallback){ - var value = initialValue; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - value = subscriber.callback.apply(this, args.concat([value])); - }); - - return value; - }else { - return typeof fallback === "function" ? fallback() : fallback; - } - } - - _confirm(key, args){ - var confirmed = false; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - if(subscriber.callback.apply(this, args)){ - confirmed = true; - } - }); - } - - return confirmed; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(); - - if(this.events[key]){ - this.events[key].forEach((subscriber) => { - subscriber.callback.apply(this, args); - }); - } - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - - _debugChain(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._chain(...arguments); - } - - _debugConfirm(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._confirm(...arguments); - } -} - -class DeprecationAdvisor extends CoreFeature{ - - constructor(table){ - super(table); - } - - _warnUser(){ - if(this.options("debugDeprecation")){ - console.warn(...arguments); - } - } - - check(oldOption, newOption){ - var msg = ""; - - if(typeof this.options(oldOption) !== "undefined"){ - msg = "Deprecated Setup Option - Use of the %c" + oldOption + "%c option is now deprecated"; - - if(newOption){ - msg = msg + ", Please use the %c" + newOption + "%c option instead"; - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - }else { - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;'); - } - - return false; - }else { - return true; - } - } - - checkMsg(oldOption, msg){ - if(typeof this.options(oldOption) !== "undefined"){ - this._warnUser("%cDeprecated Setup Option - Use of the %c" + oldOption + " %c option is now deprecated, " + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - return false; - }else { - return true; - } - } - - msg(msg){ - this._warnUser(msg); - } -} - -class TableRegistry { - - static register(table){ - TableRegistry.tables.push(table); - } - - static deregister(table){ - var index = TableRegistry.tables.indexOf(table); - - if(index > -1){ - TableRegistry.tables.splice(index, 1); - } - } - - static lookupTable(query, silent){ - var results = [], - matches, match; - - if(typeof query === "string"){ - matches = document.querySelectorAll(query); - - if(matches.length){ - for(var i = 0; i < matches.length; i++){ - match = TableRegistry.matchElement(matches[i]); - - if(match){ - results.push(match); - } - } - } - - }else if((typeof HTMLElement !== "undefined" && query instanceof HTMLElement) || query instanceof Tabulator){ - match = TableRegistry.matchElement(query); - - if(match){ - results.push(match); - } - }else if(Array.isArray(query)){ - query.forEach(function(item){ - results = results.concat(TableRegistry.lookupTable(item)); - }); - }else { - if(!silent){ - console.warn("Table Connection Error - Invalid Selector", query); - } - } - - return results; - } - - static matchElement(element){ - return TableRegistry.tables.find(function(table){ - return element instanceof Tabulator ? table === element : table.element === element; - }); - } -} - -TableRegistry.tables = []; - -//resize columns to fit data they contain -function fitData(columns, forced){ - if(forced){ - this.table.columnManager.renderer.reinitializeColumnWidths(columns); - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } -} - -//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable -function fitDataGeneral(columns, forced){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } -} - -//resize columns to fit data the contain and stretch last column to fill table -function fitDataStretch(columns, forced){ - var colsWidth = 0, - tableWidth = this.table.rowManager.element.clientWidth, - gap = 0, - lastCol = false; - - columns.forEach((column, i) => { - if(!column.widthFixed){ - column.reinitializeWidth(); - } - - if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){ - lastCol = column; - } - - if(column.visible){ - colsWidth += column.getWidth(); - } - }); - - if(lastCol){ - gap = tableWidth - colsWidth + lastCol.getWidth(); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - lastCol.setWidth(0); - this.table.modules.responsiveLayout.update(); - } - - if(gap > 0){ - lastCol.setWidth(gap); - }else { - lastCol.reinitializeWidth(); - } - }else { - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } -} - -//resize columns to fit -function fitColumns(columns, forced){ - var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width - var fixedWidth = 0; //total width of columns with a defined width - var flexWidth = 0; //total width available to flexible columns - var flexGrowUnits = 0; //total number of widthGrow blocks across all columns - var flexColWidth = 0; //desired width of flexible columns - var flexColumns = []; //array of flexible width columns - var fixedShrinkColumns = []; //array of fixed width columns that can shrink - var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns - var overflowWidth = 0; //horizontal overflow width - var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps - - function calcWidth(width){ - var colWidth; - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width); - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - return colWidth; - } - - //ensure columns resize to take up the correct amount of space - function scaleColumns(columns, freeSpace, colWidth, shrinkCols){ - var oversizeCols = [], - oversizeSpace = 0, - remainingSpace = 0, - nextColWidth = 0, - remainingFlexGrowUnits = flexGrowUnits, - gap = 0, - changeUnits = 0, - undersizeCols = []; - - function calcGrow(col){ - return (colWidth * (col.column.definition.widthGrow || 1)); - } - - function calcShrink(col){ - return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0))); - } - - columns.forEach(function(col, i){ - var width = shrinkCols ? calcShrink(col) : calcGrow(col); - if(col.column.minWidth >= width){ - oversizeCols.push(col); - }else { - if(col.column.maxWidth && col.column.maxWidth < width){ - col.width = col.column.maxWidth; - freeSpace -= col.column.maxWidth; - - remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - - if(remainingFlexGrowUnits){ - colWidth = Math.floor(freeSpace/remainingFlexGrowUnits); - } - }else { - undersizeCols.push(col); - changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - } - } - }); - - if(oversizeCols.length){ - oversizeCols.forEach(function(col){ - oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth; - col.width = col.column.minWidth; - }); - - remainingSpace = freeSpace - oversizeSpace; - - nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace; - - gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols); - }else { - gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace; - - undersizeCols.forEach(function(column){ - column.width = shrinkCols ? calcShrink(column) : calcGrow(column); - }); - } - - return gap; - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - columns.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width; - minWidth = parseInt(column.minWidth); - - if(width){ - - colWidth = calcWidth(width); - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - if(column.definition.widthShrink){ - fixedShrinkColumns.push({ - column:column, - width:colWidth > minWidth ? colWidth : minWidth - }); - flexShrinkUnits += column.definition.widthShrink; - } - - }else { - flexColumns.push({ - column:column, - width:0, - }); - flexGrowUnits += column.definition.widthGrow || 1; - } - } - }); - - //calculate available space - flexWidth = totalWidth - fixedWidth; - - //calculate correct column size - flexColWidth = Math.floor(flexWidth / flexGrowUnits); - - //generate column widths - gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false); - - //increase width of last column to account for rounding errors - if(flexColumns.length && gapFill > 0){ - flexColumns[flexColumns.length-1].width += gapFill; - } - - //calculate space for columns to be shrunk into - flexColumns.forEach(function(col){ - flexWidth -= col.width; - }); - - overflowWidth = Math.abs(gapFill) + flexWidth; - - //shrink oversize columns if there is no available space - if(overflowWidth > 0 && flexShrinkUnits){ - gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true); - } - - //decrease width of last column to account for rounding errors - if(gapFill && fixedShrinkColumns.length){ - fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill; - } - - flexColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - - fixedShrinkColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); -} - -var defaultModes = { - fitData:fitData, - fitDataFill:fitDataGeneral, - fitDataTable:fitDataGeneral, - fitDataStretch:fitDataStretch, - fitColumns:fitColumns , -}; - -class Layout extends Module{ - - constructor(table){ - super(table, "layout"); - - this.mode = null; - - this.registerTableOption("layout", "fitData"); //layout type - this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData - - this.registerColumnOption("widthGrow"); - this.registerColumnOption("widthShrink"); - } - - //initialize layout system - initialize(){ - var layout = this.table.options.layout; - - if(Layout.modes[layout]){ - this.mode = layout; - }else { - console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout); - this.mode = 'fitData'; - } - - this.table.element.setAttribute("tabulator-layout", this.mode); - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - initializeColumn(column){ - if(column.definition.widthGrow){ - column.definition.widthGrow = Number(column.definition.widthGrow); - } - if(column.definition.widthShrink){ - column.definition.widthShrink = Number(column.definition.widthShrink); - } - } - - getMode(){ - return this.mode; - } - - //trigger table layout - layout(dataChanged){ - this.dispatch("layout-refreshing"); - Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged); - this.dispatch("layout-refreshed"); - } -} - -Layout.moduleName = "layout"; - -//load defaults -Layout.modes = defaultModes; - -var defaultLangs = { - "default":{ //hold default locale text - "groups":{ - "item":"item", - "items":"items", - }, - "columns":{ - }, - "data":{ - "loading":"Loading", - "error":"Error", - }, - "pagination":{ - "page_size":"Page Size", - "page_title":"Show Page", - "first":"First", - "first_title":"First Page", - "last":"Last", - "last_title":"Last Page", - "prev":"Prev", - "prev_title":"Prev Page", - "next":"Next", - "next_title":"Next Page", - "all":"All", - "counter":{ - "showing": "Showing", - "of": "of", - "rows": "rows", - "pages": "pages", - } - }, - "headerFilters":{ - "default":"filter column...", - "columns":{} - } - }, -}; - -class Localize extends Module{ - - constructor(table){ - super(table); - - this.locale = "default"; //current locale - this.lang = false; //current language - this.bindings = {}; //update events to call when locale is changed - this.langList = {}; - - this.registerTableOption("locale", false); //current system language - this.registerTableOption("langs", {}); - } - - initialize(){ - this.langList = Helpers.deepClone(Localize.langs); - - if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){ - this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder); - } - - for(let locale in this.table.options.langs){ - this.installLang(locale, this.table.options.langs[locale]); - } - - this.setLocale(this.table.options.locale); - - this.registerTableFunction("setLocale", this.setLocale.bind(this)); - this.registerTableFunction("getLocale", this.getLocale.bind(this)); - this.registerTableFunction("getLang", this.getLang.bind(this)); - } - - //set header placeholder - setHeaderFilterPlaceholder(placeholder){ - this.langList.default.headerFilters.default = placeholder; - } - - //setup a lang description object - installLang(locale, lang){ - if(this.langList[locale]){ - this._setLangProp(this.langList[locale], lang); - }else { - this.langList[locale] = lang; - } - } - - _setLangProp(lang, values){ - for(let key in values){ - if(lang[key] && typeof lang[key] == "object"){ - this._setLangProp(lang[key], values[key]); - }else { - lang[key] = values[key]; - } - } - } - - //set current locale - setLocale(desiredLocale){ - desiredLocale = desiredLocale || "default"; - - //fill in any matching language values - function traverseLang(trans, path){ - for(var prop in trans){ - if(typeof trans[prop] == "object"){ - if(!path[prop]){ - path[prop] = {}; - } - traverseLang(trans[prop], path[prop]); - }else { - path[prop] = trans[prop]; - } - } - } - - //determining correct locale to load - if(desiredLocale === true && navigator.language){ - //get local from system - desiredLocale = navigator.language.toLowerCase(); - } - - if(desiredLocale){ - //if locale is not set, check for matching top level locale else use default - if(!this.langList[desiredLocale]){ - let prefix = desiredLocale.split("-")[0]; - - if(this.langList[prefix]){ - console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix); - desiredLocale = prefix; - }else { - console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale); - desiredLocale = "default"; - } - } - } - - this.locale = desiredLocale; - - //load default lang template - this.lang = Helpers.deepClone(this.langList.default || {}); - - if(desiredLocale != "default"){ - traverseLang(this.langList[desiredLocale], this.lang); - } - - this.dispatchExternal("localized", this.locale, this.lang); - - this._executeBindings(); - } - - //get current locale - getLocale(locale){ - return this.locale; - } - - //get lang object for given local or current if none provided - getLang(locale){ - return locale ? this.langList[locale] : this.lang; - } - - //get text for current locale - getText(path, value){ - var fillPath = value ? path + "|" + value : path, - pathArray = fillPath.split("|"), - text = this._getLangElement(pathArray, this.locale); - - // if(text === false){ - // console.warn("Localization Error - Matching localized text not found for given path: ", path); - // } - - return text || ""; - } - - //traverse langs object and find localized copy - _getLangElement(path, locale){ - var root = this.lang; - - path.forEach(function(level){ - var rootPath; - - if(root){ - rootPath = root[level]; - - if(typeof rootPath != "undefined"){ - root = rootPath; - }else { - root = false; - } - } - }); - - return root; - } - - //set update binding - bind(path, callback){ - if(!this.bindings[path]){ - this.bindings[path] = []; - } - - this.bindings[path].push(callback); - - callback(this.getText(path), this.lang); - } - - //iterate through bindings and trigger updates - _executeBindings(){ - for(let path in this.bindings){ - this.bindings[path].forEach((binding) => { - binding(this.getText(path), this.lang); - }); - } - } -} - -Localize.moduleName = "localize"; - -//load defaults -Localize.langs = defaultLangs; - -class Comms extends Module{ - - constructor(table){ - super(table); - } - - initialize(){ - this.registerTableFunction("tableComms", this.receive.bind(this)); - } - - getConnections(selectors){ - var connections = [], - connection; - - connection = TableRegistry.lookupTable(selectors); - - connection.forEach((con) =>{ - if(this.table !== con){ - connections.push(con); - } - }); - - return connections; - } - - send(selectors, module, action, data){ - var connections = this.getConnections(selectors); - - connections.forEach((connection) => { - connection.tableComms(this.table.element, module, action, data); - }); - - if(!connections.length && selectors){ - console.warn("Table Connection Error - No tables matching selector found", selectors); - } - } - - receive(table, module, action, data){ - if(this.table.modExists(module)){ - return this.table.modules[module].commsReceived(table, action, data); - }else { - console.warn("Inter-table Comms Error - no such module:", module); - } - } -} - -Comms.moduleName = "comms"; - -var coreModules = /*#__PURE__*/Object.freeze({ - __proto__: null, - LayoutModule: Layout, - LocalizeModule: Localize, - CommsModule: Comms -}); - -class ModuleBinder { - - constructor(tabulator, modules){ - this.bindStaticFunctionality(tabulator); - this.bindModules(tabulator, coreModules, true); - - if(modules){ - this.bindModules(tabulator, modules); - } - } - - bindStaticFunctionality(tabulator){ - tabulator.moduleBindings = {}; - - tabulator.extendModule = function(name, property, values){ - if(tabulator.moduleBindings[name]){ - var source = tabulator.moduleBindings[name][property]; - - if(source){ - if(typeof values == "object"){ - for(let key in values){ - source[key] = values[key]; - } - }else { - console.warn("Module Error - Invalid value type, it must be an object"); - } - }else { - console.warn("Module Error - property does not exist:", property); - } - }else { - console.warn("Module Error - module does not exist:", name); - } - }; - - tabulator.registerModule = function(modules){ - if(!Array.isArray(modules)){ - modules = [modules]; - } - - modules.forEach((mod) => { - tabulator.registerModuleBinding(mod); - }); - }; - - tabulator.registerModuleBinding = function(mod){ - tabulator.moduleBindings[mod.moduleName] = mod; - }; - - tabulator.findTable = function(query){ - var results = TableRegistry.lookupTable(query, true); - return Array.isArray(results) && !results.length ? false : results; - }; - - //ensure that module are bound to instantiated function - tabulator.prototype.bindModules = function(){ - var orderedStartMods = [], - orderedEndMods = [], - unOrderedMods = []; - - this.modules = {}; - - for(var name in tabulator.moduleBindings){ - let mod = tabulator.moduleBindings[name]; - let module = new mod(this); - - this.modules[name] = module; - - if(mod.prototype.moduleCore){ - this.modulesCore.push(module); - }else { - if(mod.moduleInitOrder){ - if(mod.moduleInitOrder < 0){ - orderedStartMods.push(module); - }else { - orderedEndMods.push(module); - } - - }else { - unOrderedMods.push(module); - } - } - } - - orderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - orderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods)); - }; - } - - bindModules(tabulator, modules, core){ - var mods = Object.values(modules); - - if(core){ - mods.forEach((mod) => { - mod.prototype.moduleCore = true; - }); - } - - tabulator.registerModule(mods); - } -} - -class Alert extends CoreFeature{ - constructor(table){ - super(table); - - this.element = this._createAlertElement(); - this.msgElement = this._createMsgElement(); - this.type = null; - - this.element.appendChild(this.msgElement); - } - - _createAlertElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert"); - return el; - } - - _createMsgElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert-msg"); - el.setAttribute("role", "alert"); - return el; - } - - _typeClass(){ - return "tabulator-alert-state-" + this.type; - } - - alert(content, type = "msg"){ - if(content){ - this.clear(); - - this.type = type; - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.add(this._typeClass()); - - if(typeof content === "function"){ - content = content(); - } - - if(content instanceof HTMLElement){ - this.msgElement.appendChild(content); - }else { - this.msgElement.innerHTML = content; - } - - this.table.element.appendChild(this.element); - } - } - - clear(){ - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.msgElement.classList.remove(this._typeClass()); - } -} - -class Tabulator { - - constructor(element, options){ - - this.options = {}; - - this.columnManager = null; // hold Column Manager - this.rowManager = null; //hold Row Manager - this.footerManager = null; //holder Footer Manager - this.alertManager = null; //hold Alert Manager - this.vdomHoz = null; //holder horizontal virtual dom - this.externalEvents = null; //handle external event messaging - this.eventBus = null; //handle internal event messaging - this.interactionMonitor = false; //track user interaction - this.browser = ""; //hold current browser type - this.browserSlow = false; //handle reduced functionality for slower browsers - this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance - this.rtl = false; //check if the table is in RTL mode - this.originalElement = null; //hold original table element if it has been replaced - - this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions - this.dataLoader = false; //bind component functions - - this.modules = {}; //hold all modules bound to this table - this.modulesCore = []; //hold core modules bound to this table (for initialization purposes) - this.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes) - - this.deprecationAdvisor = new DeprecationAdvisor(this); - this.optionsList = new OptionsList(this, "table constructor"); - - this.initialized = false; - this.destroyed = false; - - if(this.initializeElement(element)){ - - this.initializeCoreSystems(options); - - //delay table creation to allow event bindings immediately after the constructor - setTimeout(() => { - this._create(); - }); - } - - TableRegistry.register(this); //register table for inter-device communication - } - - initializeElement(element){ - if(typeof HTMLElement !== "undefined" && element instanceof HTMLElement){ - this.element = element; - return true; - }else if(typeof element === "string"){ - this.element = document.querySelector(element); - - if(this.element){ - return true; - }else { - console.error("Tabulator Creation Error - no element found matching selector: ", element); - return false; - } - }else { - console.error("Tabulator Creation Error - Invalid element provided:", element); - return false; - } - } - - initializeCoreSystems(options){ - this.columnManager = new ColumnManager(this); - this.rowManager = new RowManager(this); - this.footerManager = new FooterManager(this); - this.dataLoader = new DataLoader(this); - this.alertManager = new Alert(this); - - this.bindModules(); - - this.options = this.optionsList.generate(Tabulator.defaultOptions, options); - - this._clearObjectPointers(); - - this._mapDeprecatedFunctionality(); - - this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal); - this.eventBus = new InternalEventBus(this.options.debugEventsInternal); - - this.interactionMonitor = new InteractionManager(this); - - this.dataLoader.initialize(); - // this.columnManager.initialize(); - // this.rowManager.initialize(); - this.footerManager.initialize(); - } - - //convert deprecated functionality to new functions - _mapDeprecatedFunctionality(){ - //all previously deprecated functionality removed in the 5.0 release - } - - _clearSelection(){ - - this.element.classList.add("tabulator-block-select"); - - if (window.getSelection) { - if (window.getSelection().empty) { // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { // IE? - document.selection.empty(); - } - - this.element.classList.remove("tabulator-block-select"); - } - - //create table - _create(){ - this.externalEvents.dispatch("tableBuilding"); - this.eventBus.dispatch("table-building"); - - this._rtlCheck(); - - this._buildElement(); - - this._initializeTable(); - - this._loadInitialData(); - - this.initialized = true; - - this.externalEvents.dispatch("tableBuilt"); - } - - _rtlCheck(){ - var style = window.getComputedStyle(this.element); - - switch(this.options.textDirection){ - case"auto": - if(style.direction !== "rtl"){ - break; - } - - case "rtl": - this.element.classList.add("tabulator-rtl"); - this.rtl = true; - break; - - case "ltr": - this.element.classList.add("tabulator-ltr"); - - default: - this.rtl = false; - } - } - - //clear pointers to objects in default config object - _clearObjectPointers(){ - this.options.columns = this.options.columns.slice(0); - - if(Array.isArray(this.options.data) && !this.options.reactiveData){ - this.options.data = this.options.data.slice(0); - } - } - - //build tabulator element - _buildElement(){ - var element = this.element, - options = this.options, - newElement; - - if(element.tagName === "TABLE"){ - this.originalElement = this.element; - newElement = document.createElement("div"); - - //transfer attributes to new element - var attributes = element.attributes; - - // loop through attributes and apply them on div - for(var i in attributes){ - if(typeof attributes[i] == "object"){ - newElement.setAttribute(attributes[i].name, attributes[i].value); - } - } - - // replace table with div element - element.parentNode.replaceChild(newElement, element); - - this.element = element = newElement; - } - - element.classList.add("tabulator"); - element.setAttribute("role", "grid"); - - //empty element - while(element.firstChild) element.removeChild(element.firstChild); - - //set table height - if(options.height){ - options.height = isNaN(options.height) ? options.height : options.height + "px"; - element.style.height = options.height; - } - - //set table min height - if(options.minHeight !== false){ - options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px"; - element.style.minHeight = options.minHeight; - } - - //set table maxHeight - if(options.maxHeight !== false){ - options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px"; - element.style.maxHeight = options.maxHeight; - } - } - - //initialize core systems and modules - _initializeTable(){ - var element = this.element, - options = this.options; - - this.interactionMonitor.initialize(); - - this.columnManager.initialize(); - this.rowManager.initialize(); - - this._detectBrowser(); - - //initialize core modules - this.modulesCore.forEach((mod) => { - mod.initialize(); - }); - - //build table elements - element.appendChild(this.columnManager.getElement()); - element.appendChild(this.rowManager.getElement()); - - if(options.footerElement){ - this.footerManager.activate(); - } - - if(options.autoColumns && options.data){ - - this.columnManager.generateColumnsFromRowData(this.options.data); - } - - //initialize regular modules - this.modulesRegular.forEach((mod) => { - mod.initialize(); - }); - - this.columnManager.setColumns(options.columns); - - this.eventBus.dispatch("table-built"); - } - - _loadInitialData(){ - this.dataLoader.load(this.options.data); - } - - //deconstructor - destroy(){ - var element = this.element; - - this.destroyed = true; - - TableRegistry.deregister(this); //deregister table from inter-device communication - - this.eventBus.dispatch("table-destroy"); - - //clear row data - this.rowManager.destroy(); - - //clear DOM - while(element.firstChild) element.removeChild(element.firstChild); - element.classList.remove("tabulator"); - - this.externalEvents.dispatch("tableDestroyed"); - } - - _detectBrowser(){ - var ua = navigator.userAgent||navigator.vendor||window.opera; - - if(ua.indexOf("Trident") > -1){ - this.browser = "ie"; - this.browserSlow = true; - }else if(ua.indexOf("Edge") > -1){ - this.browser = "edge"; - this.browserSlow = true; - }else if(ua.indexOf("Firefox") > -1){ - this.browser = "firefox"; - this.browserSlow = false; - }else if(ua.indexOf("Mac OS") > -1){ - this.browser = "safari"; - this.browserSlow = false; - }else { - this.browser = "other"; - this.browserSlow = false; - } - - this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4)); - } - - initGuard(func, msg){ - var stack, line; - - if(this.options.debugInitialization && !this.initialized){ - if(!func){ - stack = new Error().stack.split("\n"); - - line = stack[0] == "Error" ? stack[2] : stack[1]; - - if(line[0] == " "){ - func = line.trim().split(" ")[1].split(".")[1]; - }else { - func = line.trim().split("@")[0]; - } - } - - console.warn("Table Not Initialized - Calling the " + func + " function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function." + (msg ? " " + msg : "")); - } - - return this.initialized; - } - - ////////////////// Data Handling ////////////////// - //block table redrawing - blockRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-blocking"); - - this.rowManager.blockRedraw(); - this.columnManager.blockRedraw(); - - this.eventBus.dispatch("redraw-blocked"); - } - - //restore table redrawing - restoreRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-restoring"); - - this.rowManager.restoreRedraw(); - this.columnManager.restoreRedraw(); - - this.eventBus.dispatch("redraw-restored"); - } - - //load data - setData(data, params, config){ - this.initGuard(false, "To set initial data please use the 'data' property in the table constructor."); - - return this.dataLoader.load(data, params, config, false); - } - - //clear data - clearData(){ - this.initGuard(); - - this.dataLoader.blockActiveLoad(); - this.rowManager.clearData(); - } - - //get table data array - getData(active){ - return this.rowManager.getData(active); - } - - //get table data array count - getDataCount(active){ - return this.rowManager.getDataCount(active); - } - - //replace data, keeping table in position with same sort - replaceData(data, params, config){ - this.initGuard(); - - return this.dataLoader.load(data, params, config, true, true); - } - - //update table data - updateData(data){ - var responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }) - .catch((e) => { - reject("Update Error - Unable to update row", item, e); - }); - }else { - reject("Update Error - Unable to find row", item); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - addData(data, pos, index){ - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - this.rowManager.addRows(data, pos, index) - .then((rows) => { - var output = []; - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - resolve(output); - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //update table data - updateOrAddData(data){ - var rows = [], - responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - responses++; - - if(row){ - row.updateData(item) - .then(()=>{ - responses--; - rows.push(row.getComponent()); - - if(!responses){ - resolve(rows); - } - }); - }else { - this.rowManager.addRows(item) - .then((newRows)=>{ - responses--; - rows.push(newRows[0].getComponent()); - - if(!responses){ - resolve(rows); - } - }); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //get row object - getRow(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", index); - return false; - } - } - - //get row object - getRowFromPosition(position){ - var row = this.rowManager.getRowFromPosition(position); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", position); - return false; - } - } - - //delete row from table - deleteRow(index){ - var foundRows = []; - - this.initGuard(); - - if(!Array.isArray(index)){ - index = [index]; - } - - //find matching rows - for(let item of index){ - let row = this.rowManager.findRow(item, true); - - if(row){ - foundRows.push(row); - }else { - console.error("Delete Error - No matching row found:", item); - return Promise.reject("Delete Error - No matching row found"); - } - } - - //sort rows into correct order to ensure smooth delete from table - foundRows.sort((a, b) => { - return this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1; - }); - - //delete rows - foundRows.forEach((row) =>{ - row.delete(); - }); - - this.rowManager.reRenderInPosition(); - - return Promise.resolve(); - } - - //add row to table - addRow(data, pos, index){ - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index, true) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - - //update a row if it exists otherwise create it - updateOrAddRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return row.getComponent(); - }); - }else { - return this.rowManager.addRows(data) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - } - - //update row data - updateRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return Promise.resolve(row.getComponent()); - }); - }else { - console.warn("Update Error - No matching row found:", index); - return Promise.reject("Update Error - No matching row found"); - } - } - - //scroll to row in DOM - scrollToRow(index, position, ifVisible){ - var row = this.rowManager.findRow(index); - - if(row){ - return this.rowManager.scrollToRow(row, position, ifVisible); - }else { - console.warn("Scroll Error - No matching row found:", index); - return Promise.reject("Scroll Error - No matching row found"); - } - } - - moveRow(from, to, after){ - var fromRow = this.rowManager.findRow(from); - - this.initGuard(); - - if(fromRow){ - fromRow.moveToRow(to, after); - }else { - console.warn("Move Error - No matching row found:", from); - } - } - - getRows(active){ - return this.rowManager.getComponents(active); - } - - //get position of row in table - getRowPosition(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getPosition(); - }else { - console.warn("Position Error - No matching row found:", index); - return false; - } - } - - /////////////// Column Functions /////////////// - setColumns(definition){ - this.initGuard(false, "To set initial columns please use the 'columns' property in the table constructor"); - - this.columnManager.setColumns(definition); - } - - getColumns(structured){ - return this.columnManager.getComponents(structured); - } - - getColumn(field){ - var column = this.columnManager.findColumn(field); - - if(column){ - return column.getComponent(); - }else { - console.warn("Find Error - No matching column found:", field); - return false; - } - } - - getColumnDefinitions(){ - return this.columnManager.getDefinitionTree(); - } - - showColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.show(); - }else { - console.warn("Column Show Error - No matching column found:", field); - return false; - } - } - - hideColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.hide(); - }else { - console.warn("Column Hide Error - No matching column found:", field); - return false; - } - } - - toggleColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - if(column.visible){ - column.hide(); - }else { - column.show(); - } - }else { - console.warn("Column Visibility Toggle Error - No matching column found:", field); - return false; - } - } - - addColumn(definition, before, field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - return this.columnManager.addColumn(definition, before, column) - .then((column) => { - return column.getComponent(); - }); - } - - deleteColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.delete(); - }else { - console.warn("Column Delete Error - No matching column found:", field); - return Promise.reject(); - } - } - - updateColumnDefinition(field, definition){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.updateDefinition(definition); - }else { - console.warn("Column Update Error - No matching column found:", field); - return Promise.reject(); - } - } - - moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from), - toColumn = this.columnManager.findColumn(to); - - this.initGuard(); - - if(fromColumn){ - if(toColumn){ - this.columnManager.moveColumn(fromColumn, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - }else { - console.warn("Move Error - No matching column found:", from); - } - } - - //scroll to column in DOM - scrollToColumn(field, position, ifVisible){ - return new Promise((resolve, reject) => { - var column = this.columnManager.findColumn(field); - - if(column){ - return this.columnManager.scrollToColumn(column, position, ifVisible); - }else { - console.warn("Scroll Error - No matching column found:", field); - return Promise.reject("Scroll Error - No matching column found"); - } - }); - } - - //////////// General Public Functions //////////// - //redraw list without updating data - redraw(force){ - this.initGuard(); - - this.columnManager.redraw(force); - this.rowManager.redraw(force); - } - - setHeight(height){ - this.options.height = isNaN(height) ? height : height + "px"; - this.element.style.height = this.options.height; - this.rowManager.initializeRenderer(); - this.rowManager.redraw(); - } - - //////////////////// Event Bus /////////////////// - - on(key, callback){ - this.externalEvents.subscribe(key, callback); - } - - off(key, callback){ - this.externalEvents.unsubscribe(key, callback); - } - - dispatchEvent(){ - var args = Array.from(arguments); - args.shift(); - - this.externalEvents.dispatch(...arguments); - } - - //////////////////// Alerts /////////////////// - - alert(contents, type){ - this.initGuard(); - - this.alertManager.alert(contents, type); - } - - clearAlert(){ - this.initGuard(); - - this.alertManager.clear(); - } - - ////////////// Extension Management ////////////// - modExists(plugin, required){ - if(this.modules[plugin]){ - return true; - }else { - if(required){ - console.error("Tabulator Module Not Installed: " + plugin); - } - return false; - } - } - - module(key){ - var mod = this.modules[key]; - - if(!mod){ - console.error("Tabulator module not installed: " + key); - } - - return mod; - } -} - -//default setup options -Tabulator.defaultOptions = defaultOptions; - -//bind modules and static functionality -new ModuleBinder(Tabulator); - -//tabulator with all modules installed - -class TabulatorFull extends Tabulator {} - -//bind modules and static functionality -new ModuleBinder(TabulatorFull, modules); - -class PseudoRow { - - constructor (type){ - this.type = type; - this.element = this._createElement(); - } - - _createElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-row"); - return el; - } - - getElement(){ - return this.element; - } - - getComponent(){ - return false; - } - - getData(){ - return {}; - } - - getHeight(){ - return this.element.outerHeight; - } - - initialize(){} - - reinitialize(){} - - normalizeHeight(){} - - generateCells(){} - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} -} - -export { Accessor as AccessorModule, Ajax as AjaxModule, CalcComponent, CellComponent, Clipboard as ClipboardModule, ColumnCalcs as ColumnCalcsModule, ColumnComponent, DataTree as DataTreeModule, Download as DownloadModule, Edit$1 as EditModule, Export as ExportModule, Filter as FilterModule, Format as FormatModule, FrozenColumns as FrozenColumnsModule, FrozenRows as FrozenRowsModule, GroupComponent, GroupRows as GroupRowsModule, History as HistoryModule, HtmlTableImport as HtmlTableImportModule, Import as ImportModule, Interaction as InteractionModule, Keybindings as KeybindingsModule, Menu as MenuModule, Module, MoveColumns as MoveColumnsModule, MoveRows as MoveRowsModule, Mutator as MutatorModule, Page as PageModule, Persistence as PersistenceModule, Popup$1 as PopupModule, Print as PrintModule, PseudoRow, ReactiveData as ReactiveDataModule, Renderer, ResizeColumns as ResizeColumnsModule, ResizeRows as ResizeRowsModule, ResizeTable as ResizeTableModule, ResponsiveLayout as ResponsiveLayoutModule, RowComponent, SelectRow as SelectRowModule, Sort as SortModule, Tabulator, TabulatorFull, Tooltip as TooltipModule, Validate as ValidateModule }; -//# sourceMappingURL=tabulator_esm.js.map diff --git a/src/main/webapp/tabulator/dist/js/tabulator_esm.js.map b/src/main/webapp/tabulator/dist/js/tabulator_esm.js.map deleted file mode 100644 index e766f3e9..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator_esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator_esm.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/column/Column.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/defaults/options.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/core/TabulatorFull.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic elOffset(el){\n\t\tvar box = el.getBoundingClientRect();\n\n\t\treturn {\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\t\t};\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","export default {};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {\n\tmethod: \"GET\",\n};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\n\n\toutput.forEach(function(item){\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t});\n\n\treturn encoded.join(\"&\");\n}\n\nexport default function(url, config, params){\n\tif(url){\n\t\tif(params && Object.keys(params).length){\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\n\t\t\t\tconfig.method = \"get\";\n\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\n\n\t\t//set body content if not GET request\n\t\tif(config.method.toUpperCase() != \"GET\"){\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\n\t\t\tif(contentType){\n\n\t\t\t\tfor(var key in contentType.headers){\n\t\t\t\t\tif(!config.headers){\n\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\n\t\t\t//configure headers\n\t\t\tif(typeof config.headers === \"undefined\"){\n\t\t\t\tconfig.headers = {};\n\t\t\t}\n\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\n\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t}\n\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\tif(typeof config.mode === \"undefined\"){\n\t\t\t\tconfig.mode = \"cors\";\n\t\t\t}\n\n\t\t\tif(config.mode == \"cors\"){\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\n\t\t\t\t}\n \n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//send request\n\t\t\tfetch(url, config)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\tresolve([]);\n\t\t}\n\t});\n}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = new FormData();\n\n\t\t\toutput.forEach(function(item){\n\t\t\t\tform.append(item.key, item.value);\n\t\t\t});\n\n\t\t\treturn form;\n\t\t},\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(params, ajaxParams);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\treplace:function(rows){\n\t\treturn this.table.setData(rows);\n\t},\n\tupdate:function(rows){\n\t\treturn this.table.updateOrAddData(rows);\n\t},\n\tinsert:function(rows){\n\t\treturn this.table.addData(rows);\n\t},\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\n\t\t\t//check if headers are present by title\n\t\t\tdata[0].forEach(function(value){\n\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t});\n\n\t\t\t\tif(column){\n\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t}else{\n\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//check if column headers are present by field\n\t\t\tif(!headerFindSuccess){\n\t\t\t\theaderFindSuccess = true;\n\t\t\t\tcolumnMap = [];\n\n\t\t\t\tdata[0].forEach(function(value){\n\t\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t}else{\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(!headerFindSuccess){\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//remove header row if found\n\t\t\tif(headerFindSuccess){\n\t\t\t\tdata.shift();\n\t\t\t}\n\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\n\t\t\t\titem.forEach(function(value, i){\n\t\t\t\t\tif(columnMap[i]){\n\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPaseOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPaseOrigin(e){\n\t\tvar valid = true;\n\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(typeof contents){\n\t\t\tcase \"object\":\n\t\t\t\tif(contents instanceof Node){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = \"\";\n\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn Number(sum) + Number(value);\n\t\t\t});\n\n\t\t\toutput = output / values.length;\n\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t}\n\n\t\treturn parseFloat(output).toString();\n\t},\n\t\"max\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value > output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"min\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value < output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"sum\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t});\n\t\t}\n\n\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t},\n\t\"concat\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn String(sum) + String(value);\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"count\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tif(value){\n\t\t\t\t\toutput ++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tif(!this.topInitialized){\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
              \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
              \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\t\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\n\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\n\t\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\trowData.push(\"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\n\n\tfunction fillSymbols(index){\n\t\tvar symbol = mask[index];\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\n\t\t\tel.value = el.value + \"\" + symbol;\n\t\t\tfillSymbols(index+1);\n\t\t}\n\t}\n\n\tel.addEventListener(\"keydown\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\tswitch(mask[index]){\n\t\t\t\t\tcase maskLetter:\n\t\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskNumber:\n\t\t\t\t\t\tif(isNaN(char)){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskWildcard:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(char !== mask[index]){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (e) => {\n\t\tif(e.keyCode > 46){\n\t\t\tif(options.maskAutoFill){\n\t\t\t\tfillSymbols(el.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\n\tif(!el.placeholder){\n\t\tel.placeholder = mask;\n\t}\n\n\tif(options.maskAutoFill){\n\t\tfillSymbols(el.value.length);\n\t}\n}","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tinput.scrollHeight;\n\t\t\tinput.style.height = input.scrollHeight + \"px\";\n\t\t\tcell.getRow().normalizeHeight();\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\t//submit new value on blur\n\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"hh:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"hh:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\n\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\n\t\t//handle empty values\n\t\tif(!as && as!== 0){\n\t\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t\t}else if(!bs && bs!== 0){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\ta = String(as).toLowerCase();\n\t\t\tb = String(bs).toLowerCase();\n\t\t\tif(a === b) return 0;\n\t\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\ta = a.match(rx);\n\t\t\tb = b.match(rx);\n\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\twhile(i < L){\n\t\t\t\ta1= a[i];\n\t\t\t\tb1= b[i++];\n\t\t\t\tif(a1 !== b1){\n\t\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\t\t\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(newRow === true){\n\t\t\t\t\t\tnewRow = this.table.addRow({});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\n\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t}else{\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\tcellEditor, component, params;\n\t\t\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\t\t\t\t\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\t\t\t\t\t\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\t\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\t\t\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\n\t\t\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(){\n\t\tvar output = [];\n\t\t\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows){\n\t\t\n\t\tvar columns = [];\n\t\tvar exportRows = [];\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t\t\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\n\n\t//equal to\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal == filterVal ? true : false;\n\t},\n\n\t//less than\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal < filterVal ? true : false;\n\t},\n\n\t//less than or equal to\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal <= filterVal ? true : false;\n\t},\n\n\t//greater than\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal > filterVal ? true : false;\n\t},\n\n\t//greater than or equal to\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal >= filterVal ? true : false;\n\t},\n\n\t//not equal to\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal != filterVal ? true : false;\n\t},\n\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\n\n\t\tif(typeof filterVal == \"string\"){\n\t\t\tfilterVal = new RegExp(filterVal);\n\t\t}\n\n\t\treturn filterVal.test(rowVal);\n\t},\n\n\t//contains the string\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//contains the keywords\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((keyword) =>{\n\t\t\tif(value.includes(keyword)){\n\t\t\t\tmatches.push(true);\n\t\t\t}\n\t\t});\n\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\n\t},\n\n\t//starts with the string\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//ends with the string\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(Array.isArray(filterVal)){\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\treturn false;\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterFocus(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.getHeaderFilterValue(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t}\n\t}\n\n\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterValue(column, value);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.value;\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\n\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\n\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\twhile (rgx.test(integer)){\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t}\n\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\t\t\tvalue = data[formatterParams.urlField];\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\n\t\t\t\treturn value;\n\t\t\t}else if(typeof invalid === \"function\"){\n\t\t\t\treturn invalid(value);\n\t\t\t}else{\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (invalid === true) {\n\t\t\t\treturn value;\n\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\treturn invalid(value);\n\t\t\t} else {\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\n\trow.watchPosition((position) => {\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
              \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\n\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\t\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.modules.frozen.edge){\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\tif(column.modules.frozen.edge){\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\t\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t}else{\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowDelete: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n};","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos >= 0){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollPageDown:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = rowManager.element.scrollHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos <= scrollMax){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\n\t},\n\tscrollToStart:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollToEnd:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tnavPrev:function(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\tundo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.undo();\n\t\t\t}\n\t\t}\n\t},\n\n\tredo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.redo();\n\t\t\t}\n\t\t}\n\t},\n\n\tcopyToClipboard:function(e){\n\t\tif(!this.table.modules.edit.currentCell){\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\n\t\t\t}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\ttoRow.update(fromRow.getData());\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\treplace:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\ttoRow.delete();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n};\n\nMoveRows.prototype.senders = {\n\tdelete:function(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\n\t\t\t\t\ttop = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, data;\n\n\t\t//if cookie exists, decode and load column data into tabulator\n\t\tif(cookiePos > -1){\n\t\t\tcookie = cookie.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(0, end);\n\t\t\t}\n\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t}\n};\n","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(id, type, data){\n\t\tvar expireDate = new Date();\n\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\n\t\t//block editor from taking action while resizing is taking place\n\t\tif(self.startColumn.modules.edit){\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.selectable !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\t\t\t\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t}\n\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectable !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\n\t\t\t\tif(this.table.options.selectableRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\t//compare valid values\n\t\t\treturn a - b;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
              \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\n\t\tparams.sort = sorters;\n\n\t\treturn params;\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\n\t\tif(column.definition.headerSort !== false){\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t}\n\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif(field){\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Sort.sorters[sorter];\n\t}\n\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\n\t\t\t\t\tif(sortObj){\n\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t}\n\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn !isNaN(value);\n\t},\n\n\t//must be a string\n\tstring: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn isNaN(value);\n\t},\n\n\t//maximum value\n\tmax: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) <= parameters;\n\t},\n\n\t//minimum value\n\tmin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) >= parameters;\n\t},\n\n\t//starts with value\n\tstarts: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\n\t},\n\n\t//ends with value\n\tends: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\n\t},\n\n\n\t//minimum string length\n\tminLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length >= parameters;\n\t},\n\n\t//maximum string length\n\tmaxLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length <= parameters;\n\t},\n\n\t//in provided value list\n\tin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar reg = new RegExp(parameters);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//value must be unique in this column\n\tunique: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar unique = true;\n\n\t\tvar cellData = cell.getData();\n\t\tvar column = cell.getColumn()._getSelf();\n\n\t\tthis.table.rowManager.rows.forEach(function(row){\n\t\t\tvar data = row.getData();\n\n\t\t\tif(data !== cellData){\n\t\t\t\tif(value == column.getFieldValue(data)){\n\t\t\t\t\tunique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn unique;\n\t},\n\n\t//must have a value\n\trequired:function(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\n\t\t\t\tif(validator){\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\n\n\tscrollToRowPosition:\"top\",\n\tscrollToRowIfVisible:true,\n\n\tscrollToColumnPosition:\"left\",\n\tscrollToColumnIfVisible:true,\n\n\trowFormatter:false,\n\trowFormatterPrint:null,\n\trowFormatterClipboard:null,\n\trowFormatterHtmlOutput:null,\n\n\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\t\t\t\t}\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = field.split(\".\")[0];\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\n\n\t\t\tif(this.vDomTopPad < 0){\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t}\n\n\t\t\tif(index < 1){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(rows.length){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\n\t\tif(this.redrawBlock){\n\t\t\tif(callback){\n\t\t\t\tcallback();\n\t\t\t}else{\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tconst resized = this.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\n\t\t\tif(resized) {\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\t\t\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, match;\n\n\t\tif(typeof query === \"string\"){\n\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\tif(matches.length){\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.matchElement(query);\n\n\t\t\tif(match){\n\t\t\t\tresults.push(match);\n\t\t\t}\n\t\t}else if(Array.isArray(query)){\n\t\t\tquery.forEach(function(item){\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\n\t\t\t});\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","export default {\n\t\"default\":{ //hold default locale text\n\t\t\"groups\":{\n\t\t\t\"item\":\"item\",\n\t\t\t\"items\":\"items\",\n\t\t},\n\t\t\"columns\":{\n\t\t},\n\t\t\"data\":{\n\t\t\t\"loading\":\"Loading\",\n\t\t\t\"error\":\"Error\",\n\t\t},\n\t\t\"pagination\":{\n\t\t\t\"page_size\":\"Page Size\",\n\t\t\t\"page_title\":\"Show Page\",\n\t\t\t\"first\":\"First\",\n\t\t\t\"first_title\":\"First Page\",\n\t\t\t\"last\":\"Last\",\n\t\t\t\"last_title\":\"Last Page\",\n\t\t\t\"prev\":\"Prev\",\n\t\t\t\"prev_title\":\"Prev Page\",\n\t\t\t\"next\":\"Next\",\n\t\t\t\"next_title\":\"Next Page\",\n\t\t\t\"all\":\"All\",\n\t\t\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\n\t\t},\n\t\t\"headerFilters\":{\n\t\t\t\"default\":\"filter column...\",\n\t\t\t\"columns\":{}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}else{\n\t\t\t\t\t\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw();\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;","export default class PseudoRow {\n\n\tconstructor (type){\n\t\tthis.type = type;\n\t\tthis.element = this._createElement();\n\t}\n\n\t_createElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-row\");\n\t\treturn el;\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tgetComponent(){\n\t\treturn false;\n\t}\n\n\tgetData(){\n\t\treturn {};\n\t}\n\n\tgetHeight(){\n\t\treturn this.element.outerHeight;\n\t}\n\n\tinitialize(){}\n\n\treinitialize(){}\n\n\tnormalizeHeight(){}\n\n\tgenerateCells(){}\n\n\treinitializeHeight(){}\n\n\tcalcHeight(){}\n\n\tsetCellHeight(){}\n\n\tclearCellHeight(){}\n}"],"names":["generateParamsList","defaultURLGenerator","defaultOptions","List","Edit","html","textarea","tickCross","datetime","star","progress","csv","json","array","Popup","number","date","time","RendererVirtualDomHorizontal","RendererBasicHorizontal","RendererVirtualDomVertical","RendererBasicVertical","InteractionMonitor"],"mappings":";AAAe,MAAM,WAAW;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC;AACzC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACnG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACxD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAC7D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,CAAC;AAC/D,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACrD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,aAAa,CAAC,KAAK,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACrD,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAC;AACvD,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CAAC;AAC9D,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;AACpD,EAAE;AACF;AACA,CAAC,KAAK,EAAE;AACR,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AACjD,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AACnD,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;AAC1D,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;AACA,CAAC,0BAA0B,EAAE;AAC7B,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CAAC;AACpE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,GAAG,CAAC;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;AACtB,EAAE,GAAG,OAAO,KAAK,KAAK,WAAW,CAAC;AAClC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACnC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACvC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnE,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC;AACpC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAChE,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE;AACF;;AC1Ie,MAAM,OAAO;AAC5B;AACA,CAAC,OAAO,SAAS,CAAC,EAAE,CAAC;AACrB,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;AACxD,EAAE;AACF;AACA,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;AACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;AACvC;AACA,EAAE,OAAO;AACT,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS;AACzE,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU;AAC5E,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,OAAO,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC;AACxC,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC,SAAS;AAChC,EAAE,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE;AACpB,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,GAAG,KAAK,EAAE,IAAI,CAAC;AACf;AACA,GAAG,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,KAAK,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC;AAChI,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACrC,KAAK,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AACrC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACjC,KAAK,KAAI;AACT,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AACrE;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACnC;AACA,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;;AC3Ce,MAAM,KAAK,SAAS,WAAW;AAC9C,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;AACpC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC1D;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACpD;AACA,EAAE,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC;AACnC,GAAG,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACjD;AACA,GAAG,GAAG,CAAC,SAAS,CAAC;AACjB,IAAI,OAAO,CAAC,IAAI,CAAC,4DAA4D,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,CAAC;AACrJ,IAAI;AACJ,GAAG,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC;AAC/B,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,GAAG;AACH;AACA,EAAE,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC3D,GAAG,SAAS,GAAG,KAAK,CAAC;AACrB,GAAG,OAAO,CAAC,IAAI,CAAC,6DAA6D,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,+BAA+B,CAAC,CAAC;AACrJ,GAAG;AACH;AACA,EAAE,GAAG,CAAC,SAAS,CAAC;AAChB,GAAG,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACjE,EAAE,GAAG,SAAS,KAAK,OAAO,CAAC;AAC3B,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACnG,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,QAAQ,CAAC;AACzB,EAAE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACnC,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,UAAU,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC/C,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC/C;AACA,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC;AACtC,GAAG,IAAI,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD;AACA,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;AAC1B,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC;AACzB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;AACnD,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB;AACA,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC;AACtC,GAAG,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtD;AACA,GAAG,MAAM,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;AACvC,GAAG,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,QAAQ;AACjB,GAAG,KAAK,OAAO;AACf,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;AAC1C,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AACvB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;AAC1C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AACvB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACnB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAChD,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACxB,EAAE;AACF;AACA,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;AACvB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC;AAC3C;AACA,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,GAAG,MAAM,YAAY,WAAW,CAAC;AACnC,GAAG,QAAQ,GAAG,MAAM,CAAC;AACrB,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzD;AACA,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAChB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAChB;AACA,GAAG,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;AACtC,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,GAAG,CAAC,GAAG,MAAM,CAAC;AACd,GAAG,CAAC,GAAG,QAAQ,CAAC;AAChB,GAAG,KAAI;AACP,GAAG,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC9C;AACA,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAChB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAChB;AACA,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACpC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAC;AACjD,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC5D;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK;AACpD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC;AACrD,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACnH;AACA;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC;AACpF,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;AAChC;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC;AACvF,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC;AACvE,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,GAAG;AACH;AACA;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE;AAC3H,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,OAAO,QAAQ;AACnB,KAAK,KAAK,QAAQ;AAClB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC;AACjI,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC;AACjI,KAAK;AACL;AACA,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;AACnG,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,UAAU,CAAC,MAAM;AACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;AACpB,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9E,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,KAAK,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7D,KAAK,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACnE,KAAK,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjE,KAAK,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,KAAK,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9D;AACA,KAAK,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,EAAE,GAAG,CAAC,CAAC;AACX;AACA,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,YAAY,CAAC,CAAC,CAAC;AAChB,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACrB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE;AACF;AACA,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC;AACnC,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;AAC5C,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChE,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACrE,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACnE,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACjC,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACtB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAClC,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC;AACnC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,KAAK,CAAC,OAAO,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACrB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC;AACzB,EAAE;AACF;;AC7SA,MAAM,MAAM,SAAS,WAAW;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AACzB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC;AAClC,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;AAC7C,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK;AACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,IAAI,CAAC;AACL,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,IAAI,CAAC,CAAC;AAC5E,GAAG;AACH,EAAE;AACF;AACA,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC;AACpD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3E,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;AACvC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1C,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,8BAA8B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,WAAW,CAAC,MAAM,CAAC;AACpB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;AAC1D,EAAE,WAAW,CAAC;AACd;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnB,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AAC3E,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC1C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,GAAG,WAAW,CAAC;AACxB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnB,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACvD,IAAI,KAAI;AACR,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC;AACvC,EAAE,GAAG,CAAC,OAAO,CAAC;AACd,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC7E,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,CAAC,OAAO,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,EAAE;AACF;AACA,CAAC,aAAa,CAAC,OAAO,CAAC;AACvB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnD,EAAE;AACF;AACA,CAAC,YAAY,CAAC,OAAO,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7B,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACtD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AACzC,EAAE;AACF;AACA;;AC3IA,uBAAe,EAAE;;ACKjB,MAAM,QAAQ,SAAS,MAAM;AAC7B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACnF;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;AACxD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,KAAK,GAAG,KAAK;AACnB,EAAE,MAAM,GAAG,EAAE,CAAC;AACd;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,GAAG,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,QAAQ,CAAC;AACZ;AACA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D;AACA,IAAI,GAAG,QAAQ,CAAC;AAChB,KAAK,KAAK,GAAG,IAAI,CAAC;AAClB;AACA,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG;AACnB,MAAM,QAAQ,CAAC,QAAQ;AACvB,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE;AACrD,MAAM,CAAC;AACP,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;AACpC,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC;AACvB;AACA;AACA,EAAE,OAAO,OAAO,KAAK;AACrB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,KAAK,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;AACxB,EAAE,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACpC;AACA;AACA,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC;AACpD,GAAG,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC;AAC7C;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9B;AACA,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;AACzF;AACA,IAAI,GAAG,QAAQ,CAAC;AAChB,KAAK,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACxC;AACA,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC;AAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC3C,MAAM,MAAM,GAAG,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxI,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3G,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF,CAAC;AACD;AACA;AACA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,QAAQ,CAAC,SAAS,GAAG,gBAAgB;;ACjHrC,oBAAe;AACf,CAAC,MAAM,EAAE,KAAK;AACd,CAAC;;ACFD,SAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;AACjB;AACA,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AACvB;AACA,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5B,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;AACpC,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC;AACvB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAClG,GAAG;AACH,EAAE,KAAI;AACN,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE;AACF;AACA,CAAC,OAAO,MAAM,CAAC;AACf,CAAC;AACD;AACA,SAAS,eAAe,CAAC,MAAM,CAAC;AAChC,CAAC,IAAI,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACxC,CAAC,OAAO,GAAG,EAAE,CAAC;AACd;AACA,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC9B,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD;AACe,mBAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AAC5C,CAAC,GAAG,GAAG,CAAC;AACR,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAC1C,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC;AAC7D,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B;AACA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,GAAG,CAAC;AACZ;;AC3Ce,6BAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AAC5C,CAAC,IAAI,WAAW,CAAC;AACjB;AACA,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACzC;AACA,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE;AACA;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC;AAC1C,GAAG,WAAW,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC/K,GAAG,GAAG,WAAW,CAAC;AAClB;AACA,IAAI,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;AACvC,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACxB,MAAM,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,MAAM;AACN;AACA,KAAK,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;AACnD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrD,MAAM;AACN,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnE;AACA,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACpG,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC;AACT;AACA,GAAG,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC;AAC5C,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC;AACnD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,kBAAkB,CAAC;AAC/C,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,WAAW,CAAC;AAChE,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;AAC1D,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC;AACzC,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;AACzB,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;AAC5B,IAAI,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC;AACvD,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvD,KAAK;AACL;AACA,IAAI,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;AACjD,KAAK,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;AACxC,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;AACjD,KAAK,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;AACpC,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;AACrB,KAAK,IAAI,CAAC,CAAC,QAAQ,GAAG;AACtB,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE;AACrB,MAAM,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,CAAC,IAAI,GAAG;AACrB,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;AACzB,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AACvE,QAAQ,CAAC,CAAC;AACV,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,MAAM;AACN,KAAK,CAAC;AACN,KAAK,KAAK,CAAC,CAAC,KAAK,GAAG;AACpB,KAAK,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;AAClE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,KAAK,CAAC,CAAC;AACP,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAChD,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AACf,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;;ACtFA,SAASA,oBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;AACjB;AACA,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AACvB;AACA,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5B,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAACA,oBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;AACpC,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC;AACvB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAACA,oBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAClG,GAAG;AACH,EAAE,KAAI;AACN,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE;AACF;AACA,CAAC,OAAO,MAAM,CAAC;AACf,CAAC;AACD;AACA,mCAAe;AACf,CAAC,MAAM,CAAC;AACR,EAAE,OAAO,CAAC;AACV,GAAG,cAAc,EAAE,kBAAkB;AACrC,GAAG;AACH,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AACpC,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF,CAAC,MAAM,CAAC;AACR,EAAE,OAAO,CAAC;AACV,GAAG;AACH,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AACpC;AACA,GAAG,IAAI,MAAM,GAAGA,oBAAkB,CAAC,MAAM,CAAC;AAC1C,GAAG,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;AACzB;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE;AACF,CAAC;;ACrCD,MAAM,IAAI,SAAS,MAAM;AACzB;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAClD;AACA,EAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC1D,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,oBAAoB,CAAC;AACvF,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,CAAC;AACtF;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC5C,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACjD;AACA,EAAE,GAAG,UAAU,CAAC;AAChB,GAAG,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC;AACvC,IAAI,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,IAAI;AACJ;AACA,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/C,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC7D,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC;AACvD,EAAE,IAAI,UAAU,CAAC;AACjB;AACA,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI;AACJ;AACA,GAAG,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC5C;AACA,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACzD,GAAG,KAAI;AACP,GAAG,OAAO,YAAY,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,GAAG,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACtD;AACA,EAAE,GAAG,OAAO,MAAM,IAAI,QAAQ,CAAC;AAC/B,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B,GAAG,KAAI;AACP,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;AAC5B,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD;AACA,EAAE,GAAG,OAAO,MAAM,IAAI,QAAQ,CAAC;AAC/B,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,GAAG,KAAI;AACP,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AACjC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,KAAK,CAAC;AAC/E,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AACjD,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG;AAClB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACjF,MAAM;AACN;AACA,KAAK,OAAO,IAAI,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,GAAG,KAAI;AACP,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB;AACA;AACA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,IAAI,CAAC,mBAAmB,GAAGC,UAAmB,CAAC;AAC/C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACjD,IAAI,CAAC,qBAAqB,GAAG,4BAA4B;;AC7IzD,0BAAe;AACf,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACvB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE;AACF,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1C,EAAE;AACF,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE;AACF,CAAC;;ACVD,0BAAe;AACf,CAAC,KAAK,CAAC,SAAS,SAAS,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,iBAAiB,GAAG,IAAI;AAC1B,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO;AAC5C,EAAE,SAAS,GAAG,EAAE;AAChB,EAAE,IAAI,GAAG,EAAE,CAAC;AACZ;AACA;AACA,EAAE,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACjC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/D;AACA;AACA,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAClC,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC;AAC9C,KAAK,OAAO,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;AAChH,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK,KAAI;AACT,KAAK,iBAAiB,GAAG,KAAK,CAAC;AAC/B,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA;AACA,GAAG,GAAG,CAAC,iBAAiB,CAAC;AACzB,IAAI,iBAAiB,GAAG,IAAI,CAAC;AAC7B,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB;AACA,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACnC,KAAK,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC;AAC/C,MAAM,OAAO,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3F,MAAM,CAAC,CAAC;AACR;AACA,KAAK,GAAG,MAAM,CAAC;AACf,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,KAAI;AACV,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,CAAC,iBAAiB,CAAC;AAC1B,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;AACzD,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,GAAG,iBAAiB,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC9B,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;AACnC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACtC,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF,CAAC;;ACrED,MAAM,SAAS,SAAS,MAAM;AAC9B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE,CAAC;AAClC,EAAE,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE,CAAC;AAClC,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACxD,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AAC7D;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC3D;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAChD,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK;AACtD,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1B;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;AACxB;AACA,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACnC;AACA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACnD,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzE,OAAO;AACP,MAAM,KAAI;AACV;AACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtK;AACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC/D,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1D;AACA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACnD,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzE,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtE,OAAO;AACP,MAAM;AACN;AACA,KAAK,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;AAC/D,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAClD,MAAM,MAAM,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5D,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,MAAM,GAAG,IAAI,CAAC;AACd,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAClD,OAAO;AACP,MAAM,MAAM,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE;AAC1E,MAAM,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACjE,MAAM,GAAG,IAAI,CAAC;AACd,OAAO,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAChE,OAAO;AACP,MAAM;AACN;AACA,KAAK,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3D;AACA,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACjD,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACvD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,EAAE;AACF;AACA,CAAC,KAAK,EAAE;AACR,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;AAC7B,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,IAAI,GAAG,GAAG,CAAC;AACX;AACA,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC7B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACzC,MAAM;AACN;AACA,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC;AAC3B,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,MAAM,KAAI;AACV,MAAM,OAAO,OAAO,GAAG,CAAC,KAAK;AAC7B,OAAO,KAAK,QAAQ;AACpB,QAAQ,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,MAAM;AACd;AACA,OAAO,KAAK,WAAW;AACvB,QAAQ,KAAK,GAAG,EAAE,CAAC;AACnB,QAAQ,MAAM;AACd;AACA,OAAO;AACP,QAAQ,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC1B,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxB,EAAE,IAAI,GAAG,EAAE,SAAS,CAAC;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAClD;AACA,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACrE;AACA,GAAG,IAAI,OAAO,MAAM,CAAC,YAAY,IAAI,WAAW,IAAI,OAAO,QAAQ,CAAC,WAAW,IAAI,WAAW,EAAE;AAChG,IAAI,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnC,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjD,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAChC;AACA,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE;AACpC,KAAK,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;AAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,IAAI,MAAM,IAAI,OAAO,QAAQ,CAAC,SAAS,IAAI,WAAW,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE;AAC/G,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAChD,IAAI,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChC;AACA,GAAG,IAAI,GAAG,EAAE;AACZ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;AAC1B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,MAAM,CAAC;AACvB;AACA,EAAE,OAAO,OAAO,MAAM;AACtB,GAAG,KAAK,QAAQ;AAChB,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACtD;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACzB,KAAK,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,MAAM,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC9B,IAAI,MAAM;AACV,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,CAAC;AACvB,EAAE,OAAO,OAAO,MAAM;AACtB,GAAG,KAAK,QAAQ;AAChB,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACtD;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACzB,KAAK,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,MAAM,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC9B,IAAI,MAAM;AACV,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,CAAC,CAAC;AACT,EAAE,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1B;AACA,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvC,KAAK,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACvD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3E,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,MAAM,GAAG,IAAI,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,CAAC,CAAC;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACtE,GAAG,KAAK,GAAG,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,YAAY,CAAC,CAAC,CAAC;AAChB,EAAE,IAAI,IAAI,CAAC;AACX;AACA,EAAE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5D,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,GAAG,MAAM,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE;AACzD,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAChD,GAAG,MAAM,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE;AACvE,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9D,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF,CAAC;AACD;AACA,SAAS,CAAC,UAAU,GAAG,WAAW,CAAC;AACnC;AACA;AACA,SAAS,CAAC,YAAY,GAAG,mBAAmB,CAAC;AAC7C,SAAS,CAAC,YAAY,GAAG,mBAAmB;;ACrR5C,MAAM,aAAa;AACnB,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAClB;AACA,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AACzB,GAAG,GAAG,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;AAC7C,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK,KAAI;AACT,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvF,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtC,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC7C,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,CAAC,MAAM,CAAC;AAChB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;;AC7CA;AACe,MAAM,aAAa,CAAC;AACnC;AACA,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB;AACA,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AACzB,GAAG,GAAG,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;AAC7C,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK,KAAI;AACT,KAAK,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1F,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AACjC,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AACjC,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACvC,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC3C,EAAE;AACF,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtC,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;AACxB,EAAE,GAAG,OAAO,MAAM,IAAI,WAAW,CAAC;AAClC,GAAG,MAAM,GAAG,IAAI,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACrD,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE;AACF;;AC3Ee,MAAM,IAAI,SAAS,WAAW;AAC7C,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC;AACzB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,EAAE,IAAI,CAAC,YAAY,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,EAAE;AACF;AACA;AACA;AACA,CAAC,KAAK,EAAE;AACR,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;AACjC,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC5C,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAChC,EAAE,UAAU,GAAG;AACf,GAAG,GAAG,CAAC,YAAY;AACnB,GAAG,MAAM,CAAC,UAAU;AACpB,GAAG,MAAM,CAAC,QAAQ;AAClB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,GAAG,IAAI,CAAC,YAAY;AACpB,GAAG,KAAK,CAAC,UAAU;AACnB,GAAG,MAAM,CAAC,QAAQ;AAClB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjD;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3B,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;AACzC;AACA,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtE;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzE,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAClD,GAAG;AACH;AACA;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrC,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/D,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACrC,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACnC;AACA;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,GAAG,CAAC;AACV;AACA,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AACpD,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,GAAG;AACnB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,GAAG,YAAY,IAAI,CAAC;AAC3B;AACA;AACA,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACtF;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;AACjC;AACA,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC;AACpB,MAAM,OAAO,CAAC,IAAI,CAAC,gJAAgJ,EAAE,GAAG,CAAC,CAAC;AAC1K,MAAM;AACN,KAAK;AACL,IAAI,MAAM;AACV,GAAG,KAAK,WAAW;AACnB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;AAChC,IAAI,MAAM;AACV,GAAG;AACH,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACvC,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,aAAa,CAAC;AAC1B,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAClB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,GAAG,GAAG,CAAC,aAAa,CAAC;AACrB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC/B,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/D;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AACxC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5D;AACA,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC1C,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC;AACnC;AACA,GAAG,OAAO,GAAG,IAAI,CAAC;AAClB;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1E,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7B;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACrD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAChD,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd;AACA,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;AAChC,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzC,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAChC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC5D,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAClD,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,aAAa,GAAG,EAAE,CAAC;AAC1E,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACtC,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACrC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AACnE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,EAAE;AACF;;ACpSA;AACe,MAAM,eAAe,CAAC;AACrC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACxB,EAAE,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAChC;AACA,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AACzB,GAAG,GAAG,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;AAC7C,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK,KAAI;AACT,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChG,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AACnC,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACtC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACjC,EAAE;AACF;AACA,CAAC,gBAAgB,GAAG;AACpB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACzC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC3C,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAChD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAChD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1B,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AACjC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAChD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AACvC,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,YAAY,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AAC5F,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;AAC9B,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC5F,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AAChB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACjE;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9E,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,QAAQ,CAAC,CAAC;AACpE,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC1C;AACA,EAAE,OAAO,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AAClD,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC1C;AACA,EAAE,OAAO,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AAClD,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC1B,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACjC,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChB,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC;AACpB,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAClD,GAAG,KAAI;AACP,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzD;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;;ACxJA,2BAAe;AACf,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,UAAU,EAAE,SAAS;AACtB,CAAC,WAAW,EAAE,SAAS;AACvB,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,UAAU,EAAE,EAAE;AACf,CAAC,UAAU,EAAE,SAAS;AACtB,CAAC,iBAAiB,EAAE,SAAS;AAC7B,CAAC,UAAU,EAAE,SAAS;AACtB,CAAC,gBAAgB,EAAE,SAAS;AAC5B,CAAC,gBAAgB,EAAE,SAAS;AAC5B,CAAC,gBAAgB,EAAE,SAAS;AAC5B,CAAC,gBAAgB,EAAE,KAAK;AACxB,CAAC,eAAe,EAAE,SAAS;AAC3B,CAAC;;ACXD,MAAM,MAAM,SAAS,WAAW;AAChC;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;AACzB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACxB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACvB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACtC,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAClC,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChD,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA;AACA,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvC;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB;AACA;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC7B;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC/C,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,GAAG,KAAI;AACP,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACpC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,EAAE;AACjB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC1C,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB;AACjD,GAAG,KAAK,QAAQ;AAChB,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;AACvC,IAAI,MAAM;AACV,GAAG,KAAK,QAAQ;AAChB,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC;AACzC,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,EAAE;AACtB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC/C;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACnD;AACA;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC;AAC3B,IAAI,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;AACnD,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7G,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChD,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,IAAI,OAAO,CAAC,IAAI,CAAC,uCAAuC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC;AACrH,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAChJ,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;AAChG,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;AAChG,EAAE;AACF;AACA;AACA,CAAC,sBAAsB,CAAC,MAAM,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C,EAAE;AACF;AACA;AACA,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACxC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAChC,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B;AACA,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnF;AACA,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC;AACxB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACxD;AACA,GAAG,GAAG,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;AACpC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC9D,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACzD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAChD;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACrC,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACvC;AACA;AACA,EAAE,GAAG,OAAO,GAAG,CAAC,OAAO,IAAI,WAAW,CAAC;AACvC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AAClB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC;AAClB,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACrC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;AACf,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3D,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,GAAG,CAAC,eAAe,EAAE;AAC3B,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACxD,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC;AAClB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;AACA;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC3C,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AACrE,EAAE;AACF;AACA,CAAC,yBAAyB,EAAE;AAC5B,EAAE,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AACtE;AACA,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACtD;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzD;AACA,EAAE,OAAO,cAAc,CAAC;AACxB,EAAE;AACF;AACA;AACA,CAAC,uBAAuB,EAAE;AAC1B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B;AACA,EAAE,IAAI,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzD,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC;AACxB,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAChE,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC;AACvB,GAAG,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACtD,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACxD;AACA,GAAG,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACjD,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;AACzB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AACjD,IAAI,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AACnC,IAAI,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACrE,IAAI,CAAC,CAAC;AACN;AACA,GAAG,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAChD;AACA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;AAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACpD,KAAK,YAAY,CAAC,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC1D,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,YAAY,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC;AAChD,IAAI;AACJ;AACA,GAAG,KAAI;AACP,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;AAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACpD,KAAK,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;AACxF,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC7E,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,kBAAkB,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC;AACpC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM;AAC5E,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,QAAQ;AACxB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,QAAQ,YAAY,IAAI,CAAC;AAChC,KAAK,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,KAAK,KAAI;AACT,KAAK,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,KAAK,OAAO,CAAC,IAAI,CAAC,sJAAsJ,EAAE,QAAQ,CAAC,CAAC;AACpL,KAAK;AACL,IAAI,MAAM;AACV,GAAG,KAAK,WAAW;AACnB,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM;AACV,GAAG;AACH,IAAI,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACjE;AACA;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACrC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AACrE;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,SAAS,GAAG,IAAI,CAAC,cAAc;AACjC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM;AAC3B,EAAE,MAAM,CAAC;AACT;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC;AACA,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,GAAG,MAAM,GAAG,OAAO,CAAC;AACpB;AACA,GAAG,GAAG,CAAC,OAAO,CAAC;AACf,IAAI,MAAM;AACV,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAChB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5B,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,SAAS,GAAG,IAAI,CAAC,cAAc;AACjC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC5B;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC;AACA,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AACrB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAClC,IAAI,KAAI;AACR,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK,GAAG,OAAO,KAAK,KAAK,WAAW,CAAC;AACrC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACjC,MAAM,KAAI;AACV,MAAM,MAAM;AACZ,MAAM;AACN,KAAK;AACL;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,MAAM,CAAC;AACrB,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACvB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACtD;AACA,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;AACpG,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC;AACjC;AACA;AACA,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,YAAY,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC,CAAC;AACjJ;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;AAClD;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClE;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC;AAChG,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACvC,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;AACrC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACpC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACvC,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAC/B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,EAAE;AACF;AACA;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE;AACF;AACA,CAAC,gBAAgB,GAAG;AACpB,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,EAAE;AACF;AACA;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAC5C,IAAI,KAAI;AACR,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;AAChE,IAAI,KAAI;AACR,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzB,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AACrC,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,cAAc,CAAC;AAC9B,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;AACpC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACxC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC;AACzB,EAAE;AACF;AACA;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACvC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AAChF,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC/B,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnC;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;AAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACxD;AACA,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;AAChF,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACnC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AAC/C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC/B,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACvC;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;AACnD;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACxD;AACA,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AACjF,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACnC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AAC/C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAChD,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACxC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;AACtB,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC;AAChE;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACnC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1B,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAClB,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnB,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9C;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAClC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACtC,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACnC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACjC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;AACnD,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;AAChC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACxC,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAC5B,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACpB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAC5B,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACxC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;AACtB,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AACvC;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzB,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC;AAChE,EAAE;AACF;AACA,CAAC,WAAW,CAAC,QAAQ,CAAC;AACtB,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/C,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B;AACA,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,GAAG,wCAAwC,EAAE,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;AACpJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B,EAAE,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACnC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,WAAW,CAAC,QAAQ,CAAC;AACtB,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/C,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B;AACA,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,GAAG,yCAAyC,EAAE,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;AACrJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B,EAAE,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACnC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACnB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACzC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;AACrB,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACxC;AACA,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACrC;AACA,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACrC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClD;AACA,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC;AACjC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA,CAAC,YAAY,CAAC,GAAG,CAAC;AAClB,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7D,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACjE,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAChE,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjF,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7D,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACjE,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAChE,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjF,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B;AACA;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC;AAC5D;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;AACjD;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,KAAK,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,OAAO;AACV,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACtB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AACjC;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1C;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChC;AACA,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;AACxB,KAAK,QAAQ,GAAG,KAAK,CAAC;AACtB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,IAAI,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE;AACxC,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC1B,EAAE,IAAI,UAAU,CAAC;AACjB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3B,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACzD,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpD;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;AACtE,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK;AACvB;AACA,MAAM,GAAG,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AACxC,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1B,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,MAAM;AACnB,QAAQ,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AACrC,QAAQ,CAAC,CAAC;AACV;AACA,MAAM,CAAC,CAAC;AACR,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;AAChH,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,qGAAqG,CAAC,CAAC;AACjI,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;AAC/G,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,qGAAqG,CAAC,CAAC;AAChI,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,EAAE;AACF,CAAC;AACD;AACA,MAAM,CAAC,iBAAiB,GAAGC,oBAAc;;ACl7BzC;AACe,MAAM,YAAY,CAAC;AAClC;AACA,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAClB;AACA,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AACzB,GAAG,GAAG,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;AAC7C,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK,KAAI;AACT,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvF,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtC,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC7C,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,CAAC,MAAM,CAAC;AAChB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,EAAE;AACF;AACA,CAAC,aAAa,CAAC,QAAQ,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;AAC9B,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChF,EAAE;AACF;AACA,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AAChB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpC,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChC,EAAE,OAAO,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC;AACxC,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChC,EAAE,OAAO,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC;AACxC,EAAE;AACF;;ACzFe,MAAM,GAAG,SAAS,WAAW;AAC5C,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC;AACzC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrB,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,EAAE;AACjB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClC,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5D,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;AAC9B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;AAChC;AACA,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB;AACA,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpF;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAC5C;AACA,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACtE;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACrC;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACzD,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxE,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AACxD,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC,EAAE;AACF;AACA,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;AACxB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AACxD,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACtC,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,KAAK,CAAC;AAClB,EAAE,IAAI,SAAS,GAAG,CAAC;AACnB,EAAE,SAAS,CAAC;AACZ;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAClC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9C,GAAG,KAAI;AACP,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;AAChF;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAClC,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAC1B,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACjD,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnF,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5D,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAC/C,EAAE;AACF;AACA;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACnC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAChC,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACnC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,KAAK,CAAC;AACvB,EAAE,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5C,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;AACzB,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACpC;AACA,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5B;AACA,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB;AACA;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAChD,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,EAAE;AACF;AACA;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAClC,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAChF;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAC7C,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,WAAW,CAAC;AACxB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/D,EAAE,QAAQ,GAAG,EAAE;AACf,EAAE,UAAU,CAAC;AACb;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C;AACA,GAAG,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC;AACtC,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1C,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC3C,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAClG;AACA;AACA,GAAG,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE;AACpC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/C,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAC9C;AACA;AACA,GAAG,KAAK,IAAI,QAAQ,IAAI,WAAW,EAAE;AACrC;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC3E;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAChC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD;AACA,KAAK,GAAG,IAAI,CAAC;AACb,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACnD,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC;AACnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACvC;AACA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ;AACR,OAAO;AACP,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACvC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACjE;AACA;AACA;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5D;AACA,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,IAAI;AACJ;AACA,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC;AACnB,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,MAAM,CAAC;AAChB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAClD,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,GAAG;AACH;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC;AACxC,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;AACjC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC;AAC5C,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,OAAO,CAAC;AAClB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACnC,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAClD,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7D,EAAE,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7D,EAAE,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,EAAE;AACF;AACA,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;AACtB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChD;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;AAC7D,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACnE,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,YAAY,CAAC,WAAW,CAAC;AAC1B,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACtC,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACpC;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACpC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpF;AACA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/D,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACpD,EAAE;AACF;AACA,CAAC,WAAW,CAAC,QAAQ,CAAC;AACtB,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC/B,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAC/C,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,QAAQ,CAAC;AACxB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;AACrC,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,EAAE;AACF;;AC9cA,0BAAe;AACf,CAAC,KAAK,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AACzC,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,SAAS,GAAG,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;AACrF;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC;AAC9C,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC;AACA,GAAG,MAAM,GAAG,SAAS,KAAK,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AACrE,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvC,EAAE;AACF,CAAC,KAAK,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AACzC,EAAE,IAAI,MAAM,GAAG,IAAI;AACnB,EAAE,SAAS,GAAG,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,GAAG,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;AACzF;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAChC;AACA,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB;AACA,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AACxC,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC;AAC3F,EAAE;AACF,CAAC,KAAK,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AACzC,EAAE,IAAI,MAAM,GAAG,IAAI;AACnB,EAAE,SAAS,GAAG,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,GAAG,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;AACzF;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAChC;AACA,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB;AACA,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AACxC,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC;AAC3F,EAAE;AACF,CAAC,KAAK,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AACzC,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,SAAS,GAAG,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,GAAG,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;AACzF;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACjC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,SAAS,KAAK,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AAClE,EAAE;AACF,CAAC,QAAQ,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AAC5C,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC;AAC9C,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AAC3C,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACjC,IAAI,GAAG,KAAK,CAAC;AACb,KAAK,MAAM,GAAG,CAAC;AACf,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,QAAQ,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AAC5C,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AAC/C,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACrE,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,EAAE;AACF,CAAC;;AClFD,MAAM,WAAW,SAAS,MAAM;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACzC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACzC,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;AACzD,EAAE;AACF;AACA,CAAC,aAAa,CAAC,EAAE;AACjB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC7C,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;AACA;AACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9F,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAChC,EAAE;AACF;AACA;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC3B,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACjC,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5B,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,uBAAuB,EAAE;AAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3G,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AACzE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;AAC7F,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AACjD,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAC9B,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AAC/D,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B;AACA,EAAE,IAAI,MAAM,GAAG;AACf,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;AACxC,GAAG,aAAa,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;AAC3C,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;AACjB;AACA,GAAG,OAAO,OAAO,GAAG,CAAC,OAAO;AAC5B,IAAI,KAAK,QAAQ;AACjB,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7D,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7F,MAAM;AACN,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAClC,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AACjD,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC;AACpB,GAAG,OAAO,OAAO,GAAG,CAAC,UAAU;AAC/B,IAAI,KAAK,QAAQ;AACjB,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACjD,MAAM,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAChG,MAAM;AACN,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC;AACrC,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AACjD,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAChC,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,CAAC,mBAAmB,EAAE,EAAE;AACxB;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AACzB,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3D,GAAG,OAAO,GAAG,IAAI,CAAC;AAClB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AACzB,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC,GAAG,OAAO,GAAG,IAAI,CAAC;AAClB,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1B,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACpI,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1B,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC;AACxC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE,IAAI,IAAI,EAAE,GAAG,CAAC;AAChB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;AACjD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC;AACA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3B,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACpB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,MAAM;AACN;AACA,KAAK,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzC,KAAK,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AACvB,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/F,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AACnD,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3B,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACpB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAChC,MAAM;AACN;AACA,KAAK,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AACvB,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/F,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AACnD,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC5C;AACA;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC7C,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC/C,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC;AACjD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC;AAC/E;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAC/D;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9B,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,IAAI,EAAE,OAAO,CAAC;AACpB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACnB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AACxC,MAAM;AACN;AACA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD;AACA,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1C,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACrC,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5B;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACjF,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzD,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9F,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;AACvB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AAC/C,EAAE,GAAG,CAAC;AACN;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACvC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,GAAG,CAAC,CAAC;AAC9E;AACA,EAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB;AACA,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM;AAC3B,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;AACrB,IAAI,GAAG,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3C,IAAI;AACJ;AACA,GAAG,OAAO,GAAG,CAAC,SAAS,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM;AAC5B;AACA,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;AAClB;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC/D;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC9C;AACA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClF,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG;AACrC,MAAM,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;AACjG,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,qBAAqB,CAAC,IAAI,EAAE;AAClE,MAAM,CAAC;AACP,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG;AACrC,MAAM,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC;AACpE,MAAM,MAAM,CAAC,EAAE;AACf,MAAM,CAAC;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpE;AACA;AACA,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACvB,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AACjB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3B,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACtD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,GAAG,SAAS,GAAG,SAAS;AAC7C,EAAE,MAAM,EAAE,QAAQ,CAAC;AACnB;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAChC,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;AAC/B,IAAI,MAAM,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpK;AACA,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1F,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClC,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClC,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE;AACT,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,MAAM,CAAC;AACT;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACrE,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzD;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,GAAG;AACb,IAAI,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE;AACjD,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE;AACpD,IAAI,CAAC;AACL,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,KAAK,CAAC;AACvB,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE;AACjC,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE;AAClC,EAAE,eAAe,GAAG,EAAE;AACtB,EAAE,OAAO,GAAG,EAAE,CAAC;AACf;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAClC,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACvE,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,GAAG;AACZ,GAAG,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AAC9D,GAAG,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE;AACvE,GAAG,MAAM,EAAE,eAAe;AAC1B,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1B,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACrB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;AACrD,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC;AACtD,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,WAAW,CAAC,UAAU,GAAG,aAAa,CAAC;AACvC;AACA;AACA,WAAW,CAAC,YAAY,GAAG,mBAAmB;;AC7jB9C,MAAM,QAAQ,SAAS,MAAM;AAC7B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAC7D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAC7D;AACA;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACjC,GAAG,IAAI,OAAO,GAAG,IAAI;AACrB,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC;AACA,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;AAC3C,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC7C;AACA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAClC,IAAI,OAAO,CAAC,IAAI,CAAC,4HAA4H,CAAC,CAAC;AAC/I,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACpC;AACA,IAAI,GAAG,OAAO,CAAC,qBAAqB,KAAK,IAAI,CAAC;AAC9C,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnD,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC/D,KAAK,KAAI;AACT,KAAK,GAAG,OAAO,OAAO,CAAC,qBAAqB,KAAK,QAAQ,CAAC;AAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,MAAM,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACxD,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;AACzC,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACpD,MAAM;AACN,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AACpE,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;AACtC,IAAI,GAAG,OAAO,OAAO,CAAC,uBAAuB,KAAK,QAAQ,CAAC;AAC3D,KAAK,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,KAAK,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC;AACzD,KAAK,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC1C,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC;AACvD,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,0DAA0D,CAAC;AAC3F,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACpC,IAAI,GAAG,OAAO,OAAO,CAAC,qBAAqB,KAAK,QAAQ,CAAC;AACzD,KAAK,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,KAAK,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACvD,KAAK,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACnD,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,wDAAwD,CAAC;AACvF,IAAI;AACJ;AACA;AACA,GAAG,OAAO,OAAO,OAAO,CAAC,qBAAqB;AAC9C,IAAI,KAAK,SAAS;AAClB,KAAK,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE,KAAK,CAAC;AAC1C,MAAM,OAAO,OAAO,CAAC,qBAAqB,CAAC;AAC3C,MAAM,CAAC;AACP,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACpD,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE,KAAK,CAAC;AAC1C,MAAM,OAAO,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAClD,MAAM,CAAC;AACP,KAAK,MAAM;AACX,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1E,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE;AACA,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,IAAI,IAAI,CAAC;AACX;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1C;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACtC,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAClE;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACtG,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9C,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9D,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC;AAC1C,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACpC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACrC;AACA,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC;AACjC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA,EAAE,IAAI,QAAQ,GAAG,OAAO,KAAK,CAAC,OAAO,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,CAAC,CAAC;AAChG;AACA,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxE,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvF,GAAG;AACH;AACA,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzE,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzF,GAAG;AACH;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG;AACzB,GAAG,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;AAC/D,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK;AACtH,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK;AACvF,GAAG,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK;AACrF,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK;AACrE,GAAG,QAAQ,CAAC,QAAQ;AACpB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,GAAG,CAAC;AAC7B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAClC,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACnF,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AACxB,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AACrB,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;AACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5D,IAAI;AACJ,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AACtB,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;AAClC,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9D,IAAI;AACJ,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE;AACA,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;AAClB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpB,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AACpD;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACtB,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACzK,KAAK,KAAI;AACT,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACzK,KAAK;AACL,IAAI,KAAI;AACR;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACtB,KAAK,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACjJ,KAAK,KAAI;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC/I,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,CAAC;AAChC,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ;AACnC,EAAE,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAChC;AACA,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAC5C;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AAC/B;AACA,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAClB,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACtD,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrD,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACtD,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK;AACzD,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,UAAU,IAAI,UAAU,CAAC,UAAU,KAAK,EAAE,CAAC;AACjD,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACpE,IAAI,KAAI;AACR,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC3B,GAAG,IAAI,MAAM,EAAE,QAAQ,CAAC;AACxB;AACA,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB;AACA,GAAG,GAAG,GAAG,YAAY,GAAG,CAAC;AACzB;AACA,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AACjB;AACA,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClC;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AAClD,KAAK,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACjC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;AACrB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC;AAC9B,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ;AACnC,EAAE,QAAQ,GAAG,EAAE;AACf,EAAE,MAAM,GAAG,EAAE,CAAC;AACd;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;AAC/D,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjD,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AAC1E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjE,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC/B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACtE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB;AACA,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9C;AACA,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACtB,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACpC,GAAG,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAClE;AACA,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;AACrB;AACA,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACpE,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;AAC1C;AACA,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9G,IAAI;AACJ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;AACvB,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AAC/B,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChG,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AAC/B,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AACvB;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjG,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AAC/B,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AAC1F,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,GAAG,CAAC;AACvB,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AACzH,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,GAAG,CAAC;AAC7B,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ;AACnC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,CAAC;AACxB;AACA,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AACrB;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjD,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AAC1E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjE,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC/B,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAClC,IAAI,GAAG,QAAQ,YAAY,GAAG,CAAC;AAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;AAC1C,EAAE,UAAU,CAAC;AACb;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,GAAG,GAAG,UAAU,KAAK,KAAK,CAAC;AAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAClD,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACtC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AACvC,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC9B,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC7B;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9F,GAAG;AACH;AACA,EAAE,GAAG,OAAO,KAAK,KAAK,WAAW,CAAC;AAClC,GAAG,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD;AACA,GAAG,GAAG,UAAU,KAAK,KAAK,CAAC;AAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9E,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,UAAU,KAAK,KAAK,CAAC;AAC1B,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,KAAI;AACR,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;AAChC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,EAAE,GAAG,OAAO,OAAO,IAAI,QAAQ,CAAC;AAChC;AACA,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC;AAC7B;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,IAAI,KAAK,GAAG,OAAO,YAAY,YAAY,CAAC;AAC5C;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACpC,IAAI,KAAK,GAAG,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,YAAY,WAAW,CAAC;AACjF,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC/B,KAAK,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACjE,MAAM,OAAO,QAAQ,YAAY,GAAG,GAAG,QAAQ,CAAC,OAAO,KAAK,OAAO,GAAG,KAAK,CAAC;AAC5E,MAAM,CAAC,CAAC;AACR;AACA,KAAK,GAAG,KAAK,CAAC;AACd,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AACzB,MAAM;AACN,KAAK;AACL,IAAI,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;AAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,OAAO,OAAO,IAAI,WAAW,CAAC;AACzC,GAAG,KAAK,GAAG,KAAK,CAAC;AACjB,GAAG,KAAI;AACP;AACA,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACjD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;AACzD,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,KAAK,CAAC;AACX;AACA,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,IAAI;AACJ;AACA,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AAClB,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC;AACzC,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ;AACnC,EAAE,MAAM,GAAG,EAAE,CAAC;AACd;AACA,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC/B;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjD,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACzC,IAAI,GAAG,QAAQ,YAAY,GAAG,CAAC;AAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAC;AACjE;AACA,KAAK,GAAG,OAAO,CAAC;AAChB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACjF,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW,GAAG,KAAK,MAAM,IAAI,CAAC,YAAY,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,WAAW,GAAG,KAAK,CAAC,CAAC;AACxJ,EAAE;AACF,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,GAAG,UAAU;;AC5lBjB,YAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,CAAC;AAC5D,CAAC,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG;AAC5D,CAAC,YAAY,GAAG,EAAE;AAClB,CAAC,OAAO,GAAG,EAAE,CAAC;AACd;AACA,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACvB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,OAAO,GAAG,CAAC,IAAI;AACjB,GAAG,KAAK,OAAO;AACf,IAAI,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;AAChF,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;AACzF,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AACpC,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;AAC/B,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,KAAK,IAAI,WAAW,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACvI,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjC;AACA,KAAK,GAAG,GAAG,CAAC;AACZ;AACA,MAAM,OAAO,OAAO,GAAG,CAAC,KAAK;AAC7B,OAAO,KAAK,QAAQ;AACpB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACxE,QAAQ,MAAM;AACd;AACA,OAAO,KAAK,WAAW;AACvB,QAAQ,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;AACvB,QAAQ,MAAM;AACd,OAAO;AACP;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrE,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACnB,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC;AACA,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;AAChB,EAAE,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;AACzC,EAAE;AACF;AACA,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3C;;AC5De,aAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;AACvD,CAAC,IAAI,YAAY,GAAG,EAAE,CAAC;AACvB;AACA,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACvB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,OAAO,GAAG,CAAC,IAAI;AACjB,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,OAAO;AACf,IAAI,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;AACjF,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AAC1F,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjC,KAAK,GAAG,GAAG,CAAC;AACZ,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACrF,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzD;AACA,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACnD;;ACjCe,YAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,CAAC;AAC5D,CAAC,IAAI,MAAM,GAAG,EAAE;AAChB,CAAC,IAAI,GAAG,EAAE;AACV,CAAC,eAAe,GAAG,EAAE;AACrB,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI;AAC5C,EAAE,SAAS,EAAE,MAAM;AACnB,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE;AACF,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI;AAC1C,EAAE,SAAS,EAAE,MAAM;AACnB,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE;AACF,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE;AAClC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;AAC5C;AACA,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC;AAC7B,EAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;AAC/D,EAAE;AACF;AACA,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;AACtB,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACvB,EAAE,OAAO,GAAG,CAAC,IAAI;AACjB,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM;AACV;AACA,GAAG,KAAK,OAAO;AACf,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AAC7C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC/B,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC9B,GAAG,IAAI,IAAI,CAAC;AACZ;AACA,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,OAAO,OAAO,GAAG,CAAC,KAAK;AAC3B,KAAK,KAAK,QAAQ;AAClB,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACtE,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,WAAW;AACrB,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;AACrB,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,IAAI,GAAG;AACX,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK;AACtB,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK;AACtB,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM;AACvB,KAAK,CAAC;AACN;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA,CAAC,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACxC;AACA,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;AACtB,EAAE,GAAG,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC;AAC7C,GAAG,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAClD,GAAG,KAAI;AACP,GAAG,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;AACvC,GAAG;AACH,EAAE;AACF;AACA,CAAC,GAAG,KAAK,CAAC;AACV,EAAE,eAAe,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;AAC/C,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,eAAe,CAAC,IAAI,GAAG,MAAM,CAAC;AAC/B,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B;AACA,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAChC;AACA,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;AAC/B,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAClC,EAAE;AACF;AACA,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC/D;;AC5Ge,aAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;AACvD,CAAC,IAAI,IAAI,GAAG,IAAI;AAChB,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ;AAC1C,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjC,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC;AACtC,CAAC,WAAW,IAAI,UAAU,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI;AAC/D,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;AACpF,CAAC,MAAM,CAAC;AACR;AACA,CAAC,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC9B;AACA,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;AAC1B,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;AACtB;AACA,CAAC,SAAS,aAAa,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,SAAS,GAAG,EAAE;AAChB,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACxI;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC3B,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AACvC;AACA,IAAI,GAAG,GAAG,CAAC;AACX,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACzH;AACA,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,OAAO;AACP,MAAM;AACN,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5C;AACA,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACrD;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AACjC,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;AACtB,EAAE,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;AACnC,EAAE,OAAO;AACT,EAAE;AACF;AACA,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;AAClC;AACA,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,EAAE,CAAC;AAC7C,IAAI,KAAI;AACR;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC;AACA,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC;AAC3E,KAAK,IAAI,CAAC,MAAM;AAChB,KAAK,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM;AACvB,KAAK,SAAS,CAAC,SAAS,IAAI,CAAC;AAC7B,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACpC,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE,KAAI;AACN,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,EAAE,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;AAC/B,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAClD,EAAE;AACF;AACA;AACA,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;AAClB,EAAE,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtC,EAAE,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACnE,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF;AACA,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC7C;AACA,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC,CAAC;AAC3D;;ACrGe,aAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;AACvD,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5E,EAAE;AACF;;ACJe,kBAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE;AACzD,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AACzB;AACA,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACvB,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,QAAQ,GAAG,CAAC,IAAI;AAClB,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,OAAO;AACf,IAAI,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;AACjF,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AAC1F,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjC,KAAK,IAAI,GAAG,EAAE;AACd,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACrF,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAClE;;ACxBA,yBAAe;AACf,CAAC,GAAG,CAAC,GAAG;AACR,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,SAAS,CAAC,SAAS;AACpB,CAAC,GAAG,CAAC,GAAG;AACR,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,IAAI,CAAC,IAAI;AACV,CAAC;;ACVD,MAAM,QAAQ,SAAS,MAAM;AAC7B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,SAAS,IAAI,EAAE,QAAQ,CAAC;AACtE,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACzD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAC5D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AAC/C,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACvD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC;AAC5D,EAAE,IAAI,YAAY,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AAChC,GAAG,GAAG,iBAAiB,CAAC;AACxB,IAAI,GAAG,iBAAiB,KAAK,IAAI,CAAC;AAClC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5D,KAAK,KAAI;AACT,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,OAAO,IAAI,IAAI,UAAU,CAAC;AAC/B,GAAG,YAAY,GAAG,IAAI,CAAC;AACvB,GAAG,KAAI;AACP,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,CAAC,CAAC;AACzE,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,YAAY,CAAC;AAClB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC7C;AACA,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,IAAI,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AAC9J;AACA;AACA,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAC3D;AACA,EAAE,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChD,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,IAAI,KAAK,CAAC;AACb;AACA,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC3B,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B;AACA,IAAI,GAAG,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,KAAK,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3I,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;AACpD,EAAE,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3C,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,QAAQ,IAAI,YAAY,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;AACtF;AACA,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAClC,KAAK,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAChD,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;AACA;AACA,KAAK,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAChD;AACA;AACA,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACpC,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;AACrB;AACA;AACA,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AACnC,EAAE,OAAO,MAAM;AACf,GAAG,KAAK,WAAW;AACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5E,IAAI,MAAM;AACV,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC;AACA;AACA,QAAQ,CAAC,WAAW,GAAG,kBAAkB;;AClJ1B,SAAS,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC;AAC9C,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,CAAC,UAAU,GAAG,OAAO,OAAO,CAAC,cAAc,KAAK,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG;AAC1F,CAAC,UAAU,GAAG,OAAO,OAAO,CAAC,cAAc,KAAK,WAAW,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG;AAC1F,CAAC,YAAY,GAAG,OAAO,OAAO,CAAC,gBAAgB,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,GAAG,GAAG,CAAC;AACjG;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC;AAC5B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,CAAC;AAChH,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;AACrC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK;AACvC,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM;AAC7B,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;AACf;AACA,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI,KAAI;AACR,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,KAAK,KAAK,UAAU;AACpB,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AAClD,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;AAC1B,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3B,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,UAAU;AACpB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;AAC1B,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3B,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,YAAY;AACtB,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;AAC1B,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3B,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO;AACT,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACrC,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;AAC3B,IAAI,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC;AACpB,EAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,EAAE;AACF;AACA,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;AACzB,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,EAAE;AACF;;ACvEA;AACe,cAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE;AACA,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AACrE;AACA,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,EAAE,CAAC;AACjE;AACA,CAAC,UAAU,CAAC,UAAU;AACtB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAC/B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B;AACA,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;AACrB,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;AACnH,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB;AACA,GAAG,KAAK,EAAE;AACV,IAAI,QAAQ,CAAE,CAAC,CAAC;AAChB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;AACtB,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;AC1EA;AACe,iBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,OAAO,GAAG,YAAY,CAAC,kBAAkB,IAAI,QAAQ;AACtD,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,GAAG,EAAE,CAAC;AACzF,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3C,CAAC,YAAY,GAAG,CAAC,CAAC;AAClB;AACA;AACA,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB;AACA,CAAC,UAAU,CAAC,UAAU;AACtB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAC/B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B;AACA,GAAG,KAAK,CAAC,YAAY,CAAC;AACtB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAClD,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;AACnC;AACA,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;AACrB;AACA,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;AACnH;AACA,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ;AACA,GAAG,UAAU,CAAC,UAAU;AACxB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU;AAC3C;AACA,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;AACrC;AACA,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AACxC;AACA,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC;AAC/B,GAAG,YAAY,GAAG,SAAS,CAAC;AAC5B,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C;AACA,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB;AACA,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,YAAY,CAAC,gBAAgB,CAAC;AACnD,KAAK,QAAQ,CAAE,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,OAAO,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AAC5E,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK;AACL;AACA,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,OAAO,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnG,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;AACtB,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;ACxHA;AACe,eAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,OAAO,GAAG,YAAY,CAAC,kBAAkB,IAAI,QAAQ;AACtD,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACtC;AACA,CAAC,GAAG,OAAO,YAAY,CAAC,GAAG,IAAI,WAAW,CAAC;AAC3C,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,GAAG,OAAO,YAAY,CAAC,GAAG,IAAI,WAAW,CAAC;AAC3C,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,GAAG,OAAO,YAAY,CAAC,IAAI,IAAI,WAAW,CAAC;AAC5C,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AACzB;AACA,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC;AAC3B,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,CAAC;AACH;AACA,CAAC,UAAU,CAAC,YAAY;AACxB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAC/B;AACA,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C;AACA,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B;AACA;AACA,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C;AACA,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,EAAE;AACpB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AAClC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC;AACzB,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB,GAAG,KAAK,EAAE;AACV;AACA,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,OAAO,IAAI,QAAQ,CAAC;AAC3B,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;AACtB,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;AC7GA;AACe,cAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrC;AACA,CAAC,IAAI,OAAO,YAAY,CAAC,GAAG,IAAI,WAAW,EAAE;AAC7C,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,IAAI,OAAO,YAAY,CAAC,GAAG,IAAI,WAAW,EAAE;AAC7C,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,IAAI,OAAO,YAAY,CAAC,IAAI,IAAI,WAAW,EAAE;AAC9C,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AACzB;AACA,CAAC,UAAU,CAAC,YAAY;AACxB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAC/B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,EAAE;AACpB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AAClC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,GAAG,KAAK,IAAI,SAAS,CAAC;AACxB,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB,GAAG,KAAK,EAAE;AACV;AACA,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;AChFA;AACe,aAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM;AACtC,CAAC,OAAO,GAAG,YAAY,CAAC,kBAAkB,IAAI,QAAQ;AACtD,CAAC,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;AAC/D;AACA;AACA,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC;AAC5B,EAAE,IAAI,WAAW,CAAC;AAClB;AACA,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,WAAW,GAAG,KAAK,CAAC;AACvB,GAAG,KAAK,GAAG,WAAW,KAAK,KAAK,CAAC;AACjC,GAAG,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACrB,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC;AACrB,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5F,EAAE;AACF;AACA,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC;AACrB,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5F,EAAE;AACF;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,EAAE,CAAC;AAC/D;AACA,CAAC,GAAG,WAAW,CAAC;AAChB,EAAE,GAAG,EAAE,CAAC;AACR,GAAG,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AACtC,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;AACzF,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AACzB;AACA,CAAC,UAAU,CAAC,UAAU;AACtB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAC/B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B;AACA,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,EAAE;AACpB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,EAAE,OAAO,CAAC;AACV;AACA,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,SAAS,CAAC;AACvG;AACA,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC;AAC3B,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;AACzD;AACA,IAAI,OAAO,WAAW;AACtB,KAAK,KAAK,IAAI;AACd,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,KAAK;AACf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC9B,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC5C,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,sBAAsB,KAAK,KAAK,EAAE;AAC9E,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB;AACA,GAAG,KAAK,EAAE;AACV,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,OAAO,IAAI,QAAQ,CAAC;AAC3B,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;ACzIA;AACe,aAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM;AACtC,CAAC,OAAO,GAAG,YAAY,CAAC,kBAAkB,IAAI,QAAQ;AACtD,CAAC,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI;AAC9D,CAAC,WAAW,CAAC;AACb;AACA;AACA,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACrB,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,EAAE,CAAC;AAC/D;AACA,CAAC,GAAG,WAAW,CAAC;AAChB,EAAE,GAAG,EAAE,CAAC;AACR,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/B,IAAI,WAAW,GAAG,SAAS,CAAC;AAC5B,IAAI,KAAK,GAAG,WAAW,KAAK,KAAK,CAAC;AAClC,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,IAAI,KAAI;AACR,IAAI,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AAChE,IAAI;AACJ;AACA,GAAG,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C;AACA,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;AACzF,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AACzB;AACA,CAAC,UAAU,CAAC,UAAU;AACtB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC;AAC9B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B;AACA,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,EAAE;AACpB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,EAAE,OAAO,CAAC;AACV;AACA,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,SAAS,CAAC;AACvG;AACA,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC;AAC3B,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACpD;AACA,IAAI,OAAO,WAAW;AACtB,KAAK,KAAK,IAAI;AACd,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,KAAK;AACf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC9B,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC5C,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,sBAAsB,KAAK,KAAK,EAAE;AAC9E,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB;AACA,GAAG,KAAK,EAAE;AACV,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,OAAO,IAAI,QAAQ,CAAC;AAC3B,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;AC7HA;AACe,iBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM;AACtC,CAAC,OAAO,GAAG,YAAY,CAAC,kBAAkB,IAAI,QAAQ;AACtD,CAAC,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI;AAC9D,CAAC,WAAW,CAAC;AACb;AACA;AACA,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,CAAC,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC;AAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,EAAE,CAAC;AAC/D;AACA,CAAC,GAAG,WAAW,CAAC;AAChB,EAAE,GAAG,EAAE,CAAC;AACR,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/B,IAAI,WAAW,GAAG,SAAS,CAAC;AAC5B,IAAI,KAAK,GAAG,WAAW,KAAK,KAAK,CAAC;AAClC,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,IAAI,KAAI;AACR,IAAI,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AAChE,IAAI;AACJ;AACA,GAAG,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzF,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;AACzF,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AACzB;AACA,CAAC,UAAU,CAAC,UAAU;AACtB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAC/B,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B;AACA,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC;AAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,SAAS,QAAQ,EAAE;AACpB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,EAAE,WAAW,CAAC;AACd;AACA,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,SAAS,CAAC;AACvG;AACA,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC;AAC3B,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C;AACA,IAAI,OAAO,WAAW;AACtB,KAAK,KAAK,IAAI;AACd,MAAM,KAAK,GAAG,WAAW,CAAC;AAC1B,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,KAAK;AACf,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;AAClC,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAChD,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC5C,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,sBAAsB,KAAK,KAAK,EAAE;AAC9E,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB;AACA,GAAG,KAAK,EAAE;AACV,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,GAAG,OAAO,IAAI,QAAQ,CAAC;AAC3B,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;ACzHe,MAAM,IAAI;AACzB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACrE,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACrB,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC1C,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG;AACjB,GAAG,OAAO,CAAC,OAAO;AAClB,GAAG,MAAM,CAAC,MAAM;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B;AACA,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,uBAAuB,EAAE;AAC1B,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACnC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,wHAAwH,CAAC,CAAC;AACzK,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;AAChC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,qHAAqH,CAAC,CAAC;AACtK,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5B,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,iHAAiH,CAAC,CAAC;AAClK,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACtC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,2HAA2H,CAAC,CAAC;AAC5K,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1C;AACA,EAAE,GAAG,OAAO,YAAY,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,WAAW,CAAC;AAC5F,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC;AAC/E;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7E,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACtC;AACA,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC;AACvB,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,GAAG;AACH;AACA;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9C;AACA,EAAE,UAAU,CAAC,MAAM;AACnB,GAAG,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAClD,GAAG,EAAE,IAAI,CAAC,CAAC;AACX;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC9C;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1D;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1B,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5D,IAAI,KAAK,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACrD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC7D,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtD,IAAI;AACJ,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC9C,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C;AACA,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AACxE;AACA,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC9B,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC7B,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACvC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/B,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AAClC,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;AAC1C;AACA,GAAG;AACH;AACA,EAAE,GAAG,OAAO,IAAI,OAAO,OAAO,IAAI,QAAQ,CAAC;AAC3C,GAAG,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC;AAC3B,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC5B,KAAK,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,KAAK,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC3E,KAAK,KAAI;AACT,KAAK,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtB,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC/B;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,SAAS,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC;AACzD,EAAE,UAAU,CAAC;AACb;AACA,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC;AACA,EAAE,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,QAAQ,CAAC;AACpE,EAAE,MAAM,CAAC,kBAAkB,GAAG,OAAO,MAAM,CAAC,kBAAkB,KAAK,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC7H,EAAE,MAAM,CAAC,gBAAgB,GAAG,OAAO,MAAM,CAAC,gBAAgB,KAAK,WAAW,GAAG,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1H,EAAE,MAAM,CAAC,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5F;AACA,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;AAC1F;AACA,EAAE,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACjF;AACA,EAAE,GAAG,CAAC,UAAU,CAAC;AACjB,GAAG,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;AAC/G,GAAG,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;AAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,qHAAqH,CAAC,CAAC;AACvI,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;AACzB,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AACzB,IAAI,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;AAChH,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;AAC9G,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACxB,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;AAChH,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1B,IAAI,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,IAAI,OAAO,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;AAClH,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAClB,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AACxB,IAAI,OAAO,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;AAC1G,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACxB,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;AAChH,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AACzB,IAAI,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;AACjH,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7F,GAAG,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,uHAAuH,CAAC,CAAC;AACzI,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACxB,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9B,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,CAAC,CAAC;AACf,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9B,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpC;AACA,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM;AACzC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/B,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,CAAC,CAAC;AACf,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,CAAC,CAAC;AACd,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,CAAC,CAAC;AACjB,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB;AACA,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,CAAC;AACT,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,CAAC,CAAC;AACf,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK;AAClB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,IAAI;AACJ,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB;AACA,EAAE,UAAU,CAAC,KAAK;AAClB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,CAAC,CAAC,CAAC;AACX,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC;AAC9D,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC7C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,CAAC,CAAC,CAAC;AACV,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC;AACzG,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,CAAC,CAAC;AACZ,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxI,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB;AACA,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AACnB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,CAAC,CAAC;AACZ,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/B,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,CAAC,CAAC;AACb,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC;AAC9D,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,CAAC,CAAC;AACX,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9B;AACA,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACpB,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/B;AACA,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB;AACA;AACA,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACzC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1D,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;AAC7C;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AAC/C,GAAG,OAAO,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpG,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM;AACxC,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACxB,GAAG,EAAE,GAAG,CAAC,CAAC;AACV,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC5B;AACA,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAClD,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACxD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;AAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxF,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B,EAAE;AAC7B,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK;AACjB,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAK,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,CAAC,CAAC;AACN,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,SAAS,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/B,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvE,GAAG,KAAI;AACP,GAAG,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,UAAU,CAAC;AACrD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACrC,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,MAAM,YAAY,OAAO,CAAC;AAC/B,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACzD,IAAI;AACJ;AACA,GAAG,OAAO,MAAM,CAAC,IAAI,EAAE;AACvB,KAAK,IAAI,CAAC,CAAC,cAAc,KAAK;AAC9B,KAAK,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;AACzC,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAC7C,MAAM,KAAI;AACV,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,MAAM;AACN,KAAK,CAAC,CAAC;AACP,GAAG,KAAI;AACP,GAAG,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1B,EAAE,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD;AACA,EAAE,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC;AACpC,GAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,GAAG;AACH;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB;AACA,GAAG,GAAG,QAAQ,YAAY,WAAW,CAAC;AACtC,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC3B,IAAI,KAAI;AACR,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AACjE,IAAI,WAAW,CAAC,SAAS,GAAG,QAAQ,CAAC;AACrC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACxC;AACA,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;AACxB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3D,EAAE,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACpC;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,IAAI,IAAI,CAAC,CAAC,QAAQ,GAAG;AACrB,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE;AACpB,KAAK,OAAO,QAAQ,CAAC,IAAI,EAAE;AAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,GAAG;AACtB,OAAO,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;AAC3E,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,OAAO,CAAC,CAAC;AACT,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvG,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,CAAC,KAAK,GAAG;AACnB,IAAI,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;AACtE,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,CAAC,CAAC;AACN,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC3B,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,EAAE,MAAM,CAAC;AACT;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7D,GAAG,KAAI;AACP,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,IAAI,GAAG,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,EAAE,CAAC;AAChE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8DAA8D,EAAE,KAAK,CAAC,CAAC;AACvF,GAAG,MAAM,GAAG,EAAE,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,WAAW,CAAC;AACxB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACjC,GAAG,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACnE,IAAI,OAAO;AACX,KAAK,KAAK,CAAC,KAAK;AAChB,KAAK,KAAK,CAAC,GAAG;AACd,KAAK,CAAC;AACN,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACjC,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;AAChC,IAAI,KAAK,GAAG;AACZ,KAAK,KAAK,CAAC,KAAK;AAChB,KAAK,KAAK,CAAC,KAAK;AAChB,KAAK,CAAC;AACN,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvD,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;AACzC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;AACpC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AACpB,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAClD,GAAG,KAAI;AACP,GAAG,IAAI,GAAG;AACV,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK;AACtB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK;AACtB,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU;AAChC,IAAI,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;AAC/C,IAAI,OAAO,CAAC,KAAK;AACjB,IAAI,QAAQ,CAAC,KAAK;AAClB,IAAI,OAAO,CAAC,IAAI;AAChB,IAAI,KAAK,CAAC,KAAK;AACf,IAAI,QAAQ,CAAC,MAAM;AACnB,IAAI,CAAC;AACL;AACA,GAAG,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/B,EAAE,IAAI,IAAI,GAAG;AACb,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AACrB,GAAG,KAAK,CAAC,IAAI;AACb,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU;AAC/B,GAAG,iBAAiB,CAAC,MAAM,CAAC,iBAAiB;AAC7C,GAAG,OAAO,CAAC,KAAK;AAChB,GAAG,OAAO,CAAC,IAAI;AACf,GAAG,KAAK,CAAC,KAAK;AACd,GAAG,OAAO,CAAC,EAAE;AACb,GAAG,QAAQ,CAAC,MAAM;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACpC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,YAAY,CAAC,OAAO,CAAC;AACtB,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtB,GAAG,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7G;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpC,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5B,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACxB,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7E,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACnB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC;AAC5D,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AACjC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvB,GAAG;AACH;AACA;AACA,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpB,GAAG,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,GAAG,UAAU,IAAI,CAAC,CAAC;AACnB,GAAG,KAAI;AACP,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACnD,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAChC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAChC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACxB,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnB,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnB,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACjD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;AACjB,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC7C,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC7C,MAAM,OAAO,EAAE,GAAG,EAAE,CAAC;AACrB,MAAM;AACN,UAAU,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB;AACpE,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1B;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC9B,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpE,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5C,KAAK,OAAO,GAAG,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AAC7C,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AACpC;AACA,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpD,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvG,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAChF;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC3B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC/B,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtD,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO;AACvB,EAAE,QAAQ,CAAC;AACX;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC;AACpC;AACA,GAAG,GAAG,CAAC,EAAE,CAAC;AACV,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB;AACA,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7H;AACA,IAAI,GAAG,QAAQ,YAAY,WAAW,CAAC;AACvC,KAAK,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,KAAK,KAAI;AACT,KAAK,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAClB,KAAK,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACnD,KAAK,KAAI;AACT,KAAK,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAClD,KAAK;AACL;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACtE;AACA,IAAI,GAAG,IAAI,CAAC,iBAAiB,IAAI,OAAO,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AAC3E,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC;AAC5C,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC9B,OAAO,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9F,OAAO,KAAI;AACX,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAClB,KAAK,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE,KAAK,KAAI;AACT,KAAK,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACpE,KAAK;AACL;AACA,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB;AACA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACrC,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AACtD;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC3B,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACtF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAClB,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO;AACX,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD;AACA,GAAG,GAAG,CAAC,QAAQ,CAAC;AAChB,IAAI,UAAU,CAAC,MAAM;AACrB,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChE,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;AAC1B,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACpB,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACtB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACxB,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;AAC1B,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC7B,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC1B,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB;AACA,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACjC;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB;AACA,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,EAAE,IAAI,MAAM,EAAE,YAAY,CAAC;AAC3B;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC7B,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC;AACtD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AACnF,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,KAAK,OAAO;AACZ,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,KAAK,KAAI;AACT,KAAK,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AACnG;AACA,KAAK,GAAG,YAAY,KAAK,IAAI,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,EAAE,CAAC;AAC5F,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,MAAM,KAAI;AACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AACtC,MAAM;AACN,KAAK;AACL;AACA,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;AACnB,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AACnC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnB,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7E,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE;AACF;AACA;;ACrhCe,eAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE;AACA,CAAC,IAAI,CAAC,cAAc,CAAC,uEAAuE,CAAC,CAAC;AAC9F;AACA,CAAC,IAAI,IAAI,GAAG,IAAIC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5E;AACA,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB;;ACPe,aAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,IAAI,GAAG,IAAIA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5E;AACA,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB;;ACJe,qBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE;AACA,CAAC,IAAI,CAAC,cAAc,CAAC,iHAAiH,CAAC,CAAC;AACxI;AACA,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC;AACA,CAAC,IAAI,IAAI,GAAG,IAAIA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5E;AACA,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB;;ACXA;AACe,aAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,IAAI,GAAG,IAAI;AAChB,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AACxB,CAAC,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC;AAC3D,CAAC,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE;AAClH,CAAC,KAAK,GAAG,EAAE;AACX,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,CAAC,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACtE;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC;AACzB,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AACjC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACd,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;AAClC,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AACzD,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;AAChF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,SAAS,GAAG,ySAAyS,CAAC;AAC/T,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;AAClC,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;AAC3D,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;AAChF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,SAAS,GAAG,ySAAyS,CAAC;AAC/T,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,UAAU,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACnD,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvB;AACA,EAAE,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACvD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAClD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACd,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAClB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACtC;AACA,EAAE;AACF;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC;AAC1B,EAAE,KAAK,GAAG,GAAG,CAAC;AACd,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AAClB,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACrC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;AACzC;AACA;AACA,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC5C,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AAC5C,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACnC;AACA;AACA,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9B;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7G,IAAI,KAAI;AACR,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC9B,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7C;AACA;AACA,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnB;AACA,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAClD,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7C,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB,GAAG,KAAK,EAAE;AACV,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AACnB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,WAAW,CAAC;AACpB;;ACjJA;AACe,iBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,CAAC,GAAG,GAAG,OAAO,YAAY,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,GAAG;AACnL,CAAC,GAAG,GAAG,OAAO,YAAY,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,GAAG;AACjL,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG;AAC5B,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7B,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACvC,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACpC,CAAC,SAAS,EAAE,cAAc,CAAC;AAC3B;AACA;AACA,CAAC,SAAS,WAAW,EAAE;AACvB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,EAAE,IAAI,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AACnM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,EAAE,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AACjD,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACpC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC1B,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACxB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC3B,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACnD;AACA;AACA,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AACpC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACjC;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;AACvC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;AAC7B,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7F,IAAI,KAAI;AACR,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;AACnC;AACA;AACA,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C;AACA;AACA,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC;AAC7C;AACA,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAC/B;AACA,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAC5C;AACA,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACzB;AACA,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACjD,EAAE,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC;AACxB,EAAE,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC;AACnC,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU;AAChD,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AACpC,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAClD,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC;AACrE,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAChC;AACA,GAAG,SAAS,GAAG,KAAK,CAAC;AACrB,GAAG,cAAc,GAAG,KAAK,CAAC;AAC1B;AACA,GAAG,WAAW,EAAE,CAAC;AACjB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,EAAE,OAAO,CAAC,CAAC,OAAO;AAClB,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC;AACzE,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC;AACzE,IAAI,MAAM;AACV;AACA,GAAG,KAAK,CAAC,CAAC;AACV,GAAG,KAAK,EAAE;AACV,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,EAAE;AACV,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU;AAC5C,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,GAAG,CAAC;AACZ;;AC9HA;AACe,kBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;AACxE,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACxC,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ;AACjC,CAAC,aAAa,GAAG,OAAO,YAAY,CAAC,kBAAkB,KAAK,WAAW,GAAG,IAAI,GAAG,YAAY,CAAC,kBAAkB;AAChH,CAAC,aAAa,GAAG,KAAK;AACtB,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC/D,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAClE;AACA,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AACtC;AACA,CAAC,GAAG,YAAY,CAAC,iBAAiB,IAAI,OAAO,YAAY,CAAC,iBAAiB,IAAI,QAAQ,CAAC;AACxF,EAAE,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,IAAI,KAAI;AACR,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB;AACA,CAAC,GAAG,QAAQ,KAAK,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;AAC1F,EAAE,aAAa,GAAG,IAAI,CAAC;AACvB,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC;AACtE,EAAE,UAAU,CAAC,UAAU;AACvB,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;AAChC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,KAAK,KAAK,YAAY,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;AAC3I;AACA,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC;AACxB,EAAE,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;AACnC;AACA,EAAE,GAAG,YAAY,IAAI,YAAY,CAAC;AAClC,GAAG,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;AACzC,GAAG,KAAK,GAAG,aAAa,IAAI,CAAC,YAAY,CAAC;AAC1C,GAAG,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,GAAG,CAAC,IAAI,CAAC;AACZ,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC;AACvC,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,KAAK,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,KAAK,aAAa,GAAG,IAAI,CAAC;AAC1B,KAAK,OAAO,aAAa,CAAC;AAC1B,KAAK,KAAI;AACT,KAAK,aAAa,GAAG,KAAK,CAAC;AAC3B,KAAK,OAAO,YAAY,CAAC;AACzB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,aAAa,CAAC;AACrB,KAAK,OAAO,aAAa,CAAC;AAC1B,KAAK,KAAI;AACT,KAAK,OAAO,YAAY,CAAC;AACzB,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,YAAY,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC7C,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtB,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9C,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACrB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;AACrB,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;AChFA,qBAAe;AACf,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC,QAAQ,CAAC,QAAQ;AAClB,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,QAAQ,CAAC,QAAQ;AAClB,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,YAAY,CAAC,YAAY;AAC1B,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,QAAQ,CAAC,QAAQ;AAClB,CAAC,SAAS,CAAC,SAAS;AACpB,CAAC;;ACvBD,MAAMC,MAAI,SAAS,MAAM;AACzB;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,OAAO,GAAGA,MAAI,CAAC,OAAO,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AACjD;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACnF,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7E,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW;AAC7B,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACxC;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClC,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACzC;AACA,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;AACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrC,MAAM,KAAI;AACV,MAAM,GAAG,OAAO,MAAM,IAAI,UAAU,CAAC;AACrC,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACnE,OAAO,KAAI;AACX,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7D,OAAO;AACP,MAAM;AACN;AACA,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM;AACvB,MAAM,UAAU,CAAC,MAAM;AACvB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC;AAC1C,OAAO,CAAC,CAAC;AACT,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,EAAE;AACF;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;AAClF,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC3B,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACzD,GAAG;AACH,OAAO;AACP,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,KAAK,CAAC;AACvB,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACpD,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzC,EAAE,IAAI,QAAQ,EAAE,OAAO,CAAC;AACxB;AACA,EAAE,GAAG,IAAI,CAAC;AACV;AACA,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAClC;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE;AACA,IAAI,GAAG,OAAO,CAAC;AACf,KAAK,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACzE;AACA,KAAK,GAAG,QAAQ,CAAC;AACjB,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AACrC,MAAM,OAAO,IAAI,CAAC;AAClB,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzC,EAAE,IAAI,QAAQ,EAAE,OAAO,CAAC;AACxB;AACA,EAAE,GAAG,IAAI,CAAC;AACV;AACA,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACnC;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE;AACA,IAAI,GAAG,OAAO,CAAC;AACf,KAAK,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD;AACA,KAAK,GAAG,QAAQ,CAAC;AACjB,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AACrC,MAAM,OAAO,IAAI,CAAC;AAClB,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzC,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC;AACV;AACA,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3B,GAAG,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzD;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1C,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC;AACV;AACA,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3B,GAAG,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzD;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACvC,EAAE,IAAI,KAAK,EAAE,OAAO,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC;AACV;AACA,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3B,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClE;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/C,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzC,EAAE,IAAI,KAAK,EAAE,OAAO,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC;AACV;AACA,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3B,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClE;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/C,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAClD,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxE,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,KAAK,GAAG,SAAS,CAAC;AAClB,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,MAAM;AACZ,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AACf,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACpC,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxE,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,KAAK,GAAG,SAAS,CAAC;AAClB,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,MAAM;AACZ,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAC9B,EAAE,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC;AACrD,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC1B,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC;AAC5D,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,GAAG,CAAC;AACtD,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACtB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACnC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;AACvF,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,MAAM,GAAG;AACf,GAAG,MAAM,CAAC,KAAK;AACf,GAAG,OAAO,CAAC,KAAK;AAChB,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ;AACnC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE;AAC9C,GAAG,CAAC;AACJ;AACA;AACA,EAAE,OAAO,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM;AACxC,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9C,KAAK,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5D,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,SAAS;AACjB,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC;AACzC,KAAK,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,UAAU,CAAC;AAC1D,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACnD,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACjE,OAAO,KAAI;AACX,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACrH,MAAM;AACN,KAAK;AACL,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AAChC,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AACpE,EAAE;AACF;AACA,CAAC,WAAW,CAAC,MAAM,CAAC;AACpB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW;AAC7B,EAAE,MAAM,CAAC;AACT;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B;AACA,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD;AACA,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAChD;AACA,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClE;AACA,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC/D;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;AAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzE,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACzC,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AACzD,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,GAAG,IAAI,IAAI,GAAG,IAAI;AAClB,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACnC;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACvC;AACA,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACxD,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;AACxB,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC5B,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5B,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B;AACA,EAAE,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC7C,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1B,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACpC,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;AACxD,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS;AACxD,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS;AACpG,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AACjC;AACA,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3E,IAAI,KAAI;AACR,IAAI,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC;AAC1D,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;AACpG,KAAK;AACL,IAAI;AACJ;AACA,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;AAC1D,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;AACnG,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC5C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;AAC3E,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;AAC7E,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC;AACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxE,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACzE,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;AACnC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/E,IAAI,KAAI;AACR,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC;AAC3D,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AACtG,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,IAAI,EAAE;AACjB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACtD;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,GAAG,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;AAC/C,IAAI,KAAK,UAAU;AACnB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;AAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAClE,MAAM;AACN,KAAK,MAAM;AACX;AACA,IAAI,KAAK,QAAQ;AACjB,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,KAAK,MAAM;AACX;AACA,IAAI,KAAK,SAAS;AAClB,KAAK,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,KAAK,MAAM;AACX,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;AACzB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,SAAS,GAAG,IAAI;AAClB,EAAE,QAAQ,GAAG,UAAU,EAAE;AACzB,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7B,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AAChC;AACA;AACA;AACA,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;AACrD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI;AACJ,GAAG,OAAO;AACV,GAAG;AACH;AACA;AACA,EAAE,SAAS,OAAO,CAAC,KAAK,CAAC;AACzB,GAAG,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;AAChC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtE;AACA,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,WAAW,CAAC;AAC3E,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACxB;AACA;AACA,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;AAC7B,MAAM;AACN;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrC;AACA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM;AACN;AACA,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChC;AACA,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC;AAC3B,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7B,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,KAAK,QAAQ,EAAE,CAAC;AAChB,KAAK,OAAO,KAAK,CAAC;AAClB,KAAK;AACL,IAEI;AACJ,GAAG;AACH;AACA;AACA,EAAE,SAAS,MAAM,EAAE;AACnB,GAAG,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAEI;AACJ,GAAG;AACH;AACA,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC;AAC/B,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACvB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,GAAG,GAAG,CAAC,CAAC;AACR,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,SAAS,IAAI,SAAS,CAAC;AAC7B;AACA,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB;AACA,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC;AACA,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC;AACA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACvB,KAAK,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC7B;AACA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACzC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACtE,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1C,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACpE,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACpD;AACA,IAAI,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAClJ;AACA,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5G;AACA;AACA,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,KAAK,CAAC;AAChD,KAAK,GAAG,UAAU,YAAY,IAAI,CAAC;AACnC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjD,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC5D,MAAM,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxE,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACtC;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB;AACA;AACA,MAAM,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACtC;AACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,QAAQ,CAAC,CAAC,eAAe,EAAE,CAAC;AAC5B,QAAQ,CAAC,CAAC;AACV,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,6EAA6E,EAAE,UAAU,CAAC,CAAC;AAC9G,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,MAAM,OAAO,KAAK,CAAC;AACnB,MAAM;AACN,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,KAAK,OAAO,KAAK,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAClB,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACrC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,IAAI,SAAS,CAAC;AAChB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpC;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C;AACA,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AACpB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACzC,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACAA,MAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB;AACA;AACAA,MAAI,CAAC,OAAO,GAAG,cAAc;;AC1tB7B,MAAM,SAAS;AACf,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;AAC9C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AAC5B,EAAE;AACF;;ACPA,MAAM,YAAY;AAClB,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE;AACF;;ACHA,MAAM,MAAM,SAAS,MAAM;AAC3B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;AACrD,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,CAAC;AACvH,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;AAChD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACvE;AACA,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACzC,EAAE;AACF;AACA,CAAC,SAAS,CAAC,KAAK,CAAC;AACjB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,OAAO,KAAK,IAAI,UAAU,CAAC;AAChC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA,IAAI,GAAG,GAAG,CAAC;AACX,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,KAAK;AACf,IAAI,KAAK,IAAI,CAAC;AACd,IAAI,KAAK,SAAS;AAClB,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9D,KAAK,MAAM;AACX;AACA,IAAI,KAAK,KAAK;AACd,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;AACtD,KAAK,MAAM;AACX;AACA,IAAI,KAAK,QAAQ,CAAC;AAClB,IAAI;AACJ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChG,MAAM,KAAI;AACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACpD,MAAM;AACN,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,0BAA0B,EAAE;AAC7B,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;AAChI;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACjD;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO;AAChC,EAAE,QAAQ,GAAG,CAAC;AACd,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACvI;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,GAAG,KAAK,CAAC,KAAK;AACd,GAAG,MAAM,CAAC,MAAM;AAChB,GAAG,KAAK,CAAC,CAAC;AACV,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;AACtB,GAAG,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB;AACA,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACnC,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACzD;AACA,IAAI,GAAG,YAAY,CAAC;AACpB,KAAK,SAAS,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC;AAC3C,KAAK,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5C;AACA,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;AACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;AACpC,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC;AAC/B;AACA,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AACvB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACxB,IAAI,KAAI;AACR,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnD;AACA,EAAE,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AACnC,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7D,GAAG;AACH;AACA,EAAE,OAAO,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;AAC/E,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC7B,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,WAAW,GAAG,CAAC;AACjB,EAAE,UAAU,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1C;AACA,GAAG,IAAI,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;AACnC;AACA,GAAG,GAAG,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC;AAC5C,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;AACrE;AACA,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;AAC3C;AACA,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,WAAW,CAAC;AAClD,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9B,MAAM;AACN;AACA,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;AAC1C,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;AACvB,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC;AAC/C,KAAK,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAClC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;AACjC,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAClC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3B,IAAI,GAAG,GAAG,CAAC;AACX,KAAK,IAAI,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;AACnE,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACrD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB;AACA,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9D,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AACpC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AACxC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAC9E,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC;AACpD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxD,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC;AACpD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC9B,GAAG,OAAO,GAAG,CAAC,IAAI;AAClB,IAAI,KAAK,OAAO;AAChB,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC;AAC5C;AACA,IAAI,KAAK,MAAM;AACf,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC;AAC9C;AACA,IAAI,KAAK,KAAK;AACd,KAAK,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5G,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC3B,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,GAAG,IAAI,UAAU,GAAG,EAAE,CAAC;AACvB,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC;AAClB;AACA,GAAG,OAAO,GAAG,CAAC,IAAI;AAClB,IAAI,KAAK,OAAO;AAChB,KAAK,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;AACxB,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF,KAAK,MAAM;AACX;AACA,IAAI,KAAK,MAAM,EAAE;AACjB,IAAI,KAAK,KAAK;AACd,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9B,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF,MAAM,CAAC,CAAC;AACR;AACA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AACtE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1C,MAAM;AACN,KAAK,MAAM;AACX,IAAI;AACJ;AACA,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACpF,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3B,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC5C,EAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACnC,EAAE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,EAAE,KAAK,GAAG,EAAE,CAAC;AACb;AACA,EAAE,KAAK,CAAC,YAAY,GAAG,YAAY,KAAK,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9F;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACzG,GAAG,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;AACrE,GAAG;AACH;AACA;AACA,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H;AACA,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC5D,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AACxN;AACA;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,GAAG,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;AAC5F,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC3B,GAAG,IAAI,KAAK,CAAC;AACb;AACA,GAAG,OAAO,GAAG,CAAC,IAAI;AAClB,IAAI,KAAK,QAAQ;AACjB,KAAK,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,KAAK,MAAM;AACX;AACA,IAAI,KAAK,OAAO;AAChB,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACvE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,MAAM;AACf,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,KAAK;AACd,KAAK,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD;AACA,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACxO,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK,MAAM;AACX,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;AACxB,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5B;AACA;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;AACnH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA;AACA,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,CAAC;AACrD,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,gEAAgE,CAAC,CAAC;AACtH,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,iEAAiE,CAAC,CAAC;AACxH,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;AACvF,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,4DAA4D,CAAC,CAAC;AACpH,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF;AACA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AACjF,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtE,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AAC1C,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAClC,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACjI;AACA,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC;AACA,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACpC;AACA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;AAC5B,KAAK,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,SAAS,EAAE;AAC3C,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AACvN,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC/I;AACA,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AACxC,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,KAAK,KAAI;AACT,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;AAClD,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5E,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACjG,KAAK;AACL;AACA,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AACzC;AACA,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1C,EAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzB;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACnD;AACA,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxD,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/I,GAAG,KAAI;AACP,GAAG,GAAG,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC;AAClC,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AACjJ,IAAI;AACJ,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AACjC;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACrD,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7D;AACA,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AACjC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAC1L,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACvH;AACA,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5B;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AACxC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1D;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACvL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AACvC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACnD;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAClC,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7C,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO;AAClC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5D,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AACrB,IAAI,SAAS,CAAC;AACd;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,KAAK,OAAO,CAAC,EAAE;AACf,KAAK,QAAQ,CAAC,UAAU;AACxB,MAAM,OAAO,KAAK,CAAC;AACnB,MAAM;AACN,KAAK,QAAQ,CAAC,UAAU;AACxB,MAAM,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACrC,MAAM;AACN,KAAK,UAAU,CAAC,UAAU;AAC1B,MAAM,OAAO,MAAM,CAAC;AACpB,MAAM;AACN,KAAK,OAAO,CAAC,UAAU;AACvB,MAAM,OAAO,MAAM,CAAC;AACpB,MAAM;AACN,KAAK,SAAS,CAAC,UAAU;AACzB,MAAM,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AACnC,MAAM;AACN,KAAK,OAAO,CAAC,UAAU;AACvB,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACrC,MAAM;AACN,KAAK,MAAM,CAAC,UAAU;AACtB,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC;AAC3B,MAAM;AACN,KAAK,YAAY,CAAC,UAAU;AAC5B,MAAM,OAAO,WAAW,CAAC;AACzB,MAAM;AACN,KAAK,MAAM,CAAC,MAAM;AAClB,KAAK,CAAC;AACN;AACA,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7F;AACA,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,SAAS,EAAE;AAC3C,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC;AAC3E,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACvF,KAAK,KAAI;AACT,KAAK,OAAO,OAAO,KAAK;AACxB,MAAM,KAAK,QAAQ;AACnB,OAAO,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC3D,OAAO,MAAM;AACb;AACA,MAAM,KAAK,WAAW;AACtB,OAAO,KAAK,GAAG,EAAE,CAAC;AAClB,OAAO,MAAM;AACb,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC;AAC7B,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK,KAAI;AACT,KAAK,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5G;AACA,IAAI,GAAG,SAAS,CAAC;AACjB,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAClP;AACA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACvD,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AACrE,KAAK,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClH,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7G,OAAO;AACP,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtD,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5G,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9B;AACA,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACjF,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACnD,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC;AACnF,GAAG,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACtD;AACA,GAAG,eAAe,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAC1D;AACA,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxB,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C;AACA,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD;AACA,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC;AAC5C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,IAAI,YAAY,CAAC,CAAC;AAChI;AACA,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAClC,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,CAAC;AACxC;AACA,GAAG,IAAI,MAAM,GAAG;AAChB,IAAI,kBAAkB,GAAG,iBAAiB;AAC1C,IAAI,OAAO,GAAG,WAAW;AACzB,IAAI,OAAO,GAAG,OAAO;AACrB,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,WAAW,GAAG,UAAU;AAC5B,IAAI,YAAY,GAAG,WAAW;AAC9B,IAAI,YAAY,GAAG,WAAW;AAC9B,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,cAAc,GAAG,aAAa;AAClC,IAAI,eAAe,GAAG,cAAc;AACpC,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,cAAc,GAAG,aAAa;AAClC,IAAI,eAAe,GAAG,cAAc;AACpC,IAAI,gBAAgB,GAAG,eAAe;AACtC,IAAI,CAAC;AACL;AACA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAClD;AACA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAChC,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChE,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,MAAM,CAAC,UAAU,GAAG,QAAQ;;AC/mB5B,qBAAe;AACf;AACA;AACA,CAAC,GAAG,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACvD,EAAE,OAAO,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACvD,EAAE,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC3C,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACxD,EAAE,OAAO,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACvD,EAAE,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC3C,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACxD,EAAE,OAAO,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACxD,EAAE,OAAO,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AAC3D;AACA,EAAE,GAAG,OAAO,SAAS,IAAI,QAAQ,CAAC;AAClC,GAAG,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AAC1D,EAAE,GAAG,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,CAAC;AAC5D,GAAG,OAAO,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC9C,GAAG,KAAI;AACP,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AACvD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,IAAI;AACJ,QAAO;AACP,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AAC9D,EAAE,IAAI,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,SAAS,KAAK,WAAW,GAAG,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5H,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE;AAC9F,EAAE,OAAO,GAAG,EAAE,CAAC;AACf;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI;AAC/B,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACvF,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AAC5D,EAAE,GAAG,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,CAAC;AAC5D,GAAG,OAAO,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC9C,GAAG,KAAI;AACP,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AACvD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5E,IAAI;AACJ,QAAO;AACP,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AAC1D,EAAE,GAAG,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,CAAC;AAC5D,GAAG,OAAO,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAC9C,GAAG,KAAI;AACP,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AACvD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1E,IAAI;AACJ,QAAO;AACP,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;AACxD,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC9B,GAAG,OAAO,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACnE,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,SAAS,CAAC,CAAC;AAC3E,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF,CAAC;;ACvGD,MAAM,MAAM,SAAS,MAAM;AAC3B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;AACxC,EAAE,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAClD;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAC7D;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACtD;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,EAAE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,EAAE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,EAAE,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtG,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrG,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzG,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzG,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC;AAChD,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG;AACH;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACtC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACpD,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAC5C,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC5D;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjF,KAAK,OAAO,KAAK,CAAC;AAClB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACjD,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9C,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;AAC1F,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACrD,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAC1C,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAC1C,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,KAAK,CAAC;AAChC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACrC,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,KAAK,CAAC,CAAC;AAChF,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,KAAK,EAAE;AACjC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC5C,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AAC1E,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC;AACvC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AAC1E,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AACrC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,GAAG,CAAC;AACrB,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA;AACA;AACA,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B,CAAC,MAAM,CAAC;AACrC,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B;AACA,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC;AACtB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;AAChC,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5B;AACA;AACA,EAAE,SAAS,OAAO,CAAC,KAAK,CAAC;AACzB,GAAG,IAAI,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,GAAG,SAAS,GAAG,OAAO;AAC/K,GAAG,IAAI,GAAG,EAAE;AACZ,GAAG,iBAAiB,GAAG,EAAE;AACzB,GAAG,UAAU,CAAC;AACd;AACA,GAAG,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC;AAC9G;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AAC9C;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/C,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACzC;AACA,KAAK,OAAO,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB;AACrD,MAAM,KAAK,QAAQ;AACnB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC7D,QAAQ,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAClD,QAAQ,UAAU,GAAG,SAAS,IAAI,CAAC;AACnC,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC;AACrE,SAAS,IAAI,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,SAAS,MAAM,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;AACxF;AACA,SAAS,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClG,SAAS,CAAC;AACV,QAAQ,KAAI;AACZ,QAAQ,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACvH,QAAQ;AACR,OAAO,MAAM;AACb;AACA,MAAM,KAAK,UAAU;AACrB,OAAO,UAAU,GAAG,SAAS,IAAI,CAAC;AAClC,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC;AACpE,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClD;AACA,QAAQ,MAAM,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;AACvF;AACA,QAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,QAAQ,CAAC;AACT;AACA,OAAO,IAAI,GAAG,UAAU,CAAC;AACzB,OAAO,MAAM;AACb,MAAM;AACN;AACA,KAAK,GAAG,CAAC,UAAU,CAAC;AACpB,MAAM,OAAO,UAAU;AACvB,OAAO,KAAK,SAAS;AACrB,QAAQ,UAAU,GAAG,SAAS,IAAI,CAAC;AACnC,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACjD;AACA,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AAC7D,UAAU,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,UAAU,KAAI;AACd,UAAU,OAAO,KAAK,CAAC;AACvB,UAAU;AACV,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,MAAM,CAAC;AACtB,QAAQ,MAAM;AACd;AACA,OAAO;AACP,QAAQ,UAAU,GAAG,SAAS,IAAI,CAAC;AACnC,SAAS,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AACpD,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,GAAG,CAAC;AACnB,OAAO;AACP,MAAM;AACN;AACA,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,KAAK,KAAI;AACT,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtC,KAAK;AACL;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACxC;AACA,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3D;AACA,IAAI,GAAG,IAAI,CAAC,2BAA2B,KAAK,iBAAiB,CAAC;AAC9D,KAAK,IAAI,CAAC,2BAA2B,GAAG,iBAAiB,CAAC;AAC1D;AACA,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;AACzB,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG;AAC1B,GAAG,OAAO,CAAC,OAAO;AAClB,GAAG,QAAQ,CAAC,KAAK;AACjB,GAAG,OAAO,CAAC,KAAK;AAChB,GAAG,SAAS,CAAC,KAAK;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC3C,EAAE;AACF;AACA,CAAC,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC;AAChE,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;AACzC,EAAE,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAC3B,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC;AAC5G;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;AAC7C;AACA;AACA,EAAE,SAAS,MAAM,EAAE,EAAE;AACrB;AACA,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC;AAC/B,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3F,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACrF,GAAG;AACH;AACA,EAAE,GAAG,KAAK,CAAC;AACX;AACA;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,sBAAsB,IAAI,SAAS,KAAK,CAAC;AAChG,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC;AACjC,IAAI,CAAC;AACL;AACA,GAAG,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAC1D;AACA;AACA,GAAG,OAAO,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY;AAC/C,IAAI,KAAK,QAAQ;AACjB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/E;AACA,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC;AACpJ,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,CAAC;AACxD,QAAQ,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AACjD,QAAQ,CAAC;AACT,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAClH,MAAM;AACN,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;AAC7C,KAAK,MAAM;AACX;AACA,IAAI,KAAK,SAAS;AAClB,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,MAAM,KAAI;AACV,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACrG,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC7E;AACA,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,WAAW,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAC/I,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,CAAC;AACzD,SAAS,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAClD,SAAS,CAAC;AACV,QAAQ;AACR,OAAO,KAAI;AACX,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACzD,OAAO;AACP,MAAM;AACN,KAAK,MAAM;AACX,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC;AACb;AACA,IAAI,WAAW,GAAG;AAClB,KAAK,QAAQ,CAAC,UAAU;AACxB,MAAM,OAAO,OAAO,YAAY,KAAK,WAAW,GAAG,YAAY,GAAG,EAAE,CAAC;AACrE,MAAM;AACN,KAAK,QAAQ,CAAC,UAAU;AACxB,MAAM,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACrC,MAAM;AACN,KAAK,UAAU,CAAC,UAAU;AAC1B,MAAM,OAAO,aAAa,CAAC;AAC3B,MAAM;AACN,KAAK,SAAS,CAAC,UAAU;AACzB,MAAM,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AACnC,MAAM;AACN,KAAK,QAAQ,CAAC,MAAM;AACpB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC;AACxB,MAAM;AACN,KAAK,OAAO,CAAC,MAAM;AACnB,MAAM,OAAO,QAAQ,CAAC;AACtB,MAAM;AACN,KAAK,MAAM,CAAC,UAAU;AACtB,MAAM,OAAO;AACb,OAAO,eAAe,CAAC,UAAU;AACjC;AACA,QAAQ;AACR,OAAO,CAAC;AACR,MAAM;AACN,KAAK,CAAC;AACN;AACA,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,IAAI,EAAE,CAAC;AACxD;AACA,IAAI,MAAM,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC;AAC1F;AACA,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3G;AACA,IAAI,GAAG,CAAC,aAAa,CAAC;AACtB,KAAK,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,KAAK,GAAG,2CAA2C,CAAC,CAAC;AAChH,KAAK,OAAO;AACZ,KAAK;AACL;AACA,IAAI,GAAG,EAAE,aAAa,YAAY,IAAI,CAAC,CAAC;AACxC,KAAK,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,KAAK,GAAG,yEAAyE,EAAE,aAAa,CAAC,CAAC;AAC7J,KAAK,OAAO;AACZ,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC;AACrF,KAAK,aAAa,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;AACtL,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACvD,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACnD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC;AACpE;AACA,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9D;AACA,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACtD,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,aAAa,GAAG,SAAS,CAAC,CAAC;AAC/B,KAAK,GAAG,WAAW,CAAC;AACpB,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,MAAM;AACN;AACA,KAAK,WAAW,GAAG,UAAU,CAAC,UAAU;AACxC,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACvD,KAAK,CAAC;AACN;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;AACxD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;AACjI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACxE;AACA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,sBAAsB,KAAK,KAAK,CAAC;AAC1D;AACA,KAAK;AACL,MAAM;AACN,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,cAAc;AACxD,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW;AACrD,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,cAAc;AACpD,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW;AAChD,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI,CAAC;AAC/C,OAAO;AACP,OAAO;AACP,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7D,MAAM,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9D;AACA;AACA;AACA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;AACpD,OAAO,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3D,QAAQ,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,CAAC,CAAC;AACV,OAAO;AACP;AACA;AACA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;AACjF,OAAO,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpD;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC;AAC7I,MAAM,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5D,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3B,OAAO,CAAC,CAAC;AACT,MAAM;AACN,KAAK;AACL;AACA,IAAI,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC7C;AACA,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACrD;AACA,IAAI,GAAG,CAAC,YAAY,CAAC;AACrB,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,GAAG,kBAAkB,CAAC;AAC1B,KAAK,kBAAkB,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9G,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACnD,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACnE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC/D,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACnD,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACnE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC3D,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC7B,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AAClE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/C,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,6DAA6D,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClG,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC7B,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AAClE,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,GAAG,MAAM;AACT,GAAG,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC;AACpC,EAAE,IAAI,MAAM,CAAC;AACb,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACnE,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7F,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,MAAM,CAAC;AACb,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACnE,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChF,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7F,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC3B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC;AACjD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAClC,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AACtC,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxB,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AACtC,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5B,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACtC,GAAG;AACH;AACA,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,GAAG,OAAO,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;AACvC,GAAG,UAAU,GAAG,SAAS,IAAI,CAAC;AAC9B,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACjD,IAAI,CAAC;AACL,GAAG,KAAI;AACP;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC;AACA,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,UAAU,GAAG,SAAS,IAAI,CAAC;AAChC,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC9G,MAAM,CAAC;AACP,KAAK,KAAI;AACT,KAAK,UAAU,GAAG,SAAS,IAAI,CAAC;AAChC,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AACtG,MAAM,CAAC;AACP,KAAK;AACL;AACA;AACA,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACtF,IAAI;AACJ,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;AAC3B;AACA,EAAE,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AACtC,EAAE;AACF;AACA,CAAC,cAAc,CAAC,OAAO,CAAC;AACxB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACxC,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;AACtB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpC,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAChC,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;AACtC,KAAK,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;AAC5B,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;AACjC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACjC,GAAG,IAAI,IAAI,CAAC;AACZ;AACA,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACnD,IAAI,KAAI;AACR,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtE;AACA,IAAI,GAAG,IAAI,CAAC;AACZ,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;AACvC,MAAM,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;AAC7B,MAAM;AACN,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC;AACpC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpG,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AACjC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB;AACA,GAAG,GAAG,OAAO,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;AACtC,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK;AACnD,KAAK,OAAO,MAAM,KAAK,OAAO,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK;AACnD,KAAK,OAAO,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;AAC9G,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACrC,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,0DAA0D,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1F,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC/C,GAAG,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC;AACzD,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACvC,IAAI;AACJ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;AACjD,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AACxC,EAAE,IAAI,UAAU,GAAG,EAAE;AACrB,EAAE,UAAU,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5B,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9C,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC;AACpB;AACA,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAClC,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,KAAK,KAAK,GAAG,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACtF,IAAI;AACJ;AACA,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AACzB,EAAE,IAAI,UAAU,GAAG,EAAE;AACrB,EAAE,mBAAmB,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC9C,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACtH;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,KAAI;AACP,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC7C;AACA,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC/B,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACjD,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACrF,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;AACxB,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACtC,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC;AACtC,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5B,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACjC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC3C,KAAK,KAAK,GAAG,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC;AACD;AACA,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7B;AACA;AACA,MAAM,CAAC,OAAO,GAAG,cAAc;;ACr4BhB,kBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC9D;;ACFe,eAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB;;ACFe,mBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AACjD,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC9D;;ACHe,cAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3C,CAAC,IAAI,GAAG,EAAE;AACV,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;AACtC;AACA,CAAC,IAAI,UAAU,GAAG,eAAe,CAAC,OAAO,IAAI,GAAG,CAAC;AACjD,CAAC,IAAI,WAAW,GAAG,eAAe,CAAC,QAAQ,IAAI,GAAG,CAAC;AACnD,CAAC,IAAI,YAAY,GAAG,eAAe,CAAC,YAAY,IAAI,GAAG,CAAC;AACxD,CAAC,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC;AAC3C,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC;AAC3C,CAAC,IAAI,SAAS,GAAG,OAAO,eAAe,CAAC,SAAS,KAAK,WAAW,GAAG,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;AAClG;AACA,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACpB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/D,EAAE;AACF;AACA,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;AACjB,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,EAAE,IAAI,GAAG,YAAY,CAAC;AACtB,EAAE;AACF;AACA,CAAC,MAAM,GAAG,SAAS,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AACvE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC;AACA,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3D;AACA,CAAC,IAAI,eAAe,CAAC,QAAQ,KAAK,KAAK,EAAE;AACzC,EAAE,GAAG,GAAG,cAAc,CAAC;AACvB;AACA,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAC3B;AACA,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;AAClB,EAAE,KAAK,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC;AAC7B,EAAE,OAAO,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACjD,EAAE,KAAI;AACN,EAAE,OAAO,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAC/D,EAAE;AACF;;AC3Ce,aAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE;AAC5C,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ;AACpC,CAAC,KAAK,GAAG,KAAK;AACd,CAAC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,CAAC,IAAI,CAAC;AACN;AACA,CAAC,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AACnC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9C,GAAG,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC;AAC/B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,EAAE,KAAK,GAAG,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC;AACzG,EAAE;AACF;AACA,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;AAC1B,EAAE,OAAO,OAAO,eAAe,CAAC,KAAK;AACrC,GAAG,KAAK,QAAQ;AAChB,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,MAAM;AACV,GAAG;AACH,EAAE;AACF;AACA,CAAC,GAAG,KAAK,CAAC;AACV,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;AAC9B,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACzB,GAAG,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC;AACzB,GAAG,OAAO,OAAO,eAAe,CAAC,GAAG;AACpC,IAAI,KAAK,QAAQ;AACjB,KAAK,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC;AACjC,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,KAAK,MAAM;AACX,IAAI;AACJ,GAAG;AACH;AACA,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;AAC7C;AACA,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC;AAC5B,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;AAC9B;AACA,GAAG,GAAG,OAAO,QAAQ,IAAI,UAAU,CAAC;AACpC,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,QAAQ,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC;AACjD,IAAI;AACJ;AACA,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACzC,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,KAAI;AACN,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;;AC7Ee,cAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACvC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvB;AACA,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC;AAC9B,EAAE,GAAG,GAAG,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpD,EAAE;AACF;AACA,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC;AAC9B,EAAE,GAAG,GAAG,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC;AACxC,EAAE;AACF;AACA,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B;AACA,CAAC,OAAO,OAAO,eAAe,CAAC,MAAM;AACrC,EAAE,KAAK,QAAQ;AACf,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;AACnD,GAAG,MAAM;AACT;AACA,EAAE,KAAK,QAAQ;AACf,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;AAC5C,GAAG,MAAM;AACT,EAAE;AACF;AACA,CAAC,OAAO,OAAO,eAAe,CAAC,KAAK;AACpC,EAAE,KAAK,QAAQ;AACf,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACjD,GAAG,MAAM;AACT;AACA,EAAE,KAAK,QAAQ;AACf,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAC1C,GAAG,MAAM;AACT,EAAE;AACF;AACA,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU;AACvC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;AAClC,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,EAAE,CAAC;AACX;;ACvCe,oBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,CAAC,KAAK,GAAG,eAAe,CAAC,UAAU;AACnC,CAAC,MAAM,GAAG,eAAe,CAAC,WAAW;AACrC,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClE,CAAC,IAAI,GAAG,OAAO,eAAe,CAAC,WAAW,KAAK,WAAW,GAAG,eAAe,CAAC,WAAW,GAAG,okBAAokB;AAC/pB,CAAC,KAAK,GAAG,OAAO,eAAe,CAAC,YAAY,KAAK,WAAW,GAAG,eAAe,CAAC,YAAY,GAAG,2rBAA2rB,CAAC;AAC1xB;AACA,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,eAAe,CAAC,SAAS,MAAM,CAAC,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAChM,EAAE,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC7C,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,EAAE,KAAI;AACN,EAAE,GAAG,KAAK,KAAK,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC;AACnG,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACjD,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC/C,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;AACtB,GAAG;AACH,EAAE;AACF;;ACrBe,mBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;AAC5C,CAAC,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,IAAI,qBAAqB,CAAC;AACxE,CAAC,IAAI,YAAY,GAAG,eAAe,CAAC,YAAY,IAAI,qBAAqB,CAAC;AAC1E,CAAC,IAAI,OAAO,GAAG,OAAO,eAAe,CAAC,kBAAkB,KAAK,WAAW,GAAG,eAAe,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACnH,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,CAAC,GAAG,OAAO,EAAE,IAAI,WAAW,CAAC;AAC7B,EAAE,IAAI,WAAW,CAAC;AAClB;AACA,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,WAAW,GAAG,KAAK,CAAC;AACvB,GAAG,KAAK,GAAG,WAAW,KAAK,KAAK,CAAC;AACjC,GAAG,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;AACzB,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC;AAC/B,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChE,IAAI;AACJ;AACA,GAAG,OAAO,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC7C,GAAG,KAAI;AACP,GAAG,GAAG,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AACjC,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AAC1C,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,IAAI,KAAI;AACR,IAAI,OAAO,OAAO,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,KAAI;AACN,EAAE,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;AAChF,EAAE;AACF;;ACpCe,qBAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE;AAC5D,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;AAC5C,CAAC,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,IAAI,qBAAqB,CAAC;AACxE,CAAC,IAAI,OAAO,GAAG,OAAO,eAAe,CAAC,kBAAkB,KAAK,WAAW,GAAG,eAAe,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACnH,CAAC,IAAI,MAAM,GAAG,OAAO,eAAe,CAAC,MAAM,KAAK,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC;AAC7F,CAAC,IAAI,IAAI,GAAG,OAAO,eAAe,CAAC,IAAI,KAAK,WAAW,GAAG,eAAe,CAAC,IAAI,GAAG,MAAM,CAAC;AACxF,CAAC,IAAI,QAAQ,GAAG,OAAO,eAAe,CAAC,QAAQ,KAAK,WAAW,GAAG,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;AACnG,CAAC,IAAI,IAAI,GAAG,OAAO,eAAe,CAAC,IAAI,KAAK,WAAW,GAAG,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1F,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,CAAC,GAAG,OAAO,EAAE,IAAI,WAAW,CAAC;AAC7B,EAAE,IAAI,WAAW,CAAC;AAClB;AACA,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,WAAW,GAAG,KAAK,CAAC;AACvB,GAAG,KAAK,GAAG,WAAW,KAAK,KAAK,CAAC;AACjC,GAAG,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC;AAC1B,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AAClF,IAAI,KAAI;AACR,IAAI,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AACvF,IAAI;AACJ,GAAG,MAAM;AACT;AACA,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI,MAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AAC7C,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,IAAI,MAAM;AACV,IAAI,OAAO,OAAO,CAAC;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,KAAI;AACN,EAAE,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACpF,EAAE;AACF;;ACxCe,eAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE;AAC5D,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,CAAC,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE;AACpD,EAAE,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC,CAAC;AACrD,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAC/B;;ACTe,eAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,CAAC,QAAQ,GAAG,eAAe,IAAI,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,GAAG,CAAC;AAChF,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACvC,CAAC,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC;AACrE,CAAC,UAAU,GAAG,ySAAyS;AACvT,CAAC,YAAY,GAAG,ySAAyS,CAAC;AAC1T;AACA;AACA,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;AACtC;AACA;AACA,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9B;AACA,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD;AACA,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChD;AACA,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC9B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;AAC9D;AACA,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACrC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;AACzC;AACA,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC3C;AACA,CAAC,OAAO,KAAK,CAAC;AACd;;ACrCe,gBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACpD,CAAC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACpC,CAAC,GAAG,GAAG,eAAe,IAAI,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,GAAG;AACzE,CAAC,GAAG,GAAG,eAAe,IAAI,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC;AACvE,CAAC,MAAM,GAAG,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,WAAW,GAAG,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC9H,CAAC,KAAK,GAAG,SAAS;AAClB,CAAC,OAAO,EAAE,YAAY,CAAC;AACvB;AACA,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC;AAC3D,EAAE,OAAO;AACT,EAAE;AACF;AACA,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAC7C;AACA;AACA,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACnE,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;AACjF;AACA;AACA,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;AAC7B,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC;AAC3D;AACA;AACA,CAAC,OAAO,OAAO,MAAM;AACrB,EAAE,KAAK,QAAQ;AACf,GAAG,KAAK,GAAG,MAAM,CAAC;AAClB,GAAG,MAAM;AACT,EAAE,KAAK,UAAU;AACjB,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG,MAAM;AACT,EAAE,KAAK,QAAQ;AACf,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5B,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AAChD;AACA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,IAAI,MAAM;AACV,IAAI;AACJ,EAAE;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AAClC;AACA,CAAC,OAAO,EAAE,CAAC;AACX;;AC5Ce,mBAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,EAAE,EAAE,UAAU,CAAC;AAC/D,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACpD,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,GAAG;AACtD,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC;AACpD,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,GAAG,QAAQ;AACnF,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC;AACnD;AACA;AACA,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACnE,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;AACjF;AACA;AACA,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;AAC7B,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC;AAC3D;AACA;AACA,CAAC,OAAO,OAAO,eAAe,CAAC,KAAK;AACpC,EAAE,KAAK,QAAQ;AACf,GAAG,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AACjC,GAAG,MAAM;AACT,EAAE,KAAK,UAAU;AACjB,GAAG,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,GAAG,MAAM;AACT,EAAE,KAAK,QAAQ;AACf,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;AAClD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AAChD;AACA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM;AACV,IAAI;AACJ,EAAE;AACF,GAAG,KAAK,GAAG,SAAS,CAAC;AACrB,EAAE;AACF;AACA;AACA,CAAC,OAAO,OAAO,eAAe,CAAC,MAAM;AACrC,EAAE,KAAK,QAAQ;AACf,GAAG,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;AACnC,GAAG,MAAM;AACT,EAAE,KAAK,UAAU;AACjB,GAAG,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,GAAG,MAAM;AACT,EAAE,KAAK,SAAS;AAChB,GAAG,MAAM,GAAG,KAAK,CAAC;AAClB,GAAG,MAAM;AACT,EAAE;AACF,GAAG,MAAM,GAAG,KAAK,CAAC;AAClB,EAAE;AACF;AACA;AACA,CAAC,OAAO,OAAO,eAAe,CAAC,WAAW;AAC1C,EAAE,KAAK,QAAQ;AACf,GAAG,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;AAC7C,GAAG,MAAM;AACT,EAAE,KAAK,UAAU;AACjB,GAAG,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD,GAAG,MAAM;AACT,EAAE,KAAK,QAAQ;AACf,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACjD,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC;AACxD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AAChD;AACA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG,MAAM;AACT,EAAE;AACF,GAAG,WAAW,GAAG,MAAM,CAAC;AACxB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;AACjC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACrC;AACA,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAClD;AACA,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AACtC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,GAAG,CAAC;AACxC,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACrC;AACA,CAAC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC1C,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACnC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC;AACA,CAAC,GAAG,MAAM,CAAC;AACX,EAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACvC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACzB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1B,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;AACzC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAChC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;AACrC,EAAE,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,UAAU,CAAC,UAAU;AACtB;AACA;AACA,EAAE,GAAG,EAAE,IAAI,YAAY,aAAa,CAAC,CAAC;AACtC,GAAG,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACxC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;AAC9B,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AACjC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC/B,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC;AACA,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjC;AACA,GAAG,OAAO,GAAG,QAAQ,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACpC,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClC;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,EAAE,CAAC;AACX;;ACpIe,cAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9E,CAAC,OAAO,EAAE,CAAC;AACX;;ACHe,mBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,OAAO,okBAAokB,CAAC;AAC7kB;;ACFe,oBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,OAAO,0rBAA0rB,CAAC;AACnsB;;ACFe,eAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB;AACA,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,KAAK;AACjC,EAAE,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC/B,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,OAAO,CAAC;AAChB;;ACTe,eAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACzD,CAAC,OAAO,kLAAkL,CAAC;AAC3L;;ACHe,2BAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACvC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACtD;AACA,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AAC1D;AACA,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,CAAC;AACR;AACA,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACzD;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC;AAC5B,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;AACvB;AACA,EAAE,GAAG,UAAU,CAAC;AAChB;AACA,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAClB,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAClC,IAAI,KAAI;AACR,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACzC,EAAE,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAC/B,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC/C,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB;AACA,CAAC,OAAO,EAAE,CAAC;AACX;;ACzCe,qBAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;AAC1D,CAAC,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC;AACrB;AACA,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC;AAC5B;AACA,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACnD;AACA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5C;AACA,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC5C,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;AACtC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3B;AACA,GAAG,GAAG,GAAG,YAAY,YAAY,CAAC;AAClC;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;AAC/C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,OAAO,CAAC;AAC3D,MAAM,GAAG,CAAC,OAAO,CAAC;AAClB,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,OAAO,KAAI;AACX,OAAO,OAAO,GAAG,KAAK,CAAC;AACvB,OAAO;AACP,MAAM,KAAI;AACV,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;AACzB,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,OAAO,CAAC;AAC1D,KAAK,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC/C,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtE,MAAM,CAAC,CAAC;AACR,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC1E,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI;AACJ,GAAG,KAAK;AACR,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;AAC9C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC9B,KAAK,KAAK;AACV,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AACvE,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,QAAQ,CAAC;AACjB;;ACtCA,wBAAe;AACf,CAAC,SAAS,CAAC,SAAS;AACpB,CAAC,IAAI,CAACC,MAAI;AACV,CAAC,QAAQ,CAACC,UAAQ;AAClB,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC,SAAS,CAACC,WAAS;AACpB,CAAC,QAAQ,CAACC,UAAQ;AAClB,CAAC,YAAY,CAAC,YAAY;AAC1B,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,IAAI,CAACC,MAAI;AACV,CAAC,OAAO,CAAC,OAAO;AAChB,CAAC,QAAQ,CAACC,UAAQ;AAClB,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC,UAAU,CAAC,UAAU;AACtB,CAAC,WAAW,CAAC,WAAW;AACxB,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,kBAAkB,CAAC,kBAAkB;AACtC,CAAC,YAAY,CAAC,YAAY;AAC1B,CAAC;;ACtCD,MAAM,MAAM,SAAS,MAAM;AAC3B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;AACxD,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;AACpD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC3D;AACA,EAAE,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,cAAc,KAAK,WAAW,CAAC;AAC7D,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvE,GAAG;AACH;AACA,EAAE,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,kBAAkB,KAAK,WAAW,CAAC;AACjE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC/E,GAAG;AACH;AACA,EAAE,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,mBAAmB,KAAK,WAAW,CAAC;AAClE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACjF,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;AAC9B,EAAE,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9E,EAAE,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AACpD;AACA;AACA,EAAE,OAAO,OAAO,SAAS;AACzB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,KAAK,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACrD,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,SAAS,CAAC,CAAC;AAC5E,KAAK,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACpD,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACnD,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC1C,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;AAChC,EAAE,IAAI,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC9C;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;AACtC,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnE;AACA,GAAG,UAAU,GAAG,CAAC,QAAQ,KAAK;AAC9B,IAAI,MAAM,CAAC,sBAAsB,GAAG,QAAQ,CAAC;AAC7C,IAAI,CAAC;AACL;AACA,GAAG,QAAQ,GAAG;AACd,IAAI,QAAQ,CAAC,UAAU;AACvB,KAAK,OAAO,KAAK,CAAC;AAClB,KAAK;AACL,IAAI,UAAU,CAAC,UAAU;AACzB,KAAK,OAAO,EAAE,CAAC;AACf,KAAK;AACL,IAAI,OAAO,CAAC,UAAU;AACtB,KAAK,OAAO,QAAQ,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,CAAC,UAAU;AACxB,KAAK,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM;AACnB,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC;AACvB,KAAK;AACL,IAAI,CAAC;AACL;AACA,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,EAAE,CAAC;AACzD;AACA,GAAG,MAAM,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAC7D;AACA,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7D,GAAG,KAAI;AACP,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,EAAE,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACtJ;AACA,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC;AAC/B,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC7B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACnD,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACxF,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;AAC9B,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAClD,EAAE,MAAM,CAAC;AACT;AACA,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,MAAM,GAAG,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9G;AACA,GAAG,SAAS,UAAU,CAAC,QAAQ,CAAC;AAChC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACpD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzC,IAAI;AACJ;AACA,GAAG,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAClF;AACA,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,KAAK,CAAC;AACpB,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,SAAS,GAAG;AACnB,IAAI,GAAG,EAAE,OAAO;AAChB,IAAI,GAAG,EAAE,MAAM;AACf,IAAI,GAAG,EAAE,MAAM;AACf,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,GAAG,EAAE,OAAO;AAChB,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,CAAC;AACL;AACA,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE;AAC5D,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,KAAK,CAAC;AACpB,EAAE,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,EAAE,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC3F,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,SAAS,CAAC;AACxB,EAAE,OAAO,OAAO,SAAS;AACzB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,KAAK,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9C,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,SAAS,CAAC,CAAC;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB;AACA,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AAC5C,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF,CAAC;AACD;AACA,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7B;AACA;AACA,MAAM,CAAC,UAAU,GAAG,iBAAiB;;ACnNrC,MAAM,aAAa,SAAS,MAAM;AAClC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACnC,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACtC,EAAE;AACF;AACA;AACA,CAAC,KAAK,EAAE;AACR,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACnC,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9D,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC;AACA,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACrB;AACA,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC9C;AACA,IAAI,GAAG,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC;AACzC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,MAAM,CAAC;AACpB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACvD,GAAG,OAAO,CAAC,IAAI,CAAC,uGAAuG,CAAC,CAAC;AACzH,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3B,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1C,GAAG,KAAI;AACP,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACnC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACzC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;AAC7F,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1D,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;AAC7F,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1D,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;AACpE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5B,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI;AACJ;AACA,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvC,IAAI;AACJ;AACA,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC/B,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB;AACA,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AAC1C,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;AAClD,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3E;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACtC,IAAI,KAAI;AACR,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AACvC,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvC,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1C,KAAK,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAClC,KAAK,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACnC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACvD,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AAC3C;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACnD,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3E;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AACrC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACtC,IAAI,KAAI;AACR,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AACvC,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACtE,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACnC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACvD,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACjC,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACpG,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE;AACT,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC;AACA;AACA,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B;AACA,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B;AACA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC/D,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5F;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC5B,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACtB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC9B,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC7E,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACpG,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACvC,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,GAAG,GAAG,IAAI,CAAC;AACX,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACxC,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,GAAG,GAAG,IAAI,CAAC;AACX,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC;AAC/B,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;AACtC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACrB,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5E,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9C,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1D;AACA,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7C;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChF,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC9B,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;AAC9F,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;AAC3B,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACjC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACzB,IAAI,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC;AACD;AACA,aAAa,CAAC,UAAU,GAAG,eAAe;;ACvS1C,MAAM,UAAU,SAAS,MAAM;AAC/B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB;AACA;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF;AACA;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAChE;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACnI;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D;AACA,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,GAAG;AACH;AACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9F,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACnD,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;AAChD,EAAE,OAAO,GAAG,OAAO,UAAU,CAAC;AAC9B;AACA,EAAE,GAAG,OAAO,KAAK,QAAQ,CAAC;AAC1B,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC;AAChF,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG,KAAK,GAAG,OAAO,KAAK,UAAU,CAAC;AAClC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACrC,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC;AACpB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACjC,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AACjD,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACpB,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;AACzB;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACtC;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC3C;AACA,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB;AACA,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;AACxD,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AACxB;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AAC9B;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC3C;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACtC;AACA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,IAAI;AACJ;AACA,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;AAC1D,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAChC;AACA,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACvB,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAChC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC;AACD;AACA,UAAU,CAAC,UAAU,GAAG,YAAY;;ACvKpC;AACA,MAAM,cAAc,CAAC;AACrB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;AACpB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;AAC/B;AACA,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AACzB,GAAG,GAAG,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;AAC7C,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK,KAAI;AACT,KAAK,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1G,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACzB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AACxE,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrB,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrB,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACjC,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;AAC9B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACjG,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AACxC,EAAE;AACF;;ACjEA;AACA,MAAM,KAAK;AACX;AACA,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC1E,EAAE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACnC,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;AACvE,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACtB,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,OAAO,IAAI,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClK;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,IAAI,CAAC,YAAY,CAAC;AACnB,EAAE,GAAG,CAAC,YAAY,CAAC;AACnB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAC1C,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC/B,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;AACpB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC;AACA;AACA,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3G,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACvE,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/E,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC7D,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACxD,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;AACpH;AACA,GAAG,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAClD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,OAAO,CAAC;AACtE,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AACzB,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAClC,KAAK;AACL;AACA;AACA,IAAI,UAAU,CAAC,MAAM;AACrB,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7B,EAAE,IAAI,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC;AACvC,EAAE,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;AACjP;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7B;AACA,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACvB,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC5E,GAAG,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC;AACpC;AACA,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChF,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,CAAC;AACb,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACrC;AACA,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtC;AACA,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AAClB,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACtC,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B;AACA;AACA;AACA,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AAChH,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjE,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACvB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACzC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACnB;AACA;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAChB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;AAC/G,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACjB,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC5B;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACvE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA,GAAG,KAAI;AACP;AACA,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;AACpB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAClC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AACrC,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACvC;AACA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AAClH,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnE,KAAK;AACL,IAAI;AACJ;AACA,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG;AAC9C,EAAE,KAAK,CAAC;AACR;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACnB,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB;AACA;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACpB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAClC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAChC,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACvB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AACrC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACnC,GAAG;AACH;AACA;AACA;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAC1C,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACvD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/K,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5F,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,KAAK;AACL;AACA,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACnL,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClG,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AACvF;AACA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACxD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAClE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,OAAO;AACP,MAAM;AACN;AACA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;AACrE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,OAAO;AACP,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB;AACA,EAAE,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC;AAClD,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;AACA,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3B,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACrC,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;AACjC,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAClH;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC5D;AACA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACtC;AACA,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1C;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3B,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,MAAM,CAAC,CAAC;AACR,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC/B,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAClC,KAAK,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AACxG,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAClH;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzD;AACA,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACrC;AACA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACtC,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1C;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3B,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5D,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACvB,MAAM,IAAI,GAAG,KAAK,CAAC;AACnB,MAAM,CAAC,CAAC;AACR,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC/B,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAClC,KAAK,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC;AACtB,KAAK,IAAI,GAAG,KAAK,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;AACvG,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC;AACvC;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAClC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACxF,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3B,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACzC,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,KAAK,GAAG,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC;AACnC,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC;AACxB,IAAI,CAAC,CAAC;AACN,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,YAAY,CAAC,SAAS,CAAC;AACxB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACxC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC;AACpC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,GAAG,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACrC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;AACtE,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAClC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC;AACtD,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,2BAA2B,EAAE;AAC9B,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAC5B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACjG;AACA,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnF;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC;AAC9C,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;AACjD,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxE,EAAE;AACF;AACA,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE;AACpB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AAClB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACtE,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzD,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzD,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,GAAG;AACH;AACA,EAAE,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACrC;AACA;AACA;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,UAAU,CAAC,KAAK,CAAC;AAClB,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;AAChC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB;AACA,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;AAC3B,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAChD,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE,EAAE;AACvB;AACA,CAAC,UAAU,EAAE,EAAE;AACf;AACA,CAAC,aAAa,EAAE,EAAE;AAClB;AACA,CAAC,eAAe,EAAE,EAAE;AACpB;AACA,CAAC,kBAAkB,EAAE,EAAE;AACvB;AACA,CAAC,QAAQ,EAAE,EAAE;AACb;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,EAAE;AACF;;AChmBA,MAAM,SAAS,SAAS,MAAM;AAC9B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;AACA;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACxD,EAAE,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC1D;AACA;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF;AACA;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E;AACA,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACxD;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;AAC3C,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;AAChD,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AAChD;AACA,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACvD;AACA,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AAClG,IAAI,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;AAClG,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,IAAI,KAAK;AACrD,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK;AACtD,KAAK,OAAO,CAAC,OAAO,KAAK,KAAK,WAAW,GAAG,EAAE,GAAG,KAAK,IAAI,SAAS,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;AACjJ,KAAK,CAAC;AACN,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC5B;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;AACpI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAClD,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;AACxF;AACA,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;AAC1D;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3B,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAChC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AACzD,OAAO;AACP;AACA,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;AAC5D,OAAO;AACP,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK;AACjC,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC;AAC3B;AACA,IAAI,GAAG,OAAO,KAAK,IAAI,UAAU,CAAC;AAClC,KAAK,UAAU,GAAG,KAAK,CAAC;AACxB,KAAK,KAAI;AACT,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC/D;AACA,KAAK,GAAG,MAAM,CAAC;AACf,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC;AACjC,OAAO,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC,OAAO,CAAC;AACR,MAAM,KAAI;AACV,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC;AACjC,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAO,CAAC;AACR,MAAM;AACN,KAAK;AACL;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC7B,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK;AACvD,KAAK,IAAI,CAAC,UAAU;AACpB,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK;AAC9D,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,SAAS,CAAC;AAChB,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACjC,KAAK,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAEjC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,IAAI;AACJ;AACA,GAAG,GAAG,WAAW,CAAC;AAClB,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;AACpF,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACpD;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC/B,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAChC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;AACtF,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;AAChC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,GAAG,IAAI,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1C;AACA,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,GAAG,GAAG,CAAC;AACZ,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAC9B,OAAO,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACtF,OAAO;AACP,MAAM,KAAI;AACV,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC;AAChD,OAAO,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACtF,OAAO;AACP,MAAM;AACN,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACpF,KAAK;AACL,IAAI;AACJ;AACA,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AACtC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B;AACA,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;AAC/F,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;AACtD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,WAAW,CAAC;AAC5B,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/C,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC;AAC7C,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;AAChF,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;AAC1C,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;AAChF,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,MAAM,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7E,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AACtE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,YAAY,KAAK,CAAC;AACpC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC1D,IAAI;AACJ;AACA,GAAG,IAAI,OAAO,GAAG,EAAE,YAAY,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7D,GAAG,IAAI,SAAS,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACrE;AACA,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC;AAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACxE,IAAI,KAAI;AACR,IAAI,GAAG,SAAS,CAAC;AACjB,KAAK,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACvC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACrD,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACpC,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC9D;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACzC;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7B;AACA,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;AACjC;AACA,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,SAAS,CAAC;AACrB,EAAE,IAAI,eAAe,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACxC,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC;AAClE,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,eAAe,CAAC;AACzB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,IAAI,eAAe,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,KAAK,GAAG,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACrC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7B,IAAI,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,IAAI,KAAI;AACR,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,eAAe,CAAC;AACzB,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AACzC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACjB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,SAAS,EAAE;AAC9B,EAAE,IAAI,aAAa,GAAG,EAAE,CAAC;AACzB;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC/B,GAAG,IAAI,WAAW,GAAG,EAAE,CAAC;AACxB,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;AACzB,GAAG,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,GAAG,WAAW,CAAC,aAAa,GAAG,EAAE,CAAC;AAClC,GAAG,IAAI,SAAS,GAAG,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE;AAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACxD;AACA,IAAI,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACpC,IAAI,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AACrE,IAAI,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpG;AACA,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,QAAQ;AACR,IAAI,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACpC,IAAI,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjG,IAAI,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;AAClD;AACA,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC;AACA,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrC,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,aAAa,CAAC;AACvB,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB;AACA,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9B,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACpC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,KAAK,GAAG,MAAM,CAAC;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACjD,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAClD,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1C,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9C,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;AACvC,EAAE,IAAI,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,OAAO;AACtC,EAAE,KAAK,CAAC;AACR;AACA,EAAE,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;AAC9B;AACA,EAAE,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7H;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC;AACzC,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC1D,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;AAC5B;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AACjC,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC1D,EAAE,cAAc,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;AAChD;AACA,EAAE,GAAG,cAAc,CAAC;AACpB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1C;AACA,EAAE,OAAO,CAAC,cAAc,CAAC;AACzB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACxB,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AACxB,GAAG,IAAI,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK;AACtC,GAAG,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE;AACvC,GAAG,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AAC3C,GAAG,QAAQ,CAAC;AACZ;AACA;AACA,GAAG,QAAQ,GAAG,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AACrG,IAAI,OAAO,OAAO,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN;AACA;AACA,GAAG,GAAG,CAAC,QAAQ,EAAE;AACjB,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,GAAG,EAAE;AACtB,EAAE,IAAI,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC3C,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,KAAK,CAAC;AACvB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACrC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACtD,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC;AACxD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1D,IAAI;AACJ;AACA,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACrC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG;AAC9C,EAAE,KAAK,CAAC;AACR;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,8BAA8B,EAAE;AACjC,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY;AAClD,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI;AAChE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AACzC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxB;AACA,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,gBAAgB,CAAC;AACtB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AACvE,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA,CAAC;AACD;AACA,SAAS,CAAC,UAAU,GAAG,WAAW;;AC7nBlC,qBAAe;AACf,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC;AAC3B,EAAE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7D,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC;AACzB,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,SAAS,EAAE,SAAS,MAAM,CAAC;AAC5B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxG;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC;AAC1B,EAAE,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7D;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9H;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;AACjD,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;AAC7C,EAAE;AACF,CAAC;;AC5BD,qBAAe;AACf,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC;AAC3B,EAAE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7D,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC;AACzB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxG;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC;AAC3B,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxI;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;AACjD,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;AAC7C,EAAE;AACF,CAAC;;ACnBD,MAAM,OAAO,SAAS,MAAM;AAC5B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzG,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB,EAAE,IAAI,KAAK,EAAE,IAAI,CAAC;AAClB;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC;AACA,GAAG,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACxD,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACjD;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,EAAE;AACF;AACA,CAAC,KAAK,EAAE;AACR,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,EAAE;AACF;AACA,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,GAAG,IAAI,CAAC,IAAI;AACZ,GAAG,SAAS,CAAC,SAAS;AACtB,GAAG,IAAI,CAAC,IAAI;AACZ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAChB,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACxB,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChD,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACjC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC;AACnD,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AACvC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;AACzC,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnG;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;AAChE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,EAAE;AACP,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACxC;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB;AACA,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnG;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;AAChE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACvC,GAAG,GAAG,MAAM,CAAC,SAAS,YAAY,GAAG,CAAC;AACtC,IAAI,GAAG,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC;AACnC,KAAK,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;AAC/B,KAAK;AACL,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,YAAY,IAAI,CAAC;AAC7C,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,MAAM,CAAC;AACvC,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpD;AACA,KAAK,GAAG,KAAK,CAAC;AACd,MAAM,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,MAAM;AACN;AACA,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC;AACD;AACA,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;AAC/B;AACA;AACA,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC;AACjC,OAAO,CAAC,OAAO,GAAG,cAAc;;ACvKhC,MAAM,eAAe,SAAS,MAAM;AACpC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,KAAK,OAAO,CAAC;AAClF,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;AACnD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,qIAAqI,CAAC,CAAC;AACxJ,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;AAC1C,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;AAC9B,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC9C,EAAE,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,IAAI,GAAG,EAAE,CAAC;AACZ;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrD;AACA;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC;AACA,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;AACpB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH;AACA;AACA,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AAClD,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,GAAG,KAAK,GAAG,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACzC,GAAG,IAAI,GAAG,EAAE,CAAC;AACb;AACA;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAChC,IAAI;AACJ;AACA,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACxC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;AACjD,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/C,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACxC,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC;AAClD,EAAE,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACtC,EAAE,IAAI,UAAU,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvF,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB;AACA,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;AAC1C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,IAAI,KAAK,IAAI,UAAU,CAAC;AAC9B,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,GAAG,IAAI,IAAI,CAAC;AACZ;AACA,GAAG,GAAG,MAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACpG,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACjD;AACA,IAAI,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;AAChD,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,KAAK,CAAC;AACpB,EAAE,GAAG,KAAK,KAAK,MAAM,CAAC;AACtB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,GAAG,KAAK,KAAK,OAAO,CAAC;AACvB,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1D,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;AACjC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,IAAI,KAAK,CAAC;AACxB,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/B,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AACrD,GAAG,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,GAAG,MAAM,GAAG,KAAK;AACjB,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;AAC1C,GAAG,KAAK,CAAC;AACT;AACA,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,IAAI,KAAI;AACR,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;AAClB,IAAI,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACxC;AACA,GAAG,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC3B,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,IAAI;AACJ;AACA;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAC9F;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtC;AACA,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,IAAI;AACJ;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;AACrC,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AACrD,GAAG,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACzC;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtC;AACA,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC5C;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,eAAe,CAAC,UAAU,GAAG,iBAAiB;;ACnL9C,SAAS,WAAW,CAAC,KAAK,CAAC;AAC3B,CAAC,IAAI,IAAI,GAAG,EAAE;AACd,CAAC,GAAG,GAAG,CAAC;AACR,CAAC,GAAG,GAAG,CAAC;AACR,CAAC,OAAO,GAAG,KAAK,CAAC;AACjB;AACA;AACA,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACpD,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,EAAE,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,GAAG;AACH;AACA;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAI,GAAG,EAAE;AACjD,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC1B,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,SAAS;AACZ,GAAG;AACH;AACA;AACA,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE;AACnB,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC;AACtB,GAAG,SAAS;AACZ,GAAG;AACH;AACA;AACA,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/B,GAAG,GAAG,EAAE,CAAC;AACT,GAAG,SAAS;AACZ,GAAG;AACH;AACA;AACA,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACpD,GAAG,GAAG,GAAG,CAAC,CAAC;AACX,GAAG,GAAG,EAAE,CAAC;AACT,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,SAAS;AACZ,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AAClD,GAAG,GAAG,GAAG,CAAC,CAAC;AACX,GAAG,GAAG,EAAE,CAAC;AACT,GAAG,SAAS;AACZ,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACzB,EAAE;AACF;AACA,CAAC,OAAO,IAAI,CAAC;AACb;;AC5De,eAAQ,CAAC,KAAK,CAAC;AAC9B,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ,EAAE,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,CAAC;AACvE,EAAE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1B,EAAE;AACF;;ACPA,SAAS,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC,OAAO,KAAK,CAAC;AACd;;ACEA,uBAAe;AACf,CAAC,GAAG,CAACC,WAAG;AACR,CAAC,IAAI,CAACC,MAAI;AACV,CAAC,KAAK,CAACC,aAAK;AACZ,CAAC;;ACJD,MAAM,MAAM,SAAS,MAAM;AAC3B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACnD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACrC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,IAAI,KAAK,QAAQ,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtI,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC;AACrD,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC;AACrD,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK;AACnB,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAC;AACnE,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,CAAC,CAAC;AACN,EAAE;AACF;AACA,CAAC,cAAc,CAAC,YAAY,CAAC;AAC7B,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,GAAG,CAAC,YAAY,CAAC;AACnB,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAClD,GAAG;AACH;AACA,EAAE,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC;AACtC,GAAG,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC7C,GAAG,KAAI;AACP,GAAG,QAAQ,GAAG,YAAY,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC;AACf,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC;AACrE,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;AACxC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AACnD;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/C,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK;AACpB,KAAK,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAC;AACpE,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrB,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/C,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACvB,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AAC7B;AACA,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;AAC3C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAC9B;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;AAC1C,KAAK,KAAK,QAAQ;AAClB,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,QAAQ;AAClB,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,KAAK;AACf,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACjC,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,MAAM,CAAC;AACjB,KAAK;AACL,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;AAC3B,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK,CAAC;AACN;AACA,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;AAC5B,KAAK,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;AAC3D,KAAK,MAAM,EAAE,CAAC;AACd,KAAK,CAAC;AACN,IAAI,CAAC,CAAC;AACN;AACA,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AACjB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC;AACnC,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACrD;AACA,EAAE,GAAG,IAAI,YAAY,OAAO,CAAC;AAC7B,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1D,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACrC,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACnD,IAAI,KAAI;AACR,IAAI,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,UAAU,CAAC;AACrB,GAAG;AACH,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,UAAU,CAAC;AACnC,EAAE,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;AACnC;AACA,EAAE,IAAI,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACxC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAChB;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,GAAG,CAAC;AACd,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,UAAU,CAAC;AACpC,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AACpC;AACA;AACA,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;AACvB,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAClC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAChB;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACrC,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AACpC,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE;AACF,CAAC;AACD;AACA,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7B;AACA;AACA,MAAM,CAAC,SAAS,GAAG,gBAAgB;;AC1LnC,MAAM,WAAW,SAAS,MAAM;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG;AAClB;AACA,GAAG,QAAQ,CAAC,WAAW;AACvB,GAAG,WAAW,CAAC,cAAc;AAC7B,GAAG,UAAU,CAAC,iBAAiB;AAC/B,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,YAAY,CAAC,eAAe;AAC/B,GAAG,WAAW,CAAC,cAAc;AAC7B,GAAG,YAAY,CAAC,eAAe;AAC/B,GAAG,YAAY,CAAC,eAAe;AAC/B,GAAG,UAAU,CAAC,aAAa;AAC3B,GAAG,MAAM,CAAC,KAAK;AACf,GAAG,SAAS,CAAC,KAAK;AAClB,GAAG,UAAU,CAAC,KAAK;AACnB;AACA;AACA,GAAG,SAAS,CAAC,YAAY;AACzB,GAAG,YAAY,CAAC,eAAe;AAC/B,GAAG,WAAW,CAAC,kBAAkB;AACjC,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,YAAY,CAAC,eAAe;AAC/B,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,WAAW,CAAC,cAAc;AAC7B,GAAG,OAAO,CAAC,MAAM;AACjB,GAAG,UAAU,CAAC,MAAM;AACpB,GAAG,WAAW,CAAC,MAAM;AACrB;AACA;AACA,GAAG,WAAW,CAAC,cAAc;AAC7B,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,aAAa,CAAC,oBAAoB;AACrC,GAAG,gBAAgB,CAAC,mBAAmB;AACvC,GAAG,gBAAgB,CAAC,mBAAmB;AACvC,GAAG,eAAe,CAAC,kBAAkB;AACrC,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,eAAe,CAAC,kBAAkB;AACrC,GAAG,eAAe,CAAC,kBAAkB;AACrC,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,SAAS,CAAC,QAAQ;AACrB,GAAG,YAAY,CAAC,QAAQ;AACxB,GAAG,aAAa,CAAC,QAAQ;AACzB;AACA;AACA,GAAG,UAAU,CAAC,aAAa;AAC3B,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,YAAY,CAAC,mBAAmB;AACnC,GAAG,eAAe,CAAC,kBAAkB;AACrC,GAAG,eAAe,CAAC,kBAAkB;AACrC,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,aAAa,CAAC,gBAAgB;AACjC,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,cAAc,CAAC,iBAAiB;AACnC,GAAG,YAAY,CAAC,eAAe;AAC/B,GAAG,QAAQ,CAAC,OAAO;AACnB,GAAG,WAAW,CAAC,OAAO;AACtB,GAAG,YAAY,CAAC,OAAO;AACvB,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,aAAa,GAAG;AACvB,GAAG,GAAG,CAAC;AACP,IAAI,GAAG,CAAC,IAAI;AACZ,IAAI,MAAM,CAAC,IAAI;AACf,IAAI,OAAO,CAAC,IAAI;AAChB,IAAI;AACJ,GAAG,IAAI,CAAC;AACR,IAAI,GAAG,CAAC,IAAI;AACZ,IAAI,MAAM,CAAC,IAAI;AACf,IAAI,OAAO,CAAC,IAAI;AAChB,IAAI;AACJ,GAAG,MAAM,CAAC;AACV,IAAI,GAAG,CAAC,IAAI;AACZ,IAAI,MAAM,CAAC,IAAI;AACf,IAAI,OAAO,CAAC,IAAI;AAChB,IAAI;AACJ,GAAG,KAAK,CAAC;AACT,IAAI,GAAG,CAAC,IAAI;AACZ,IAAI,MAAM,CAAC,IAAI;AACf,IAAI,OAAO,CAAC,IAAI;AAChB,IAAI;AACJ,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAChD;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1B,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;AACpD,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH;AACA,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB;AACA,EAAE,GAAG;AACL,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC3B,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC5C,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AACnC,IAAI,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;AAC5C,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI;AACJ,GAAG,MAAM,CAAC,CAAC,EAAE;AACb,EAAE;AACF;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC/B,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAClF,GAAG;AACH,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC;AAChC,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzD,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC/F,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;AAClD,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5F,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACxF;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;AACrF,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;AACjF,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,GAAG,CAAC;AAC5B,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC5D,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC9B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACjC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;AACxF,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;AACvD,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC/B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACtC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC;AAC7B,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC;AACxC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,EAAE,GAAG,IAAI,KAAK,QAAQ,CAAC;AACvB,GAAG,IAAI,GAAG,QAAQ,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,MAAM;AACf,GAAG,KAAK,OAAO;AACf,IAAI,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,IAAI,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM;AACxC,KAAK,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpC,KAAK,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B;AACA,KAAK,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;AACzB,KAAK,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAC5B;AACA,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AACzD,KAAK,EAAE,IAAI,CAAC,CAAC;AACb,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC;AACpB;AACA,KAAK,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;AACzB,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AACrD,KAAK;AACL;AACA,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AACvB,KAAK,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAC5B;AACA,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AACxD,KAAK,KAAI;AACT,KAAK,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AACxC,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpC,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,KAAK;AACL;AACA,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,IAAI,MAAM;AACV,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC;AACpC,EAAE,IAAI,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE;AAC7C,EAAE,QAAQ,CAAC;AACX;AACA,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,SAAS,YAAY,IAAI,CAAC;AAChC,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,IAAI,KAAK,GAAG,SAAS,YAAY,MAAM,CAAC;AACxC,IAAI,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI;AACJ;AACA,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AACjD,EAAE;AACF,CAAC;AACD;AACA,WAAW,CAAC,UAAU,GAAG,aAAa;;AC9UtC,sBAAe;AACf,CAAC,OAAO,CAAC,WAAW;AACpB,CAAC,OAAO,CAAC,CAAC;AACV,CAAC,KAAK,CAAC,EAAE;AACT,CAAC,OAAO,CAAC,EAAE;AACX,CAAC,YAAY,CAAC,EAAE;AAChB,CAAC,cAAc,CAAC,EAAE;AAClB,CAAC,aAAa,CAAC,EAAE;AACjB,CAAC,WAAW,CAAC,EAAE;AACf,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC;AAChC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC;AAChC,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC;AAC3C,CAAC;;ACZD,qBAAe;AACf,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrB,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACtB,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB,EAAE;AACF,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACzB,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;AACxC,EAAE,MAAM,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AAClE;AACA,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC;AACjC,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC;AAClB,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;AAC1C,IAAI,KAAI;AACR,IAAI,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B,EAAE;AACF,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC3B,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;AACxC,EAAE,MAAM,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY;AACjE,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9C;AACA,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC;AACjC,GAAG,GAAG,MAAM,IAAI,SAAS,CAAC;AAC1B,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;AAC1C,IAAI,KAAI;AACR,IAAI,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B;AACA,EAAE;AACF,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC1B,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACzC;AACA,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC;AACjC,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B,EAAE;AACF,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACxB,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACzC;AACA,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC;AACjC,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AACxF,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B,EAAE;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAC3C,EAAE;AACF;AACA,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AACxC,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC;AACnB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACnG;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C;AACA,GAAG,GAAG,CAAC,IAAI,CAAC;AACZ,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC;AACnB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACnG;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C;AACA,GAAG,GAAG,CAAC,IAAI,CAAC;AACZ,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC5B,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnD,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;;ACjHD,MAAM,WAAW,SAAS,MAAM;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAClD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;AAC/C,EAAE,cAAc,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,GAAG,QAAQ,KAAK,KAAK,CAAC;AACxB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvD,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC3C;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACpC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE;AACF;AACA,CAAC,WAAW,CAAC,QAAQ,CAAC;AACtB,EAAE,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC;AAC1B,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrB,KAAK,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;AAC1C,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,MAAM;AACN;AACA,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACxC,MAAM,IAAI,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AACtE;AACA,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACpC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,OAAO,CAAC,CAAC;AACT,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;AAC7D,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;AAChC,EAAE,IAAI,OAAO,GAAG;AAChB,GAAG,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AACtC,GAAG,IAAI,EAAE,EAAE;AACX,GAAG,IAAI,EAAE,KAAK;AACd,GAAG,KAAK,EAAE,KAAK;AACf,GAAG,IAAI,EAAE,KAAK;AACd,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpF;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,OAAO,MAAM;AAChB,IAAI,KAAK,MAAM;AACf,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,KAAK,MAAM;AACX;AACA,IAAI,KAAK,OAAO;AAChB,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,KAAK,MAAM;AACX;AACA,IAAI,KAAK,MAAM;AACf,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpF,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAClC,MAAM;AACN;AACA,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;AACjC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;AACxB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,GAAG,GAAG,QAAQ,CAAC;AACf;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC;AACtC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;AACnC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;AACxB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,GAAG,GAAG,QAAQ,CAAC;AACf;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C;AACA,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI;AACJ,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACpE,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACvB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACxE,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AACzB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxE,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;AACzB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;AAC3F,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9C;AACA,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AACnB,KAAK,KAAK,GAAG,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC;AACD;AACA,WAAW,CAAC,UAAU,GAAG,aAAa,CAAC;AACvC;AACA;AACA,WAAW,CAAC,QAAQ,GAAG,eAAe,CAAC;AACvC,WAAW,CAAC,OAAO,GAAG,cAAc;;ACxKpC,MAAM,IAAI,SAAS,MAAM;AACzB;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC/B,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC/D,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACxE,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACvC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACvG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACjG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACrC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AACxC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACrG,GAAG;AACH,EAAE;AACF;AACA,CAAC,uBAAuB,EAAE;AAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACzC,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC3G,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACrG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACvC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACnG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzG,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B;AACA;AACA,EAAE,GAAG,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;AACxE,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC5G,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAClF,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACjG,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;AACpE,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACxG,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC1E,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAC1E,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAC9G,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAChF,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC;AACpB,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC3C,GAAG;AACH;AACA;AACA,EAAE,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5D,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC9F,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC1E,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AACvF,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACxD,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1F,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AAC9D,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAChG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACxE,GAAG;AACH,EAAE;AACF;AACA,CAAC,0BAA0B,CAAC,MAAM,CAAC;AACnC,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc;AAC7C,EAAE,YAAY,CAAC;AACf;AACA,EAAE,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC9D;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC;AACjC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AACvC,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,YAAY,WAAW,CAAC;AAClC,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,KAAI;AACR,IAAI,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,YAAY,CAAC,SAAS,GAAG,UAAU,CAAC;AACvC,GAAG;AACH;AACA,EAAE,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAChD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/D,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AACjF,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACxC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAChB,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;AAC5C,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AACpB,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;AAClC,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;AACtB,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,GAAG,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1B,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,IAAI,GAAG,OAAO,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/F;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACpC,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;AACpD,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,UAAU,CAAC;AACxC,EAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,EAAE,KAAK,CAAC;AACR;AACA,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACzC;AACA,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB,GAAG;AACH;AACA;AACA,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,GAAG,OAAO;AACV,GAAG;AACH;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC;AACf,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3B;AACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AACtB,KAAK,OAAO;AACZ,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM;AAC5C,KAAK,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAClC,KAAK,EAAE,GAAG,CAAC,CAAC;AACZ,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/C;AACA,GAAG,KAAI;AACP,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACrC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACzB,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK;AACrB,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B;AACA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AACrB,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACrD,IAAI,KAAI;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAChD;AACA,IAAI,GAAG,OAAO,KAAK,IAAI,UAAU,CAAC;AAClC,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AAC9D,KAAK;AACL;AACA,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC;AAC7B,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK,KAAI;AACT,KAAK,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,GAAG,OAAO,QAAQ,IAAI,UAAU,CAAC;AACrC,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AACpE,KAAK;AACL;AACA,IAAI,GAAG,QAAQ,CAAC;AAChB,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC1D,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC7C,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;AAC1B,MAAM,CAAC,CAAC;AACR,KAAK,KAAI;AACT,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC9C,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,OAAO,CAAC,CAAC;AACT,MAAM,KAAI;AACV,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACrB,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC/C,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AACjD,QAAQ,CAAC,CAAC;AACV,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACzD,KAAK;AACL,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC1C,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AAC5B;AACA,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC;AAC9B,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM;AACnC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B;AACA,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC7B,KAAK,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC;AAC/E,KAAK,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAClC,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACrC;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AACjE,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,IAAI,CAAC,UAAU,GAAG,MAAM;;ACxSxB,MAAM,WAAW,SAAS,MAAM;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC5D,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACzB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACpD,EAAE;AACF;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAChD;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACvC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,KAAK,CAAC;AACR;AACA,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/C,GAAG,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AACjC,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3K,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnD,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AACjF,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,OAAO;AACP,MAAM,KAAI;AACV,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;AAClD,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACrE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtC,OAAO;AACP,MAAM;AACN,KAAK;AACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB;AACA,GAAG,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACrB,KAAK,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACrB,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1B,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC;AACrC,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,CAAC;AACxB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE;AACjC,EAAE,UAAU,GAAG,KAAK;AACpB,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AACnF;AACA,EAAE,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK;AAC9C,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM;AACxC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAClC,IAAI,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAClC,IAAI,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACxB,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACtB;AACA,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK;AAC7C,GAAG,IAAI,IAAI,EAAE,SAAS,CAAC;AACvB;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,IAAI,GAAG,CAAC,UAAU,CAAC;AACnB,KAAK,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;AAC3C;AACA,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAChB,KAAK,GAAG,OAAO,IAAI,IAAI,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAC1D,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B;AACA,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;AAC9B,OAAO,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;AACnH,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,OAAO;AACP,MAAM;AACN,KAAK,KAAI;AACT,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,GAAG,gBAAgB,IAAI,YAAY,CAAC;AAC5D,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B;AACA,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;AAC9B,OAAO,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;AACvG,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzC,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,SAAS,CAAC;AACjB,KAAK,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;AACtC,KAAK,gBAAgB,GAAG,YAAY,CAAC;AACrC,KAAK,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD,KAAK,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;AACtC,KAAK,gBAAgB,GAAG,YAAY,CAAC;AACrC,KAAK,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD,KAAK;AACL,IAAI;AACJ,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACtB;AACA,EAAE,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK;AAC5C,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AACxB,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;AACrB,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AACnC,EAAE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE;AAC/D,EAAE,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;AAChE;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AACjG;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC7D;AACA;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AACjE,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;AACnE;AACA,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AACpE,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1C;AACA;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACtD;AACA,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AACrC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC;AACrG;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAClE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3F,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAClE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9F,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1B,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;AACtB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,CAAC,CAAC;AACX,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;AACrC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B;AACA,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAClH,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC3E,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/D;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjE;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACxF,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACtB,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACnE,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/D,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,CAAC,CAAC;AACb,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE;AAClE,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU;AACtC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,UAAU;AAC7G,EAAE,SAAS,CAAC;AACZ;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;AAC7D;AACA,EAAE,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC9B,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM;AAC9C,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC;AAC/D,KAAK,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACpC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,UAAU,GAAG,YAAY,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC1E,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC9B,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM;AAC9C,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC;AAC/D,KAAK,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACpC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,WAAW,CAAC,UAAU,GAAG,YAAY;;ACrSrC,MAAM,QAAQ,SAAS,MAAM;AAC7B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC5D,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACzB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AACzC,EAAE,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;AAC3C,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAChE,EAAE,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AAC5D;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE;AACF;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAChD;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC;AAClF,GAAG,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,4BAA4B,CAAC;AACtF;AACA,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,2BAA2B,CAAC;AACxF;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAC7B,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,MAAM,GAAG,EAAE,CAAC;AACd;AACA;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf;AACA;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAChC,GAAG,IAAI,KAAK,CAAC;AACb;AACA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5H,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,KAAK,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAChC,KAAK,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/E,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC;AAC/C,KAAK,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAChC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;AAC9B,MAAM,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACpE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AACjC,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,KAAK,CAAC;AACR;AACA;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf;AACA;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAChC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAChC;AACA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAClH,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,KAAK,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/E,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;AAC7C,KAAK,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACnE,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf;AACA;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACrB;AACA,GAAG,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC5B;AACA,GAAG,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACrB,KAAK,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACrB,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1B,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/C,GAAG;AACH;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;AAC7E,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC;AAClF,GAAG,IAAI,IAAI,GAAG,IAAI;AAClB,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC;AACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACnD,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACrB,KAAK,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACrB,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1B,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC;AAC9B,EAAE,IAAI,UAAU,GAAG,KAAK;AACxB,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;AACvF;AACA,EAAE,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK;AAChD,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM;AACxC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC5B,IAAI,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC5B,IAAI,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACxB,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC3C,EAAE,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK;AAC/C;AACA,GAAG,IAAI,IAAI,EAAE,SAAS,CAAC;AACvB;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,IAAI,GAAG,CAAC,UAAU,CAAC;AACnB,KAAK,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;AAC3C;AACA,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAChB,KAAK,GAAG,OAAO,IAAI,IAAI,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAC5D,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B;AACA,MAAM,GAAG,SAAS,KAAK,GAAG,CAAC;AAC3B,OAAO,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;AACnH,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACrC,OAAO;AACP,MAAM;AACN,KAAK,KAAI;AACT,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,GAAG,iBAAiB,IAAI,aAAa,CAAC;AAC9D,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B;AACA,MAAM,GAAG,SAAS,KAAK,GAAG,CAAC;AAC3B,OAAO,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;AACvG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACtC,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,SAAS,CAAC;AACjB,KAAK,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;AACnC,KAAK,iBAAiB,GAAG,aAAa,CAAC;AACvC,KAAK,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D,KAAK,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;AACnC,KAAK,iBAAiB,GAAG,aAAa,CAAC;AACvC,KAAK,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK;AAC9C,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AACxB,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC1D,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3G,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClF,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC1D,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3G,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrF,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;AAClB,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC7D;AACA;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC9D,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;AAChE;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACtB,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AACrE,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC7B,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACtD;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACrB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AACtC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACrC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AACzE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACjD,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AAClD,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1E;AACA,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AACtC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACrC;AACA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9D,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1D;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACzD;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC;AACzB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AAC3D,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACvD,EAAE,OAAO,EAAE,QAAQ,CAAC;AACpB;AACA,EAAE,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC7B,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACrB,GAAG,QAAQ,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC9C;AACA,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5D,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3D,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,CAAC,CAAC;AACX,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;AAC3C,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvB,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACnH,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC5E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/D;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjE;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5E,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,SAAS,CAAC,CAAC,CAAC;AACb,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACrB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;AACpD,EAAE,SAAS,GAAG,SAAS,CAAC,SAAS;AACjC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC,GAAG,IAAI,SAAS,CAAC;AAC/G;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AACjJ,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACxG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACvG,EAAE;AACF;AACA,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC;AAChC,EAAE,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC;AAChG,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,GAAG,CAAC;AACrB,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACpC,GAAG,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC5E;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAAC;AACtE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE;AACxE,IAAI,GAAG,CAAC,GAAG;AACX,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACtC;AACA,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AAC1E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACvD,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;AACjC,KAAK,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5H,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAChD,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK;AAC3B,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,KAAK,CAAC;AACN;AACA,IAAI,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnD,IAAI,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;AAClD;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC3D,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,EAAE;AACvB,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACpC,GAAG,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC5E;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;AACrE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC3E,GAAG;AACH;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC/C,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAC7D,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAC7E,GAAG,OAAO,OAAO,CAAC,yBAAyB,CAAC;AAC5C,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACpB,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1B,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;AAC3B;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AACrE;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3D,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAChF,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC1E;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAClE;AACA,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,8EAA8E,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACrH,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,KAAK,CAAC;AAClB,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC;AACnC,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;AACxE;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC1D,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAChF,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7E;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AAC5D,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;AAClF,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;AAClC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC;AACrB;AACA,EAAE,GAAG,OAAO,CAAC;AACb;AACA,GAAG,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB;AACrD,IAAI,KAAK,QAAQ;AACjB,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACjE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACnD,KAAK,MAAM;AACX,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;AACzH,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC5C,KAAK,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACvG,KAAK;AACL,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;AACrH,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;AAC3H,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE;AACF;AACA,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC;AACrB,EAAE,IAAI,QAAQ,GAAG,KAAK;AACtB,EAAE,OAAO,GAAG,KAAK,CAAC;AAClB;AACA,EAAE,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAC/B;AACA,EAAE,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB;AACtD,GAAG,KAAK,QAAQ;AAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACtE,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACtD,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9H,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACzG,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7I,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACnJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE;AACjE,GAAG,GAAG,CAAC,GAAG;AACV,GAAG,OAAO,CAAC,OAAO;AAClB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AACnC,EAAE,OAAO,MAAM;AACf,GAAG,KAAK,SAAS;AACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC;AACA,GAAG,KAAK,YAAY;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC;AACA,GAAG,KAAK,cAAc;AACtB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG;AAC/B,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;AAC3C,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACzD,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;AACxC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;AAC3C,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;AAC5C,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1D,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG;AAC7B,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;AACzC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACnB,EAAE;AACF,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,UAAU,GAAG,SAAS;;ACznB/B,sBAAe,EAAE;;ACIjB,MAAM,OAAO,SAAS,MAAM;AAC5B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACxD,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC;AAC3C,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1D,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,KAAK,GAAG,KAAK;AACnB,EAAE,MAAM,GAAG,EAAE,CAAC;AACd;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,GAAG,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,OAAO,CAAC;AACX;AACA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD;AACA,IAAI,GAAG,OAAO,CAAC;AACf,KAAK,KAAK,GAAG,IAAI,CAAC;AAClB;AACA,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG;AACnB,MAAM,OAAO,CAAC,OAAO;AACrB,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE;AACrD,MAAM,CAAC;AACP,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,KAAK,CAAC;AACrB,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA;AACA,EAAE,OAAO,OAAO,KAAK;AACrB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;AACtC,EAAE,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,KAAK,CAAC;AACR;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK;AACjD,IAAI,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AACnC;AACA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;AACpF;AACA,KAAK,GAAG,OAAO,CAAC;AAChB,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,WAAW,KAAK,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC;AAC5F;AACA,MAAM,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACzE,OAAO,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,OAAO,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACrH,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACzF,OAAO;AACP,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3B,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAChC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;AACtG,GAAG,QAAQ,GAAG,EAAE,CAAC;AACjB;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACzF,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AAChD;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACpB,IAAI;AACJ;AACA,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC3B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,IAAI,GAAG,QAAQ,CAAC;AAChB,KAAK,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE;AACF,CAAC;AACD;AACA,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;AAC/B;AACA;AACA,OAAO,CAAC,QAAQ,GAAG,eAAe;;AC/JnB,aAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;AACjF,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACxC,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACzC,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACzC,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACzC;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC,KAAK,KAAK;AAC/E,EAAE,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;AAC9B,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,KAAK;AAC1E,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,KAAK,KAAK;AAC5E,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,SAAS,CAAC;AACd,EAAE,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;AACtG;AACA,EAAE,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;AAC5C;AACA,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5B,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACzB,EAAE,KAAI;AACN,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B;AACA,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5B,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACzB,EAAE;AACF;AACA,CAAC,OAAO,EAAE,CAAC;AACX;;ACvCe,cAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;AACjF;AACA,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACxC,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACzC,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACzC,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACzC;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC,KAAK,KAAK;AAC/E,EAAE,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;AAC9B,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;AAC7C;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,KAAK;AAC1E,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;AAC5C;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,EAAE,CAAC,KAAK,KAAK;AAC7E,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxB;AACA,CAAC,OAAO,EAAE,CAAC;AACX;;AC5BA,0BAAe;AACf,CAAC,IAAI,CAAC,IAAI;AACV,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC;;ACHD,MAAM,IAAI,SAAS,MAAM;AACzB;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACtB,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACjC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACjB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACrC;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACvD;AACA;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;AAC7D;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE;AACA;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC;AACpD,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC;AACrD,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AACzC,IAAI,OAAO,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;AAC9G,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D;AACA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC9C,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE;AACA,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAClE;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,QAAQ,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;AACxC,EAAE,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE;AAC3C,EAAE,KAAK,CAAC;AACR;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;AACzB,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,KAAI;AACR,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;AACpC,KAAK,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,KAAK,GAAG,GAAG,KAAK,CAAC;AACjB,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;AACzB,IAAI,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AACxD,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtB,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,SAAS,EAAE,UAAU,CAAC;AAC5B;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACvC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACjD,GAAG,KAAI;AACP,GAAG,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC5C,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACzC;AACA,GAAG,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC9C,GAAG,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC;AAC1C;AACA,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACrC;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAClE;AACA,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AACpG;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD;AACA,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/C,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B;AACA;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;AACf,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACtB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnC,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,KAAI;AACP,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;AACzB,EAAE,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;AAC5B,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5C,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AAChD,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;AAC5D,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,KAAK,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACzF;AACA,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;AACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACtB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,CAAC;AAC3C,EAAE,GAAG,CAAC,gBAAgB,CAAC;AACvB,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACrD;AACA,EAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC5C,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACzC,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnD;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;AAC/C,GAAG,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1D,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE;AACF;AACA,CAAC,0BAA0B,EAAE;AAC7B,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AACzB;AACA,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC/D,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;AAC1D,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B;AACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,KAAI;AACR;AACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK,SAAS,GAAG,EAAE,CAAC;AACpB;AACA,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAChC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACpC,MAAM;AACN;AACA,KAAK,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,KAAK,KAAI;AACT,KAAK,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,KAAK;AACL,IAAI;AACJ;AACA,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACzG;AACA,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;AACrB,KAAK,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,KAAK,CAAC;AACpD,MAAM,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,CAAC;AACR,KAAK,KAAI;AACT,KAAK,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB;AACpD,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AACpC,IAAI,WAAW,GAAG,OAAO,CAAC;AAC1B,IAAI,KAAI;AACR,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,IAAI;AACJ;AACA,GAAG,GAAG,WAAW,CAAC;AAClB,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC;AACA,IAAI,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACpE,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;AAC7E,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC5B,EAAE,IAAI,eAAe,EAAE,uBAAuB,CAAC;AAC/C;AACA,EAAE,GAAG,CAAC,MAAM,CAAC;AACb;AACA;AACA;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,KAAK;AAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AACpC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,KAAK,KAAK;AACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,KAAK;AACrD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,KAAK;AACrD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAK;AAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,KAAK;AACrD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,CAAC,CAAC;AACN;AACA;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AACjD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAChD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAChD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAChD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC3C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACxD,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;AAC1B,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACtD;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,KAAK;AACrD,KAAK,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC3D,KAAK,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtD,KAAK,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;AACvC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClD;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;AAC1D,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9F,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC5C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAG5C;AACA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACpD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,YAAY,WAAW,CAAC;AAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxF,OAAO,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,KAAK,QAAQ,CAAC;AAC/E,OAAO,uBAAuB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACrG;AACA,OAAO,GAAG,uBAAuB,CAAC;AAClC,QAAQ,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACrE,QAAQ,KAAI;AACZ,QAAQ,OAAO,CAAC,IAAI,CAAC,uFAAuF,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC3J,QAAQ;AACR,OAAO;AACP,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACjD,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACxD,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACzD,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AAChD,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC;AACpC,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAChC,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrB,EAAE,GAAG,CAAC,QAAQ,CAAC;AACf,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChB,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1B,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,KAAK,CAAC;AACb,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC;AACpC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB;AACA,EAAE,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1B,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAClB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,OAAO,IAAI;AACb,GAAG,KAAK,OAAO;AACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3B;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG;AACH;AACA,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB;AACA,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC7D,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB;AACA,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB;AACA,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACzB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,2DAA2D,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AACpG,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,GAAG,CAAC;AAClB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E;AACA,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;AACnE,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;AACnB,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;AACd,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AACzB;AACA,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC;AAC7C,EAAE,IAAI,OAAO,CAAC;AACd;AACA,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB;AACA,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACrB,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACnD,IAAI,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC5C,IAAI;AACJ;AACA,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F;AACA,GAAG,OAAO,OAAO,OAAO;AACxB,IAAI,KAAK,QAAQ;AACjB,KAAK,GAAG,OAAO,YAAY,IAAI,CAAC;AAChC;AACA;AACA,MAAM,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxH;AACA,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACnD,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,EAAE,CAAC;AAC7C;AACA,MAAM,GAAG,OAAO,IAAI,IAAI,CAAC;AACzB,OAAO,OAAO,CAAC,IAAI,CAAC,+JAA+J,EAAE,OAAO,CAAC,CAAC;AAC9L,OAAO;AACP,MAAM;AACN,KAAK,MAAM;AACX,IAAI,KAAK,WAAW;AACpB,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5C,KAAK,MAAM;AACX,IAAI;AACJ,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,OAAO,CAAC;AACjD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrH,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5G;AACA,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClG;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACpB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;AACjC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAC3B,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AACjC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACjC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1B,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD;AACA,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACzC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AACvB,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClC,GAAG;AACH;AACA,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,KAAK;AACpD,GAAG,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACzD,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACpD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACzC,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC1C,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf;AACA,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB;AACA,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACzB;AACA,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,6DAA6D,EAAE,CAAC,CAAC,CAAC;AAClF,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1B,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACf;AACA,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB;AACA,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACzB;AACA,GAAG,KAAI;AACP,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,qEAAqE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvH,IAAI;AACJ,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,iBAAiB,GAAG,CAAC;AAC3B,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC;AACrC;AACA,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AAC7B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;AAC1B,GAAG,MAAM,GAAG,EAAE,CAAC;AACf;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC;AACA,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACzB,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,IAAI,KAAI;AACR,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B;AACA,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;AACnC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,IAAI,GAAG,GAAG,CAAC;AACX,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AAC3B,MAAM,GAAG,CAAC,cAAc,CAAC;AACzB,OAAO,cAAc,GAAG,GAAG,CAAC;AAC5B,OAAO;AACP;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7H;AACA,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,IAAI,CAAC;AACX;AACA,EAAE,OAAO,IAAI,CAAC,IAAI;AAClB,GAAG,KAAK,OAAO;AACf,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACjD;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD;AACA,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAChC,MAAM,OAAO,CAAC,MAAM;AACpB,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,MAAM,CAAC,CAAC;AACR;AACA,GAAG,KAAK,kBAAkB,CAAC;AAC3B,GAAG,KAAK,oBAAoB;AAC5B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC;AACA,GAAG;AACH,IAAI,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;AAC3C,GAAG,OAAO,CAAC,IAAI,CAAC,qDAAqD,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,SAAS,IAAI,WAAW,CAAC,GAAG,YAAY,CAAC,CAAC;AACrJ,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;AACf,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C;AACA,GAAG,IAAI,CAAC,sBAAsB,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1L;AACA,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC,IAAI;AACpB,KAAK,KAAK,kBAAkB;AAC5B;AACA,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACxB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACvE,OAAO,KAAI;AACX,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,OAAO;AACP;AACA,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AAC9B,OAAO,UAAU,CAAC,MAAM;AACxB,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACnD,OAAO;AACP,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,oBAAoB;AAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAC3E;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AAClH;AACA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC;AAC7G,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B,QAAQ,UAAU,CAAC,MAAM;AACzB,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,QAAQ;AACR,OAAO;AACP,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI,KAAI;AACR;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACzD;AACA;AACA,IAAI;AACJ;AACA,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,qDAAqD,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC;AAC3I,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;AACzD;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;AAC9D,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACxC;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7C,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB;AACA;AACA,IAAI,CAAC,YAAY,GAAG,mBAAmB;;AC92BvC;AACA,qBAAe;AACf,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC;AACzB,EAAE,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACnD;AACA,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzC,EAAE;AACF,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC;AAC1B,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM;AAC9B,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;AACvB,EAAE,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACvC,EAAE,GAAG,EAAE,IAAI,CAAC;AACZ;AACA;AACA,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AACpB,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI;AACJ;AACA,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzC,EAAE;AACF,CAAC;;AC5BD;AACA,qBAAe;AACf,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/B,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,EAAE;AACF,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;AAChC,EAAE,IAAI,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;AAC9B;AACA,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;AACnD;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AAC3G,EAAE;AACF,CAAC;;ACPD,MAAM,WAAW,SAAS,MAAM;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACf;AACA,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,GAAG;AACpB,EAAE,KAAK,OAAO,IAAI,iBAAiB,CAAC;AACpC;AACA,EAAE,IAAI;AACN,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAClD,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC7C,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,CAAC,MAAM,CAAC,EAAE;AACb,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC;AACA,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe;AAChD,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa;AACxC,GAAG,aAAa,CAAC;AACjB;AACA,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;AACtF;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC/C,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,UAAU,CAAC;AACtE,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC9D,KAAK,KAAI;AACT,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACtE,MAAM,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACpF,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC5G,MAAM;AACN,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC/C,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,UAAU,CAAC;AACtE,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC/D,KAAK,KAAI;AACT,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACtE,MAAM,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACrF,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC7G,MAAM;AACN,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,KAAK,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,IAAI,CAAC,EAAE,GAAG,YAAY,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClF;AACA,GAAG,IAAI,CAAC,MAAM,GAAG;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;AACvF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM;AAC3F,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY;AACvG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;AACzF,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;AACvF,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO;AAC5H,IAAI,CAAC;AACL;AACA;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9C;AACA,IAAI,GAAG,aAAa,CAAC;AACrB,KAAK,GAAG,OAAO,aAAa,CAAC,cAAc,KAAK,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpH,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;AACvE,MAAM;AACN;AACA,KAAK,GAAG,OAAO,aAAa,CAAC,qBAAqB,KAAK,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3H,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,CAAC;AACrF,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACxB,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,IAAI,GAAG,aAAa,CAAC;AACrB,KAAK,GAAG,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClH,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;AACzD,MAAM;AACN,KAAK,GAAG,OAAO,aAAa,CAAC,cAAc,KAAK,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAChI,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;AACvE,MAAM;AACN,KAAK,GAAG,OAAO,aAAa,CAAC,WAAW,KAAK,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1H,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;AACjE,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClF,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACpE,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/E,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACxE,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E,GAAG;AACH;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE;AACF;AACA,CAAC,SAAS,CAAC,IAAI,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;AACtC;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtB,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;AAC7C,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC;AACA,GAAG,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;AAC/C,IAAI;AACJ,GAAG;AACH,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9B,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7C;AACA,GAAG,GAAG,CAAC,aAAa,KAAK,KAAK,CAAC;AAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,GAAG,aAAa,CAAC;AAC3D,IAAI;AACJ,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,CAAC;AACxB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAChG,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC;AAChB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzB,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC/B;AACA,GAAG,GAAG,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AAChC;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAChF;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG;AACvB,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB;AACA,IAAI,GAAG,KAAK,CAAC;AACb,KAAK,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;AACrC,MAAM,GAAG,EAAE,CAAC,QAAQ,KAAK;AACzB,OAAO,KAAK,GAAG,QAAQ,CAAC;AACxB;AACA,OAAO,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAQ;AACR;AACA,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;AACpB,QAAQ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAQ;AACR,OAAO;AACP,MAAM,GAAG,CAAC,MAAM;AAChB,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;AACpB,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;AACpB,QAAQ;AACR,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAChC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AACpB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC;AAC/D,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAC9D,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;AAClC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK;AAClC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;AAC/C,GAAG,IAAI,CAAC;AACR;AACA,GAAG,GAAG,IAAI,CAAC;AACX,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;AACxE,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxB,KAAK,KAAI;AACT,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG;AACxB,KAAK,GAAG,GAAG,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;AAChE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;AACpB,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACvE,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACjC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,GAAG,IAAI,CAAC,IAAI,EAAE;AACd,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACvB,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACjC,KAAK,KAAI;AACT,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9B,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;AAC9E;AACA,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC;AACnC,GAAG,OAAO,IAAI;AACd,IAAI,KAAK,OAAO;AAChB,KAAK,OAAO,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AACzF;AACA,IAAI,KAAK,OAAO;AAChB,KAAK,OAAO,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;AACxC;AACA,IAAI,KAAK,QAAQ;AACjB,KAAK,OAAO,GAAG,KAAK,OAAO,CAAC;AAC5B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,IAAI,CAAC;AACX,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,OAAO,IAAI;AACb,GAAG,KAAK,SAAS;AACjB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;AACpE,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAClD,IAAI,MAAM;AACV;AACA,GAAG,KAAK,cAAc;AACtB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACxD,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACnE,IAAI,MAAM;AACV;AACA,GAAG,KAAK,OAAO;AACf,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACjC,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAChC,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AACpB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC7B,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC;AACrB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACvB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AAC9D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9C,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;AACrE,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AAC5D,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;AAClE,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACtD,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAChE,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACnE,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA,CAAC,YAAY,CAAC,OAAO,CAAC;AACtB,EAAE,IAAI,WAAW,GAAG,EAAE;AACtB,EAAE,YAAY,GAAG,CAAC,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AACjF;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,IAAI,QAAQ,GAAG,EAAE;AACpB,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;AAClC,GAAG,IAAI,CAAC;AACR;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9D,IAAI,KAAI;AACR,IAAI,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvC;AACA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;AACxE,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxB,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1B,KAAK,KAAI;AACT,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG;AACxB,KAAK,OAAO,GAAG;AACf,MAAM,KAAK,OAAO;AAClB,OAAO,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC1C,OAAO,MAAM;AACb,MAAM,KAAK,SAAS;AACpB,OAAO,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzC,OAAO,MAAM;AACb;AACA,MAAM;AACN,OAAO,GAAG,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ;AACR,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,WAAW,CAAC;AACrB,EAAE;AACF,CAAC;AACD;AACA,WAAW,CAAC,UAAU,GAAG,aAAa,CAAC;AACvC;AACA,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;AAClC;AACA;AACA,WAAW,CAAC,OAAO,GAAG,cAAc,CAAC;AACrC,WAAW,CAAC,OAAO,GAAG,cAAc;;ACpdpC,MAAMC,OAAK,SAAS,MAAM;AAC1B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,EAAE,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACnD,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AACxC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACzG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACnG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACtC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACjG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACzC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvG,GAAG;AACH,EAAE;AACF;AACA,CAAC,uBAAuB,EAAE;AAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7G,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACvG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AACxC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACrG,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC3C,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC3G,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B;AACA;AACA,EAAE,GAAG,GAAG,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAC1E,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAC/G,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACnF,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACnG,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AACtE,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AAC3G,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAC3E;AACA;AACA,GAAG,GAAG,GAAG,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;AAC7E,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;AACjH,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AACjF,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC;AACrB,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA;AACA,EAAE,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AAC9D,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACjG,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAC3E,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AACzF,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAC1D,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC7F,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnE,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAChE,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AACnG,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACtE,GAAG;AACH,EAAE;AACF;AACA,CAAC,2BAA2B,CAAC,MAAM,CAAC;AACpC,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe;AAC9C,EAAE,aAAa,CAAC;AAChB;AACA,EAAE,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACjD,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/D;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC;AACjC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AACvC,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,YAAY,WAAW,CAAC;AAClC,IAAI,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,IAAI,KAAI;AACR,IAAI,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;AACnC,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC;AACxC,GAAG;AACH;AACA,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACjD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClF,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACzC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAChB,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAChE,GAAG;AACH,EAAE;AACF;AACA,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;AAC7C,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AACpB,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC;AACjD,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC;AAC/B,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;AACtB,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,GAAG,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1B,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,QAAQ,GAAG,OAAO,QAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,UAAU,CAAC,GAAG,QAAQ,CAAC;AAC5H;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACrE,EAAE;AACF;AACA,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAC;AAC9D,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,UAAU,CAAC;AACxC,EAAE,UAAU,EAAE,KAAK,CAAC;AACpB;AACA,EAAE,GAAG,QAAQ,YAAY,WAAW,CAAC;AACrC,GAAG,UAAU,GAAG,QAAQ,CAAC;AACzB,GAAG,KAAI;AACP,GAAG,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,GAAG,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC;AACnC,GAAG;AACH;AACA,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC9C;AACA,EAAE,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI;AAC7C,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB,GAAG;AACH;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACjC;AACA,EAAE,GAAG,OAAO,gBAAgB,KAAK,UAAU,CAAC;AAC5C,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,GAAG,CAAC,CAAC;AACP,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG,KAAI;AACP,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC;AAC5D,GAAG;AACH;AACA;AACA,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;AACzB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AAClE,GAAG,CAAC,CAAC;AACL;AACA;AACA;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AACjE,EAAE;AACF,CAAC;AACD;AACAA,OAAK,CAAC,UAAU,GAAG,OAAO;;AClO1B,MAAM,KAAK,SAAS,MAAM;AAC1B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACtC,EAAE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACrC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACrC,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD;AACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACzE,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACtE,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,GAAG,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC7E,GAAG,MAAM,CAAC,mBAAmB,EAAE,YAAY,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC3E,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACvD;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AAChL;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChF,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACpE;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7C,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACzC,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AACxC,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO;AAC9B,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO;AAC1B,EAAE,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,EAAE,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AACvP,EAAE,aAAa,EAAE,aAAa,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC3D;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACpD;AACA,GAAG,aAAa,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1J;AACA,GAAG,GAAG,OAAO,aAAa,IAAI,QAAQ,CAAC;AACvC,IAAI,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;AACvC,IAAI,KAAI;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACpD;AACA,GAAG,aAAa,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1J;AACA;AACA,GAAG,GAAG,OAAO,aAAa,IAAI,QAAQ,CAAC;AACvC,IAAI,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;AACvC,IAAI,KAAI;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AACjE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACvC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB;AACA,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE;AACF,CAAC;AACD;AACA,KAAK,CAAC,UAAU,GAAG,OAAO;;ACrI1B,MAAM,YAAY,SAAS,MAAM;AACjC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACpB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAClD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACrC,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/E,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAChF,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7E,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,IAAI,CAAC;AAChB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,OAAO,CAAC;AACV;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC;AACzB;AACA,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB;AACA;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AAC3C,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,YAAY,EAAE,IAAI;AACrB,GAAG,KAAK,EAAE,UAAU;AACpB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,IAAI,MAAM,CAAC;AACX;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC7B;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrD,MAAM,CAAC,CAAC;AACR;AACA,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACzD;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACxC;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE;AAC9C,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,YAAY,EAAE,IAAI;AACrB,GAAG,KAAK,EAAE,UAAU;AACpB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,IAAI,MAAM,CAAC;AACX;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAChC;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpD,MAAM,CAAC,CAAC;AACR;AACA,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5D;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAClC,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACpC;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5C,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,YAAY,EAAE,IAAI;AACrB,GAAG,KAAK,EAAE,UAAU;AACpB,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC;AACpB;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC9B;AACA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE;AACA,MAAM,GAAG,GAAG,CAAC;AACb,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,OAAO;AACP,MAAM;AACN;AACA,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,YAAY,EAAE,IAAI;AACrB,GAAG,KAAK,EAAE,UAAU;AACpB,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC;AACpB;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC5B;AACA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACxF;AACA,MAAM,GAAG,GAAG,CAAC;AACb,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,OAAO;AACP,MAAM;AACN;AACA,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC7C,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,YAAY,EAAE,IAAI;AACrB,GAAG,KAAK,EAAE,UAAU;AACpB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AAC7C,IAAI,QAAQ,EAAE,MAAM,CAAC;AACrB;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/B;AACA,KAAK,GAAG,OAAO,CAAC;AAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/F;AACA,MAAM,GAAG,QAAQ,CAAC;AAClB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1E,QAAQ,CAAC,CAAC;AACV,OAAO,KAAI;AACX,OAAO,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;AAC3C;AACA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvE,QAAQ,CAAC,CAAC;AACV,OAAO;AACP,MAAM;AACN;AACA;AACA,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC;AAClB,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AAC9F;AACA,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK;AACtC,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACrE;AACA,OAAO,GAAG,GAAG,CAAC;AACd,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,QAAQ;AACR,OAAO,CAAC,CAAC;AACT,MAAM;AACN;AACA,KAAK,GAAG,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC;AAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;AACjD,MAAM;AACN;AACA,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACjC,KAAK;AACL;AACA,IAAI,OAAO,MAAM,EAAE;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;AACzB,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACjC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAK,UAAU,EAAE,IAAI;AACrB,KAAK,YAAY,CAAC,IAAI;AACtB,KAAK,QAAQ,CAAC,IAAI;AAClB,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;AAC9B,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,GAAG,CAAC;AACd,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACtB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACjC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC;AACxB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACnE,EAAE,SAAS,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,GAAG,UAAU,CAAC;AAChB;AACA,GAAG,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACpC;AACA,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;AAC7C,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,KAAK,EAAE,MAAM;AACjB,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9B;AACA,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC/D,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChC,MAAM;AACN;AACA,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AAC1C;AACA,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE;AAChD,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,KAAK,EAAE,MAAM;AACjB,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACjC;AACA,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACnE,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACnC,MAAM;AACN;AACA,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AACtC;AACA,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE;AAC9C,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,KAAK,EAAE,MAAM;AACjB,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/B;AACA,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACjC,MAAM;AACN;AACA,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;AAClC;AACA,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE;AAC5C,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,KAAK,EAAE,MAAM;AACjB,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC7B;AACA,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/B,MAAM;AACN;AACA,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACxC;AACA,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE;AAC/C,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,KAAK,EAAE,MAAM;AACjB,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAChC;AACA,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAClE,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAClC,MAAM;AACN;AACA,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;AACzB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC;AACpD,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;AAChC;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AACnC,GAAG,GAAG,EAAE,CAAC,QAAQ,KAAK;AACtB,IAAI,KAAK,GAAG,QAAQ,CAAC;AACrB,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;AACxD,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB;AACA,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC;AACrB,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC5B,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,KAAK;AACL;AACA,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;AACjB,KAAK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzB,KAAK;AACL,IAAI;AACJ,GAAG,GAAG,CAAC,MAAM;AACb;AACA,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;AACjB,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;AACjB,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACtB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AACpC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACnB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,GAAG,CAAC;AACX,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACtB,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,CAAC;AACb,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC;AAC1B,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,YAAY,CAAC,UAAU,GAAG,cAAc;;AChZxC,MAAM,aAAa,SAAS,MAAM;AAClC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAChC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACxD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,EAAE;AACF;AACA,CAAC,uBAAuB,EAAE;AAC1B,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AAC7B,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACpC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAClE,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACjC,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACnE,GAAG;AACH,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC5B,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClE,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAClC,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3E,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACnE,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAClC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC;AACrB;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9C;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC;AAChD,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACpC,IAAI,KAAI;AACR,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,MAAM,IAAI,CAAC,CAAC;AACjB,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,MAAM,KAAK,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAClD,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACrD;AACA,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1D,IAAI,GAAG,YAAY,CAAC;AACpB,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;AACvF,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACxD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7D,GAAG,GAAG,YAAY,CAAC;AACnB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;AACxF,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxD,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AACnD,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,cAAc,GAAG,KAAK;AACxB,EAAE,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS;AACpC,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AACzC;AACA;AACA,EAAE,GAAG,IAAI,KAAK,QAAQ,CAAC;AACvB,GAAG,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;AAClG,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC/E;AACA,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,GAAG,MAAM,CAAC,SAAS,GAAG,6BAA6B,CAAC;AACpD;AACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC/C,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;AAC1E,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAC9C,IAAI,CAAC;AACL;AACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACpD,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACtE;AACA;AACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK;AAC9C,IAAI,IAAI,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC5C;AACA,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,IAAI,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,IAAI,GAAG,QAAQ,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC7C,KAAK,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AACpD,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACnF,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;AAC5B;AACA,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC;AAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjC,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACpC,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACjC,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B,GAAG,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChD;AACA,GAAG,GAAG,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC;AACzC,IAAI,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AAChC,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnE,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3D,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACrC,EAAE;AACF;AACA,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;AAC9B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC7D;AACA,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AAC9E,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;AAC9B,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;AAC9B,GAAG,aAAa,EAAE,YAAY,CAAC;AAC/B;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACpB;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,SAAS,CAAC;AAC3B,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACzB,IAAI;AACJ;AACA,GAAG,aAAa,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC;AACtF;AACA,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;AAChD;AACA,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC;AACrF;AACA,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC7C,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,aAAa,IAAI,YAAY,CAAC,CAAC;AACnG,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC9C;AACA,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;AACpB,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC7C,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AACrD,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACvB,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;AACrE,KAAK;AACL,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClD;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AAC/F,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC9B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB;AACA;AACA,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAClD,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AAC9F,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC9B,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACzD,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7D;AACA,GAAG,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,GAAG,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjE;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;AACpD;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC/E,IAAI;AACJ,GAAG;AACH;AACA,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACtB;AACA;AACA,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAChD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AACpF,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtC;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACzD,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC;AACD;AACA,aAAa,CAAC,UAAU,GAAG,eAAe;;AClT1C,MAAM,UAAU,SAAS,MAAM;AAC/B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACnD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACtC,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,SAAS,GAAG,6BAA6B,CAAC;AACnD;AACA,EAAE,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,EAAE,UAAU,CAAC,SAAS,GAAG,kCAAkC,CAAC;AAC5D;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9C,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACvB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE;AACA,EAAE,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAClD,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC;AACvB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,cAAc,IAAI,SAAS,CAAC,CAAC;AACnC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3D;AACA,GAAG,GAAG,OAAO,CAAC;AACd,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC5C,IAAI;AACJ,GAAG,CAAC;AACJ;AACA,EAAE,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC1D,EAAE,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E;AACA,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAChC,EAAE;AACF;AACA,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AAC3B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC7D;AACA,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC;AACvB,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3H,GAAG;AACH;AACA,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3D,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7D;AACA,GAAG,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,GAAG,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjE;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AACpF,EAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;AACrC;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACzD,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC;AACD;AACA,UAAU,CAAC,UAAU,GAAG,YAAY;;AC3GpC,MAAM,WAAW,SAAS,MAAM;AAChC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAClC,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;AACzB,GAAG,UAAU,CAAC;AACd;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACjD,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AAC/C;AACA,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AACjE,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;AAC/D,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,oBAAoB,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,SAAS,CAAC;AAC7I;AACA,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACxC;AACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,KAAK;AACxD,KAAK,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxF;AACA,MAAM,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7D;AACA,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;AACxE,OAAO,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AACrC,OAAO,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACnC;AACA,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnC,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AACrE,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;AACnE,QAAQ;AACR;AACA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,OAAO;AACP,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxD;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AACvK;AACA,KAAK,IAAI,CAAC,iBAAiB,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,KAAK;AAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzF;AACA,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChE,OAAO,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9D;AACA,OAAO,GAAG,IAAI,CAAC,eAAe,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC;AACjF,QAAQ,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;AAC1C,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACxC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AACtD,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpD,QAAQ;AACR;AACA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE;AACA,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,OAAO,GAAG,UAAU;AAC7B,KAAK,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzF,MAAM,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;AACrB,MAAM;AACN,KAAK,CAAC;AACN;AACA,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,GAAG;AACH,EAAE;AACF;AACA,CAAC,4BAA4B,EAAE;AAC/B,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAK;AAClE,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AAC5C;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;AACpB,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,KAAK,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAChC,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACtD,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;AACtC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAClB,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AACzB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC7B,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC5B,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnE,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,WAAW,CAAC,UAAU,GAAG,aAAa;;AC3JtC,MAAM,gBAAgB,SAAS,MAAM;AACrC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACjB,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAChC,EAAE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,mBAAmB,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,mBAAmB,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AACvE;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACzC,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,UAAU,CAAC;AACzD,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,GAAG,GAAG,CAAC,KAAK,CAAC;AACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAClD,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iCAAiC,IAAI,IAAI,CAAC,mBAAmB,CAAC;AAC5G,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC;AAChF,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACjE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AAChC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5E,KAAK,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B;AACA,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AACpD,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACnC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;AACtE,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5E,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAC9B,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,GAAG;AACH;AACA;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;AAC1D,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,IAAI,oBAAoB,CAAC;AACvD,IAAI,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;AACpC,IAAI,MAAM;AACV,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC/B,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAChC,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACrC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACrC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AACnC;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;AAChJ,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,EAAE,CAAC;AACT;AACA,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;AACzB,GAAG,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AACrD;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,GAAG;AAClC,IAAI,OAAO,CAAC,EAAE;AACd,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB;AAC/B,IAAI,CAAC;AACL;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC9B,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAClC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC3D,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;AACzC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC;AACjD,EAAE,GAAG,CAAC,gBAAgB,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AACpD,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtD,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3B;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAC9B,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC;AACA,GAAG,GAAG,IAAI,CAAC,oBAAoB,IAAI,CAAC,QAAQ,CAAC;AAC7C,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACrC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3B;AACA,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAC9B,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9C;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC;AACA,GAAG,GAAG,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9D,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACrC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB;AACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACvJ;AACA,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;AACzI;AACA,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;AACf;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7B,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC;AACnB,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,KAAI;AACR;AACA;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;AACjB,MAAM,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AACnC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC;AACrB,OAAO,KAAI;AACX,OAAO,OAAO,GAAG,KAAK,CAAC;AACvB,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB,MAAM;AACN,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC;AAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;AAC9C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;AACzC,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,2BAA2B,CAAC,GAAG,CAAC;AACjC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AACnB;AACA,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAClC,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC7C;AACA,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AACtD;AACA,GAAG,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,GAAG,CAAC;AAC9B,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE;AAC1B,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,iBAAiB,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACzC,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAC9C,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qCAAqC,CAAC;AACzF;AACA,KAAK,iBAAiB,GAAG;AACzB,MAAM,KAAK,CAAC,KAAK;AACjB,MAAM,IAAI,CAAC,EAAE;AACb,MAAM,QAAQ,CAAC,UAAU;AACzB,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,MAAM,OAAO,CAAC,UAAU;AACxB,OAAO,OAAO,IAAI,CAAC;AACnB,OAAO;AACP,MAAM,OAAO,CAAC,UAAU;AACxB,OAAO,OAAO,MAAM,CAAC;AACrB,OAAO;AACP,MAAM,UAAU,CAAC,UAAU;AAC3B,OAAO,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,MAAM,CAAC,UAAU;AACvB,OAAO,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AACjC,OAAO;AACP,MAAM,SAAS,CAAC,UAAU;AAC1B,OAAO,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AACpC,OAAO;AACP,MAAM,QAAQ,CAAC,MAAM;AACrB,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC;AACzB,OAAO;AACP,MAAM,CAAC;AACP;AACA,KAAK,SAAS,UAAU,CAAC,QAAQ,CAAC;AAClC,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM;AACN;AACA,KAAK,MAAM,CAAC,IAAI,CAAC;AACjB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;AACpC,MAAM,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;AACzI,MAAM,CAAC,CAAC;AACR,KAAK,KAAI;AACT,KAAK,MAAM,CAAC,IAAI,CAAC;AACjB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;AACpC,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1B,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC7B,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,GAAG,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAChD,GAAG,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAChD,GAAG,IAAI,YAAY,CAAC;AACpB;AACA,GAAG,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACzD,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACzC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC;AACxD,IAAI,cAAc,CAAC,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;AAClD,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC;AACjC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACxC,IAAI,KAAI;AACR,IAAI,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC9B,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACzB,GAAG,EAAE,IAAI,CAAC,CAAC;AACX;AACA,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9C,EAAE;AACF,CAAC;AACD;AACA,gBAAgB,CAAC,UAAU,GAAG,kBAAkB;;ACvVhD,MAAM,SAAS,SAAS,MAAM;AAC9B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,SAAS,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjF;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF;AACA;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;AAC7C,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACjF,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;AAC7B,EAAE,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC7D,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB;AACA,EAAE,GAAG,YAAY,IAAI,MAAM,KAAK,IAAI,CAAC;AACrC,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC7B;AACA;AACA,EAAE,IAAI,SAAS,GAAG,UAAU;AAC5B;AACA,GAAG,UAAU,CAAC,UAAU;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,EAAE,EAAE,CAAC,CAAC;AACV;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3D,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxC;AACA;AACA,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACjD,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACtD;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC;AACpF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,OAAO,CAAC;AAC1D,KAAK,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACnF,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAClD,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACpF,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AACpC,OAAO;AACP;AACA,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC;AACpB,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AACpC;AACA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B;AACA,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC5B;AACA,OAAO,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC5D,OAAO,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1D;AACA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACvD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AACxB,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AACpC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACpC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAQ;AACR,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACrD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AACxB,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AACpC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC,OAAO;AACP,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI;AACJ;AACA,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACnD,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACpD,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9B,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AAChC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;AACpD;AACA,GAAG,IAAI,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzF,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC9D;AACA,GAAG,IAAI,UAAU,GAAG,iBAAiB,IAAI,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAC7E,GAAG,IAAI,QAAQ,GAAG,iBAAiB,IAAI,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAC3E;AACA,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;AACxE;AACA,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;AAC7B,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,GAAG;AACtC,KAAK,GAAG,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC;AAC3C;AACA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5E,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACnC,QAAQ;AACR,OAAO,KAAI;AACX,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAClC,OAAO;AACP,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AAC9B,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC;AAC9C,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxE,MAAM;AACN,KAAK;AACL;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AAChC,GAAG;AACH,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;AACjC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AAC7B,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AAC7B,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAC3B,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AAC/B,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAClF,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,GAAG,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,QAAQ,EAAE,MAAM,CAAC;AACnB;AACA,EAAE,OAAO,OAAO,IAAI;AACpB,GAAG,KAAK,WAAW;AACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC;AACjB,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;AACtB,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9B,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,KAAK,GAAG,MAAM,CAAC;AACf,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;AACnC;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AAC/F,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAChE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC;AACrD,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAK,KAAI;AACT,KAAK,OAAO,KAAK,CAAC;AAClB,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnD;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACrC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAClD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAClD,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7D;AACA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,OAAO,GAAG,CAAC;AACf,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,0DAA0D,GAAG,OAAO,CAAC,CAAC;AACvF,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3B,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,QAAQ,EAAE,MAAM,CAAC;AACnB;AACA,EAAE,OAAO,OAAO,IAAI;AACpB,GAAG,KAAK,WAAW;AACnB,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC;AACjB,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;AACtB,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9B,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD;AACA,KAAK,GAAG,MAAM,CAAC;AACf,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AACnD,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;AAC9B,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9C,EAAE,KAAK,EAAE,OAAO,CAAC;AACjB;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,WAAW,CAAC;AAC5D,IAAI,OAAO,WAAW,IAAI,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB;AACA,IAAI,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,IAAI,GAAG,OAAO,CAAC;AACf,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACrC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC;AACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAClD,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,GAAG,CAAC;AACf,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,4DAA4D,GAAG,OAAO,CAAC,CAAC;AACzF,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACzC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACzC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACjC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC;AAC7D,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAChC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC;AAC/C,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,KAAK,CAAC;AACrD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5E,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,KAAK,CAAC;AACrD,IAAI,MAAM;AACV,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC;AAC/C,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,CAAC;AACb,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,IAAI;AACJ;AACA,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACtD;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACjC,IAAI,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9B,IAAI;AACJ;AACA,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1D;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtH,GAAG;AACH,EAAE;AACF;AACA,CAAC,yBAAyB,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE;AAC1C,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAChC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,4BAA4B,CAAC,CAAC,OAAO,EAAE;AACxC,EAAE,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;AACvC,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AAC/B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpE;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,IAAI,IAAI,KAAK,IAAI,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,IAAI,IAAI,KAAK,IAAI,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,SAAS,CAAC,UAAU,GAAG,WAAW;;ACxdlC;AACe,iBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAChD,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACvC,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACzC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AACpB;AACA,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf;AACA,CAAC,GAAG,QAAQ,CAAC;AACb,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,GAAG,OAAO,CAAC;AACZ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACnB;AACA;AACA,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACb,EAAE,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,UAAU,IAAI,CAAC,CAAC;AAClB,EAAE,KAAI;AACN;AACA,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;AACvG,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AACnB,EAAE;AACF;AACA,CAAC,OAAO,UAAU,CAAC;AACnB;;ACvCA;AACe,eAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAChD,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AACpB,CAAC,IAAI,MAAM,CAAC;AACZ;AACA;AACA,CAAC,GAAG,CAAC,CAAC,CAAC;AACP,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACb,EAAE,UAAU,IAAI,CAAC,CAAC;AAClB,EAAE,KAAI;AACN;AACA,EAAE,OAAO,OAAO,MAAM,CAAC,MAAM;AAC7B,GAAG,KAAK,SAAS;AACjB,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,MAAM;AACV,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAChF,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;AACvG,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AACnB,EAAE;AACF;AACA,CAAC,OAAO,UAAU,CAAC;AACnB;;ACjCA;AACe,mBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;AAC5C,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,qBAAqB;AACpD,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB;AAC3C,CAAC,UAAU,GAAG,CAAC,CAAC;AAChB;AACA,CAAC,GAAG,OAAO,EAAE,IAAI,WAAW,CAAC;AAC7B,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG,GAAG,MAAM,KAAK,KAAK,CAAC;AACvB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,KAAI;AACR,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG,GAAG,MAAM,KAAK,KAAK,CAAC;AACvB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,KAAI;AACR,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAChB,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACtB,GAAG,UAAU,IAAI,CAAC,CAAC;AACnB,GAAG,KAAI;AACP;AACA,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG;AACH;AACA;AACA,EAAE,GAAG,CAAC,gBAAgB,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;AACxG,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC;AACpB;AACA,EAAE,KAAI;AACN,EAAE,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC3E,EAAE;AACF;;ACzCA;AACe,eAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,EAAE,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,OAAON,UAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACnE;;ACPA;AACe,eAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,OAAOA,UAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACnE;;ACTA;AACe,gBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzE,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzE;AACA,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AAClB;;ACNA;AACe,cAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ;AACnC,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB;AAC3C,CAAC,UAAU,GAAG,CAAC,CAAC;AAChB;AACA,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC;AACrB,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,OAAO,IAAI;AACb,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1B,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC1C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC1C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACtB,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB,EAAE,KAAI;AACN,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;AACvG,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AACnB,EAAE;AACF;AACA,CAAC,OAAO,UAAU,CAAC;AACnB;;ACrDA;AACe,eAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9D,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AAClB;;ACNA;AACe,iBAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AAChE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC;AAC3D,CAAC,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAChD,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AACpB;AACA;AACA,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnB,EAAE,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzB,EAAE,UAAU,IAAI,CAAC,CAAC;AAClB,EAAE,KAAI;AACN;AACA,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAClD,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/B,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/B,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvB,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACd,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AAChB,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC5C,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC5C,KAAK,OAAO,EAAE,GAAG,EAAE,CAAC;AACpB,KAAK;AACL,SAAS,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,EAAE;AACF;AACA;AACA,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC;AACvG,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AACnB,EAAE;AACF;AACA,CAAC,OAAO,UAAU,CAAC;AACnB;;ACjCA,qBAAe;AACf,CAAC,MAAM,CAACO,QAAM;AACd,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,IAAI,CAACC,MAAI;AACV,CAAC,IAAI,CAACC,MAAI;AACV,CAAC,QAAQ,CAACT,UAAQ;AAClB,CAAC,OAAO,CAAC,OAAO;AAChB,CAAC,KAAK,CAAC,KAAK;AACZ,CAAC,MAAM,CAAC,MAAM;AACd,CAAC,QAAQ,CAAC,QAAQ;AAClB,CAAC;;AChBD,MAAM,IAAI,SAAS,MAAM;AACzB;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,qCAAqC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAClD;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC9C,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChD,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/C,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC5B,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC;AACtB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;AACxB;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,MAAM,GAAG,KAAK;AACpB,EAAE,KAAK;AACP,EAAE,OAAO,CAAC;AACV;AACA,EAAE,OAAO,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM;AACxC,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9C,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrD,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,MAAM;AACV;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC,IAAI,MAAM;AACV,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;AACxB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM;AAC5B,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE;AAC9C,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,IAAI,KAAK;AAC/D,GAAG,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB;AACjD,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,KAAK,KAAK,CAAC;AAC5C;AACA,GAAG,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7C;AACA,GAAG,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACjD;AACA,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB;AACnD,IAAI,KAAK,MAAM;AACf,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC3D,KAAK,MAAM;AACX,IAAI,KAAK,QAAQ;AACjB,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AACzD,KAAK,MAAM;AACX,IAAI;AACJ,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AACzD,KAAK,MAAM;AACX,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB;AAC9C,IAAI,KAAK,UAAU;AACnB;AACA,KAAK,MAAM;AACX;AACA,IAAI,KAAK,QAAQ;AACjB,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC/D,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC9D,IAAI;AACJ;AACA;AACA,GAAG,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAClD;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzC;AACA,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChD;AACA;AACA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC7G,IAAI,IAAI,GAAG,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,EAAE;AACd,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB;AACA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC;AAC3C,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7C,OAAO,KAAI;AACX,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACrE,QAAQ,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAChE,QAAQ,KAAI;AACZ,QAAQ,GAAG,GAAG,MAAM,CAAC;AACrB,QAAQ;AACR,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AACpC,OAAO,KAAK,KAAK;AACjB,QAAQ,GAAG,GAAG,MAAM,CAAC;AACrB,QAAQ,MAAM;AACd;AACA,OAAO,KAAK,MAAM;AAClB,QAAQ,GAAG,GAAG,KAAK,CAAC;AACpB,QAAQ,MAAM;AACd;AACA,OAAO;AACP,QAAQ,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C,OAAO;AACP,MAAM;AACN;AACA,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AAChF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B;AACA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK;AAC5C,OAAO,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AACjD,OAAO,CAAC,CAAC;AACT;AACA,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACpB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AAChC;AACA,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC;AACxB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ;AACR,OAAO,KAAI;AACX,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC;AACxB,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAQ;AACR,OAAO;AACP;AACA;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5B,MAAM,KAAI;AACV,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;AACvB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACpB,OAAO,KAAI;AACX;AACA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjC,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC9C,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACvC,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,OAAO,GAAG,EAAE,CAAC;AACf;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACtC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClG,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;AACvB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,WAAW,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9B,GAAG,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AACjC,GAAG,IAAI,MAAM,CAAC;AACd;AACA,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,iEAAiE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACjG,IAAI;AACJ;AACA,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAChC,EAAE;AACF;AACA;AACA,CAAC,KAAK,EAAE;AACR,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACnB,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/C,EAAE,MAAM,GAAG,QAAQ;AACnB,EAAE,KAAK,EAAE,KAAK,CAAC;AACf;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AACvB,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,GAAG,GAAG,KAAK,CAAC;AACZ;AACA,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,IAAI,OAAO,OAAO,KAAK;AACvB,KAAK,KAAK,WAAW;AACrB,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,SAAS;AACnB,MAAM,MAAM,GAAG,SAAS,CAAC;AACzB,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;AACvC,OAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,OAAO,KAAI;AACX,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC9D,QAAQ,MAAM,GAAG,UAAU,CAAC;AAC5B,QAAQ;AACR,OAAO;AACP,MAAM,MAAM;AACZ,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9B,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,IAAI,CAAC;AACX,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ;AAClG,EAAE,cAAc,GAAG,EAAE;AACrB,EAAE,aAAa,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC5C,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC9C;AACA;AACA,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACnB,KAAK,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AACxC;AACA,KAAK,GAAG,OAAO,CAAC;AAChB;AACA;AACA,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,OAAO;AACP;AACA,MAAM,IAAI,CAAC,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACjI;AACA,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,MAAM;AACN;AACA,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA;AACA,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE;AAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1C,IAAI;AACJ;AACA,GAAG,KAAI;AACP,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC3C,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACtE,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAChE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AACrC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC;AAC7B,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAChC,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;AAC5F,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC;AACrC,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AAC1C,EAAE,OAAO,CAAC;AACV;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,UAAU,CAAC;AAChG,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClE;AACA,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/F;AACA,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC;AAClC,IAAI,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAChC,IAAI,KAAI;AACR,IAAI,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;AAC/B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3B,EAAE,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACtB,GAAG,IAAI,MAAM,CAAC;AACd;AACA,GAAG,IAAI,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AACvC,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjF;AACA,IAAI,GAAG,MAAM,KAAK,CAAC,CAAC;AACpB,KAAK,MAAM;AACX,KAAK;AACL,IAAI;AACJ;AACA,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AACpC,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC;AACvB;AACA;AACA,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC;AACA,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1C,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1C;AACA,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC;AACA,EAAE,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AAC/B,EAAE,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AAC/B;AACA,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3G,EAAE;AACF,CAAC;AACD;AACA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB;AACA;AACA,IAAI,CAAC,OAAO,GAAG,cAAc;;ACjd7B,MAAM,OAAO,SAAS,MAAM;AAC5B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC/B,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC9B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,+EAA+E,CAAC,CAAC;AACrI,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC/D,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;AACvF,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;AACrF,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC1D,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACjC;AACA,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/E,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7E,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC;AACrC,EAAE,IAAI,OAAO,GAAG,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;AAChH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAClH,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC;AACpC,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AACzB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC;AACjC,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC;AACnC,EAAE,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAC3C;AACA,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC;AAC/B,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AACnC,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;AAC9D,GAAG;AACH;AACA,EAAE,GAAG,OAAO,YAAY,WAAW,CAAC;AACpC,GAAG,UAAU,GAAG,OAAO,CAAC;AACxB,GAAG,KAAI;AACP,GAAG,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C;AACA,GAAG,GAAG,OAAO,KAAK,IAAI,CAAC;AACvB,IAAI,GAAG,SAAS,YAAY,IAAI,CAAC;AACjC,KAAK,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;AAC/B,KAAK,KAAI;AACT,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK;AACxE,OAAO,UAAU,CAAC,SAAS,GAAG,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;AAC5E,OAAO,CAAC,CAAC;AACT,MAAM,KAAI;AACV,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3C,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;AAClC,GAAG;AACH;AACA,EAAE,GAAG,OAAO,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC;AACnD,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjD;AACA,GAAG,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;AACrE;AACA,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/C;AACA,GAAG,GAAG,OAAO,gBAAgB,KAAK,UAAU,CAAC;AAC7C,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AACxD,IAAI;AACJ;AACA,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACvD;AACA,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM;AAC1E,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AACrE,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;AACpE,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,OAAO,CAAC,UAAU,GAAG,SAAS;;AC/H9B,wBAAe;AACf;AACA,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC3C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB;AACA,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACzE,EAAE;AACF;AACA;AACA,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AACzC,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB;AACA,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7D,EAAE;AACF;AACA;AACA,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC3C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC1C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AACvC,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;AACzC,EAAE;AACF;AACA;AACA,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AACvC,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;AACzC,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC1C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAClF,EAAE;AACF;AACA;AACA,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AACxC,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAChF,EAAE;AACF;AACA;AACA;AACA,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC7C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC7C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,EAAE,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AACtC,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,GAAG,OAAO,UAAU,IAAI,QAAQ,CAAC;AACnC,GAAG,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,EAAE;AACF;AACA;AACA,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AACzC,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC;AACA,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,EAAE;AACF;AACA;AACA,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC1C,EAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACpE,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC;AACpB;AACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAChC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAClD,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG,GAAG,IAAI,KAAK,QAAQ,CAAC;AACxB,IAAI,GAAG,KAAK,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAK,MAAM,GAAG,KAAK,CAAC;AACpB,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;AAC3C,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACxE,EAAE;AACF,CAAC;;ACtID,MAAM,QAAQ,SAAS,MAAM;AAC7B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACzD;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7F,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7F,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;AACzC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;AAC/H;AACA;AACA,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC;AACpB,GAAG,UAAU,CAAC,MAAM;AACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACjF,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;AAC7B,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3B,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC;AAChF,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5E,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,cAAc,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AACvC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACtC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9B,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AACvC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACtC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAC/B,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAClC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1B,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,YAAY,CAAC,KAAK,CAAC;AACpB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9C,GAAG,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B;AACA,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC9B;AACA,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC;AACrB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AACvC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAC9B,EAAE,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,KAAK,WAAW,CAAC;AACxD,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,SAAS,CAAC;AACZ;AACA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACjC;AACA,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACjD,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAClD,KAAK,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,KAAK,GAAG,SAAS,CAAC;AAClB,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAI;AACR,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACpE;AACA,IAAI,GAAG,SAAS,CAAC;AACjB,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAC5D,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACzB,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AACxB;AACA,EAAE,OAAO,OAAO,KAAK;AACrB,GAAG,KAAK,QAAQ;AAChB,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,KAAK,KAAI;AACT,KAAK,IAAI,GAAG,KAAK,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,GAAG,KAAK,UAAU;AAClB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC9D,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9B;AACA,EAAE,IAAI,IAAI,GAAG,OAAO,IAAI,IAAI,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1E;AACA,EAAE,GAAG,CAAC,IAAI,CAAC;AACX,GAAG,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,IAAI,CAAC,CAAC;AAC9E,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG,KAAI;AACP,GAAG,OAAO;AACV,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,UAAU,GAAG,UAAU,GAAG,IAAI;AACtD,IAAI,IAAI,CAAC,IAAI;AACb,IAAI,MAAM,CAAC,MAAM;AACjB,IAAI,CAAC;AACL,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;AAClC,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjD;AACA,EAAE,GAAG,UAAU,CAAC;AAChB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACtE,KAAK,gBAAgB,CAAC,IAAI,CAAC;AAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM;AAC5B,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC5B,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC9B,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACnE;AACA,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,gBAAgB,CAAC;AACpD;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC;AACrD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACjE,IAAI;AACJ;AACA,GAAG,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAC3D,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,EAAE,IAAI,YAAY,CAAC;AACnB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5D;AACA,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC;AACA,GAAG,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD;AACA,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC;AACA;AACA,QAAQ,CAAC,UAAU,GAAG,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9SvC,qBAAe;AACf;AACA,CAAC,mBAAmB,CAAC,KAAK;AAC1B,CAAC,mBAAmB,CAAC,KAAK;AAC1B,CAAC,mBAAmB,CAAC,IAAI;AACzB,CAAC,0BAA0B,CAAC,IAAI;AAChC,CAAC,mBAAmB,CAAC,IAAI;AACzB,CAAC,gBAAgB,CAAC,IAAI;AACtB;AACA,CAAC,MAAM,CAAC,KAAK;AACb,CAAC,SAAS,CAAC,KAAK;AAChB,CAAC,SAAS,CAAC,KAAK;AAChB;AACA,CAAC,qBAAqB,CAAC,KAAK;AAC5B;AACA,CAAC,cAAc,CAAC,KAAK;AACrB;AACA,CAAC,OAAO,CAAC,EAAE;AACX,CAAC,cAAc,CAAC,EAAE;AAClB;AACA,CAAC,IAAI,CAAC,KAAK;AACX;AACA,CAAC,WAAW,CAAC,KAAK;AAClB,CAAC,sBAAsB,CAAC,KAAK;AAC7B;AACA,CAAC,oBAAoB,CAAC,GAAG;AACzB;AACA,CAAC,aAAa,CAAC,KAAK;AACpB;AACA,CAAC,KAAK,CAAC,IAAI;AACX;AACA,CAAC,aAAa,CAAC,MAAM;AACrB;AACA,CAAC,SAAS,CAAC,QAAQ;AACnB;AACA,CAAC,aAAa,CAAC,IAAI;AACnB;AACA,CAAC,cAAc,CAAC,SAAS;AACzB,CAAC,gBAAgB,CAAC,OAAO;AACzB,CAAC,oBAAoB,CAAC,CAAC;AACvB;AACA,CAAC,mBAAmB,CAAC,KAAK;AAC1B,CAAC,oBAAoB,CAAC,IAAI;AAC1B;AACA,CAAC,sBAAsB,CAAC,MAAM;AAC9B,CAAC,uBAAuB,CAAC,IAAI;AAC7B;AACA,CAAC,YAAY,CAAC,KAAK;AACnB,CAAC,iBAAiB,CAAC,IAAI;AACvB,CAAC,qBAAqB,CAAC,IAAI;AAC3B,CAAC,sBAAsB,CAAC,IAAI;AAC5B;AACA,CAAC,SAAS,CAAC,IAAI;AACf;AACA,CAAC,WAAW,CAAC,KAAK;AAClB;AACA,CAAC,UAAU,CAAC,IAAI;AAChB,CAAC,iBAAiB,CAAC,KAAK;AACxB,CAAC,eAAe,CAAC,KAAK;AACtB,CAAC,sBAAsB,CAAC,IAAI;AAC5B;AACA,CAAC,cAAc,CAAC,EAAE;AAClB;AACA,CAAC,iBAAiB,CAAC,EAAE;AACrB,CAAC;;AChEc,MAAM,WAAW,CAAC;AACjC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,CAAC;AAC3C,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACxD,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,GAAG,EAAE,CAAC;AAC3C,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACzD,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,IAAI,WAAW,CAAC,mBAAmB,KAAK,IAAI,CAAC;AAC5F;AACA,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACxC;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,WAAW,CAAC;AAC9B,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,GAAG,IAAI,CAAC;AACZ,KAAK,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;AAC/D,KAAK;AACL;AACA,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;AAClC,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC;AACzB,GAAG,GAAG,GAAG,IAAI,WAAW,CAAC;AACzB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,KAAI;AACR,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,KAAK,KAAK,GAAG,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACrE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,KAAK,KAAK,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;AACjD,KAAK,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;;ACzCe,MAAM,QAAQ,SAAS,WAAW;AACjD,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAClD,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;AACvD,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AACrD;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAChC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb;AACA,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf;AACA,EAAE;AACF;AACA;AACA,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAClC;AACA,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB;AACA,EAAE;AACF;AACA,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvB;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;AACrC;AACA,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB;AACA,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7B;AACA,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;AACzB;AACA,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACrB;AACA,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT;AACA,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB;AACA,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC,WAAW,CAAC,eAAe,CAAC;AAC7B;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,EAAE;AACP,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AAChD,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;AACrB,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AACf,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7C,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC/C,GAAG,KAAI;AACP,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC5C,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAChD,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,EAAE;AACR;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT;AACA,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC9C,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,EAAE,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;AAC1B,EAAE,MAAM,GAAG,CAAC,CAAC;AACb;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpB;AACA,IAAI,GAAG,OAAO,SAAS,KAAK,WAAW,CAAC;AACxC,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACzD,KAAK;AACL;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC;AAClB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC;AACxF;AACA,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AACvF,OAAO,OAAO,EAAE,CAAC;AACjB,OAAO,OAAO,KAAK,CAAC;AACpB,OAAO;AACP,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC;AACvC,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACvD,KAAK;AACL;AACA,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC;AAC9B,KAAK,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC;AACnE,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B;AACA;AACA,IAAI,OAAO,QAAQ;AACnB,KAAK,KAAK,QAAQ,CAAC;AACnB,KAAK,KAAK,QAAQ;AAClB;AACA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACjH,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAC1L,OAAO,KAAI;AACX,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACjH,OAAO;AACP;AACA,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,QAAQ;AAClB;AACA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACjH,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;AACpJ,OAAO,KAAI;AACX,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAChI,OAAO;AACP;AACA,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,KAAK;AACf,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACvD,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,OAAO,EAAE,CAAC;AACd;AACA,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAC7C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;;ACzMe,MAAM,eAAe,SAAS,QAAQ;AACrD,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE;AACjC,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;AACpD,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9B,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1C,GAAG,CAAC,CAAC;AACL,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,EAAE,GAAG,CAAC,UAAU,CAAC;AACjB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAClC,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAClC,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC9B,GAAG,CAAC,CAAC;AACL,EAAE;AACF;;ACxBe,MAAM,oBAAoB,SAAS,QAAQ;AAC1D,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC;AAC9C,GAAG,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;AAC1F,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACtC,GAAG,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;AACpF,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAChE,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;AACzB,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;AAC7B,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B;AACA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpE,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9D,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClC;AACA,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;AACtB,KAAK,MAAM,GAAG,KAAK,CAAC;AACpB,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;AACrC,EAAE,IAAI,GAAG,GAAG;AACZ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AACpB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO;AACvB,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACzB,GAAG;AACH,EAAE,MAAM,GAAG,CAAC,CAAC;AACb;AACA,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,GAAG,OAAO;AACV,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/D,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;AACnG;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9D,GAAG,IAAI,MAAM,GAAG,EAAE;AAClB,GAAG,KAAK,CAAC;AACT;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B,KAAK,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/B;AACA,KAAK,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7B,KAAK,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AACtC;AACA,KAAK,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1B;AACA,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAChG,MAAM;AACN;AACA,KAAK,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,iBAAiB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxF;AACA;AACA,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AAC5B,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1C,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AACjC,OAAO;AACP;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1C,MAAM,KAAI;AACV;AACA,MAAM,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAC7B,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;AAClC,OAAO;AACP,MAAM;AACN;AACA,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,KAAK,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AACrC;AACA,KAAK,MAAM,IAAI,KAAK,CAAC;AACrB,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChE,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAClE;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,GAAG,CAAC,WAAW,CAAC;AAClB,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACpD,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,CAAC;AACpB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG,KAAI;AACP,GAAG,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;AACrD,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7B,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AACpD,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;AACvC,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,KAAK,EAAE;AACR,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,MAAM,GAAG,KAAK;AACpB,EAAE,GAAG,EAAE,KAAK,CAAC;AACb;AACA,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AACpB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC/D,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC;AAClD,KAAK,MAAM,GAAG,IAAI,CAAC;AACnB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;AAC9D,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;AACrG;AACA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;AACnD,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACnD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV;AACA,IAAI,GAAG,GAAG,CAAC;AACX,KAAK,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA,KAAK,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB;AACA,KAAK,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1C;AACA,KAAK,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7D,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3C;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACtC,MAAM;AACN;AACA,KAAK,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC;AAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC/G,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC/B,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,KAAK,CAAC;AAChB,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF;AACA,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC/B,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC5B,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACtB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACxB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AAC7D,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;AACjC,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;AAClC;AACA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AAC9C,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;AACf;AACA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,KAAI;AACR;AACA,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AACrC,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;AAClC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;AAC1C,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;AAC3C,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB;AACA,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAChD;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC;AACjE,KAAK,OAAO,GAAG,IAAI,CAAC;AACpB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;AAC3H,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3B,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC7C;AACA,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpD,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,MAAM,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5B,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7C,MAAM;AACN,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACnE,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/C;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC;AACjE,KAAK,OAAO,GAAG,IAAI,CAAC;AACpB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9G,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3B,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;AACpB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAClD,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC3B,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5C,MAAM;AACN;AACA,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACxD;AACA,KAAK,GAAG,IAAI,CAAC;AACb,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;AACjG,MAAM,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;AAChC,MAAM;AACN;AACA,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACjE,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAChE,KAAK,OAAO,GAAG,IAAI,CAAC;AACpB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC;AACA,OAAO,IAAI;AACX,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxD,QAAQ,CAAC,OAAO,EAAE,EAAE;AACpB,QAAQ,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7D,QAAQ;AACR,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5C,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC;AACtB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpD,OAAO;AACP,MAAM,CAAC,CAAC;AACR,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACnE,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAChE,KAAK,OAAO,GAAG,IAAI,CAAC;AACpB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC;AACA,OAAO,IAAI;AACX,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxD,QAAQ,CAAC,OAAO,EAAE,EAAE;AACpB,QAAQ,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAC5D,QAAQ;AACR,OAAO;AACP,MAAM,CAAC,CAAC;AACR;AACA,KAAK,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3C,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;AACrB;AACA,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAClD,OAAO;AACP,MAAM,CAAC,CAAC;AACR,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACjE,GAAG;AACH,EAAE;AACF;AACA,CAAC,0BAA0B,CAAC,MAAM,CAAC;AACnC,EAAE,IAAI,QAAQ,EAAE,SAAS,CAAC;AAC1B;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AACzC,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC9B;AACA,GAAG,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACvD;AACA,GAAG,GAAG,SAAS,CAAC;AAChB,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;AACjD,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC5C,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7F,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAC/C,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC1B,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG;AACzB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO;AACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC1B,IAAI,CAAC;AACL;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACrE,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ;AACA,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AACrD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACtE,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClC,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AACxB,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;AAC9B,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACnD,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5B,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC1B,GAAG,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;AACtI;AACA,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACjC,IAAI,MAAM,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAChE;AACA,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;;AC3jBe,MAAM,aAAa,SAAS,WAAW,CAAC;AACvD;AACA,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;AACpB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AACvB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAC5F;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE;AACF;AACA;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpD,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC5D,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAC1F,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3E;AACA,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC5B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACpB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;AACvD,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;AACxD,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,WAAW,CAAC;AAClB;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,GAAG,SAAS,EAAEU,oBAA4B;AAC1C,GAAG,OAAO,EAAEC,eAAuB;AACnC,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,CAAC;AAC7D,GAAG,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAChE,GAAG,KAAI;AACP,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACrD,GAAG;AACH;AACA,EAAE,GAAG,WAAW,CAAC;AACjB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAChF,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3F,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,CAAC,EAAE;AACxB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACxC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjC;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,2BAA2B,CAAC,EAAE;AAC/B,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAChD,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACtC;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,EAAE;AACvB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACtC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACvC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAC/C,GAAG;AACH;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,EAAE;AACF;AACA;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC;AAC7B,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACpC,EAAE;AACF;AACA,CAAC,4BAA4B,EAAE;AAC/B,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACxD,GAAG,IAAI,IAAI,CAAC;AACZ;AACA,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;AACf,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;AACtD;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,0BAA0B,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB;AACzD,EAAE,GAAG,EAAE,MAAM,CAAC;AACd;AACA,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;AACzB;AACA,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB;AACA,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG;AACd,KAAK,KAAK,CAAC,GAAG;AACd,KAAK,KAAK,CAAC,GAAG;AACd,KAAK,CAAC;AACN;AACA,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB;AACA,IAAI,OAAO,OAAO,KAAK;AACvB,KAAK,KAAK,WAAW;AACrB,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,SAAS;AACnB,MAAM,MAAM,GAAG,SAAS,CAAC;AACzB,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,QAAQ;AAClB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,OAAO,MAAM,GAAG,OAAO,CAAC;AACxB,OAAO,KAAI;AACX,OAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,OAAO;AACP,MAAM,MAAM;AACZ;AACA,KAAK;AACL,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;AACvC,OAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,OAAO,KAAI;AACX,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC9D,QAAQ,MAAM,GAAG,UAAU,CAAC;AAC5B,QAAQ,KAAI;AACZ,QAAQ,MAAM,GAAG,QAAQ,CAAC;AAC1B,QAAQ;AACR,OAAO;AACP,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,IAAI;AACJ;AACA,GAAG,GAAG,WAAW,CAAC;AAClB;AACA,IAAI,OAAO,OAAO,WAAW;AAC7B,KAAK,KAAK,UAAU;AACpB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtE,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,QAAQ;AAClB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7B,QAAQ,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AAC9C,SAAS,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC;AACxC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,GAAG,KAAK,CAAC;AACjB,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,CAAC,CAAC;AACV;AACA,OAAO,KAAI;AACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7B,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,CAAC,CAAC;AACV,OAAO;AACP;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AACxC,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AACtB,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACxG;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC3B,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;AAC7C,EAAE,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;AAC3C,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE;AAC7B,EAAE,KAAK,GAAG,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAC3E;AACA,EAAE,GAAG,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAChC,GAAG,IAAI,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;AAC/C,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrD,GAAG,IAAI,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;AACvC;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClD,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9D,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC1F,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACzD,IAAI;AACJ,GAAG;AACH;AACA,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;AAC1B;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,GAAG,CAAC;AACzB,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AAC1B,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACnD,GAAG;AACH,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,GAAG,CAAC;AAC5B,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACvC,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAC/B,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,EAAE;AACvB,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACvC;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAChC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACpC;AACA,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAC1B,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AACvD;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;AAC9E,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,OAAO,CAAC;AACpB,EAAE,IAAI,OAAO,CAAC;AACd;AACA,EAAE,GAAG,OAAO,OAAO,IAAI,QAAQ,CAAC;AAChC;AACA,GAAG,GAAG,OAAO,YAAY,MAAM,CAAC;AAChC;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,IAAI,KAAK,GAAG,OAAO,YAAY,eAAe,CAAC;AAC/C;AACA,IAAI,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC;AACvC,IAAI,KAAK,GAAG,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,YAAY,WAAW,CAAC;AACjF;AACA,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACrC,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACzC,KAAK,OAAO,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;AACvC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC;AAC1B,IAAI;AACJ;AACA,GAAG,KAAI;AACP;AACA,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;AAChD,GAAG;AACH;AACA;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC5B,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACtD,GAAG,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG,GAAG,SAAS,KAAK,IAAI,CAAC;AACzB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK;AACrD,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC;AACtB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACzD,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK;AAChD,GAAG,OAAO,MAAM,KAAK,GAAG,CAAC;AACzB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC;AAC7B,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AAC3C,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC1C,GAAG,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;AACxC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1B,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;AAC5D;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AACtC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC1C,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAC5B,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAC/D;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAChE,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACvC,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAClC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACjE,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtE;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACjD;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC5C,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;AACvG,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC;AACzD,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACvC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AACtB;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAChC;AACA,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACjC;AACA,GAAG,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE;AACrB;AACA,IAAI,GAAG,KAAK,CAAC;AACb,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACzB,KAAK;AACL;AACA,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,SAAS,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACpC;AACA,GAAG,GAAG,UAAU,CAAC;AACjB;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAC9B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AACzB,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACzC,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC5C,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;AACjC,EAAE,MAAM,GAAG,CAAC;AACZ,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C;AACA,GAAG,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC;AACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACzD,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,SAAS,KAAK,WAAW,CAAC;AACvC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC3D,IAAI;AACJ;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB;AACA;AACA,IAAI,OAAO,QAAQ;AACnB,KAAK,KAAK,QAAQ,CAAC;AACnB,KAAK,KAAK,QAAQ;AAClB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;AAC7C,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,OAAO;AACjB,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AACnE,MAAM,MAAM;AACZ,KAAK;AACL;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC;AAClB,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC5E,MAAM,OAAO,KAAK,CAAC;AACnB,MAAM;AACN,KAAK;AACL;AACA;AACA,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7H;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAChD,IAAI;AACJ;AACA,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC1C,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;AACjD,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB;AACA;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AAC7F,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AACvG,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AAC9C,GAAG,IAAI,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACjC;AACA,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB;AACA,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;AACzC;AACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzC;AACA,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,QAAQ,CAAC;AACjC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,MAAM,KAAI;AACV,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,MAAM;AACN,KAAK,KAAI;AACT,KAAK,QAAQ,GAAG,KAAK,CAAC;AACtB,KAAK;AACL;AACA,IAAI,UAAU,IAAI,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC5D;AACA,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;AACA,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;AAC5C,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAClE;AACA,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACjE;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC;AACxC,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC/B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACxC;AACA,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAC/B,EAAE,KAAK,CAAC;AACR;AACA;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACrC,GAAG;AACH;AACA;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9C;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB,EAAE;AACF;AACA,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;AAChC,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,GAAG,KAAI;AACP,GAAG,GAAG,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC;AAC/E,IAAI,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;AACpC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAChC,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxD;AACA,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACvC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAC7C,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACvC;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AACpC,EAAE;AACF;;ACtuBe,MAAM,aAAa,SAAS,QAAQ;AACnD,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;AAClC;AACA;AACA,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpE;AACA,EAAE,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AACxB,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AACzB;AACA,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC9B,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AAC/B,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC7B,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;AAChC,EAAE;AACF;AACA,CAAC,UAAU,GAAG;AACd,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY;AACjC,EAAE,gBAAgB,GAAG,IAAI;AACzB,EAAE,SAAS,GAAG,QAAQ,CAAC,sBAAsB,EAAE;AAC/C,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7B,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B;AACA,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AAC7B,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI;AACJ;AACA,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AAClB;AACA,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAC9B,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;AACxB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA;AACA;AACA,EAAE,GAAG,gBAAgB,CAAC;AACtB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AACvE,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAC3B,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC;AACtD;AACA,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AACtJ,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AAC7I,EAAE;AACF;AACA,CAAC,WAAW,CAAC,eAAe,CAAC;AAC7B,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,EAAE;AACF;AACA;;ACjGe,MAAM,kBAAkB,SAAS,QAAQ;AACxD,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACnC,EAAE,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;AAClC;AACA;AACA,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpE;AACA,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;AAChC,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;AACnC,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AAC/B,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC7B,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;AACrC,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvB,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACjD,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,SAAS,GAAG,KAAK,CAAC;AACxB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;AAC9C;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACtD;AACA,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,IAAI,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC1D;AACA,IAAI,GAAG,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACzD,KAAK,SAAS,GAAG,IAAI,CAAC;AACtB,KAAK,MAAM,GAAG,CAAC,CAAC;AAChB,KAAK,KAAI;AACT,KAAK,MAAM;AACX,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,QAAQ,CAAC;AACd,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;AACxB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;AACrG,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AACtC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACrB,EAAE,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,EAAE,IAAI,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAClD,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACzC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;AACA,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,IAAI,UAAU,GAAG,MAAM,CAAC;AAC9C;AACA,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;AAC/C,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3H,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG,KAAI;AACP;AACA,GAAG,GAAG,GAAG,CAAC;AACV;AACA,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;AACnB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK;AACL;AACA,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,KAAK,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACvE,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;AAC/C,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;AAChD,MAAM;AACN,KAAK;AACL,IAAI,KAAI;AACR;AACA,IAAI,GAAG,UAAU,IAAI,CAAC,CAAC;AACvB,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC;AACpB;AACA,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;AAC7C,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACvG,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAC3B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1C;AACA,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC;AACrF,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxC,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,eAAe,CAAC;AAC7B,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS;AAC9C,EAAE,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,OAAO;AAC1D,EAAE,QAAQ,GAAG,KAAK;AAClB,EAAE,MAAM,GAAG,CAAC;AACZ,EAAE,SAAS,GAAG,CAAC;AACf,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,eAAe,CAAC;AACrB,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,GAAG,KAAI;AACP,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACvD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,KAAK,GAAG,CAAC,QAAQ,CAAC;AAClB,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC;AACzD,OAAO,MAAM,GAAG,CAAC,CAAC;AAClB,OAAO,KAAI;AACX,OAAO,QAAQ,GAAG,IAAI,CAAC;AACvB;AACA,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC;AAC3D,QAAQ,SAAS,GAAG,CAAC,CAAC;AACtB,QAAQ,KAAI;AACZ,QAAQ,MAAM;AACd,QAAQ;AACR,OAAO;AACP,MAAM,KAAI;AACV,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC;AAC1D,OAAO,SAAS,GAAG,CAAC,CAAC;AACrB,OAAO,KAAI;AACX,OAAO,MAAM;AACb,OAAO;AACP,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE;AACjD,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY;AACjC,EAAE,MAAM,GAAG,IAAI,CAAC,eAAe;AAC/B,EAAE,MAAM,GAAG,CAAC;AACZ,EAAE,UAAU,GAAG,CAAC;AAChB,EAAE,SAAS,GAAG,CAAC;AACf,EAAE,cAAc,GAAG,CAAC;AACpB,EAAE,YAAY,GAAG,CAAC;AAClB,EAAE,CAAC,GAAG,CAAC;AACP,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACpB,EAAE,SAAS,GAAG,IAAI,CAAC,MAAM;AACzB,EAAE,KAAK,GAAG,CAAC;AACX,EAAE,GAAG;AACL,EAAE,WAAW;AACb,EAAE,YAAY,GAAG,EAAE;AACnB,EAAE,iBAAiB,GAAG,CAAC;AACvB,EAAE,YAAY,GAAG,CAAC;AAClB,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW;AACjD,EAAE,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY;AACrD,EAAE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;AAC7C,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC;AAC3B;AACA,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AACvB;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC;AACf,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,KAAK;AACR,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACrE;AACA;AACA,GAAG,cAAc,GAAG,CAAC,SAAS,GAAG,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC;AACpE;AACA,GAAG,GAAG,cAAc,GAAG,eAAe,CAAC;AACvC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,GAAG,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;AACnF,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;AACpB,KAAK,QAAQ,GAAG,CAAC,CAAC;AAClB,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChI,GAAG,QAAQ,IAAI,MAAM,CAAC;AACtB,GAAG;AACH;AACA,EAAE,GAAG,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1D,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC3B,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE,CAAC,CAAC;AACjC;AACA,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;AACnD,IAAI,GAAG,YAAY,EAAE;AACrB,KAAK,YAAY,GAAG,CAAC,eAAe,GAAG,YAAY,KAAK,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAClF,IAAI;AACJ,QAAQ;AACR,IAAI,YAAY,GAAG,SAAS,CAAC;AAC7B,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,CAAC,YAAY,IAAI,SAAS,IAAI,UAAU,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,KAAK,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,EAAE;AACtL,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,IAAI,WAAW,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;AACpD;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV;AACA,IAAI,OAAO,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,EAAE;AACjE,KAAK,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAChC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB;AACA,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/B;AACA,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAChE,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;AAC5B,MAAM;AACN;AACA,KAAK,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/C,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC;AACxB,KAAK,CAAC,EAAE,CAAC;AACT,KAAK;AACL;AACA,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5B,KAAK,MAAM;AACX,KAAK;AACL;AACA,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACrC;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClC,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAChC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3B,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClC,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAChC,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,MAAM;AACN,KAAK,CAAC,CAAC;AACP;AACA,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClC,KAAK,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;AACjC;AACA,KAAK,GAAG,iBAAiB,GAAG,MAAM,CAAC;AACnC,MAAM,YAAY,IAAI,SAAS,CAAC;AAChC,MAAM,KAAK;AACX,MAAM,UAAU,IAAI,SAAS,CAAC;AAC9B,MAAM;AACN;AACA,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC1C,MAAM,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;AAC5C,MAAM;AACN,KAAK,iBAAiB,EAAE,CAAC;AACzB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AACtD,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACxD,IAAI,GAAG,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAC/D,IAAI;AACJ,KAAK,YAAY,GAAG,UAAU,GAAG,iBAAiB,CAAC;AACnD,KAAK,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,GAAG,YAAY,KAAK,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChJ,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,QAAQ,CAAC;AAChB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACxB;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,YAAY,IAAI,iBAAiB,CAAC,CAAC;AACrF,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC/E;AACA,IAAI,IAAI,CAAC,gBAAgB,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;AAC7F,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;AAChH,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;AAC/I,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnD,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACzD;AACA,GAAG,GAAG,SAAS,CAAC;AAChB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC;AACjM,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;AAClG;AACA;AACA,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,SAAS,CAAC;AACvF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC;AAC1E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1C,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;AAC7C;AACA,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACxC,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC;AAChC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY;AAC/B,EAAE,SAAS,GAAG,EAAE;AAChB,EAAE,aAAa,GAAG,CAAC;AACnB,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACzB,EAAE,CAAC,GAAG,CAAC;AACP,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACnB,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,IAAI,SAAS,EAAE,WAAW,CAAC;AAC3B;AACA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC1C,KAAK,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;AACvD,KAAK,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AACnC;AACA,KAAK,GAAG,aAAa,IAAI,SAAS,CAAC;AACnC;AACA,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC7D;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACpD,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,OAAO;AACP;AACA,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACvB;AACA,MAAM,GAAG,CAAC,WAAW,CAAC;AACtB,OAAO,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;AACjD;AACA,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;AAC9C,QAAQ;AACR,OAAO;AACP;AACA,MAAM,aAAa,IAAI,SAAS,CAAC;AACjC,MAAM,aAAa,IAAI,SAAS,CAAC;AACjC;AACA,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,CAAC,EAAE,CAAC;AACV;AACA,MAAM,KAAI;AACV,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB,MAAM;AACN;AACA,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,SAAS,CAAC;AAC5B,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,aAAa,CAAC;AACnB,GAAG,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC;AACpC;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;AACjD,IAAI;AACJ;AACA,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACnD,GAAG,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC;AAC1C,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;AACnC,EAAE,IAAI,aAAa,GAAG,EAAE;AACxB,EAAE,aAAa,GAAG,CAAC;AACnB,EAAE,CAAC,GAAG,CAAC;AACP,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/B,GAAG,SAAS,CAAC;AACb;AACA,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACzC,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;AACtD;AACA,IAAI,GAAG,aAAa,IAAI,SAAS,CAAC;AAClC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;AACpB;AACA,KAAK,aAAa,IAAI,SAAS,CAAC;AAChC,KAAK,aAAa,IAAI,SAAS,CAAC;AAChC;AACA,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK,CAAC,EAAE,CAAC;AACT,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC;AAChC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAChC;AACA,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACvB,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,aAAa,CAAC;AACnB,GAAG,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC;AACpC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/D,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACjG,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY;AAC/B,EAAE,SAAS,GAAG,EAAE;AAChB,EAAE,aAAa,GAAG,CAAC;AACnB,EAAE,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAC7B,EAAE,CAAC,GAAG,CAAC;AACP,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,GAAG,SAAS,EAAE,WAAW,CAAC;AAC1B;AACA,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACzC,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;AACtD,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AAClC;AACA,IAAI,GAAG,aAAa,IAAI,SAAS,CAAC;AAClC;AACA,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/B,KAAK,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AACzC;AACA,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACnD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,MAAM;AACN;AACA,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC;AACtB;AACA,KAAK,GAAG,CAAC,WAAW,CAAC;AACrB,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;AAChD;AACA,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC3C,OAAO,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM;AACN;AACA,KAAK,aAAa,IAAI,SAAS,CAAC;AAChC,KAAK,aAAa,IAAI,SAAS,CAAC;AAChC;AACA,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK,KAAK,EAAE,CAAC;AACb,KAAK,CAAC,EAAE,CAAC;AACT,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,SAAS,CAAC;AAC5B,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,aAAa,CAAC;AACnB,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;AACvC;AACA,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AACzD,GAAG,IAAI,CAAC,mBAAmB,IAAI,aAAa,CAAC;AAC7C,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC;AACtC,EAAE,IAAI,aAAa,GAAG,EAAE;AACxB,EAAE,aAAa,GAAG,CAAC;AACnB,EAAE,CAAC,GAAG,CAAC;AACP,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,MAAM,OAAO,CAAC;AAChB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAClC,GAAG,SAAS,CAAC;AACb;AACA,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACzC,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;AACtD;AACA,IAAI,GAAG,aAAa,IAAI,SAAS,CAAC;AAClC,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC;AACxB;AACA,KAAK,aAAa,IAAI,SAAS,CAAC;AAChC,KAAK,aAAa,IAAI,SAAS,CAAC;AAChC;AACA,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK,CAAC,EAAE,CAAC;AACT,KAAK,KAAI;AACT,KAAK,OAAO,GAAG,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC;AAChC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAChC;AACA,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACvB,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,aAAa,CAAC;AACnB,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;AACvC;AACA,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AACrE,GAAG,IAAI,CAAC,mBAAmB,IAAI,aAAa,CAAC;AAC7C,GAAG;AACH,EAAE;AACF;AACA,CAAC,wBAAwB,CAAC,IAAI,CAAC;AAC/B,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACtB,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACpB,GAAG;AACH;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACtB,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;AACvB,GAAG;AACH,EAAE;AACF;;ACpnBe,MAAM,UAAU,SAAS,WAAW;AACnD;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChD,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC9B,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACxC,EAAE,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE;AACF;AACA;AACA;AACA,CAAC,mBAAmB,CAAC,EAAE;AACvB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC5C,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACjC;AACA;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,EAAE;AACtB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACtC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACtC;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE;AACxB,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACnD;AACA,EAAE,GAAG,OAAO,WAAW,KAAK,UAAU,CAAC;AACvC,GAAG,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,WAAW,CAAC;AAClG;AACA;AACA,EAAE,GAAG,WAAW,CAAC;AACjB,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC7C;AACA,GAAG,GAAG,OAAO,WAAW,IAAI,QAAQ,CAAC;AACrC,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAC7D,IAAI,QAAQ,CAAC,SAAS,GAAG,WAAW,CAAC;AACrC;AACA,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AACxC;AACA,IAAI,KAAK,GAAG,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,YAAY,WAAW,CAAC;AACrF;AACA,IAAI,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;AAC3C,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,8DAA8D,EAAE,WAAW,CAAC,CAAC;AAC9F;AACA,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACnB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACzB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAChD,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;AACrC,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;AACnC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;AAC/B,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACjC;AACA;AACA,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7D;AACA,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI;AACJ;AACA;AACA,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACzB;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1C;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACzD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,OAAO,CAAC;AACjB,EAAE,GAAG,OAAO,OAAO,IAAI,QAAQ,CAAC;AAChC,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC;AAC7B;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,IAAI,KAAK,GAAG,OAAO,YAAY,YAAY,CAAC;AAC5C;AACA,IAAI,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC;AACvC,IAAI,KAAK,GAAG,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,YAAY,WAAW,CAAC;AACjF;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACxC,KAAK,OAAO,GAAG,CAAC,UAAU,EAAE,KAAK,OAAO,CAAC;AACzC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC;AAC1B,IAAI,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;AAC7B,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,KAAK,GAAG,OAAO,OAAO,IAAI,WAAW,CAAC;AACzC,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG,KAAI;AACP;AACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACvC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;AACzD,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,KAAK,IAAI,KAAK,CAAC;AACzB,GAAG;AACH;AACA;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC3B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACtC,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,IAAI,KAAK,CAAC;AACxB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7B,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AAC7C,GAAG,OAAO,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AAC9D,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC;AACtC,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrE,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,CAAC;AAChD,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG;AACxC,GAAG,GAAG,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;AACvD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACrC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,kBAAkB,CAAC,MAAM;AACnC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChC,MAAM,CAAC,CAAC;AACR,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AAClF,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI;AACJ;AACA,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACvC,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC1C;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC5B,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AACtC,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,8FAA8F,EAAE,GAAG,CAAC,CAAC;AACvH,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC1D;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACzC,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAChD,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,sGAAsG,EAAE,OAAO,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AAC5J,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7B,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AACd,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;AAC5B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACvC,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AACtB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;AACnB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,KAAK;AACpC,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,CAAC,WAAW,CAAC;AAClB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1D;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC5B,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC5C,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;AACtC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAC7D,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,CAAC;AAC9C,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjC;AACA,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,IAAI;AACJ;AACA,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,WAAW,IAAI,GAAG,MAAM,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC;AACrF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC7B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,iBAAiB,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvF;AACA,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC;AACA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,aAAa,CAAC,GAAG,CAAC;AACnB,EAAE,GAAG,OAAO,GAAG,KAAK,WAAW,CAAC;AAChC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACtC,GAAG;AACH;AACA,EAAE,GAAG,GAAG,KAAK,KAAK,CAAC;AACnB,GAAG,GAAG,GAAG,IAAI,CAAC;AACd,GAAG;AACH;AACA,EAAE,GAAG,GAAG,KAAK,QAAQ,CAAC;AACtB,GAAG,GAAG,GAAG,KAAK,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;AAC5C,EAAE,IAAI,GAAG,GAAG,IAAI,YAAY,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC;AAClE,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAC/B,EAAE,QAAQ,GAAG,CAAC,CAAC;AACf,EAAE,WAAW,EAAE,WAAW,CAAC;AAC3B;AACA,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACnF;AACA,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AAC7B,GAAG,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;AACzB,GAAG;AACH;AACA,EAAE,GAAG,OAAO,KAAK,KAAK,WAAW,CAAC;AAClC,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACzE;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,GAAG;AACH;AACA,EAAE,GAAG,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC5B,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChD;AACA,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,IAAI,CAAC;AACzC,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,IAAI,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;AACzB,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7D;AACA,GAAG,KAAI;AACP;AACA,GAAG,GAAG,GAAG,CAAC;AACV;AACA,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,IAAI,CAAC;AAC1C,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,IAAI,CAAC;AAC1C,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACxD;AACA,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC5C,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,GAAG;AACH;AACA,EAAE,GAAG,CAAC,WAAW,CAAC;AAClB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACzD,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,KAAK;AACpC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AACtC,EAAE,IAAI,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC;AACrC;AACA,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;AACjB;AACA,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC;AACA,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;AACvB;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9B;AACA,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE;AACtB;AACA,KAAK,GAAG,KAAK,CAAC;AACd,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACtC,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACpC,MAAM;AACN;AACA,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC;AACA,IAAI,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACtD,IAAI,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAAE,CAAC,CAAC;AACvD;AACA,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACrC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACnB,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,CAAC;AACjB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACxB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjD,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AACpC,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC1C,EAAE,OAAO,GAAG,KAAK,CAAC;AAClB;AACA;AACA,EAAE,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACzD,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,GAAG,OAAO,KAAK,EAAE,OAAO,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;AACrE,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC1C,EAAE,OAAO,GAAG,KAAK,CAAC;AAClB;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,GAAG,OAAO,IAAI,OAAO,KAAK,EAAE,OAAO,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;AAChF,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;AACxB,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1B;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpB,IAAI,OAAO,QAAQ,CAAC;AACpB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAC3B,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAC5B,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;AACxB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC;AAClD,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,MAAM,CAAC;AACtB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAC5B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,YAAY,CAAC,MAAM,CAAC;AACrB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAC3C,EAAE;AACF;AACA,CAAC,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC/C,EAAE,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC;AACrC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACpC,IAAI,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AACnC,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC1F,GAAG;AACH,EAAE;AACF;AACA,CAAC,8BAA8B,CAAC,OAAO,EAAE,QAAQ,CAAC;AAClD,EAAE,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC;AACrC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACvC,IAAI,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AACnC,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;AAC7F,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC;AACxD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,EAAE,KAAK,GAAG,EAAE;AACZ,EAAE,KAAK,GAAG,CAAC;AACX,EAAE,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAC9E;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC3B,GAAG,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AACpC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AAClD,KAAK,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AACrC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,KAAK,KAAK,GAAG,cAAc,CAAC;AAC5B;AACA,KAAK,GAAG,SAAS,CAAC;AAClB,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,OAAO,KAAK,GAAG,SAAS,CAAC;AACzB,OAAO,KAAI;AACX,OAAO,KAAK,EAAE,CAAC;AACf,OAAO;AACP,MAAM;AACN,KAAK,KAAI;AACT,KAAK,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACtD,MAAM,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AACtC,MAAM,CAAC,CAAC;AACR;AACA,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACnB,MAAM,KAAK,GAAG,iBAAiB,CAAC;AAChC;AACA,MAAM,GAAG,SAAS,CAAC;AACnB,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,QAAQ,KAAK,GAAG,KAAK,CAAC;AACtB,QAAQ,KAAI;AACZ,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ;AACR,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,OAAO,CAAC,CAAC;AACjF,MAAM,OAAO;AACb,MAAM;AACN,KAAK;AACL,IAAI,KAAI;AACR,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,CAAC;AAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvB,IAAI,GAAG,CAAC,IAAI,CAAC,wBAAwB,KAAK,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1Q,KAAK,IAAI,CAAC,wBAAwB,GAAG;AACrC,MAAM,OAAO,EAAE,OAAO;AACtB,MAAM,SAAS,EAAE,SAAS;AAC1B,MAAM,gBAAgB,EAAE,gBAAgB;AACxC,MAAM,KAAK,CAAC,KAAK;AACjB,MAAM,KAAK,CAAC,KAAK;AACjB,MAAM,CAAC;AACP,KAAK;AACL;AACA,IAAI,OAAO;AACX,IAAI,KAAI;AACR,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,KAAK,GAAG,gBAAgB,CAAC;AACzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACzG,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACrE;AACA,MAAM,GAAG,CAAC,OAAO,CAAC;AAClB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AACzD,OAAO;AACP;AACA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB;AACA,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;AAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM;AACN,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACpE,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC;AAC1D,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACnC;AACA,EAAE,GAAG,CAAC,OAAO,CAAC;AACd,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG;AACH;AACA;AACA,EAAE,OAAO,KAAK;AACd,GAAG,KAAK,KAAK,CAAC;AACd;AACA;AACA,GAAG,KAAK,cAAc;AACtB;AACA,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF;AACA,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E;AACA,GAAG,KAAK,SAAS;AACjB,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B;AACA,GAAG,KAAK,iBAAiB;AACzB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAC5D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACjI;AACA,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,GAAG,KAAK,KAAK;AACb;AACA,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;AAClC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxB,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AAC1B,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1B,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAChD,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;AACxC;AACA,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/E,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,GAAG,OAAO,KAAK,IAAI,WAAW,CAAC;AACjC,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACtF,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACxC,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;AAChC,EAAE,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7D,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7B,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9E,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,OAAO,IAAI;AACb,GAAG,KAAK,QAAQ;AAChB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3B,IAAI,MAAM;AACV;AACA,GAAG,KAAK,SAAS;AACjB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AAClD,IAAI,MAAM;AACV;AACA,GAAG,KAAK,SAAS;AACjB,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAC3E,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7B,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC5C,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC1C;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxC;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,cAAc,GAAG,CAAC,CAAC;AACzB;AACA;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3D,GAAG,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACxE,GAAG;AACH;AACA,EAAE,GAAG,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC;AAC5C,GAAG,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACxC,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;AACvD,GAAG;AACH,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE;AACrB,EAAE,IAAI,WAAW,CAAC;AAClB;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,GAAG,SAAS,EAAEC,kBAA0B;AACxC,GAAG,OAAO,EAAEC,aAAqB;AACjC,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC;AAC3D,GAAG,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9D,GAAG,KAAI;AACP,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACnD,GAAG;AACH;AACA,EAAE,GAAG,WAAW,CAAC;AACjB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AACvD;AACA,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAChF,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACxI,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACzF,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC;AACzB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC3B,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACzB,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACvB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAChC;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC5B,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AACjF;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC5B,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACtB,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AACtD,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9D,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3E;AACA,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnD,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B;AACA,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AACrD,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7D,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AACxC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACvC,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE;AACvB,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AACrD,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC7E,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3F,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACtE,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;AACrB,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AACf,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7C,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC/C,GAAG,KAAI;AACP,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC5C,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAChD,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACvC,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;AACzB,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC;AAC3D,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,MAAM,CAAC;AAC/C,GAAG,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACxR;AACA,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvB,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACzH;AACA,IAAI,MAAM,MAAM,GAAG,cAAc,GAAG,WAAW,GAAG,KAAK,CAAC;AACxD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,cAAc,GAAG,WAAW,GAAG,KAAK,CAAC;AACrF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACvC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAC1C,IAAI,MAAM;AACV,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC;AACzD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5C,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC1B;AACA;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACtE,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACvC,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACnC,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;AACnB,KAAK;AACL,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE;AACf,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACjC,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,EAAE;AACf,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACxC,EAAE;AACF;AACA;AACA,CAAC,aAAa,CAAC,EAAE;AACjB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACnC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;AAC1J;AACA,GAAG,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACzC,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACvC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;AAC3C,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AACf,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACzC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACzD;AACA,EAAE,GAAG,CAAC,KAAK,CAAC;AACZ,GAAG,GAAG,OAAO,EAAE;AACf,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI;AACJ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AAC7B;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;AACjC,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7C,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1C,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrC,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,GAAG;AACH,EAAE;AACF;;ACvmCe,MAAM,aAAa,SAAS,WAAW;AACtD;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACtC,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACxD,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvC;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA;AACA,CAAC,sBAAsB,EAAE;AACzB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACtC;AACA,GAAG,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa;AACjD,IAAI,KAAK,QAAQ;AACjB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACpD,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACzE,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B,MAAM,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvF,MAAM;AACN,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACrD,KAAK,MAAM;AACX,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,MAAM,CAAC,OAAO,CAAC;AAChB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,OAAO,CAAC,OAAO,CAAC;AACjB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,MAAM,CAAC,OAAO,CAAC;AAChB,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,EAAE;AACF;AACA,CAAC,UAAU,CAAC,KAAK,CAAC;AAClB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;AACvC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,IAAI;AACJ,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,EAAE;AACX,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAClB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1C,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,EAAE;AACT,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACjC,EAAE;AACF;;AClGe,MAAM,kBAAkB,SAAS,WAAW,CAAC;AAC5D;AACA,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;AACpB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACjB;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG;AACnB,GAAG,OAAO;AACV,GAAG,UAAU;AACb,GAAG,aAAa;AAChB,GAAG,YAAY;AACf,GAAG,YAAY;AACf,GAAG,WAAW;AACd,GAAG,UAAU;AACb,GAAG,WAAW;AACd,GAAG,SAAS;AACZ,GAAG,WAAW;AACd,GAAG,YAAY;AACf,GAAG,UAAU;AACb,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,YAAY,GAAG;AACtB,GAAG,gBAAgB,CAAC,MAAM;AAC1B,GAAG,eAAe,CAAC,KAAK;AACxB,GAAG,iBAAiB,CAAC,OAAO;AAC5B,GAAG,eAAe,CAAC,QAAQ;AAC3B,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,cAAc,GAAG;AACxB,GAAG,KAAK,CAAC;AACT,IAAI,UAAU,CAAC,IAAI;AACnB,IAAI,MAAM,CAAC,IAAI;AACf,IAAI;AACJ,GAAG,MAAM,CAAC;AACV,IAAI,UAAU,CAAC,IAAI;AACnB,IAAI,MAAM,CAAC,IAAI;AACf,IAAI;AACJ,GAAG,OAAO,CAAC;AACX,IAAI,UAAU,CAAC,IAAI;AACnB,IAAI,MAAM,CAAC,IAAI;AACf,IAAI;AACJ,GAAG,QAAQ,CAAC;AACZ,IAAI,UAAU,CAAC,IAAI;AACnB,IAAI,MAAM,CAAC,IAAI;AACf,IAAI;AACJ,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACvC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;AAC3B,IAAI,OAAO,CAAC,IAAI;AAChB,IAAI,UAAU,CAAC,EAAE;AACjB,IAAI,CAAC;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACpD,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/E,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC3E,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AACjC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAChD;AACA,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3E,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACjC;AACA,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5C;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACjD,GAAG;AACH,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzB,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAClD,EAAE,UAAU,GAAG;AACf,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;AACjB,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AACzC,GAAG,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,GAAG,OAAO,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7B,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD;AACA,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAClD;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,wBAAwB,EAAE;AAC3B,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7C,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,IAAI,IAAI,IAAI,UAAU,CAAC;AAC7B,GAAG,IAAI,IAAI,QAAQ,IAAI,SAAS,CAAC;AACjC,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC;AACpC;AACA,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtF,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE;AACF;AACA,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AAC3C,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU;AAC/C,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;AACrC,EAAE,OAAO,GAAG,KAAK,CAAC;AAClB;AACA,EAAE,GAAG,KAAK,CAAC;AACX,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC;AACnB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC9C,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,KAAK,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,KAAK,OAAO,GAAG,IAAI,CAAC;AACpB,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5E,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE;AACvB,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAChC,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzB,KAAK,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,KAAK,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrD;AACA,KAAK;AACL,IAAI,KAAI;AACR,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;AACxB,KAAK,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxD,KAAK,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5D;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AAC1G,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpC,GAAG;AACH,EAAE;AACF;AACA,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD;AACA,EAAE,KAAK,IAAI,EAAE,IAAI,IAAI,EAAE;AACvB,GAAG,IAAI,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACzD;AACA,GAAG,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AAC1C,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,CAAC,CAAC;AACN;AACA,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AACnB,IAAI,MAAM;AACV,IAAI;AACJ;AACA,GAAG,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AAC9C,IAAI,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,KAAK,IAAI,MAAM,IAAI,SAAS,EAAE;AACjC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,KAAK,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7C,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC;AACpD,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;AAC9B;AACA,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3C,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACjC,EAAE,OAAO,GAAG,EAAE;AACd,EAAE,aAAa,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACtB,GAAG,IAAI,SAAS;AAChB,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,GAAG,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9C;AACA,GAAG,GAAG,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,CAAC;AACzD,IAAI,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;AACzC,IAAI,KAAI;AACR,IAAI,OAAO,GAAG;AACd,KAAK,KAAK,KAAK,CAAC;AAChB,KAAK,KAAK,OAAO;AACjB,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9H,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7D;AACA,OAAO,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACtC,QAAQ,OAAO,GAAG,CAAC,UAAU,EAAE,KAAK,MAAM,CAAC;AAC3C,QAAQ,CAAC,CAAC;AACV;AACA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7G,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,QAAQ;AACR,OAAO;AACP,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,QAAQ;AAClB,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,OAAO,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/D,OAAO;AACP,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,MAAM;AAChB,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC;AACxC,QAAQ,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpD,QAAQ,KAAI;AACZ,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,OAAO,CAAC,IAAI,CAAC,+IAA+I,CAAC,CAAC;AACvK,SAAS;AACT,QAAQ;AACR,OAAO;AACP,MAAM,MAAM;AACZ,KAAK;AACL,IAAI;AACJ;AACA,GAAG,GAAG,SAAS,CAAC;AAChB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG;AACzB,KAAK,MAAM,CAAC,MAAM;AAClB,KAAK,SAAS,CAAC,SAAS;AACxB,KAAK,CAAC;AACN,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACvC;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC;AAChC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,OAAO,CAAC;AACzB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAChC,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;AACvB,IAAI,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvD,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;;ACjUe,MAAM,uBAAuB;AAC5C;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,EAAE;AACF;AACA,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC9B,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnC,GAAG,OAAO,CAAC,IAAI,CAAC,6EAA6E,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxH,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;AAC3C,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;AAC9B,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC9G,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC1D,GAAG,KAAI;AACP,GAAG,GAAG,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3E,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC;AACrD,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,6BAA6B,GAAG,IAAI,GAAG,mFAAmF,CAAC,CAAC;AAC/J,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE;AACF;;AC7Be,MAAM,UAAU,SAAS,WAAW;AACnD,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE;AACF;AACA,CAAC,UAAU,EAAE,EAAE;AACf;AACA,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC;AAC5D,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;AACtC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC1B,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC7C;AACA;AACA,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI;AACJ;AACA;AACA,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AAC1F;AACA,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACtE;AACA,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACpG;AACA,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACpC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7B,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnG,MAAM;AACN;AACA,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvE;AACA,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC;AACvC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB;AACA,MAAM,GAAG,OAAO,KAAK,KAAK,CAAC;AAC3B,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACpD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,cAAc,KAAK,WAAW,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;AAC3H,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAC;AAC/J,MAAM;AACN,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;AACvB,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAClD;AACA,IAAI,GAAG,CAAC,MAAM,CAAC;AACf,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK;AACL;AACA,IAAI,UAAU,CAAC,MAAM;AACrB,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAClD,IAAI,CAAC;AACL,KAAK,OAAO,CAAC,MAAM;AACnB,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1B,KAAK,CAAC,CAAC;AACP,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC7C;AACA,GAAG,GAAG,CAAC,IAAI,CAAC;AACZ,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,cAAc,KAAK,WAAW,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;AACnH,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;AACvB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC;AACxB,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,YAAY,CAAC,GAAG,CAAC;AAClB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC;AACrB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,UAAU,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACzI;AACA,EAAE,GAAG,UAAU,CAAC;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AACxG,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5G,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAClC,EAAE;AACF;;AC/He,MAAM,gBAAgB,CAAC;AACtC;AACA,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;AACvC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;AACvC,EAAE,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC;AAClC,EAAE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;AACzB,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC3B,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACjD,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClF,KAAK,OAAO;AACZ,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;AAC/D,GAAG,OAAO;AACV,GAAG;AACH;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACrD,EAAE;AACF;AACA,CAAC,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC;AAC3C,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAClD;AACA,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG;AACjC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACpB,EAAE,MAAM,CAAC;AACT;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK;AAC7C,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtD;AACA,IAAI,GAAG,CAAC,CAAC,CAAC;AACV,KAAK,MAAM,GAAG,UAAU,CAAC;AACzB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACtC,EAAE;AACF;;ACxGe,MAAM,gBAAgB,CAAC;AACtC;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClF,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC;AAClC,EAAE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;AAC3C,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAClC,GAAG,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAClC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC3B,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACjD,KAAK,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACvC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClB,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClF,KAAK,OAAO;AACZ,KAAK;AACL,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;AAC/D,GAAG,OAAO;AACV,GAAG;AACH;AACA,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,UAAU,CAAC,GAAG,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACrD,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC;AAC1C,EAAE,IAAI,KAAK,GAAG,YAAY,CAAC;AAC3B;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AACjB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK;AAC/C,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,CAAC,CAAC;AACN;AACA,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG,KAAI;AACP,GAAG,OAAO,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;AACjE,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACpB,EAAE,IAAI,SAAS,GAAG,KAAK,CAAC;AACxB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AACjB,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK;AAC/C,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,KAAK,SAAS,GAAG,IAAI,CAAC;AACtB,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,EAAE;AACF;AACA,CAAC,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC;AAC3C,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAClD;AACA,EAAE,GAAG,SAAS,CAAC;AACf,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG;AACjC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB;AACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,GAAG,CAAC;AACnC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACtC,EAAE;AACF;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,GAAG,CAAC;AACnC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;AACnC,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,GAAG,CAAC;AACnC;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;AACrC,EAAE;AACF;;AC/Je,MAAM,kBAAkB,SAAS,WAAW;AAC3D;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACtC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;AAC5B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf;AACA,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC;AACpD,GAAG,GAAG,GAAG,yCAAyC,GAAG,SAAS,GAAG,6BAA6B,CAAC;AAC/F;AACA,GAAG,GAAG,SAAS,CAAC;AAChB,IAAI,GAAG,GAAG,GAAG,GAAG,qBAAqB,GAAG,SAAS,GAAG,mBAAmB,CAAC;AACxE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AACpH,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AACtE,IAAI;AACJ;AACA,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;AACzB,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC;AACpD,GAAG,IAAI,CAAC,SAAS,CAAC,2CAA2C,GAAG,SAAS,GAAG,gCAAgC,GAAG,GAAG,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AAC1L;AACA,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE;AACF;AACA,CAAC,GAAG,CAAC,GAAG,CAAC;AACT,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtB,EAAE;AACF;;AC5CA,MAAM,aAAa,CAAC;AACpB;AACA,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC;AACvB,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE;AACF;AACA,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC;AACzB,EAAE,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClD;AACA,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;AAClC,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,OAAO,EAAE,KAAK,CAAC;AACjB;AACA,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC/B,GAAG,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9C;AACA,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AACrB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAC3C,KAAK,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD;AACA,KAAK,GAAG,KAAK,CAAC;AACd,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,CAAC,OAAO,WAAW,KAAK,WAAW,IAAI,KAAK,YAAY,WAAW,KAAK,KAAK,YAAY,SAAS,CAAC;AAC9G,GAAG,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7C;AACA,GAAG,GAAG,KAAK,CAAC;AACZ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC;AAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,IAAI,CAAC,CAAC;AACN,GAAG,KAAI;AACP,GAAG,GAAG,CAAC,MAAM,CAAC;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF;AACA,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC;AAC7B,EAAE,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC;AAClD,GAAG,OAAO,OAAO,YAAY,SAAS,GAAG,KAAK,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;AACvF,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC;AACD;AACA,aAAa,CAAC,MAAM,GAAG,EAAE;;AC3DzB;AACe,gBAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;AACxC,CAAC,GAAG,MAAM,CAAC;AACX,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AACtE,EAAE;AACF;AACA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC1F,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAC/C,EAAE;AACF;;ACTA;AACe,uBAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;AACxC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACjC,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC7B,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC1F,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAC/C,EAAE;AACF;;ACTA;AACe,uBAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;AACxC,CAAC,IAAI,SAAS,GAAG,CAAC;AAClB,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;AACvD,CAAC,GAAG,GAAG,CAAC;AACR,CAAC,OAAO,GAAG,KAAK,CAAC;AACjB;AACA,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AAChC,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACxB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9F,GAAG,OAAO,GAAG,MAAM,CAAC;AACpB,GAAG;AACH;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AACpB,GAAG,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClC,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,GAAG,OAAO,CAAC;AACZ,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpD;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC3F,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAChD,GAAG;AACH;AACA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACb,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,KAAI;AACN,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC3F,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAChD,GAAG;AACH,EAAE;AACF;;ACvCA;AACe,mBAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;AACxC,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAC9E,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AACpB,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;AACnB,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;AACvB,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;AACtB,CAAC,IAAI,WAAW,GAAG,EAAE,CAAC;AACtB,CAAC,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAC7B,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC;AACzB,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;AACvB,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AACjB;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,CAAC;AAC1B,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,GAAG,OAAO,KAAK,CAAC,IAAI,QAAQ,CAAC;AAC/B,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,IAAI,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,KAAI;AACR,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,QAAQ,GAAG,KAAK,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,EAAE;AACF;AACA;AACA,CAAC,SAAS,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;AAChE,EAAE,IAAI,YAAY,GAAG,EAAE;AACvB,EAAE,aAAa,GAAG,CAAC;AACnB,EAAE,cAAc,GAAG,CAAC;AACpB,EAAE,YAAY,GAAG,CAAC;AAClB,EAAE,sBAAsB,GAAG,aAAa;AACxC,EAAE,GAAG,GAAG,CAAC;AACT,EAAE,WAAW,GAAG,CAAC;AACjB,EAAE,aAAa,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,SAAS,QAAQ,CAAC,GAAG,CAAC;AACxB,GAAG,QAAQ,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;AAC9D,GAAG;AACH;AACA,EAAE,SAAS,UAAU,CAAC,GAAG,CAAC;AAC1B,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;AAC1F,GAAG;AACH;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAClC,GAAG,IAAI,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5D,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;AACnC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,KAAI;AACR,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC1D,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrC,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtC;AACA,KAAK,sBAAsB,IAAI,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAC9H;AACA,KAAK,GAAG,sBAAsB,CAAC;AAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAC9D,MAAM;AACN,KAAK,KAAI;AACT,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK,WAAW,IAAI,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AACnH,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;AACzB,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACrC,IAAI,aAAa,IAAI,UAAU,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzF,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpC,IAAI,CAAC,CAAC;AACN;AACA,GAAG,cAAc,GAAG,SAAS,GAAG,aAAa,CAAC;AAC9C;AACA,GAAG,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC;AACxF;AACA,GAAG,GAAG,GAAG,YAAY,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC/E,GAAG,KAAI;AACP,GAAG,GAAG,GAAG,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;AACjG;AACA,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACzC,IAAI,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtE,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF;AACA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC1F,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAC/C,EAAE;AACF;AACA;AACA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AAC5F,EAAE,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AACtG,EAAE;AACF;AACA,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC;AACjC,EAAE,IAAI,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAChC;AACA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;AACpB;AACA,GAAG,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzC;AACA,GAAG,GAAG,KAAK,CAAC;AACZ;AACA,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,IAAI,UAAU,IAAI,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC5D;AACA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AACrC,KAAK,kBAAkB,CAAC,IAAI,CAAC;AAC7B,MAAM,MAAM,CAAC,MAAM;AACnB,MAAM,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ;AACrD,MAAM,CAAC,CAAC;AACR,KAAK,eAAe,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AACtD,KAAK;AACL;AACA,IAAI,KAAI;AACR,IAAI,WAAW,CAAC,IAAI,CAAC;AACrB,KAAK,MAAM,CAAC,MAAM;AAClB,KAAK,KAAK,CAAC,CAAC;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,aAAa,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC;AACtD,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA;AACA,CAAC,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AACrC;AACA;AACA,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;AACtD;AACA;AACA,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACrE;AACA;AACA,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,CAAC;AACtC,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;AACrD,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAClC,EAAE,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;AACzB,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAC/C;AACA;AACA,CAAC,GAAG,aAAa,GAAG,CAAC,IAAI,eAAe,CAAC;AACzC,EAAE,OAAO,GAAG,YAAY,CAAC,kBAAkB,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/G,EAAE;AACF;AACA;AACA,CAAC,GAAG,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC;AACzC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;AACnE,EAAE;AACF;AACA,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAClC,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACzC,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,EAAE,CAAC,CAAC;AACJ;;ACrKA,mBAAe;AACf,CAAC,OAAO,CAAC,OAAO;AAChB,CAAC,WAAW,CAAC,cAAc;AAC3B,CAAC,YAAY,CAAC,cAAc;AAC5B,CAAC,cAAc,CAAC,cAAc;AAC9B,CAAC,UAAU,CAAC,UAAU;AACtB,CAAC;;ACPD,MAAM,MAAM,SAAS,MAAM;AAC3B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC5D;AACA,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACzC;AACA,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,6DAA6D,GAAG,MAAM,CAAC,CAAC;AACxF,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzB,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AACjC,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AACnC,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACzE,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,WAAW,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACrC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC3F,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACpC,EAAE;AACF,CAAC;AACD;AACA,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7B;AACA;AACA,MAAM,CAAC,KAAK,GAAG,YAAY;;ACzD3B,mBAAe;AACf,CAAC,SAAS,CAAC;AACX,EAAE,QAAQ,CAAC;AACX,GAAG,MAAM,CAAC,MAAM;AAChB,GAAG,OAAO,CAAC,OAAO;AAClB,GAAG;AACH,EAAE,SAAS,CAAC;AACZ,GAAG;AACH,EAAE,MAAM,CAAC;AACT,GAAG,SAAS,CAAC,SAAS;AACtB,GAAG,OAAO,CAAC,OAAO;AAClB,GAAG;AACH,EAAE,YAAY,CAAC;AACf,GAAG,WAAW,CAAC,WAAW;AAC1B,GAAG,YAAY,CAAC,WAAW;AAC3B,GAAG,OAAO,CAAC,OAAO;AAClB,GAAG,aAAa,CAAC,YAAY;AAC7B,GAAG,MAAM,CAAC,MAAM;AAChB,GAAG,YAAY,CAAC,WAAW;AAC3B,GAAG,MAAM,CAAC,MAAM;AAChB,GAAG,YAAY,CAAC,WAAW;AAC3B,GAAG,MAAM,CAAC,MAAM;AAChB,GAAG,YAAY,CAAC,WAAW;AAC3B,GAAG,KAAK,CAAC,KAAK;AACd,GAAG,SAAS,CAAC;AACb,IAAI,SAAS,EAAE,SAAS;AACxB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI;AACJ,GAAG;AACH,EAAE,eAAe,CAAC;AAClB,GAAG,SAAS,CAAC,kBAAkB;AAC/B,GAAG,SAAS,CAAC,EAAE;AACf,GAAG;AACH,EAAE;AACF,CAAC;;AC9BD,MAAM,QAAQ,SAAS,MAAM;AAC7B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACpB,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,KAAK,KAAK,CAAC;AACzE,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;AAC9F,GAAG;AACH;AACA,EAAE,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7C,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,EAAE;AACF;AACA;AACA,CAAC,0BAA0B,CAAC,WAAW,CAAC;AACxC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;AAC5D,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1B,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAChC,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3B,EAAE,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC;AACxB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;AAChD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,aAAa,CAAC;AACzB,EAAE,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC;AAC7C;AACA;AACA,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;AACpC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC;AACzB,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AACtC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB,MAAM;AACN,KAAK,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,KAAK,KAAI;AACT,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,GAAG,aAAa,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;AAClD;AACA,GAAG,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AACpD,GAAG;AACH;AACA,EAAE,GAAG,aAAa,CAAC;AACnB;AACA,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACpC,IAAI,IAAI,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C;AACA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7B,KAAK,OAAO,CAAC,IAAI,CAAC,6EAA6E,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACxH,KAAK,aAAa,GAAG,MAAM,CAAC;AAC5B,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,iEAAiE,EAAE,aAAa,CAAC,CAAC;AACpG,KAAK,aAAa,GAAG,SAAS,CAAC;AAC/B,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;AAC9B;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC7D;AACA,EAAE,GAAG,aAAa,IAAI,SAAS,CAAC;AAChC,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,MAAM,CAAC;AAChB,EAAE,OAAO,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AACpD,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACrB,EAAE,IAAI,QAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI;AAClD,EAAE,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,EAAE,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;AAC9B,GAAG,IAAI,QAAQ,CAAC;AAChB;AACA,GAAG,GAAG,IAAI,CAAC;AACX,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B;AACA,IAAI,GAAG,OAAO,QAAQ,IAAI,WAAW,CAAC;AACtC,KAAK,IAAI,GAAG,QAAQ,CAAC;AACrB,KAAK,KAAI;AACT,KAAK,IAAI,GAAG,KAAK,CAAC;AAClB,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACrB,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC;AAChC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC;AACA;AACA,QAAQ,CAAC,KAAK,GAAG,YAAY;;ACpL7B,MAAM,KAAK,SAAS,MAAM;AAC1B;AACA,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,EAAE;AACF;AACA,CAAC,cAAc,CAAC,SAAS,CAAC;AAC1B,EAAE,IAAI,WAAW,GAAG,EAAE;AACtB,EAAE,UAAU,CAAC;AACb;AACA,EAAE,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACpD;AACA,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC7B,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AACzB,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,WAAW,CAAC;AACrB,EAAE;AACF;AACA,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACtC,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACnD;AACA,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACtC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACnE,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,SAAS,CAAC;AACtC,GAAG,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,SAAS,CAAC,CAAC;AACzF,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACrC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxE,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,MAAM,CAAC,CAAC;AACrE,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,KAAK,CAAC,UAAU,GAAG,OAAO;;;;;;;;;AC9CX,MAAM,YAAY,CAAC;AAClC;AACA,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC;AAChC,EAAE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACjD;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxC,GAAG;AACH,EAAE;AACF;AACA,CAAC,uBAAuB,CAAC,SAAS,CAAC;AACnC,EAAE,SAAS,CAAC,cAAc,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,SAAS,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC3D,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1D;AACA,IAAI,GAAG,MAAM,CAAC;AACd,KAAK,GAAG,OAAO,MAAM,IAAI,QAAQ,CAAC;AAClC,MAAM,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC;AAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,OAAO;AACP,MAAM,KAAI;AACV,MAAM,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;AAC9E,MAAM;AACN,KAAK,KAAI;AACT,KAAK,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,QAAQ,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;AAChE,IAAI;AACJ,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,OAAO,CAAC;AAC9C,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5B,IAAI,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACzC,IAAI,CAAC,CAAC;AACN,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,CAAC,qBAAqB,GAAG,SAAS,GAAG,CAAC;AACjD,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;AAClD,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,CAAC;AACvC,GAAG,IAAI,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AACtE,GAAG,CAAC;AACJ;AACA;AACA,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU;AAC9C,GAAG,IAAI,gBAAgB,GAAG,EAAE;AAC5B,GAAG,cAAc,GAAG,EAAE;AACtB,GAAG,aAAa,GAAG,EAAE,CAAC;AACtB;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,GAAG,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,CAAC;AAC5C,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChC;AACA,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AAChC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,KAAI;AACT,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;AAC5B,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;AACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,OAAO,KAAI;AACX,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,OAAO;AACP;AACA,MAAM,KAAI;AACV,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnF,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF;AACA,GAAG,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AACvF,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;AACtC,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpC;AACA,EAAE,GAAG,IAAI,CAAC;AACV,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzB,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;AACpC,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACjC,EAAE;AACF;;ACtGe,MAAM,KAAK,SAAS,WAAW;AAC9C,CAAC,WAAW,CAAC,KAAK,CAAC;AACnB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5C,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE;AACtB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACtC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC1C,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,KAAK,CAAC;AAC7B,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB;AACA,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB;AACA,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC7F;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACpD;AACA,GAAG,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC;AACpC,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,GAAG,OAAO,YAAY,WAAW,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACzC,IAAI,KAAI;AACR,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChD,GAAG;AACH,EAAE;AACF;AACA,CAAC,KAAK,EAAE;AACR,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACtD,EAAE;AACF;;ACrCA,MAAM,SAAS,CAAC;AAChB;AACA,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAClC,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7B,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACnB,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAChE;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACrC;AACA,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACvC;AACA;AACA,GAAG,UAAU,CAAC,MAAM;AACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC3B,EAAE,GAAG,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,YAAY,WAAW,CAAC;AAC1E,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC;AACvC,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD;AACA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACnB,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,OAAO,CAAC,CAAC;AAC9F,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,OAAO,CAAC,CAAC;AAClF,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAC/B,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAC9E;AACA,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACrC;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACnG,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACzE;AACA,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAIC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACzD;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AAClC,EAAE;AACF;AACA;AACA,CAAC,2BAA2B,EAAE;AAC9B;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE;AAClB;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC3B,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;AACpC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AAClC,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE;AACrD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;AAC5C,IAAI;AACJ,GAAG,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AACjC,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC1D,EAAE;AACF;AACA;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC7C,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;AACnC,GAAG,IAAI,MAAM;AACb,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC;AACjC,KAAK,MAAM;AACX,KAAK;AACL;AACA,GAAG,KAAK,KAAK;AACb,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAChD;AACA,GAAG;AACH,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACrB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,EAAE;AACvB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvD;AACA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACpE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;AACxB,EAAE,UAAU,CAAC;AACb;AACA,EAAE,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC;AACjC,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AACvC,GAAG,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C;AACA;AACA,GAAG,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACvC;AACA;AACA,GAAG,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC;AAC3B,IAAI,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;AACxC,KAAK,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtE,KAAK;AACL,IAAI;AACJ;AACA;AACA,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACxD;AACA,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AACvC,GAAG;AACH;AACA,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrC,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC;AACA;AACA,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpE;AACA;AACA,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;AACpB,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AACnF,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AACzC,GAAG;AACH;AACA;AACA,EAAE,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC;AACjC,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/F,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC/C,GAAG;AACH;AACA;AACA,EAAE,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC;AACjC,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/F,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC/C,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;AACvC;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AAClC,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB;AACA;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACpC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACpB,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;AACvD,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACpD;AACA,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;AAC3B,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;AACzC;AACA,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpE,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACvC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AACpB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjD;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxC,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE;AACnB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA,CAAC,OAAO,EAAE;AACV,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB;AACA,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC1C;AACA;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA;AACA,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpE,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACjD,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;AAC/D;AACA,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,GAAG,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,GAAG,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,GAAG,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC3B,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,GAAG,KAAI;AACP,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,qVAAqV,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,2hDAA2hD,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACv6D,EAAE;AACF;AACA,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;AACrB,EAAE,IAAI,KAAK,EAAE,IAAI,CAAC;AAClB;AACA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3D,GAAG,GAAG,CAAC,IAAI,CAAC;AACZ,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD;AACA,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACtB,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,KAAK,KAAI;AACT,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,KAAK;AACL,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,IAAI,GAAG,qJAAqJ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAChP,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA,CAAC,WAAW,EAAE;AACd,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC3C,EAAE;AACF;AACA;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAClC,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;AACrC;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC5C,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AAC9B,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,8EAA8E,CAAC,CAAC;AACxG;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC3D,EAAE;AACF;AACA;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AACpC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AAC9B,EAAE;AACF;AACA;AACA,CAAC,OAAO,CAAC,MAAM,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA,CAAC,YAAY,CAAC,MAAM,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9C,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AAClC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChE,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AACrC;AACA,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC3B,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE;AACA,KAAK,GAAG,GAAG,CAAC;AACZ,MAAM,SAAS,EAAE,CAAC;AAClB;AACA,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,IAAI;AACjB,QAAQ,SAAS,EAAE,CAAC;AACpB;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC;AACtB,SAAS,OAAO,EAAE,CAAC;AACnB,SAAS;AACT,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK;AACrB,QAAQ,MAAM,CAAC,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAQ,CAAC,CAAC;AACV,MAAM,KAAI;AACV,MAAM,MAAM,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AACxD,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AAC1B,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AACrC;AACA,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,CAAC;AACX,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AAC7C,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK;AACrB,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC;AACtB;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AAChC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,CAAC;AACT;AACA,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AACtB,MAAM,CAAC,CAAC;AACR,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,SAAS,GAAG,CAAC,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AACrC;AACA,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI;AACJ;AACA,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC3B,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE;AACA,KAAK,SAAS,EAAE,CAAC;AACjB;AACA,KAAK,GAAG,GAAG,CAAC;AACZ,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,IAAI;AACjB,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AACtC;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC;AACtB,SAAS,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,SAAS;AACT,QAAQ,CAAC,CAAC;AACV,MAAM,KAAI;AACV,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,OAAO,GAAG;AACxB,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7C;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC;AACtB,SAAS,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,SAAS;AACT,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC7B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC9D,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACzD;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC7B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,QAAQ,CAAC,CAAC;AACjE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,KAAK,CAAC;AACjB,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,GAAG;AACH;AACA;AACA,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC;AACxB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD;AACA,GAAG,GAAG,GAAG,CAAC;AACV,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;AACjE,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;AAClE,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC3B,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;AAC5B,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAChB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;AACvC;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC9B,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;AACxD,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;AAClC,IAAI,CAAC,CAAC;AACN,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC9B,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,KAAK,IAAI,CAAC,IAAI;AACd,KAAK,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP,GAAG,KAAI;AACP,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACvC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG;AAClB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC9B,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,KAAK,IAAI,CAAC,IAAI;AACd,KAAK,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAChD,KAAK,CAAC,CAAC;AACP,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;AAChE,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;AACjE,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AACxC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChE,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;AAChE,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;AACjE,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AACzB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,OAAO,CAAC;AACb,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChC,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE;AACF;AACA,CAAC,OAAO,CAAC,MAAM,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,KAAK,CAAC;AACtB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,GAAG,GAAG,CAAC;AACT,GAAG,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC5B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAClE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,UAAU,CAAC,UAAU,CAAC;AACvB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,mFAAmF,CAAC,CAAC;AAC7G;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5C,EAAE;AACF;AACA,CAAC,UAAU,CAAC,UAAU,CAAC;AACvB,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACtD,EAAE;AACF;AACA,CAAC,SAAS,CAAC,KAAK,CAAC;AACjB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AAChC,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;AACjE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE;AACvB,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;AAChD,EAAE;AACF;AACA,CAAC,UAAU,CAAC,KAAK,CAAC;AAClB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;AACjB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;AACxE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,KAAK,CAAC;AAClB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;AACjB,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;AACxE,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,YAAY,CAAC,KAAK,CAAC;AACpB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,KAAI;AACR,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,KAAK,CAAC,CAAC;AACrF,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC;AACrC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;AACjE,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK;AACrB,IAAI,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;AACjC,IAAI,CAAC,CAAC;AACN,EAAE;AACF;AACA,CAAC,YAAY,CAAC,KAAK,CAAC;AACpB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AAC1E,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC;AAC1C,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,MAAM,CAAC;AACZ,GAAG,OAAO,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC9C,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AAC1E,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;AAC5B,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;AACtD,EAAE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,GAAG,UAAU,CAAC;AAChB,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/D,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,QAAQ,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG,KAAI;AACP,GAAG,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;AAChE,GAAG;AACH,EAAE;AACF;AACA;AACA,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC3C,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrD;AACA,GAAG,GAAG,MAAM,CAAC;AACb,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1E,IAAI,KAAI;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;AACpE,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAE;AACF;AACA,CAAC,SAAS,CAAC,MAAM,CAAC;AAClB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAC/D,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAClD,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;AACvC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;AAClB,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/C,EAAE;AACF;AACA,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;AACnB,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjD,EAAE;AACF;AACA,CAAC,aAAa,EAAE;AAChB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf;AACA,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;AAC7C,EAAE;AACF;AACA;AACA;AACA,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1C,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC5B,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC5B,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1B,GAAG,OAAO,IAAI,CAAC;AACf,GAAG,KAAI;AACP,GAAG,GAAG,QAAQ,CAAC;AACf,IAAI,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,MAAM,CAAC,CAAC;AAC/D,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,EAAE,GAAG,CAAC,GAAG,CAAC;AACV,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAE;AACF,CAAC;AACD;AACA;AACA,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC;AAC1C;AACA;AACA,IAAI,YAAY,CAAC,SAAS,CAAC;;AC53B3B;AAIA;AACA,MAAM,aAAa,SAAS,SAAS,CAAC,EAAE;AACxC;AACA;AACA,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;;ACRzB,MAAM,SAAS,CAAC;AAC/B;AACA,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACvC,EAAE;AACF;AACA,CAAC,cAAc,EAAE;AACjB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,UAAU,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;AACA,CAAC,YAAY,EAAE;AACf,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE;AACF;AACA,CAAC,SAAS,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAClC,EAAE;AACF;AACA,CAAC,UAAU,EAAE,EAAE;AACf;AACA,CAAC,YAAY,EAAE,EAAE;AACjB;AACA,CAAC,eAAe,EAAE,EAAE;AACpB;AACA,CAAC,aAAa,EAAE,EAAE;AAClB;AACA,CAAC,kBAAkB,EAAE,EAAE;AACvB;AACA,CAAC,UAAU,EAAE,EAAE;AACf;AACA,CAAC,aAAa,EAAE,EAAE;AAClB;AACA,CAAC,eAAe,EAAE,EAAE;AACpB;;"} \ No newline at end of file diff --git a/src/main/webapp/tabulator/dist/js/tabulator_esm.min.js b/src/main/webapp/tabulator/dist/js/tabulator_esm.min.js deleted file mode 100644 index b7b7cdef..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator_esm.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v5.5.2 (c) Oliver Folkerd 2023 */ -class e{constructor(e){this.table=e}reloadData(e,t,i){return this.table.dataLoader.load(e,void 0,void 0,void 0,t,i)}langText(){return this.table.modules.localize.getText(...arguments)}langBind(){return this.table.modules.localize.bind(...arguments)}langLocale(){return this.table.modules.localize.getLocale(...arguments)}commsConnections(){return this.table.modules.comms.getConnections(...arguments)}commsSend(){return this.table.modules.comms.send(...arguments)}layoutMode(){return this.table.modules.layout.getMode()}layoutRefresh(e){return this.table.modules.layout.layout(e)}subscribe(){return this.table.eventBus.subscribe(...arguments)}unsubscribe(){return this.table.eventBus.unsubscribe(...arguments)}subscribed(e){return this.table.eventBus.subscribed(e)}subscriptionChange(){return this.table.eventBus.subscriptionChange(...arguments)}dispatch(){return this.table.eventBus.dispatch(...arguments)}chain(){return this.table.eventBus.chain(...arguments)}confirm(){return this.table.eventBus.confirm(...arguments)}dispatchExternal(){return this.table.externalEvents.dispatch(...arguments)}subscribedExternal(e){return this.table.externalEvents.subscribed(e)}subscriptionChangeExternal(){return this.table.externalEvents.subscriptionChange(...arguments)}options(e){return this.table.options[e]}setOption(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}deprecationCheck(e,t){return this.table.deprecationAdvisor.check(e,t)}deprecationCheckMsg(e,t){return this.table.deprecationAdvisor.checkMsg(e,t)}deprecationMsg(e){return this.table.deprecationAdvisor.msg(e)}module(e){return this.table.module(e)}}class t{static elVisible(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}static elOffset(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}static deepClone(e,t,i=[]){var s={}.__proto__,o=[].__proto__;for(var n in t||(t=Object.assign(Array.isArray(e)?[]:{},e)),e){let r,a,l=e[n];null==l||"object"!=typeof l||l.__proto__!==s&&l.__proto__!==o||(r=i.findIndex((e=>e.subject===l)),r>-1?t[n]=i[r].copy:(a=Object.assign(Array.isArray(l)?[]:{},l),i.unshift({subject:l,copy:a}),t[n]=this.deepClone(l,a,i)))}return t}}class i extends e{constructor(e,t,i){super(e),this.element=t,this.container=this._lookupContainer(),this.parent=i,this.reversedX=!1,this.childPopup=null,this.blurable=!1,this.blurCallback=null,this.blurEventsBound=!1,this.renderedCallback=null,this.visible=!1,this.hideable=!0,this.element.classList.add("tabulator-popup-container"),this.blurEvent=this.hide.bind(this,!1),this.escEvent=this._escapeCheck.bind(this),this.destroyBinding=this.tableDestroyed.bind(this),this.destroyed=!1}tableDestroyed(){this.destroyed=!0,this.hide(!0)}_lookupContainer(){var e=this.table.options.popupContainer;return"string"==typeof e?(e=document.querySelector(e))||console.warn("Menu Error - no container element found matching selector:",this.table.options.popupContainer,"(defaulting to document body)"):!0===e&&(e=this.table.element),e&&!this._checkContainerIsParent(e)&&(e=!1,console.warn("Menu Error - container element does not contain this table:",this.table.options.popupContainer,"(defaulting to document body)")),e||(e=document.body),e}_checkContainerIsParent(e,t=this.table.element){return e===t||!!t.parentNode&&this._checkContainerIsParent(e,t.parentNode)}renderCallback(e){this.renderedCallback=e}containerEventCoords(e){var i=!(e instanceof MouseEvent),s=i?e.touches[0].pageX:e.pageX,o=i?e.touches[0].pageY:e.pageY;if(this.container!==document.body){let e=t.elOffset(this.container);s-=e.left,o-=e.top}return{x:s,y:o}}elementPositionCoords(e,i="right"){var s,o,n,r=t.elOffset(e);switch(this.container!==document.body&&(s=t.elOffset(this.container),r.left-=s.left,r.top-=s.top),i){case"right":o=r.left+e.offsetWidth,n=r.top-1;break;case"bottom":o=r.left,n=r.top+e.offsetHeight;break;case"left":o=r.left,n=r.top-1;break;case"top":o=r.left,n=r.top;break;case"center":o=r.left+e.offsetWidth/2,n=r.top+e.offsetHeight/2}return{x:o,y:n,offset:r}}show(e,t){var i,s,o,n,r;return this.destroyed||this.table.destroyed||(e instanceof HTMLElement?(o=e,n=(r=this.elementPositionCoords(e,t)).offset,i=r.x,s=r.y):"number"==typeof e?(n={top:0,left:0},i=e,s=t):(i=(r=this.containerEventCoords(e)).x,s=r.y,this.reversedX=!1),this.element.style.top=s+"px",this.element.style.left=i+"px",this.container.appendChild(this.element),"function"==typeof this.renderedCallback&&this.renderedCallback(),this._fitToScreen(i,s,o,n,t),this.visible=!0,this.subscribe("table-destroy",this.destroyBinding),this.element.addEventListener("mousedown",(e=>{e.stopPropagation()}))),this}_fitToScreen(e,t,i,s,o){var n=this.container===document.body?document.documentElement.scrollTop:this.container.scrollTop;if((e+this.element.offsetWidth>=this.container.offsetWidth||this.reversedX)&&(this.element.style.left="",this.element.style.right=i?this.container.offsetWidth-s.left+"px":this.container.offsetWidth-e+"px",this.reversedX=!0),t+this.element.offsetHeight>Math.max(this.container.offsetHeight,n?this.container.scrollHeight:0))if(i)if("bottom"===o)this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight-i.offsetHeight-1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+i.offsetHeight+1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+"px"}isVisible(){return this.visible}hideOnBlur(e){return this.blurable=!0,this.visible&&(setTimeout((()=>{this.visible&&(this.table.rowManager.element.addEventListener("scroll",this.blurEvent),this.subscribe("cell-editing",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),document.body.addEventListener("mousedown",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent),this.blurEventsBound=!0)}),100),this.blurCallback=e),this}_escapeCheck(e){27==e.keyCode&&this.hide()}blockHide(){this.hideable=!1}restoreHide(){this.hideable=!0}hide(e=!1){return this.visible&&this.hideable&&(this.blurable&&this.blurEventsBound&&(document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),document.body.removeEventListener("mousedown",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.unsubscribe("cell-editing",this.blurEvent),this.blurEventsBound=!1),this.childPopup&&this.childPopup.hide(),this.parent&&(this.parent.childPopup=null),this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.visible=!1,this.blurCallback&&!e&&this.blurCallback(),this.unsubscribe("table-destroy",this.destroyBinding)),this}child(e){return this.childPopup&&this.childPopup.hide(),this.childPopup=new i(this.table,e,this),this.childPopup}}class s extends e{constructor(e,t){super(e),this._handler=null}initialize(){}registerTableOption(e,t){this.table.optionsList.register(e,t)}registerColumnOption(e,t){this.table.columnManager.optionsList.register(e,t)}registerTableFunction(e,t){void 0===this.table[e]?this.table[e]=(...i)=>(this.table.initGuard(e),t(...i)):console.warn("Unable to bind table function, name already in use",e)}registerComponentFunction(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}registerDataHandler(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}registerDisplayHandler(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}displayRows(e){var t,i=this.table.rowManager.displayRows.length-1;if(this._handler&&(t=this.table.rowManager.displayPipeline.findIndex((e=>e.handler===this._handler)))>-1&&(i=t),e&&(i+=e),this._handler)return i>-1?this.table.rowManager.getDisplayRows(i):this.activeRows()}activeRows(){return this.table.rowManager.activeRows}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}footerAppend(e){return this.table.footerManager.append(e)}footerPrepend(e){return this.table.footerManager.prepend(e)}footerRemove(e){return this.table.footerManager.remove(e)}popup(e,t){return new i(this.table,e,t)}alert(e,t){return this.table.alertManager.alert(e,t)}clearAlert(){return this.table.alertManager.clear()}}class o extends s{constructor(e){super(e),this.allowedTypes=["","data","download","clipboard","print","htmlOutput"],this.registerColumnOption("accessor"),this.registerColumnOption("accessorParams"),this.registerColumnOption("accessorData"),this.registerColumnOption("accessorDataParams"),this.registerColumnOption("accessorDownload"),this.registerColumnOption("accessorDownloadParams"),this.registerColumnOption("accessorClipboard"),this.registerColumnOption("accessorClipboardParams"),this.registerColumnOption("accessorPrint"),this.registerColumnOption("accessorPrintParams"),this.registerColumnOption("accessorHtmlOutput"),this.registerColumnOption("accessorHtmlOutputParams")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="accessor"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupAccessor(e.definition[n]))&&(t=!0,i[n]={accessor:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.accessor=i)}lookupAccessor(e){var t=!1;switch(typeof e){case"string":o.accessors[e]?t=o.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,i){var s="accessor"+(i.charAt(0).toUpperCase()+i.slice(1)),o=e.getComponent(),n=t.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var t,r,a,l;e.modules.accessor&&(r=e.modules.accessor[s]||e.modules.accessor.accessor||!1)&&"undefined"!=(t=e.getFieldValue(n))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(t,n,i,l,o):r.params,e.setFieldValue(n,r.accessor(t,n,i,a,l,o)))})),n}}o.moduleName="accessor",o.accessors={};function n(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(n(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(n(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function r(e){var t=n(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function a(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+r(i))),e}function l(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(l(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(l(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}var h={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=l(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class d extends s{constructor(e){super(e),this.config={},this.url="",this.urlGenerator=!1,this.params=!1,this.loaderPromise=!1,this.registerTableOption("ajaxURL",!1),this.registerTableOption("ajaxURLGenerator",!1),this.registerTableOption("ajaxParams",{}),this.registerTableOption("ajaxConfig","get"),this.registerTableOption("ajaxContentType","form"),this.registerTableOption("ajaxRequestFunc",!1),this.registerTableOption("ajaxRequesting",(function(){})),this.registerTableOption("ajaxResponse",!1),this.contentTypeFormatters=d.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||d.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||d.defaultURLGenerator,this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.setDefaultConfig(this.table.options.ajaxConfig),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-params",this.requestParams.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}requestParams(e,t,i,s){var o=this.table.options.ajaxParams;return o&&("function"==typeof o&&(o=o.call(this.table)),s=Object.assign(s,o)),s}requestDataCheck(e,t,i,s){return!((e||!this.url)&&"string"!=typeof e)}requestData(e,t,i,s,o){var n;return!o&&this.requestDataCheck(e)?(e&&this.setUrl(e),n=this.generateConfig(i),this.sendRequest(this.url,t,n)):o}setDefaultConfig(e={}){this.config=Object.assign({},d.defaultConfig),"string"==typeof e?this.config.method=e:Object.assign(this.config,e)}generateConfig(e={}){var t=Object.assign({},this.config);return"string"==typeof e?t.method=e:Object.assign(t,e),t}setUrl(e){this.url=e}getUrl(){return this.url}sendRequest(e,t,i){return!1!==this.table.options.ajaxRequesting.call(this.table,e,t)?this.loaderPromise(e,i,t).then((i=>(this.table.options.ajaxResponse&&(i=this.table.options.ajaxResponse.call(this.table,e,t,i)),i))):Promise.reject()}}d.moduleName="ajax",d.defaultConfig={method:"GET"},d.defaultURLGenerator=a,d.defaultLoaderPromise=function(e,t,i){var s;return new Promise(((o,n)=>{if(e=this.urlGenerator.call(this.table,e,t,i),"GET"!=t.method.toUpperCase())if(s="object"==typeof this.table.options.ajaxContentType?this.table.options.ajaxContentType:this.contentTypeFormatters[this.table.options.ajaxContentType]){for(var r in s.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=s.headers[r]);t.body=s.body.call(this,e,t,i)}else console.warn("Ajax Error - Invalid ajaxContentType value:",this.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers.Origin&&(t.headers.Origin=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then((e=>{e.ok?e.json().then((e=>{o(e)})).catch((e=>{n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))})).catch((e=>{console.error("Ajax Load Error - Connection Error: ",e),n(e)}))):(console.warn("Ajax Load Error - No URL Set"),o([]))}))},d.contentTypeFormatters=h;class c extends s{constructor(e){super(e),this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0,this.registerTableOption("clipboard",!1),this.registerTableOption("clipboardCopyStyled",!0),this.registerTableOption("clipboardCopyConfig",!1),this.registerTableOption("clipboardCopyFormatter",!1),this.registerTableOption("clipboardCopyRowRange","active"),this.registerTableOption("clipboardPasteParser","table"),this.registerTableOption("clipboardPasteAction","insert"),this.registerColumnOption("clipboard"),this.registerColumnOption("titleClipboard")}initialize(){this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(e=>{var t,i,s;this.blocked||(e.preventDefault(),this.customSelection?(t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t))):(s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard"),t=(i=this.table.modules.export.generateHTMLTable(s))?this.generatePlainContent(s):"",this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t),i=this.table.options.clipboardCopyFormatter("html",i))),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",t):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",t),i&&e.clipboardData.setData("text/html",i)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",t),i&&e.originalEvent.clipboardData.setData("text/html",i)),this.dispatchExternal("clipboardCopied",t,i),this.reset())})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(e=>{this.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}reset(){this.blocked=!0,this.customSelection=!1}generatePlainContent(e){var t=[];return e.forEach((e=>{var i=[];e.columns.forEach((t=>{var s="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)s="";else switch(typeof t.value){case"object":s=JSON.stringify(t.value);break;case"undefined":s="";break;default:s=t.value}i.push(s)})),t.push(i.join("\t"))})),t.join("\n")}copy(e,t){var i,s;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),document.execCommand("copy"),i&&i.removeAllRanges())}setPasteAction(e){switch(typeof e){case"string":this.pasteAction=c.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}}setPasteParser(e){switch(typeof e){case"string":this.pasteParser=c.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}}paste(e){var t,i,s;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),s=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,s)):this.dispatchExternal("clipboardPasteError",t))}mutateData(e){var t=[];return Array.isArray(e)?e.forEach((e=>{t.push(this.table.modules.mutator.transformRow(e,"clipboard"))})):t=e,t}checkPaseOrigin(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}getPasteData(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}c.moduleName="clipboard",c.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},c.pasteParsers={table:function(e){var t=[],i=!0,s=this.table.columnManager.columns,o=[],n=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=s.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=s.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),n.push(t)})),n)}};class u{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getTable(){return this._row.table}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}_getSelf(){return this._row}}class p{constructor(e){return this._cell=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}getValue(){return this._cell.getValue()}getOldValue(){return this._cell.getOldValue()}getInitialValue(){return this._cell.initialValue}getElement(){return this._cell.getElement()}getRow(){return this._cell.row.getComponent()}getData(e){return this._cell.row.getData(e)}getType(){return"cell"}getField(){return this._cell.column.getField()}getColumn(){return this._cell.column.getComponent()}setValue(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}restoreOldValue(){this._cell.setValueActual(this._cell.getOldValue())}restoreInitialValue(){this._cell.setValueActual(this._cell.initialValue)}checkHeight(){this._cell.checkHeight()}getTable(){return this._cell.table}_getSelf(){return this._cell}}class m extends e{constructor(e,t){super(e.table),this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()}build(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}generateElement(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell")}_configureCell(){var e=this.element,t=this.column.getField();(e.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(e.style.display="inline-flex",e.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(e.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),t&&e.setAttribute("tabulator-field",t),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((t=>{e.classList.add(t)}));this.dispatch("cell-init",this),this.column.visible||this.hide()}_generateContents(){var e;switch(typeof(e=this.chain("cell-format",this,null,(()=>this.element.innerHTML=this.value)))){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t,i){this.setValueProcessData(e,t,i)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.column.definition.cellEdited&&this.column.definition.cellEdited.call(this.table,this.getComponent()),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}setValueProcessData(e,t,i){var s=!1;return(this.value!==e||i)&&(s=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),s&&this.dispatch("cell-value-changed",this),s}setValueActual(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}layoutElement(){this._generateContents(),this.dispatch("cell-layout",this)}setWidth(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}clearWidth(){this.width="",this.element.style.width=""}getWidth(){return this.width||this.element.offsetWidth}setMinWidth(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}setMaxWidth(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}checkHeight(){this.row.reinitializeHeight()}clearHeight(){this.element.style.height="",this.height=null,this.dispatch("cell-height",this,"")}setHeight(){this.height=this.row.height,this.element.style.height=this.row.heightStyled,this.dispatch("cell-height",this,this.row.heightStyled)}getHeight(){return this.height||this.element.offsetHeight}show(){this.element.style.display=this.column.vertAlign?"inline-flex":""}hide(){this.element.style.display="none"}delete(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}getIndex(){return this.row.getCellIndex(this)}getComponent(){return this.component||(this.component=new p(this)),this.component}}class g{constructor(e){return this._column=e,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}getElement(){return this._column.getElement()}getDefinition(){return this._column.getDefinition()}getField(){return this._column.getField()}getTitleDownload(){return this._column.getTitleDownload()}getCells(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}isVisible(){return this._column.visible}show(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}hide(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}toggle(){this._column.visible?this.hide():this.show()}delete(){return this._column.delete()}getSubColumns(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}getParentColumn(){return this._column.parent instanceof f&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(e,t){return this._column.table.columnManager.scrollToColumn(this._column,e,t)}getTable(){return this._column.table}move(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}getNextColumn(){var e=this._column.nextColumn();return!!e&&e.getComponent()}getPrevColumn(){var e=this._column.prevColumn();return!!e&&e.getComponent()}updateDefinition(e){return this._column.updateDefinition(e)}getWidth(){return this._column.getWidth()}setWidth(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.rerenderColumns(!0),t}}var b={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,maxInitialWidth:void 0,cssClass:void 0,variableHeight:void 0,headerVertical:void 0,headerHozAlign:void 0,headerWordWrap:!1,editableTitle:void 0};class f extends e{constructor(e,t){super(t.table),this.definition=e,this.parent=t,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleDownload=null,this.titleFormatterRendered=!1,this.mapDefinitions(),this.setField(this.definition.field),this.modules={},this.width=null,this.widthStyled="",this.maxWidth=null,this.maxWidthStyled="",this.maxInitialWidth=null,this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this.definition.columns?(this.isGroup=!0,this.definition.columns.forEach(((e,t)=>{var i=new f(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize()}createElement(){var e=document.createElement("div");switch(e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),this.table.options.columnHeaderVertAlign){case"middle":e.style.justifyContent="center";break;case"bottom":e.style.justifyContent="flex-end"}return e}createGroupElement(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}mapDefinitions(){var e=this.table.options.columnDefaults;if(e)for(let t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(f.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===f.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(this.field||this.definition.title)+"' column:",e)}))}setField(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}registerColumnPosition(e){this.parent.registerColumnPosition(e)}registerColumnField(e){this.parent.registerColumnField(e)}reRegisterPosition(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}_initialize(){for(var e=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);e.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.dispatch("column-init",this)}_buildColumnHeader(){var e=this.definition;(this.dispatch("column-layout",this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass)&&e.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(parseInt(e.minWidth)),e.maxInitialWidth&&(this.maxInitialWidth=parseInt(e.maxInitialWidth)),e.maxWidth&&this.setMaxWidth(parseInt(e.maxWidth)),this.reinitializeWidth(),this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}_buildColumnHeaderTitle(){var e=this.definition,t=document.createElement("div");if(t.classList.add("tabulator-col-title"),e.headerWordWrap&&t.classList.add("tabulator-col-title-wrap"),e.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),i.addEventListener("change",(()=>{e.title=i.value,this.dispatchExternal("columnTitleChanged",this.getComponent())})),t.appendChild(i),e.field?this.langBind("columns|"+e.field,(t=>{i.value=t||e.title||" "})):i.value=e.title||" "}else e.field?this.langBind("columns|"+e.field,(i=>{this._formatColumnHeaderTitle(t,i||e.title||" ")})):this._formatColumnHeaderTitle(t,e.title||" ");return t}_formatColumnHeaderTitle(e,t){var i=this.chain("column-format",[this,t,e],null,(()=>t));switch(typeof i){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":e.innerHTML="";break;default:e.innerHTML=i}}_buildGroupHeader(){(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}_getFlatData(e){return e[this.field]}_getNestedData(e){var t,i=e,s=this.fieldStructure,o=s.length;for(let e=0;e{t.push(e),t=t.concat(e.getColumns(!0))})):t=this.columns,t}getCells(){return this.cells}getTopColumn(){return this.parent.isGroup?this.parent.getTopColumn():this}getDefinition(e){var t=[];return this.isGroup&&e&&(this.columns.forEach((function(e){t.push(e.getDefinition(!0))})),this.definition.columns=t),this.definition}checkColumnVisibility(){var e=!1;this.columns.forEach((function(t){t.visible&&(e=!0)})),e?(this.show(),this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1)):this.hide()}show(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.show()})),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager.verticalAlignHeaders(),this.dispatch("column-show",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}hide(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager.verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.hide()})),this.dispatch("column-hide",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}matchChildWidths(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())}removeChild(e){var t=this.columns.indexOf(e);t>-1&&this.columns.splice(t,1),this.columns.length||this.delete()}setWidth(e){this.widthFixed=!0,this.setWidthActual(e)}setWidthActual(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}checkCellHeights(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}getWidth(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}getLeftOffset(){var e=this.element.offsetLeft;return this.parent.isGroup&&(e+=this.parent.getLeftOffset()),e}getHeight(){return Math.ceil(this.element.getBoundingClientRect().height)}setMinWidth(e){this.maxWidth&&e>this.maxWidth&&(e=this.maxWidth,console.warn("the minWidth ("+e+"px) for column '"+this.field+"' cannot be bigger that its maxWidth ("+this.maxWidthStyled+")")),this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.minWidth&&e{this.isGroup&&this.columns.forEach((function(e){e.delete()})),this.dispatch("column-delete",this);var i=this.cells.length;for(let e=0;e-1&&this._nextVisibleColumn(e+1)}_nextVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}prevColumn(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}_prevVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}reinitializeWidth(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(e),this.dispatch("column-width-fit-after",this)}fitToData(e){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((e=>{e.clearWidth()})));var t=this.element.offsetWidth;if((!this.width||!this.widthFixed)&&(this.cells.forEach((e=>{var i=e.getWidth();i>t&&(t=i)})),t)){var i=t+1;this.maxInitialWidth&&!e&&(i=Math.min(i,this.maxInitialWidth)),this.setWidthActual(i)}}}updateDefinition(e){var t;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((e=>(t.field==this.field&&(this.field=!1),this.delete().then((()=>e.getComponent()))))))}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getComponent(){return this.component||(this.component=new g(this)),this.component}}f.defaultOptionList=b;class v{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}getIndex(){return this._row.getData("data")[this._row.table.options.index]}getPosition(){return this._row.getPosition()}watchPosition(e){return this._row.watchPosition(e)}delete(){return this._row.delete()}scrollTo(e,t){return this._row.table.rowManager.scrollToRow(this._row,e,t)}move(e,t){this._row.moveToRow(e,t)}update(e){return this._row.updateData(e)}normalizeHeight(){this._row.normalizeHeight(!0)}_getSelf(){return this._row}reformat(){return this._row.reinitialize()}getTable(){return this._row.table}getNextRow(){var e=this._row.nextRow();return e?e.getComponent():e}getPrevRow(){var e=this._row.prevRow();return e?e.getComponent():e}}class w extends e{constructor(e,t,i="row"){super(t.table),this.parent=t,this.data={},this.type=i,this.element=!1,this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.position=0,this.positionWatchers=[],this.component=null,this.created=!1,this.setData(e)}create(){this.created||(this.created=!0,this.generateElement())}createElement(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}getElement(){return this.create(),this.element}detachElement(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}generateElement(){this.createElement(),this.dispatch("row-init",this)}generateCells(){this.cells=this.table.columnManager.generateCells(this)}initialize(e,t){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.initialized=!0,this.table.columnManager.renderer.renderRowCells(this,t),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this,t)}rendered(){this.cells.forEach((e=>{e.cellRendered()}))}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}deinitialize(){this.initialized=!1}deinitializeHeight(){this.heightInitialized=!1}reinitialize(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}calcHeight(e){var t,i=0;this.table.options.rowHeight?this.height=this.table.options.rowHeight:(t=this.table.options.resizableRows?this.element.clientHeight:0,this.cells.forEach((function(e){var t=e.getHeight();t>i&&(i=t)})),this.height=e?Math.max(i,t):this.manualHeight?this.height:Math.max(i,t)),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}setCellHeight(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}clearCellHeight(){this.cells.forEach((function(e){e.clearHeight()}))}normalizeHeight(e){e&&!this.table.options.rowHeight&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}setHeight(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}getHeight(){return this.outerHeight}getWidth(){return this.element.offsetWidth}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}setData(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}updateData(e){var i,s=this.element&&t.elVisible(this.element),o={};return new Promise(((t,n)=>{"string"==typeof e&&(e=JSON.parse(e)),this.dispatch("row-data-save-before",this),this.subscribed("row-data-changing")&&(o=Object.assign(o,this.data),o=Object.assign(o,e)),i=this.chain("row-data-changing",[this,o,e],null,e);for(let e in i)this.data[e]=i[e];this.dispatch("row-data-save-after",this);for(let t in e){this.table.columnManager.getColumnsByFieldRoot(t).forEach((e=>{let t=this.getCell(e.getField());if(t){let o=e.getFieldValue(i);t.getValue()!==o&&(t.setValueProcessData(o),s&&t.cellRendered())}}))}s?(this.normalizeHeight(!0),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent())):(this.initialized=!1,this.height=0,this.heightStyled=""),this.dispatch("row-data-changed",this,s,e),this.dispatchExternal("rowUpdated",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),t()}))}getData(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}getCell(e){return e=this.table.columnManager.findColumn(e),this.initialized||0!==this.cells.length||this.generateCells(),this.cells.find((function(t){return t.column===e}))}getCellIndex(e){return this.cells.findIndex((function(t){return t===e}))}findCell(e){return this.cells.find((t=>t.element===e))}getCells(){return this.initialized||0!==this.cells.length||this.generateCells(),this.cells}nextRow(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}prevRow(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}moveToRow(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}delete(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}deleteActual(e){this.detachModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detachModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;t{e(this.position)})))}watchPosition(e){this.positionWatchers.push(e),e(this.position)}getGroup(){return this.modules.group||!1}getComponent(){return this.component||(this.component=new v(this)),this.component}}var C={avg:function(e,t,i){var s=0,o=void 0!==i.precision?i.precision:2;return e.length&&(s=e.reduce((function(e,t){return Number(e)+Number(t)})),s/=e.length,s=!1!==o?s.toFixed(o):s),parseFloat(s).toString()},max:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>s||null===s)&&(s=e)})),null!==s?!1!==o?s.toFixed(o):s:""},min:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))(e||0===t)&&e.indexOf(t)===i)).length}};class E extends s{constructor(e){super(e),this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.blocked=!1,this.recalcAfterBlock=!1,this.registerTableOption("columnCalcs",!0),this.registerColumnOption("topCalc"),this.registerColumnOption("topCalcParams"),this.registerColumnOption("topCalcFormatter"),this.registerColumnOption("topCalcFormatterParams"),this.registerColumnOption("bottomCalc"),this.registerColumnOption("bottomCalcParams"),this.registerColumnOption("bottomCalcFormatter"),this.registerColumnOption("bottomCalcFormatterParams")}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e}initialize(){this.genColumn=new f({field:"value"},this),this.subscribe("cell-value-changed",this.cellValueChanged.bind(this)),this.subscribe("column-init",this.initializeColumnCheck.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("column-moved",this.recalcActiveRows.bind(this)),this.subscribe("column-add",this.recalcActiveRows.bind(this)),this.subscribe("data-refreshed",this.recalcActiveRowsRefresh.bind(this)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("rows-visible",this.visibleRows.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this)),this.subscribe("redraw-blocked",this.blockRedraw.bind(this)),this.subscribe("redraw-restored",this.restoreRedraw.bind(this)),this.subscribe("table-redrawing",this.resizeHolderWidth.bind(this)),this.subscribe("column-resized",this.resizeHolderWidth.bind(this)),this.subscribe("column-show",this.resizeHolderWidth.bind(this)),this.subscribe("column-hide",this.resizeHolderWidth.bind(this)),this.registerTableFunction("getCalcResults",this.getResults.bind(this)),this.registerTableFunction("recalc",this.userRecalc.bind(this)),this.resizeHolderWidth()}resizeHolderWidth(){this.topElement.style.minWidth=this.table.columnManager.headersElement.offsetWidth+"px"}tableRedraw(e){this.recalc(this.table.rowManager.activeRows),e&&this.redraw()}blockRedraw(){this.blocked=!0,this.recalcAfterBlock=!1}restoreRedraw(){this.blocked=!1,this.recalcAfterBlock&&(this.recalcAfterBlock=!1,this.recalcActiveRowsRefresh())}userRecalc(){this.recalc(this.table.rowManager.activeRows)}blockCheck(){return this.blocked&&(this.recalcAfterBlock=!0),this.blocked}visibleRows(e,t){return this.topRow&&t.unshift(this.topRow),this.botRow&&t.push(this.botRow),t}rowsUpdated(e){this.table.options.groupBy?this.recalcRowGroup(e):this.recalcActiveRows()}recalcActiveRowsRefresh(){this.table.options.groupBy&&this.table.options.dataTreeStartExpanded&&this.table.options.dataTree?this.recalcAll():this.recalcActiveRows()}recalcActiveRows(){this.recalc(this.table.rowManager.activeRows)}cellValueChanged(e){(e.column.definition.topCalc||e.column.definition.bottomCalc)&&(this.table.options.groupBy?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.recalcActiveRows(),"table"!=this.table.options.columnCalcs&&this.recalcRowGroup(e.row)):this.recalcActiveRows())}initializeColumnCheck(e){(e.definition.topCalc||e.definition.bottomCalc)&&this.initializeColumn(e)}initializeColumn(e){var t=e.definition,i={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(typeof t.topCalc){case"string":E.calculations[t.topCalc]?i.topCalc=E.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":i.topCalc=t.topCalc}i.topCalc&&(e.modules.columnCalcs=i,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(typeof t.bottomCalc){case"string":E.calculations[t.bottomCalc]?i.botCalc=E.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":i.botCalc=t.bottomCalc}i.botCalc&&(e.modules.columnCalcs=i,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}}registerColumnField(){}removeCalcs(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.footerRemove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()}reinitializeCalcs(){this.topCalcs.length&&this.initializeTopRow(),this.botCalcs.length&&this.initializeBottomRow()}initializeTopRow(){this.topInitialized||(this.table.columnManager.getContentsElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)}initializeBottomRow(){this.botInitialized||(this.footerPrepend(this.botElement),this.botInitialized=!0)}scrollHorizontal(e){this.botInitialized&&this.botRow&&(this.botElement.scrollLeft=e)}recalc(e){var t,i;if(!this.blockCheck()&&(this.topInitialized||this.botInitialized)){if(t=this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),i=this.generateRow("top",t),this.topRow=i;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(i.getElement()),i.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),i=this.generateRow("bottom",t),this.botRow=i;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(i.getElement()),i.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}}recalcRowGroup(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))}recalcAll(){(this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalcActiveRows(),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs&&this.table.modules.groupRows.getChildGroups().forEach((e=>{this.recalcGroup(e)})))}recalcGroup(e){var t,i;this.blockCheck()||e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),i=this.generateRowData("bottom",t),e.calcs.bottom.updateData(i),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),i=this.generateRowData("top",t),e.calcs.top.updateData(i),e.calcs.top.reinitialize()))}generateTopRow(e){return this.generateRow("top",this.rowsToData(e))}generateBottomRow(e){return this.generateRow("bottom",this.rowsToData(e))}rowsToData(e){var t=[];return e.forEach((e=>{if(t.push(e.getData()),this.table.options.dataTree&&this.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree&&e.modules.dataTree.open){var i=this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(e));t=t.concat(i)}})),t}generateRow(e,t){var i,s=this.generateRowData(e,t);return this.table.modExists("mutator")&&this.table.modules.mutator.disable(),i=new w(s,this,"calc"),this.table.modExists("mutator")&&this.table.modules.mutator.enable(),i.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),i.component=!1,i.getComponent=()=>(i.component||(i.component=new u(i)),i.component),i.generateCells=()=>{var t=[];this.table.columnManager.columnsByIndex.forEach((s=>{this.genColumn.setField(s.getField()),this.genColumn.hozAlign=s.hozAlign,s.definition[e+"CalcFormatter"]&&this.table.modExists("format")?this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter(s.definition[e+"CalcFormatter"]),params:s.definition[e+"CalcFormatterParams"]||{}}:this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter("plaintext"),params:{}},this.genColumn.definition.cssClass=s.definition.cssClass;var o=new m(this.genColumn,i);o.getElement(),o.column=s,o.setWidth(),s.cells.push(o),t.push(o),s.visible||o.hide()})),i.cells=t},i}generateRowData(e,t){var i,s,o={},n="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return n.forEach((function(e){var n=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach((function(t){n.push(e.getFieldValue(t))})),s=r+"Params",i="function"==typeof e.modules.columnCalcs[s]?e.modules.columnCalcs[s](n,t):e.modules.columnCalcs[s],e.setFieldValue(o,e.modules.columnCalcs[r](n,t,i)))})),o}hasTopCalcs(){return!!this.topCalcs.length}hasBottomCalcs(){return!!this.botCalcs.length}redraw(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)}getResults(){var e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach((t=>{e[t.getKey()]=this.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e}getGroupResults(e){var t=e._getSelf(),i=e.getSubGroups(),s={};return i.forEach((e=>{s[e.getKey()]=this.getGroupResults(e)})),{top:t.calcs.top?t.calcs.top.getData():{},bottom:t.calcs.bottom?t.calcs.bottom.getData():{},groups:s}}adjustForScrollbar(e){this.botRow&&(this.table.rtl?this.botElement.style.paddingLeft=e+"px":this.botElement.style.paddingRight=e+"px")}}E.moduleName="columnCalcs",E.calculations=C;class y extends s{constructor(e){super(e),this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.registerTableOption("dataTree",!1),this.registerTableOption("dataTreeFilter",!0),this.registerTableOption("dataTreeSort",!0),this.registerTableOption("dataTreeElementColumn",!1),this.registerTableOption("dataTreeBranchElement",!0),this.registerTableOption("dataTreeChildIndent",9),this.registerTableOption("dataTreeChildField","_children"),this.registerTableOption("dataTreeCollapseElement",!1),this.registerTableOption("dataTreeExpandElement",!1),this.registerTableOption("dataTreeStartExpanded",!1),this.registerTableOption("dataTreeChildColumnCalcs",!1),this.registerTableOption("dataTreeSelectPropagate",!1),this.registerComponentFunction("row","treeCollapse",this.collapseRow.bind(this)),this.registerComponentFunction("row","treeExpand",this.expandRow.bind(this)),this.registerComponentFunction("row","treeToggle",this.toggleRow.bind(this)),this.registerComponentFunction("row","getTreeParent",this.getTreeParent.bind(this)),this.registerComponentFunction("row","getTreeChildren",this.getRowChildren.bind(this)),this.registerComponentFunction("row","addTreeChild",this.addTreeChildRow.bind(this)),this.registerComponentFunction("row","isTreeExpanded",this.isRowExpanded.bind(this))}initialize(){if(this.table.options.dataTree){var e=null,t=this.table.options;switch(this.field=t.dataTreeChildField,this.indent=t.dataTreeChildIndent,this.options("movableRows")&&console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"),t.dataTreeBranchElement?!0===t.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof t.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=t.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=t.dataTreeBranchElement:(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch-empty")),t.dataTreeCollapseElement?"string"==typeof t.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=t.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=t.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="
              "),t.dataTreeExpandElement?"string"==typeof t.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=t.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=t.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
              "),typeof t.dataTreeStartExpanded){case"boolean":this.startOpen=function(e,i){return t.dataTreeStartExpanded};break;case"function":this.startOpen=t.dataTreeStartExpanded;break;default:this.startOpen=function(e,i){return t.dataTreeStartExpanded[i]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("cell-value-updated",this.cellValueChanged.bind(this)),this.subscribe("edit-cancelled",this.cellValueChanged.bind(this)),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.subscribe("table-built",this.initializeElementField.bind(this)),this.subscribe("table-redrawing",this.tableRedrawing.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}tableRedrawing(e){e&&this.table.rowManager.getRows().forEach((e=>{this.reinitializeRowChildren(e)}))}initializeElementField(){var e=this.table.columnManager.getFirstVisibleColumn();this.elementField=this.table.options.dataTreeElementColumn||!!e&&e.field}getRowChildren(e){return this.getTreeChildren(e,!0)}columnMoving(){var e=[];return this.table.rowManager.rows.forEach((t=>{e=e.concat(this.getTreeChildren(t,!1,!0))})),e}rowDataChanged(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}cellValueChanged(e){e.column.getField()===this.elementField&&this.layoutRow(e.row)}initializeRow(e){var t=e.getData()[this.field],i=Array.isArray(t),s=i||!i&&"object"==typeof t&&null!==t;!s&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!s&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!s&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:s}}reinitializeRowChildren(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}layoutRow(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}generateControlElement(e,t){var i=e.modules.dataTree,s=i.controlEl;t=t||e.getCells()[0].getElement(),!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.collapseRow(e)}))):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.expandRow(e)}))),i.controlEl.addEventListener("mousedown",(e=>{e.stopPropagation()})),s&&s.parentNode===t?s.parentNode.replaceChild(i.controlEl,s):t.insertBefore(i.controlEl,t.firstChild))}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof w&&(e.create(),(s=e.modules.dataTree).index||!1===s.children||this.getChildren(e).forEach((e=>{e.create(),t.push(e)})))})),t}getChildren(e,t){var i=e.modules.dataTree,s=[],o=[];return!1!==i.children&&(i.open||t)&&(Array.isArray(i.children)||(i.children=this.generateChildren(e)),s=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(i.children):i.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(s),s.forEach((e=>{o.push(e),this.getChildren(e).forEach((e=>{o.push(e)}))}))),o}generateChildren(e){var t=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach((i=>{var s=new w(i||{},this.table.rowManager);s.create(),s.modules.dataTree.index=e.modules.dataTree.index+1,s.modules.dataTree.parent=e,s.modules.dataTree.children&&(s.modules.dataTree.open=this.startOpen(s.getComponent(),s.modules.dataTree.index)),t.push(s)})),t}expandRow(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}collapseRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}toggleRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}isRowExpanded(e){return e.modules.dataTree.open}getTreeParent(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}getTreeParentRoot(e){return e.modules.dataTree&&e.modules.dataTree.parent?this.getTreeParentRoot(e.modules.dataTree.parent):e}getFilteredTreeChildren(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((e=>{e instanceof w&&i.push(e)}))),i}rowDelete(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}addTreeChildRow(e,t,i,s){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==s&&!1!==(o=this.findChildIndex(s,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}findChildIndex(e,t){var i=!1;return"object"==typeof e?e instanceof w?i=e.data:e instanceof v?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof w&&t.element===e)))&&(i=i.data):null===e&&(i=!1):i=void 0!==e&&t.data[this.field].find((t=>t.data[this.table.options.index]==e)),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i}getTreeChildren(e,t,i){var s=e.modules.dataTree,o=[];return s&&s.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof w&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}y.moduleName="dataTree";var R={csv:function(e,t={},i){var s=t.delimiter?t.delimiter:",",o=[],n=[];e.forEach((e=>{var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(((e,t)=>{e&&1===e.depth&&(n[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":e.columns.forEach((e=>{if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}})),o.push(t.join(s))}})),n.length&&o.unshift(n.join(s)),o=o.join("\n"),t.bom&&(o="\ufeff"+o),i(o,"text/csv")},json:function(e,t,i){var s=[];e.forEach((e=>{var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(t)}})),i(s=JSON.stringify(s,null,"\t"),"application/json")},jsonLines:function(e,t,i){const s=[];e.forEach((e=>{const t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(JSON.stringify(t))}})),i(s.join("\n"),"application/x-ndjson")},pdf:function(e,t={},i){var s=[],o=[],n={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},a=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},l=t.jsPDF||{},h=t.title?t.title:"";function d(e,t){var i=[];return e.columns.forEach((e=>{var s;if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}s={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(s.styles=t),i.push(s)}})),i}l.orientation||(l.orientation=t.orientation||"landscape"),l.unit||(l.unit="pt"),e.forEach((e=>{switch(e.type){case"header":s.push(d(e));break;case"group":o.push(d(e,r));break;case"calc":o.push(d(e,a));break;case"row":o.push(d(e))}}));var c=new jspdf.jsPDF(l);t.autoTable&&(n="function"==typeof t.autoTable?t.autoTable(c)||{}:t.autoTable),h&&(n.didDrawPage=function(e){c.text(h,40,30)}),n.head=s,n.body=o,c.autoTable(n),t.documentProcessing&&t.documentProcessing(c),i(c.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,s){var o=i.sheetName||"Sheet1",n=XLSX.utils.book_new(),r=new e(this),a=!("compress"in i)||i.compress,l=i.writeOptions||{bookType:"xlsx",bookSST:!0,compression:a};function h(){var e=[],i=[],s={},o={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce(((e,t)=>e+(t&&t.width?t.width:1)),0):0,r:t.length}};return t.forEach(((t,s)=>{var o=[];t.columns.forEach((function(e,t){e?(o.push(e.value instanceof Date||"object"!=typeof e.value?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&(e.height>1||e.width>1)&&i.push({s:{r:s,c:t},e:{r:s+e.height-1,c:t+e.width-1}})):o.push("")})),e.push(o)})),XLSX.utils.sheet_add_aoa(s,e),s["!ref"]=XLSX.utils.encode_range(o),i.length&&(s["!merges"]=i),s}if(l.type="binary",n.SheetNames=[],n.Sheets={},i.sheetOnly)s(h());else{if(i.sheets)for(var d in i.sheets)!0===i.sheets[d]?(n.SheetNames.push(d),n.Sheets[d]=h()):(n.SheetNames.push(d),r.commsSend(i.sheets[d],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[d]=e}}));else n.SheetNames.push(o),n.Sheets[o]=h();i.documentProcessing&&(n=i.documentProcessing(n)),s(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),s=0;s!=e.length;++s)i[s]=255&e.charCodeAt(s);return t}(XLSX.write(n,l)),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.generateHTMLTable(e),"text/html")}};class x extends s{constructor(e){super(e),this.registerTableOption("downloadEncoder",(function(e,t){return new Blob([e],{type:t})})),this.registerTableOption("downloadReady",void 0),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.deprecatedOptionsCheck(),this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("downloadReady","downloadEncoder")}downloadToTab(e,t,i,s){this.download(e,t,i,s,!0)}download(e,t,i,s,o){var n=!1;if("function"==typeof e?n=e:x.downloaders[e]?n=x.downloaders[e]:console.warn("Download Error - No such download type found: ",e),n){var r=this.generateExportList(s);n.call(this.table,r,i||{},function(i,s){o?!0===o?this.triggerDownload(i,s,e,t,!0):o(i):this.triggerDownload(i,s,e,t)}.bind(this))}}generateExportList(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((e=>{var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}triggerDownload(e,t,i,s,o){var n=document.createElement("a"),r=this.table.options.downloadEncoder(e,t);r&&(o?window.open(window.URL.createObjectURL(r)):(s=s||"Tabulator."+("function"==typeof i?"txt":i),navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,s):(n.setAttribute("href",window.URL.createObjectURL(r)),n.setAttribute("download",s),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n))),this.dispatchExternal("downloadComplete"))}commsReceived(e,t,i){if("intercept"===t)this.download(i.type,"",i.options,i.active,i.intercept)}}function T(e,t){var i=t.mask,s=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",n=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var a=i[t];void 0!==a&&a!==n&&a!==s&&a!==o&&(e.value=e.value+""+a,r(t+1))}e.addEventListener("keydown",(t=>{var r=e.value.length,a=t.key;if(t.keyCode>46&&!t.ctrlKey&&!t.metaKey){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case s:if(a.toUpperCase()==a.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(a))return t.preventDefault(),t.stopPropagation(),!1;break;case n:break;default:if(a!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(i=>{i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}x.moduleName="download",x.downloaders=R;class M{constructor(e,t,i,s,o,n){this.edit=e,this.table=e.table,this.cell=t,this.params=this._initializeParams(n),this.data=[],this.displayItems=[],this.currentItems=[],this.focusedItem=null,this.input=this._createInputElement(),this.listEl=this._createListElement(),this.initialValues=null,this.isFilter="header"===t.getType(),this.filterTimeout=null,this.filtered=!1,this.typing=!1,this.values=[],this.popup=null,this.listIteration=0,this.lastAction="",this.filterTerm="",this.blurable=!0,this.actions={success:s,cancel:o},this._deprecatedOptionsCheck(),this._initializeValue(),i(this._onRendered.bind(this))}_deprecatedOptionsCheck(){this.params.listItemFormatter&&this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.sortValuesList&&this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchFunc&&this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchingPlaceholder&&this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options")}_initializeValue(){var e=this.cell.getValue();void 0===e&&void 0!==this.params.defaultValue&&(e=this.params.defaultValue),this.initialValues=this.params.multiselect?e:[e],this.isFilter&&(this.input.value=this.initialValues?this.initialValues.join(","):"",this.headerFilterInitialListGen())}_onRendered(){var e=this.cell.getElement();function t(e){e.stopPropagation()}this.isFilter||(this.input.style.height="100%",this.input.focus({preventScroll:!0})),e.addEventListener("click",t),setTimeout((()=>{e.removeEventListener("click",t)}),1e3),this.input.addEventListener("mousedown",this._preventPopupBlur.bind(this))}_createListElement(){var e=document.createElement("div");return e.classList.add("tabulator-edit-list"),e.addEventListener("mousedown",this._preventBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e}_setListWidth(){var e=this.isFilter?this.input:this.cell.getElement();this.listEl.style.minWidth=e.offsetWidth+"px",this.params.maxWidth&&(!0===this.params.maxWidth?this.listEl.style.maxWidth=e.offsetWidth+"px":"number"==typeof this.params.maxWidth?this.listEl.style.maxWidth=this.params.maxWidth+"px":this.listEl.style.maxWidth=this.params.maxWidth)}_createInputElement(){var e=this.params.elementAttributes,t=document.createElement("input");if(t.setAttribute("type",this.params.clearable?"search":"text"),t.style.padding="4px",t.style.width="100%",t.style.boxSizing="border-box",this.params.autocomplete||(t.style.cursor="default",t.style.caretColor="transparent"),e&&"object"==typeof e)for(let i in e)"+"==i.charAt(0)?(i=i.slice(1),t.setAttribute(i,t.getAttribute(i)+e["+"+i])):t.setAttribute(i,e[i]);return this.params.mask&&T(t,this.params),this._bindInputEvents(t),t}_initializeParams(e){var t,i=["values","valuesURL","valuesLookup"];return(e=Object.assign({},e)).verticalNavigation=e.verticalNavigation||"editor",e.placeholderLoading=void 0===e.placeholderLoading?"Searching ...":e.placeholderLoading,e.placeholderEmpty=void 0===e.placeholderEmpty?"No Results Found":e.placeholderEmpty,e.filterDelay=void 0===e.filterDelay?300:e.filterDelay,e.emptyValue=Object.keys(e).includes("emptyValue")?e.emptyValue:"",(t=Object.keys(e).filter((e=>i.includes(e))).length)?t>1&&console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"):console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"),e.autocomplete?e.multiselect&&(e.multiselect=!1,console.warn("list editor config error - multiselect option is not available when autocomplete is enabled")):(e.freetext&&(e.freetext=!1,console.warn("list editor config error - freetext option is only available when autocomplete is enabled")),e.filterFunc&&(e.filterFunc=!1,console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled")),e.filterRemote&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled")),e.mask&&(e.mask=!1,console.warn("list editor config error - mask option is only available when autocomplete is enabled")),e.allowEmpty&&(e.allowEmpty=!1,console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled")),e.listOnEmpty&&(e.listOnEmpty=!1,console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"))),e.filterRemote&&"function"!=typeof e.valuesLookup&&!e.valuesURL&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source")),e}_bindInputEvents(e){e.addEventListener("focus",this._inputFocus.bind(this)),e.addEventListener("click",this._inputClick.bind(this)),e.addEventListener("blur",this._inputBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e.addEventListener("search",this._inputSearch.bind(this)),this.params.autocomplete&&e.addEventListener("keyup",this._inputKeyUp.bind(this))}_inputFocus(e){this.rebuildOptionsList()}_filter(){this.params.filterRemote?(clearTimeout(this.filterTimeout),this.filterTimeout=setTimeout((()=>{this.rebuildOptionsList()}),this.params.filterDelay)):this._filterList()}_inputClick(e){e.stopPropagation()}_inputBlur(e){this.blurable&&(this.popup?this.popup.hide():this._resolveValue(!0))}_inputSearch(){this._clearChoices()}_inputKeyDown(e){switch(e.keyCode){case 38:this._keyUp(e);break;case 40:this._keyDown(e);break;case 37:case 39:this._keySide(e);break;case 13:this._keyEnter();break;case 27:this._keyEsc();break;case 36:case 35:this._keyHomeEnd(e);break;case 9:this._keyTab(e);break;default:this._keySelectLetter(e)}}_inputKeyUp(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:this._keyAutoCompLetter(e)}}_preventPopupBlur(){this.popup&&this.popup.blockHide(),setTimeout((()=>{this.popup&&this.popup.restoreHide()}),10)}_preventBlur(){this.blurable=!1,setTimeout((()=>{this.blurable=!0}),10)}_keyTab(e){this.params.autocomplete&&"typing"===this.lastAction?this._resolveValue(!0):this.focusedItem&&this._chooseItem(this.focusedItem,!0)}_keyUp(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&this._focusItem(this.displayItems[t-1]))}_keyDown(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t=38&&e.keyCode<=90&&this._scrollToValue(e.keyCode))}_keyAutoCompLetter(e){this._filter(),this.lastAction="typing",this.typing=!0}_scrollToValue(e){clearTimeout(this.filterTimeout);var t=String.fromCharCode(e).toLowerCase();this.filterTerm+=t.toLowerCase();var i=this.displayItems.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(this.filterTerm)));i&&this._focusItem(i),this.filterTimeout=setTimeout((()=>{this.filterTerm=""}),800)}_focusItem(e){this.lastAction="focus",this.focusedItem&&this.focusedItem.element&&this.focusedItem.element.classList.remove("focused"),this.focusedItem=e,e&&e.element&&(e.element.classList.add("focused"),e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"}))}headerFilterInitialListGen(){this._generateOptions(!0)}rebuildOptionsList(){this._generateOptions().then(this._sortOptions.bind(this)).then(this._buildList.bind(this)).then(this._showList.bind(this)).catch((e=>{Number.isInteger(e)||console.error("List generation error",e)}))}_filterList(){this._buildList(this._filterOptions()),this._showList()}_generateOptions(e){var t=[],i=++this.listIteration;return this.filtered=!1,this.params.values?t=this.params.values:this.params.valuesURL?t=this._ajaxRequest(this.params.valuesURL,this.input.value):"function"==typeof this.params.valuesLookup?t=this.params.valuesLookup(this.cell,this.input.value):this.params.valuesLookup&&(t=this._uniqueColumnValues(this.params.valuesLookupField)),t instanceof Promise?(e||this._addPlaceholder(this.params.placeholderLoading),t.then().then((e=>this.listIteration===i?this._parseList(e):Promise.reject(i)))):Promise.resolve(this._parseList(t))}_addPlaceholder(e){var t=document.createElement("div");"function"==typeof e&&(e=e(this.cell.getComponent(),this.listEl)),e&&(this._clearList(),e instanceof HTMLElement?t=e:(t.classList.add("tabulator-edit-list-placeholder"),t.innerHTML=e),this.listEl.appendChild(t),this._showList())}_ajaxRequest(e,t){return e=a(e,{},this.params.filterRemote?{term:t}:{}),fetch(e).then((e=>e.ok?e.json().catch((e=>(console.warn("List Ajax Load Error - Invalid JSON returned",e),Promise.reject(e)))):(console.error("List Ajax Load Error - Connection Error: "+e.status,e.statusText),Promise.reject(e)))).catch((e=>(console.error("List Ajax Load Error - Connection Error: ",e),Promise.reject(e))))}_uniqueColumnValues(e){var t,i={},s=this.table.getData(this.params.valuesLookup);return(t=e?this.table.columnManager.getColumnByField(e):this.cell.getColumn()._getSelf())?s.forEach((e=>{var s=t.getFieldValue(e);null!=s&&""!==s&&(i[s]=!0)})):(console.warn("unable to find matching column to create select lookup list:",e),i=[]),Object.keys(i)}_parseList(e){var t=[];return Array.isArray(e)||(e=Object.entries(e).map((([e,t])=>({label:t,value:e})))),e.forEach((e=>{"object"!=typeof e&&(e={label:e,value:e}),this._parseListItem(e,t,0)})),!this.currentItems.length&&this.params.freetext&&(this.input.value=this.initialValues,this.typing=!0,this.lastAction="typing"),this.data=t,t}_parseListItem(e,t,i){var s={};e.options?s=this._parseListGroup(e,i+1):(s={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,selected:!1,visible:!0,level:i,original:e},this.initialValues&&this.initialValues.indexOf(e.value)>-1&&this._chooseItem(s,!0)),t.push(s)}_parseListGroup(e,t){var i={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,visible:!0,level:t,options:[],original:e};return e.options.forEach((e=>{this._parseListItem(e,i.options,t)})),i}_sortOptions(e){var t;return this.params.sort&&(t="function"==typeof this.params.sort?this.params.sort:this._defaultSortFunction.bind(this),this._sortGroup(t,e)),e}_sortGroup(e,t){t.sort(((t,i)=>e(t.label,i.label,t.value,i.value,t.original,i.original))),t.forEach((t=>{t.group&&this._sortGroup(e,t.options)}))}_defaultSortFunction(e,t){var i,s,o,n,r,a=0,l=/(\d+)|(\D+)/g,h=/\d/,d=0;if("desc"===this.params.sort&&([e,t]=[t,e]),e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((i=String(e).toLowerCase())===(s=String(t).toLowerCase()))return 0;if(!h.test(i)||!h.test(s))return i>s?1:-1;for(i=i.match(l),s=s.match(l),r=i.length>s.length?s.length:i.length;an?1:-1;return i.length>s.length}d=1}else d=t||0===t?-1:0;return d}_filterOptions(){var e=this.params.filterFunc||this._defaultFilterFunc,t=this.input.value;return t?(this.filtered=!0,this.data.forEach((i=>{this._filterItem(e,t,i)}))):this.filtered=!1,this.data}_filterItem(e,t,i){var s=!1;return i.group?(i.options.forEach((i=>{this._filterItem(e,t,i)&&(s=!0)})),i.visible=s):i.visible=e(t,i.label,i.value,i.original),i.visible}_defaultFilterFunc(e,t,i,s){return e=String(e).toLowerCase(),null!=t&&(String(t).toLowerCase().indexOf(e)>-1||String(i).toLowerCase().indexOf(e)>-1)}_clearList(){for(;this.listEl.firstChild;)this.listEl.removeChild(this.listEl.firstChild);this.displayItems=[]}_buildList(e){this._clearList(),e.forEach((e=>{this._buildItem(e)})),this.displayItems.length||this._addPlaceholder(this.params.placeholderEmpty)}_buildItem(e){var t,i=e.element;if(!this.filtered||e.visible){if(!i){if((i=document.createElement("div")).tabIndex=0,(t=this.params.itemFormatter?this.params.itemFormatter(e.label,e.value,e.original,i):e.label)instanceof HTMLElement?i.appendChild(t):i.innerHTML=t,e.group?i.classList.add("tabulator-edit-list-group"):i.classList.add("tabulator-edit-list-item"),i.classList.add("tabulator-edit-list-group-level-"+e.level),e.elementAttributes&&"object"==typeof e.elementAttributes)for(let t in e.elementAttributes)"+"==t.charAt(0)?(t=t.slice(1),i.setAttribute(t,this.input.getAttribute(t)+e.elementAttributes["+"+t])):i.setAttribute(t,e.elementAttributes[t]);e.group?i.addEventListener("click",this._groupClick.bind(this,e)):i.addEventListener("click",this._itemClick.bind(this,e)),i.addEventListener("mousedown",this._preventBlur.bind(this)),e.element=i}this._styleItem(e),this.listEl.appendChild(i),e.group?e.options.forEach((e=>{this._buildItem(e)})):this.displayItems.push(e)}}_showList(){var e=this.popup&&this.popup.isVisible();if(this.input.parentNode){if(this.params.autocomplete&&""===this.input.value&&!this.params.listOnEmpty)return void(this.popup&&this.popup.hide(!0));this._setListWidth(),this.popup||(this.popup=this.edit.popup(this.listEl)),this.popup.show(this.cell.getElement(),"bottom"),e||setTimeout((()=>{this.popup.hideOnBlur(this._resolveValue.bind(this,!0))}),10)}}_styleItem(e){e&&e.element&&(e.selected?e.element.classList.add("active"):e.element.classList.remove("active"))}_itemClick(e,t){t.stopPropagation(),this._chooseItem(e)}_groupClick(e,t){t.stopPropagation()}_cancel(){this.popup.hide(!0),this.actions.cancel()}_clearChoices(){this.typing=!0,this.currentItems.forEach((e=>{e.selected=!1,this._styleItem(e)})),this.currentItems=[],this.focusedItem=null}_chooseItem(e,t){var i;this.typing=!1,this.params.multiselect?((i=this.currentItems.indexOf(e))>-1?(this.currentItems.splice(i,1),e.selected=!1):(this.currentItems.push(e),e.selected=!0),this.input.value=this.currentItems.map((e=>e.label)).join(","),this._styleItem(e)):(this.currentItems=[e],e.selected=!0,this.input.value=e.label,this._styleItem(e),t||this._resolveValue()),this._focusItem(e)}_resolveValue(e){var t,i;if(this.popup&&this.popup.hide(!0),this.params.multiselect)t=this.currentItems.map((e=>e.value));else if(e&&this.params.autocomplete&&this.typing){if(!(this.params.freetext||this.params.allowEmpty&&""===this.input.value))return void this.actions.cancel();t=this.input.value}else t=this.currentItems[0]?this.currentItems[0].value:null==(i=Array.isArray(this.initialValues)?this.initialValues[0]:this.initialValues)||""===i?i:this.params.emptyValue;""===t&&(t=this.params.emptyValue),this.actions.success(t),this.isFilter&&(this.initialValues=t&&!Array.isArray(t)?[t]:t,this.currentItems=[])}}var k={input:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",o.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(e){null==n&&""!==r.value||r.value!==n?i(r.value)&&(n=r.value):s()}return r.value=void 0!==n?n:"",t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%",o.selectContents&&r.select())})),r.addEventListener("change",a),r.addEventListener("blur",a),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s();break;case 35:case 36:e.stopPropagation()}})),o.mask&&T(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=document.createElement("textarea"),h=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),l.setAttribute(e,l.getAttribute(e)+o.elementAttributes["+"+e])):l.setAttribute(e,o.elementAttributes[e]);function d(t){null==n&&""!==l.value||l.value!==n?(i(l.value)&&(n=l.value),setTimeout((function(){e.getRow().normalizeHeight()}),300)):s()}return l.value=a,t((function(){"cell"===e.getType()&&(l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight(),o.selectContents&&l.select())})),l.addEventListener("change",d),l.addEventListener("blur",d),l.addEventListener("keyup",(function(){l.style.height="";var t=l.scrollHeight;l.style.height=t+"px",t!=h&&(h=t,e.getRow().normalizeHeight())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:e.shiftKey&&o.shiftEnterSubmit&&d();break;case 27:s();break;case 38:("editor"==r||"hybrid"==r&&l.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&l.selectionStart!==l.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&T(l,o),l},number:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"editor",a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==o.max&&a.setAttribute("max",o.max),void 0!==o.min&&a.setAttribute("min",o.min),void 0!==o.step&&a.setAttribute("step",o.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),a.setAttribute(e,a.getAttribute(e)+o.elementAttributes["+"+e])):a.setAttribute(e,o.elementAttributes[e]);a.value=n;var l=function(e){h()};function h(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!==n?i(e)&&(n=e):s()}return t((function(){"cell"===e.getType()&&(a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l),o.selectContents&&a.select())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:s();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&T(a,o),a},range:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==o.max&&r.setAttribute("max",o.max),void 0!==o.min&&r.setAttribute("min",o.min),void 0!==o.step&&r.setAttribute("step",o.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=n?i(e)&&(n=e):s()}return r.value=n,t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%")})),r.addEventListener("blur",(function(e){a()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s()}})),r},date:function(e,t,i,s,o){var n=o.format,r=o.verticalNavigation||"editor",a=n?window.DateTime||luxon.DateTime:null,l=e.getValue(),h=document.createElement("input");function d(e){return(a.isDateTime(e)?e:"iso"===n?a.fromISO(String(e)):a.fromFormat(String(e),n)).toFormat("yyyy-MM-dd")}if(h.type="date",h.style.padding="4px",h.style.width="100%",h.style.boxSizing="border-box",o.max&&h.setAttribute("max",n?d(o.max):o.max),o.min&&h.setAttribute("min",n?d(o.min):o.min),o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),h.setAttribute(e,h.getAttribute(e)+o.elementAttributes["+"+e])):h.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=h.value;if(null==l&&""!==t||t!==l){if(t&&n)switch(e=a.fromFormat(String(t),"yyyy-MM-dd"),n){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(n)}i(t)&&(l=h.value)}else s()}return l=void 0!==l?l:"",n&&(a?l=d(l):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),h.value=l,t((function(){"cell"===e.getType()&&(h.focus({preventScroll:!0}),h.style.height="100%",o.selectContents&&h.select())})),h.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==h)&&c()})),h.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation())}})),h},time:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="time",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromFormat(String(t),"hh:mm"),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("hh:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),d.value=h,t((function(){"cell"==e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},datetime:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="datetime-local",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromISO(String(t)),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("yyyy-MM-dd")+"T"+n.toFormat("hh:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),d.value=h,t((function(){"cell"===e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},select:function(e,t,i,s,o){return this.deprecationMsg("The select editor has been deprecated, please use the new list editor"),new M(this,e,t,i,s,o).input},list:function(e,t,i,s,o){return new M(this,e,t,i,s,o).input},autocomplete:function(e,t,i,s,o){return this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"),o.autocomplete=!0,new M(this,e,t,i,s,o).input},star:function(e,t,i,s,o){var n=this,r=e.getElement(),a=e.getValue(),l=r.getElementsByTagName("svg").length||5,h=r.getElementsByTagName("svg")[0]?r.getElementsByTagName("svg")[0].getAttribute("width"):14,d=[],c=document.createElement("div"),u=document.createElementNS("http://www.w3.org/2000/svg","svg");function p(e){d.forEach((function(t,i){i'):("ie"==n.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function m(e){var t=document.createElement("span"),s=u.cloneNode(!0);d.push(s),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),p(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),r.blur()})),t.appendChild(s),c.appendChild(t)}function g(e){a=e,p(e)}if(r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",c.style.verticalAlign="middle",c.style.display="inline-block",c.style.padding="4px",u.setAttribute("width",h),u.setAttribute("height",h),u.setAttribute("viewBox","0 0 512 512"),u.setAttribute("xml:space","preserve"),u.style.padding="0 1px",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+o.elementAttributes["+"+e])):c.setAttribute(e,o.elementAttributes[e]);for(var b=1;b<=l;b++)m(b);return p(a=Math.min(parseInt(a),l)),c.addEventListener("mousemove",(function(e){p(0)})),c.addEventListener("click",(function(e){i(0)})),r.addEventListener("blur",(function(e){s()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(a+1);break;case 37:g(a-1);break;case 13:i(a);break;case 27:s()}})),c},progress:function(e,t,i,s,o){var n,r,a=e.getElement(),l=void 0===o.max?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,h=void 0===o.min?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,d=(l-h)/100,c=e.getValue()||0,u=document.createElement("div"),p=document.createElement("div");function m(){var e=window.getComputedStyle(a,null),t=d*Math.round(p.offsetWidth/((a.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+h;i(t),a.setAttribute("aria-valuenow",t),a.setAttribute("aria-label",c)}if(u.style.position="absolute",u.style.right="0",u.style.top="0",u.style.bottom="0",u.style.width="5px",u.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),p.setAttribute(e,p.getAttribute(e)+o.elementAttributes["+"+e])):p.setAttribute(e,o.elementAttributes[e]);return a.style.padding="4px 4px",c=Math.min(parseFloat(c),l),c=Math.max(parseFloat(c),h),c=Math.round((c-h)/d),p.style.width=c+"%",a.setAttribute("aria-valuemin",h),a.setAttribute("aria-valuemax",l),p.appendChild(u),u.addEventListener("mousedown",(function(e){n=e.screenX,r=p.offsetWidth})),u.addEventListener("mouseover",(function(){u.style.cursor="ew-resize"})),a.addEventListener("mousemove",(function(e){n&&(p.style.width=r+e.screenX-n+"px")})),a.addEventListener("mouseup",(function(e){n&&(e.stopPropagation(),e.stopImmediatePropagation(),n=!1,r=!1,m())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+a.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-a.clientWidth/100+"px";break;case 9:case 13:m();break;case 27:s()}})),a.addEventListener("blur",(function(){s()})),p},tickCross:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input"),a=o.tristate,l=void 0===o.indeterminateValue?null:o.indeterminateValue,h=!1,d=Object.keys(o).includes("trueValue"),c=Object.keys(o).includes("falseValue");if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function u(e){var t=r.checked;return d&&t?t=o.trueValue:c&&!t&&(t=o.falseValue),a?e?h?l:t:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,t):t}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&"safari"!=this.table.browser&&t((function(){"cell"===e.getType()&&r.focus({preventScroll:!0})})),r.checked=d?n===o.trueValue:!0===n||"true"===n||"True"===n||1===n,r.addEventListener("change",(function(e){i(u())})),r.addEventListener("blur",(function(e){i(u(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(u()),27==e.keyCode&&s()})),r}};class L extends s{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=L.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),this.registerTableFunction("getEditedCells",this.getEditedCells.bind(this)),this.registerTableFunction("clearCellEdited",this.clearCellEdited.bind(this)),this.registerTableFunction("navigatePrev",this.navigatePrev.bind(this)),this.registerTableFunction("navigateNext",this.navigateNext.bind(this)),this.registerTableFunction("navigateLeft",this.navigateLeft.bind(this)),this.registerTableFunction("navigateRight",this.navigateRight.bind(this)),this.registerTableFunction("navigateUp",this.navigateUp.bind(this)),this.registerTableFunction("navigateDown",this.navigateDown.bind(this)),this.registerComponentFunction("cell","isEdited",this.cellIsEdited.bind(this)),this.registerComponentFunction("cell","clearEdited",this.clearEdited.bind(this)),this.registerComponentFunction("cell","edit",this.editCell.bind(this)),this.registerComponentFunction("cell","cancelEdit",this.cellCancelEdit.bind(this)),this.registerComponentFunction("cell","navigatePrev",this.navigatePrev.bind(this)),this.registerComponentFunction("cell","navigateNext",this.navigateNext.bind(this)),this.registerComponentFunction("cell","navigateLeft",this.navigateLeft.bind(this)),this.registerComponentFunction("cell","navigateRight",this.navigateRight.bind(this)),this.registerComponentFunction("cell","navigateUp",this.navigateUp.bind(this)),this.registerComponentFunction("cell","navigateDown",this.navigateDown.bind(this))}initialize(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("cell-value-changed",this.updateCellClass.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("row-layout",this.rowEditableCheck.bind(this)),this.subscribe("data-refreshing",this.cancelEdit.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this,void 0)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-left",this.navigateLeft.bind(this,void 0)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this,void 0)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((()=>{setTimeout((()=>{t.getComponent().navigateNext()}))}))))}cellIsEdited(e){return!!e.modules.edit&&e.modules.edit.edited}cellCancelEdit(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}updateCellClass(e){this.allowEdit(e)?e.getElement().classList.add("tabulator-editable"):e.getElement().classList.remove("tabulator-editable")}clearCellEdited(e){e||(e=this.table.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.table.modules.edit.clearEdited(e._getSelf())}))}navigatePrev(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateLeft())return!0;if((s=this.table.rowManager.prevDisplayRow(e.row,!0))&&(i=this.findPrevEditableCell(s,s.cells.length)))return i.getComponent().edit(),!0}return!1}navigateNext(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateRight())return!0;if((s=this.table.rowManager.nextDisplayRow(e.row,!0))&&(i=this.findNextEditableCell(s,-1)))return i.getComponent().edit(),!0}return!1}navigateLeft(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findPrevEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateRight(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findNextEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateUp(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.prevDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}navigateDown(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.nextDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}findNextEditableCell(e,i){var s=!1;if(i0)for(var o=i-1;o>=0;o--){let i=e.cells[o];if(i.column.modules.edit&&t.elVisible(i.getElement())){if(this.allowEdit(i)){s=i;break}}}return s}initializeColumnCheck(e){void 0!==e.definition.editor&&this.initializeColumn(e)}columnDeleteCheck(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}rowDeleteCheck(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}rowEditableCheck(e){e.getCells().forEach((e=>{e.column.modules.edit&&"function"==typeof e.column.modules.edit.check&&this.updateCellClass(e)}))}initializeColumn(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(typeof e.definition.editor){case"string":this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)}getCurrentCell(){return!!this.currentCell&&this.currentCell.getComponent()}clearEditor(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),this.dispatch("edit-editor-clear",i,e),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-editing"),i.table.element.classList.remove("tabulator-editing")}}cancelEdit(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatch("edit-cancelled",e),this.dispatchExternal("cellEditCancelled",t)}}bindEditor(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);this.updateCellClass(e),i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}focusCellNoEvent(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}editCell(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}focusScrollAdjust(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,s=e.row.getElement();s.offsetTopi&&(this.table.rowManager.element.scrollTop+=s.offsetTop+s.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,n=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin||0),n-=parseInt(this.table.modules.frozenColumns.rightMargin||0)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),n-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLeftn&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-n)}}allowEdit(e){var t=!!e.column.modules.edit;if(e.column.modules.edit)switch(typeof e.column.modules.edit.check){case"function":e.row.initialized&&(t=e.column.modules.edit.check(e.getComponent()));break;case"string":t=!!e.row.data[e.column.modules.edit.check];break;case"boolean":t=e.column.modules.edit.check}return t}edit(e,t,i){var s,o,n,r=this,a=function(){},l=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,l.blur(),!1;if(t&&t.stopPropagation(),this.allowEdit(e)||i){if(r.cancelEdit(),r.currentCell=e,this.focusScrollAdjust(e),o=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.definition.cellClick&&e.column.definition.cellClick.call(this.table,t,o)),e.column.definition.cellEditing&&e.column.definition.cellEditing.call(this.table,o),this.dispatch("cell-editing",e),this.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,s=e.column.modules.edit.editor.call(r,o,(function(e){a=e}),(function(t){if(r.currentCell===e){var i=r.chain("edit-success",[e,t],!0,!0);return!0===i||"highlight"===r.table.options.validationMode?(r.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==r.editedCells.indexOf(e)&&r.editedCells.push(e),e.setValue(t,!0),!0===i):(r.invalidEdit=!0,r.focusCellNoEvent(e,!0),a(),!1)}}),(function(){r.currentCell===e&&r.cancelEdit()}),n),!this.currentCell||!1===s)return l.blur(),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),l.blur(),!1;for(l.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-editing"),e.table.element.classList.add("tabulator-editing");l.firstChild;)l.removeChild(l.firstChild);l.appendChild(s),a();for(var h=l.children,d=0;d{e.push(t.getComponent())})),e}clearEdited(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,this.dispatch("edit-edited-clear",e)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}L.moduleName="edit",L.editors=k;class D{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class S{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class P extends s{constructor(e){super(e),this.config={},this.cloneTableStyle=!0,this.colVisProp="",this.registerTableOption("htmlOutputConfig",!1),this.registerColumnOption("htmlOutput"),this.registerColumnOption("titleHtmlOutput")}initialize(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}generateExportList(e,t,i,s){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}generateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.generateTableElement(o)}rowLookup(e){var t=[];if("function"==typeof e)e.call(this.table).forEach((e=>{(e=this.table.rowManager.findRow(e))&&t.push(e)}));else switch(e){case!0:case"visible":t=this.table.rowManager.getVisibleRows(!1,!0);break;case"all":t=this.table.rowManager.rows;break;case"selected":t=this.table.modules.selectRow.selectedRows;break;default:t=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],t)}generateColumnGroupHeaders(){var e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((t=>{var i=this.processColumnGroup(t);i&&e.push(i)})),e}processColumnGroup(e){var t=e.columns,i=0,s={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach((e=>{var t=this.processColumnGroup(e);t&&(s.width+=t.width,s.subGroups.push(t),t.depth>i&&(i=t.depth))})),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s}columnVisCheck(e){var t=e.definition[this.colVisProp];return"function"==typeof t&&(t=t.call(this.table,e.getComponent())),!1!==t&&(e.visible||!e.visible&&t)}headersToExportRows(e){var t=[],i=0,s=[];function o(e,s){var n=i-s;if(void 0===t[s]&&(t[s]=[]),e.height=e.subGroups?1:n-e.depth+1,t[s].push(e),e.height>1)for(let i=1;i1)for(let i=1;ii&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((e=>{var t=[];e.forEach((e=>{if(e){let i=void 0===e.title?"":e.title;t.push(new S(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),s.push(new D("header",t))})),s}bodyToExportRows(e){var t=[],i=[];return this.table.columnManager.columnsByIndex.forEach((e=>{this.columnVisCheck(e)&&t.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((e=>{switch(e.type){case"group":return!1!==this.config.rowGroups;case"calc":return!1!==this.config.columnCalcs;case"row":return!(this.table.options.dataTree&&!1===this.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach(((e,s)=>{var o=e.getData(this.colVisProp),n=[],r=0;switch(e.type){case"group":r=e.level,n.push(new S(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new S(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new D(e.type,n,e.getComponent(),r))})),i}generateTableElement(e){var t=document.createElement("table"),i=document.createElement("thead"),s=document.createElement("tbody"),o=this.lookupTableStyles(),n=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==n?n:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),t.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(((e,t)=>{let n;switch(e.type){case"header":i.appendChild(this.generateHeaderElement(e,r,o));break;case"group":s.appendChild(this.generateGroupElement(e,r,o));break;case"calc":s.appendChild(this.generateCalcElement(e,r,o));break;case"row":n=this.generateRowElement(e,r,o),this.mapElementStyles(t%2&&o.evenRow?o.evenRow:o.oddRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s.appendChild(n)}})),i.innerHTML&&t.appendChild(i),t.appendChild(s),this.mapElementStyles(this.table.element,t,["border-top","border-left","border-right","border-bottom"]),t}lookupTableStyles(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}generateHeaderElement(e,t,i){var s=document.createElement("tr");return e.columns.forEach((e=>{if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,this.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),this.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),this.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?this.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&this.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),s.appendChild(t)}})),s}generateGroupElement(e,t,i){var s=document.createElement("tr"),o=document.createElement("td"),n=e.columns[0];return s.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?n.value=t.groupHeader[e.indent](n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1!==t.groupHeader&&(n.value=e.component._group.generator(n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)),o.colSpan=n.width,o.innerHTML=n.value,s.classList.add("tabulator-print-table-group"),s.classList.add("tabulator-group-level-"+e.indent),n.component.isVisible()&&s.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(o),s}generateCalcElement(e,t,i){var s=this.generateRowElement(e,t,i);return s.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s}generateRowElement(e,t,i){var s=document.createElement("tr");if(s.classList.add("tabulator-print-table-row"),e.columns.forEach(((o,n)=>{if(o){var r,a=document.createElement("td"),l=o.component._column,h=this.table.columnManager.findColumnIndex(l),d=o.value,c={modules:{},getValue:function(){return d},getField:function(){return l.definition.field},getElement:function(){return a},getType:function(){return"cell"},getColumn:function(){return l.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return c},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach((function(e){a.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)d=this.table.modules.format.formatExportValue(c,this.colVisProp);else switch(typeof d){case"object":d=null!==d?JSON.stringify(d):"";break;case"undefined":d=""}d instanceof Node?a.appendChild(d):a.innerHTML=d,(r=i.styleCells&&i.styleCells[h]?i.styleCells[h]:i.firstCell)&&(this.mapElementStyles(r,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),l.definition.align&&(a.style.textAlign=l.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==n)&&(e.component._row.modules.dataTree.controlEl&&a.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),e.component._row.modules.dataTree.branchEl&&a.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),s.appendChild(a),c.modules.format&&c.modules.format.renderedCallback&&c.modules.format.renderedCallback()}})),t.rowFormatter&&"row"===e.type&&!1!==this.config.formatCells){Object.assign(e.component).getElement=function(){return s},t.rowFormatter(e.component)}return s}generateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.generateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.generateHTMLTable(o)}mapElementStyles(e,t,i){if(this.cloneTableStyle&&e&&t){var s={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[s[e]]||(t.style[s[e]]=o.getPropertyValue(e))}))}}}}P.moduleName="export";var z={"=":function(e,t,i,s){return t==e},"<":function(e,t,i,s){return t":function(e,t,i,s){return t>e},">=":function(e,t,i,s){return t>=e},"!=":function(e,t,i,s){return t!=e},regex:function(e,t,i,s){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,s){var o=e.toLowerCase().split(void 0===s.separator?" ":s.separator),n=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((e=>{n.includes(e)&&r.push(!0)})),s.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,s){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}};class F extends s{constructor(e){super(e),this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1,this.tableInitialized=!1,this.registerTableOption("filterMode","local"),this.registerTableOption("initialFilter",!1),this.registerTableOption("initialHeaderFilter",!1),this.registerTableOption("headerFilterLiveFilterDelay",300),this.registerTableOption("placeholderHeaderFilter",!1),this.registerColumnOption("headerFilter"),this.registerColumnOption("headerFilterPlaceholder"),this.registerColumnOption("headerFilterParams"),this.registerColumnOption("headerFilterEmptyCheck"),this.registerColumnOption("headerFilterFunc"),this.registerColumnOption("headerFilterFuncParams"),this.registerColumnOption("headerFilterLiveFilter"),this.registerTableFunction("searchRows",this.searchRows.bind(this)),this.registerTableFunction("searchData",this.searchData.bind(this)),this.registerTableFunction("setFilter",this.userSetFilter.bind(this)),this.registerTableFunction("refreshFilter",this.userRefreshFilter.bind(this)),this.registerTableFunction("addFilter",this.userAddFilter.bind(this)),this.registerTableFunction("getFilters",this.getFilters.bind(this)),this.registerTableFunction("setHeaderFilterFocus",this.userSetHeaderFilterFocus.bind(this)),this.registerTableFunction("getHeaderFilterValue",this.userGetHeaderFilterValue.bind(this)),this.registerTableFunction("setHeaderFilterValue",this.userSetHeaderFilterValue.bind(this)),this.registerTableFunction("getHeaderFilters",this.getHeaderFilters.bind(this)),this.registerTableFunction("removeFilter",this.userRemoveFilter.bind(this)),this.registerTableFunction("clearFilter",this.userClearFilter.bind(this)),this.registerTableFunction("clearHeaderFilter",this.userClearHeaderFilter.bind(this)),this.registerComponentFunction("column","headerFilterFocus",this.setHeaderFilterFocus.bind(this)),this.registerComponentFunction("column","reloadHeaderFilter",this.reloadHeaderFilter.bind(this)),this.registerComponentFunction("column","getHeaderFilterValue",this.getHeaderFilterValue.bind(this)),this.registerComponentFunction("column","setHeaderFilterValue",this.setHeaderFilterValue.bind(this))}initialize(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.subscribe("placeholder",this.generatePlaceholder.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}tableBuilt(){this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((e=>{var t=this.table.columnManager.findColumn(e.field);if(!t)return console.warn("Column Filter Error - No matching column found:",e.field),!1;this.setHeaderFilterValue(t,e.value)})),this.tableInitialized=!0}remoteFilterParams(e,t,i,s){return s.filter=this.getFilters(!0,!0),s}generatePlaceholder(e){if(this.table.options.placeholderHeaderFilter&&Object.keys(this.headerFilters).length)return this.table.options.placeholderHeaderFilter}userSetFilter(e,t,i,s){this.setFilter(e,t,i,s),this.refreshFilter()}userRefreshFilter(){this.refreshFilter()}userAddFilter(e,t,i,s){this.addFilter(e,t,i,s),this.refreshFilter()}userSetHeaderFilterFocus(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}userGetHeaderFilterValue(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}userSetHeaderFilterValue(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}userRemoveFilter(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}userClearFilter(e){this.clearFilter(e),this.refreshFilter()}userClearHeaderFilter(){this.clearHeaderFilter(),this.refreshFilter()}searchRows(e,t,i){return this.search("rows",e,t,i)}searchData(e,t,i){return this.search("data",e,t,i)}initializeColumnHeaderFilter(e){e.definition.headerFilter&&this.initializeColumn(e)}initializeColumn(e,t){var i=this,s=e.getField();e.modules.filter={success:function(t){var o,n="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[s];else{switch(e.modules.filter.value=t,typeof e.definition.headerFilterFunc){case"string":F.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,F.filters[e.definition.headerFilterFunc](t,o,i,s)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,e.definition.headerFilterFunc(t,o,i,s)}}if(!o)if("partial"===n)o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";else o=function(i){return e.getFieldValue(i)==t},r="=";i.headerFilters[s]={value:t,func:o,type:r}}e.modules.filter.value=t,a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.trackChanges(),i.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)}generateHeaderFilterElement(e,t,i){var s,o,n,r,a,l,h,d,c=this,u=e.modules.filter.success,p=e.getField();if(e.modules.filter.value=t,e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(o=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(o=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=c.table.modules.edit.editors.input}if(o){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return s},getColumn:function(){return e.getComponent()},getTable:()=>this.table,getType:()=>"header",getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(c.table,r):h,!(n=o.call(this.table.modules.edit,r,(function(e){d=e}),u,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",n);c.langBind("headerFilters|columns|"+e.definition.field,(function(t){n.setAttribute("placeholder",void 0!==t&&t?t:e.definition.headerFilterPlaceholder||c.langText("headerFilters|default"))})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.contentsElement.scrollLeft;t!==this.table.rowManager.element.scrollLeft&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){u(n.value)}),c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=n,e.modules.filter.attrType=n.hasAttribute("type")?n.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=n.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(n.addEventListener("keyup",l),n.addEventListener("search",l),"number"==e.modules.filter.attrType&&n.addEventListener("change",(function(e){u(n.value)})),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&n.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||n.addEventListener("mousedown",(function(e){e.stopPropagation()}))),s.appendChild(n),e.contentElement.appendChild(s),i||c.headerFilterColumns.push(e),d&&d()}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)}hideHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}showHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}setHeaderFilterFocus(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}getHeaderFilterValue(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}setHeaderFilterValue(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}reloadHeaderFilter(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}refreshFilter(){this.tableInitialized&&("remote"===this.table.options.filterMode?this.reloadData(null,!1,!1):this.refreshData(!0))}trackChanges(){this.changed=!0,this.dispatch("filter-changed")}hasChanged(){var e=this.changed;return this.changed=!1,e}setFilter(e,t,i,s){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),this.addFilter(e)}addFilter(e,t,i,s){var o=!1;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),e.forEach((e=>{(e=this.findFilter(e))&&(this.filterList.push(e),o=!0)})),o&&this.trackChanges()}findFilter(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:F.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return F.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return F.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}findSubFilters(e){var t=[];return e.forEach((e=>{(e=this.findFilter(e))&&t.push(e)})),!!t.length&&t}getFilters(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}filtersToArray(e,t){var i=[];return e.forEach((e=>{var s;Array.isArray(e)?i.push(this.filtersToArray(e,t)):(s={field:e.field,type:e.type,value:e.value},t&&"function"==typeof s.type&&(s.type="function"),i.push(s))})),i}getHeaderFilters(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}removeFilter(e,t,i){Array.isArray(e)||(e=[{field:e,type:t,value:i}]),e.forEach((e=>{var t=-1;(t="object"==typeof e.field?this.filterList.findIndex((t=>e===t)):this.filterList.findIndex((t=>e.field===t.field&&e.type===t.type&&e.value===t.value)))>-1?this.filterList.splice(t,1):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)})),this.trackChanges()}clearFilter(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}clearHeaderFilter(){this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((e=>{void 0!==e.modules.filter.value&&delete e.modules.filter.value,e.modules.filter.prevSuccess=void 0,this.reloadHeaderFilter(e)})),this.trackChanges()}search(e,t,i,s){var o=[],n=[];return Array.isArray(t)||(t=[{field:t,type:i,value:s}]),t.forEach((e=>{(e=this.findFilter(e))&&n.push(e)})),this.table.rowManager.rows.forEach((t=>{var i=!0;n.forEach((e=>{this.filterRecurse(e,t.getData())||(i=!1)})),i&&o.push("data"===e?t.getData("data"):t.getComponent())})),o}filter(e,t){var i=[],s=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters(!0)),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((e=>{this.filterRow(e)&&i.push(e)})):i=e.slice(0),this.subscribedExternal("dataFiltered")&&(i.forEach((e=>{s.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(!0),s)),i}filterRow(e,t){var i=!0,s=e.getData();for(var o in this.filterList.forEach((e=>{this.filterRecurse(e,s)||(i=!1)})),this.headerFilters)this.headerFilters[o].func(s)||(i=!1);return i}filterRecurse(e,t){var i=!1;return Array.isArray(e)?e.forEach((e=>{this.filterRecurse(e,t)&&(i=!0)})):i=e.func(t),i}}F.moduleName="filter",F.filters=z;var H={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var s,o,n,r,a,l=parseFloat(e.getValue()),h="",d=t.decimal||".",c=t.thousand||",",u=t.negativeSign||"-",p=t.symbol||"",m=!!t.symbolAfter,g=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));if(l<0&&(l=Math.abs(l),h=u),s=!1!==g?l.toFixed(g):l,o=(s=String(s).split("."))[0],n=s.length>1?d+s[1]:"",!1!==t.thousand)for(r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+c+"$2");return a=o+n,!0===h?(a="("+a+")",m?a+p:p+a):m?h+a+p:h+p+a},link:function(e,t,i){var s,o=e.getValue(),n=t.urlPrefix||"",r=t.download,a=o,l=document.createElement("a");if(t.labelField&&(s=e.getData(),a=function e(t,i){var s=i[t.shift()];return t.length&&"object"==typeof s?e(t,s):s}(t.labelField.split(this.table.options.nestedFieldSeparator),s)),t.label)switch(typeof t.label){case"string":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(o=(s=e.getData())[t.urlField]),t.url)switch(typeof t.url){case"string":o=t.url;break;case"function":o=t.url(e)}return l.setAttribute("href",n+o),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return" "},image:function(e,t,i){var s=document.createElement("img"),o=e.getValue();switch(t.urlPrefix&&(o=t.urlPrefix+e.getValue()),t.urlSuffix&&(o+=t.urlSuffix),s.setAttribute("src",o),typeof t.height){case"number":s.style.height=t.height+"px";break;case"string":s.style.height=t.height}switch(typeof t.width){case"number":s.style.width=t.width+"px";break;case"string":s.style.width=t.width}return s.addEventListener("load",(function(){e.getRow().normalizeHeight()})),s},tickCross:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t.allowEmpty,r=t.allowTruthy,a=Object.keys(t).includes("trueValue"),l=void 0!==t.tickElement?t.tickElement:'',h=void 0!==t.crossElement?t.crossElement:'';return a&&s===t.trueValue||!a&&(r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s)?(o.setAttribute("aria-checked",!0),l||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),h||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=t.outputFormat||"dd/MM/yyyy HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue();if(void 0!==o)return(s=o.isDateTime(l)?l:"iso"===n?o.fromISO(String(l)):o.fromFormat(String(l),n)).isValid?(t.timezone&&(s=s.setZone(t.timezone)),s.toFormat(r)):!0!==a&&l?"function"==typeof a?a(l):a:l;console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:"days",h=void 0!==t.humanize&&t.humanize,d=void 0!==t.date?t.date:o.now(),c=e.getValue();if(void 0!==o)return(s=o.isDateTime(c)?c:"iso"===n?o.fromISO(String(c)):o.fromFormat(String(c),n)).isValid?h?s.diff(d,l).toHuman()+(a?" "+a:""):parseInt(s.diff(d,l)[l])+(a?" "+a:""):!0===r?c:"function"==typeof r?r(c):r;console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var s=e.getValue();return void 0===t[s]?(console.warn("Missing display value for "+s),s):t[s]},star:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",s=s&&!isNaN(s)?parseInt(s):0,s=Math.max(0,Math.min(s,n));for(var l=1;l<=n;l++){var h=a.cloneNode(!0);h.innerHTML=l<=s?'':'',r.appendChild(h)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",s),r},traffic:function(e,t,i){var s,o,n=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,h=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),o=parseFloat(n)<=a?parseFloat(n):a,o=parseFloat(o)>=l?parseFloat(o):l,s=(a-l)/100,o=Math.round((o-l)/s),typeof h){case"string":d=h;break;case"function":d=h(n);break;case"object":if(Array.isArray(h)){var c=100/h.length,u=Math.floor(o/c);u=Math.min(u,h.length-1),d=h[u=Math.max(u,0)];break}}return r.style.backgroundColor=d,r}},progress:function(e,t={},i){var s,o,n,r,a,l=this.sanitizeHTML(e.getValue())||0,h=e.getElement(),d=t.max?t.max:100,c=t.min?t.min:0,u=t.legendAlign?t.legendAlign:"center";switch(o=parseFloat(l)<=d?parseFloat(l):d,o=parseFloat(o)>=c?parseFloat(o):c,s=(d-c)/100,o=Math.round((o-c)/s),typeof t.color){case"string":n=t.color;break;case"function":n=t.color(l);break;case"object":if(Array.isArray(t.color)){let e=100/t.color.length,i=Math.floor(o/e);i=Math.min(i,t.color.length-1),i=Math.max(i,0),n=t.color[i];break}default:n="#2DC214"}switch(typeof t.legend){case"string":r=t.legend;break;case"function":r=t.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(typeof t.legendColor){case"string":a=t.legendColor;break;case"function":a=t.legendColor(l);break;case"object":if(Array.isArray(t.legendColor)){let e=100/t.legendColor.length,i=Math.floor(o/e);i=Math.min(i,t.legendColor.length-1),i=Math.max(i,0),a=t.legendColor[i]}break;default:a="#000"}h.style.minWidth="30px",h.style.position="relative",h.setAttribute("aria-label",o);var m=document.createElement("div");m.style.display="inline-block",m.style.width=o+"%",m.style.backgroundColor=n,m.style.height="100%",m.setAttribute("data-max",d),m.setAttribute("data-min",c);var g=document.createElement("div");if(g.style.position="relative",g.style.width="100%",g.style.height="100%",r){var b=document.createElement("div");b.style.position="absolute",b.style.top=0,b.style.left=0,b.style.textAlign=u,b.style.width="100%",b.style.color=a,b.innerHTML=r}return i((function(){if(!(e instanceof p)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",h.appendChild(t),h=t}h.appendChild(g),g.appendChild(m),r&&g.appendChild(b)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){var s=document.createElement("span");return e.getRow().watchPosition((e=>{s.innerText=e})),s},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
              "},responsiveCollapse:function(e,t,i){var s=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function n(e){var t=o.element;o.open=e,t&&(o.open?(s.classList.add("open"),t.style.display=""):(s.classList.remove("open"),t.style.display="none"))}return s.classList.add("tabulator-responsive-collapse-toggle"),s.innerHTML='\n \n \n\n\n\n \n',e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(t){t.stopImmediatePropagation(),n(!o.open),e.getTable().rowManager.adjustTableSize()})),n(o.open),s},rowSelection:function(e,t,i){var s=document.createElement("input"),o=!1;if(s.type="checkbox",s.setAttribute("aria-label","Select Row"),this.table.modExists("selectRow",!0))if(s.addEventListener("click",(e=>{e.stopPropagation()})),"function"==typeof e.getRow){var n=e.getRow();n instanceof v?(s.addEventListener("change",(e=>{"click"===this.table.options.selectableRangeMode&&o?o=!1:n.toggleSelect()})),"click"===this.table.options.selectableRangeMode&&s.addEventListener("click",(e=>{o=!0,this.table.modules.selectRow.handleComplexRowClick(n._row,e)})),s.checked=n.isSelected&&n.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(n,s)):s=""}else s.addEventListener("change",(e=>{this.table.modules.selectRow.selectedRows.length?this.table.deselectRow():this.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(s);return s}};class O extends s{constructor(e){super(e),this.registerColumnOption("formatter"),this.registerColumnOption("formatterParams"),this.registerColumnOption("formatterPrint"),this.registerColumnOption("formatterPrintParams"),this.registerColumnOption("formatterClipboard"),this.registerColumnOption("formatterClipboardParams"),this.registerColumnOption("formatterHtmlOutput"),this.registerColumnOption("formatterHtmlOutputParams"),this.registerColumnOption("titleFormatter"),this.registerColumnOption("titleFormatterParams")}initialize(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}initializeColumn(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}lookupFormatter(e,t){var i={params:e.definition["formatter"+t+"Params"]||{}},s=e.definition["formatter"+t];switch(typeof s){case"string":O.formatters[s]?i.formatter=O.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=O.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=O.formatters.plaintext}return i}cellRendered(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}formatHeader(e,t,i){var s,o,n,r;return e.definition.titleFormatter?(s=this.getFormatter(e.definition.titleFormatter),n=t=>{e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i},getType:function(){return"header"},getColumn:function(){return e.getComponent()},getTable:()=>this.table},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,s.call(this,r,o,n)):t}formatValue(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}formatExportValue(e,t){var i,s=e.column.modules.format[t];if(s){function o(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}return i="function"==typeof s.params?s.params(e.getComponent()):s.params,s.formatter.call(this,e.getComponent(),i,o)}return this.formatValue(e)}sanitizeHTML(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=/]/g,(function(e){return t[e]}))}return e}emptyToSpace(e){return null==e||""===e?" ":e}getFormatter(e){switch(typeof e){case"string":O.formatters[e]?e=O.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=O.formatters.plaintext);break;case"function":break;default:e=O.formatters.plaintext}return e}}O.moduleName="format",O.formatters=H;class A extends s{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.initializationMode="left",this.active=!1,this.blocked=!0,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.active=!1}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("column-add",this.reinitializeColumns.bind(this)),this.subscribe("column-delete",this.reinitializeColumns.bind(this)),this.subscribe("table-redraw",this.layout.bind(this)),this.subscribe("layout-refreshing",this.blockLayout.bind(this)),this.subscribe("layout-refreshed",this.unblockLayout.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this))}blockLayout(){this.blocked=!0}unblockLayout(){this.blocked=!1}layoutCell(e){this.layoutElement(e.element,e.column)}reinitializeColumns(){this.reset(),this.table.columnManager.columnsByIndex.forEach((e=>{this.initializeColumn(e)}))}initializeColumn(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}frozenCheck(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}layoutCalcRows(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow),this.table.modExists("groupRows")&&this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()))}layoutGroupCalcs(e){e.forEach((e=>{e.calcs.top&&this.layoutRow(e.calcs.top),e.calcs.bottom&&this.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&this.layoutGroupCalcs(e.groupList)}))}layoutColumnPosition(e){var t=[],i=0,s=0;this.leftColumns.forEach(((s,o)=>{if(s.modules.frozen.marginValue=i,s.modules.frozen.margin=s.modules.frozen.marginValue+"px",s.visible&&(i+=s.getWidth()),o==this.leftColumns.length-1?s.modules.frozen.edge=!0:s.modules.frozen.edge=!1,s.parent.isGroup){var n=this.getColGroupParentElement(s);t.includes(n)||(this.layoutElement(n,s),t.push(n)),s.modules.frozen.edge&&n.classList.add("tabulator-frozen-"+s.modules.frozen.position)}else this.layoutElement(s.getElement(),s);e&&s.cells.forEach((e=>{this.layoutElement(e.getElement(!0),s)}))})),this.rightColumns.forEach(((t,i)=>{t.modules.frozen.marginValue=s,t.modules.frozen.margin=t.modules.frozen.marginValue+"px",t.visible&&(s+=t.getWidth()),i==this.rightColumns.length-1?t.modules.frozen.edge=!0:t.modules.frozen.edge=!1,t.parent.isGroup?this.layoutElement(this.getColGroupParentElement(t),t):this.layoutElement(t.getElement(),t),e&&t.cells.forEach((e=>{this.layoutElement(e.getElement(!0),t)}))}))}getColGroupParentElement(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}layout(){this.active&&!this.blocked&&(this.layoutColumnPosition(),this.reinitializeRows(),this.layoutCalcRows())}reinitializeRows(){var e=this.table.rowManager.getVisibleRows(!0);this.table.rowManager.getRows().filter((t=>!e.includes(t))).forEach((e=>{e.deinitialize()})),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)}))}layoutRow(e){"fitDataFill"===this.table.options.layout&&this.rightColumns.length&&(this.table.rowManager.getTableElement().style.minWidth="calc(100% - "+this.rightMargin+")"),this.leftColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)})),this.rightColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)}))}layoutElement(e,t){var i;t.modules.frozen&&e&&(e.style.position="sticky",i=this.table.rtl?"left"===t.modules.frozen.position?"right":"left":t.modules.frozen.position,e.style[i]=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}adjustForScrollbar(e){this.rightColumns.length&&(this.table.columnManager.getContentsElement().style.width="calc(100% - "+e+"px)")}_calcSpace(e,t){var i=0;for(let s=0;s{this.initializeRow(e)}))}initializeRow(e){var t=this.table.options.frozenRows,i=typeof t;"number"===i?e.getPosition()&&e.getPosition()+this.rows.length<=t&&this.freezeRow(e):"function"===i?t.call(this.table,e.getComponent())&&this.freezeRow(e):Array.isArray(t)&&t.includes(e.data[this.options("frozenRowsField")])&&this.freezeRow(e)}isRowFrozen(e){return this.rows.indexOf(e)>-1}isFrozen(){return!!this.rows.length}visibleRows(e,t){return this.rows.forEach((e=>{t.push(e)})),t}getRows(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}freezeRow(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.rows.push(e),this.refreshData(!1,"display"),this.table.rowManager.adjustTableSize(),this.styleRows())}unfreezeRow(e){e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}detachRow(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode&&i.parentNode.removeChild(i),this.rows.splice(t,1)}}styleRows(e){this.rows.forEach(((e,t)=>{this.table.rowManager.styleRow(e,t)}))}}_.moduleName="frozenRows";class B{constructor(e){return this._group=e,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.groupManager.table.componentFunctionBinder.handle("group",e._group,t)}})}getKey(){return this._group.key}getField(){return this._group.field}getElement(){return this._group.element}getRows(){return this._group.getRows(!0)}getSubGroups(){return this._group.getSubGroups(!0)}getParentGroup(){return!!this._group.parent&&this._group.parent.getComponent()}isVisible(){return this._group.visible}show(){this._group.show()}hide(){this._group.hide()}toggle(){this._group.toggleVisibility()}scrollTo(e,t){return this._group.groupManager.table.rowManager.scrollToRow(this._group,e,t)}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class I{constructor(e,t,i,s,o,n,r){this.groupManager=e,this.parent=t,this.key=s,this.level=i,this.field=o,this.hasSubGroups=i{e.modules&&delete e.modules.group}))),this.element=!1,this.arrowElement=!1,this.elementContents=!1}createElements(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)}createValueGroups(){var e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach((t=>{this._createGroup(t,e)}))}addBindings(){this.groupManager.table.options.groupToggleElement&&("arrow"==this.groupManager.table.options.groupToggleElement?this.arrowElement:this.element).addEventListener("click",(e=>{"arrow"===this.groupManager.table.options.groupToggleElement&&(e.stopPropagation(),e.stopImmediatePropagation()),setTimeout((()=>{this.toggleVisibility()}))}))}_createGroup(e,t){var i=t+"_"+e,s=new I(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[i]);this.groups[i]=s,this.groupList.push(s)}_addRowToGroup(e){var t=this.level+1;if(this.hasSubGroups){var i=this.groupManager.groupIDLookups[t].func(e.getData()),s=t+"_"+i;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[s]&&this.groups[s].addRow(e):(this.groups[s]||this._createGroup(i,t),this.groups[s].addRow(e))}}_addRow(e){this.rows.push(e),e.modules.group=this}insertRow(e,t,i){var s=this.conformRowData({});e.updateData(s);var o=this.rows.indexOf(t);o>-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}scrollHeader(e){this.arrowElement&&(this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)})))}getRowIndex(e){}conformRowData(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}removeRow(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.groupManager.blockRedraw||(this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this))):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}getHeadersAndRows(){var e=[];return e.push(this),this._visSet(),this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.visible?this.groupList.length?this.groupList.forEach((function(t){e=e.concat(t.getHeadersAndRows())})):("table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),e=e.concat(this.rows),"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))),e}getData(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((e=>{i.push(e.getData(t||"data"))})),i}getRowCount(){var e=0;return this.groupList.length?this.groupList.forEach((t=>{e+=t.getRowCount()})):e=this.rows.length,e}toggleVisibility(){this.visible?this.hide():this.show()}hide(){this.visible=!1,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination||(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((e=>{e.getHeadersAndRows().forEach((e=>{e.detachElement()}))})):this.rows.forEach((e=>{var t=e.getElement();t.parentNode.removeChild(t)}))),this.groupManager.updateGroupRows(!0),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.generateElement();this.groupList.length?this.groupList.forEach((t=>{t.getHeadersAndRows().forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.updateGroupRows(!0)}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}_visSet(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}getRowGroup(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var s=i.getRowGroup(e);s&&(t=s)})):this.rows.find((function(t){return t===e}))&&(t=this),t}getSubGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getRows(e,t){var i=[];return t&&this.groupList.length?this.groupList.forEach((s=>{i=i.concat(s.getRows(e,t))})):this.rows.forEach((function(t){i.push(e?t.getComponent():t)})),i}generateGroupHeaderContents(){var e=[];for(this.getRows(!1,!0).forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}getPath(e=[]){return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}getElement(){return this.elementContents?this.element:this.generateElement()}generateElement(){this.addBindings=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",((e,t)=>{this.headerGenerator[0]=(i,s,o)=>(void 0===i?"":i)+"("+s+" "+(1===s?e:t.groups.items)+")"})),this.groupIDLookups=[],e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((e=>{e.definition.topCalc&&this.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&this.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(e)||(e=[e]),e.forEach(((e,t)=>{var i,s;i="function"==typeof e?e:(s=this.table.columnManager.getColumnByField(e))?function(e){return s.getFieldValue(e)}:function(t){return t[e]},this.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!this.allowedValues&&this.allowedValues[t]})})),t&&(Array.isArray(t)||(t=[t]),t.forEach((e=>{})),this.startOpen=t),i&&(this.headerGenerator=Array.isArray(i)?i:[i])}else this.groupList=[],this.groups={}}rowSample(e,t){if(this.table.options.groupBy){var i=this.getGroups(!1)[0];t.push(i.getRows(!1)[0])}return t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();if(!this.table.options.groupBy)return t;t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){if(this.table.options.groupBy){this.assignRowToGroup(e);var s=e.modules.group.rows;return s.length>1&&(!t||t&&-1==s.indexOf(t)?i?s[0]!==e&&(t=s[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):s[s.length-1]!==e&&(t=s[s.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}}trackChanges(){this.dispatch("group-changed")}setGroupBy(e){this.table.options.groupBy=e,this.initialized||this.initialize(),this.configureGroupSetup(),!e&&this.table.modExists("columnCalcs")&&!0===this.table.options.columnCalcs&&this.table.modules.columnCalcs.reinitializeCalcs(),this.refreshData(),this.trackChanges()}setGroupValues(e){this.table.options.groupValues=e,this.configureGroupSetup(),this.refreshData(),this.trackChanges()}setGroupStartOpen(e){this.table.options.groupStartOpen=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}setGroupHeader(e){this.table.options.groupHeader=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}userGetGroups(e){return this.getGroups(!0)}userGetGroupedData(){return this.table.options.groupBy?this.getGroupedData():this.getData()}rowGetGroup(e){return!!e.modules.group&&e.modules.group.getComponent()}rowMoving(e,t,i){if(this.table.options.groupBy){!i&&t instanceof I&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof I?t:t.modules.group,o=e instanceof I?e:e.modules.group;s===o?this.table.rowManager.moveRowInArray(s.rows,e,t,i):(o&&o.removeRow(e),s.insertRow(e,t,i))}}rowDeleting(e){this.table.options.groupBy&&e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.table.options.groupBy&&this.updateGroupRows(!0)}cellUpdated(e){this.table.options.groupBy&&this.reassignRowToGroup(e.row)}getRows(e){return this.table.options.groupBy&&this.groupIDLookups.length?(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0)),this.updateGroupRows()):e.slice(0)}getGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getChildGroups(e){var t=[];return e||(e=this),e.groupList.forEach((e=>{e.groupList.length?t=t.concat(this.getChildGroups(e)):t.push(e)})),t}wipe(){this.table.options.groupBy&&(this.groupList.forEach((function(e){e.wipe()})),this.groupList=[],this.groups={})}pullGroupListData(e){var t=[];return e.forEach((e=>{var i={level:0,rowCount:0,headerContent:""},s=[];e.hasSubGroups?(s=this.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=s.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),t.push(i),t=t.concat(s)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,t.push(i),e.getRows().forEach((e=>{t.push(e.getData("data"))})))})),t}getGroupedData(){return this.pullGroupListData(this.groupList)}getRowGroup(e){var t=!1;return this.options("dataTree")&&(e=this.table.modules.dataTree.getTreeParentRoot(e)),this.groupList.forEach((i=>{var s=i.getRowGroup(e);s&&(t=s)})),t}countGroups(){return this.groupList.length}generateGroups(e){var t=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((e=>{this.createGroup(e,0,t)})),e.forEach((e=>{this.assignRowToExistingGroup(e,t)}))):e.forEach((e=>{this.assignRowToGroup(e,t)})),Object.values(t).forEach((e=>{e.wipe(!0)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new I(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=s,this.groupList.push(s)}assignRowToExistingGroup(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}assignRowToGroup(e,t){var i=this.groupIDLookups[0].func(e.getData()),s=!this.groups["0_"+i];return s&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!s}reassignRowToGroup(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),s=this.getExpectedPath(e);i.length==s.length&&i.every(((e,t)=>e===s[t]))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}getExpectedPath(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((e=>{t.push(e.func(i))})),t}updateGroupRows(e){var t=[];return this.blockRedraw||(this.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0)),t}scrollHeaders(e){this.table.options.groupBy&&("virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((t=>{t.scrollHeader(e)})))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}checkBasicModeGroupHeaderWidth(){var e=this.table.rowManager.tableElement,t=!0;this.table.rowManager.getDisplayRows().forEach(((i,s)=>{this.table.rowManager.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}}V.moduleName="groupRows";class N extends s{constructor(e){super(e),this.history=[],this.index=-1,this.registerTableOption("history",!1)}initialize(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}rowMoved(e,t,i){this.action("rowMove",e,{posFrom:e.getPosition(),posTo:t.getPosition(),to:t,after:i})}rowAdded(e,t,i,s){this.action("rowAdd",e,{data:t,pos:i,index:s})}rowDeleted(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup()._getSelf().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}cellUpdated(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}clear(){this.history=[],this.index=-1}action(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}getHistoryUndoSize(){return this.index+1}getHistoryRedoSize(){return this.history.length-(this.index+1)}clearComponentHistory(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}undo(){if(this.index>-1){let e=this.history[this.index];return N.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return N.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof w)i.component===e&&(i.component=t);else if(i.component instanceof m&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}N.moduleName="history",N.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){var t=e.data.posFrom-e.data.posTo>0;this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posFrom),t),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}},N.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue),e.component.cellRendered()},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posTo),e.data.after),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}};class W extends s{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.tableElementCheck()}tableElementCheck(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&(this.table.originalElement.childNodes.length?this.parseTable():console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."))}parseTable(){var e=this.table.originalElement,t=this.table.options,i=e.getElementsByTagName("th"),s=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),s=s?s.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,s):this._generateBlankHeaders(i,s);for(var n=0;n{n[e.toLowerCase()]=e})),s){var a,l=s[r];l&&"object"==typeof l&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==n[a]&&(t[n[a]]=this._attribValue(l.value)))}}_attribValue(e){return"true"===e||"false"!==e&&e}_findCol(e){return this.table.options.columns.find((t=>t.title===e))||!1}_extractHeaders(e,t){for(var i=0;i(console.error("Import Error:",e||"Unable to import data"),Promise.reject(e))))}lookupImporter(e){var t;return e||(e=this.table.options.importFormat),(t="string"==typeof e?G.importers[e]:e)||console.error("Import Error - Importer not found:",e),t}importFromFile(e,t){var i=this.lookupImporter(e);if(i)return this.pickFile(t).then(this.importData.bind(this,i)).then(this.structureData.bind(this)).then(this.setData.bind(this)).catch((e=>(console.error("Import Error:",e||"Unable to import file"),Promise.reject(e))))}pickFile(e){return new Promise(((t,i)=>{var s=document.createElement("input");s.type="file",s.accept=e,s.addEventListener("change",(e=>{var o=s.files[0],n=new FileReader;switch(this.table.options.importReader){case"buffer":n.readAsArrayBuffer(o);break;case"binary":n.readAsBinaryString(o);break;case"url":n.readAsDataURL(o);break;default:n.readAsText(o)}n.onload=e=>{t(n.result)},n.onerror=e=>{console.warn("File Load Error - Unable to read file"),i()}})),s.click()}))}importData(e,t){var i=e.call(this.table,t);return i instanceof Promise?i:i?Promise.resolve(i):Promise.reject()}structureData(e){return Array.isArray(e)&&e.length&&Array.isArray(e[0])?this.table.options.autoColumns?this.structureArrayToObject(e):this.structureArrayToColumns(e):e}structureArrayToObject(e){var t=e.shift();return e.map((e=>{var i={};return t.forEach(((t,s)=>{i[t]=e[s]})),i}))}structureArrayToColumns(e){var t=[],i=this.table.getColumns();return i[0]&&e[0][0]&&i[0].getDefinition().title===e[0][0]&&e.shift(),e.forEach((e=>{var s={};e.forEach(((e,t)=>{var o=i[t];o&&(s[o.getField()]=e)})),t.push(s)})),t}setData(e){return this.table.setData(e)}}G.moduleName="import",G.importers=j;class U extends s{constructor(e){super(e),this.eventMap={rowClick:"row-click",rowDblClick:"row-dblclick",rowContext:"row-contextmenu",rowMouseEnter:"row-mouseenter",rowMouseLeave:"row-mouseleave",rowMouseOver:"row-mouseover",rowMouseOut:"row-mouseout",rowMouseMove:"row-mousemove",rowMouseDown:"row-mousedown",rowMouseUp:"row-mouseup",rowTap:"row",rowDblTap:"row",rowTapHold:"row",cellClick:"cell-click",cellDblClick:"cell-dblclick",cellContext:"cell-contextmenu",cellMouseEnter:"cell-mouseenter",cellMouseLeave:"cell-mouseleave",cellMouseOver:"cell-mouseover",cellMouseOut:"cell-mouseout",cellMouseMove:"cell-mousemove",cellMouseDown:"cell-mousedown",cellMouseUp:"cell-mouseup",cellTap:"cell",cellDblTap:"cell",cellTapHold:"cell",headerClick:"column-click",headerDblClick:"column-dblclick",headerContext:"column-contextmenu",headerMouseEnter:"column-mouseenter",headerMouseLeave:"column-mouseleave",headerMouseOver:"column-mouseover",headerMouseOut:"column-mouseout",headerMouseMove:"column-mousemove",headerMouseDown:"column-mousedown",headerMouseUp:"column-mouseup",headerTap:"column",headerDblTap:"column",headerTapHold:"column",groupClick:"group-click",groupDblClick:"group-dblclick",groupContext:"group-contextmenu",groupMouseEnter:"group-mouseenter",groupMouseLeave:"group-mouseleave",groupMouseOver:"group-mouseover",groupMouseOut:"group-mouseout",groupMouseMove:"group-mousemove",groupMouseDown:"group-mousedown",groupMouseUp:"group-mouseup",groupTap:"group",groupDblTap:"group",groupTapHold:"group"},this.subscribers={},this.touchSubscribers={},this.columnSubscribers={},this.touchWatchers={row:{tap:null,tapDbl:null,tapHold:null},cell:{tap:null,tapDbl:null,tapHold:null},column:{tap:null,tapDbl:null,tapHold:null},group:{tap:null,tapDbl:null,tapHold:null}},this.registerColumnOption("headerClick"),this.registerColumnOption("headerDblClick"),this.registerColumnOption("headerContext"),this.registerColumnOption("headerMouseEnter"),this.registerColumnOption("headerMouseLeave"),this.registerColumnOption("headerMouseOver"),this.registerColumnOption("headerMouseOut"),this.registerColumnOption("headerMouseMove"),this.registerColumnOption("headerMouseDown"),this.registerColumnOption("headerMouseUp"),this.registerColumnOption("headerTap"),this.registerColumnOption("headerDblTap"),this.registerColumnOption("headerTapHold"),this.registerColumnOption("cellClick"),this.registerColumnOption("cellDblClick"),this.registerColumnOption("cellContext"),this.registerColumnOption("cellMouseEnter"),this.registerColumnOption("cellMouseLeave"),this.registerColumnOption("cellMouseOver"),this.registerColumnOption("cellMouseOut"),this.registerColumnOption("cellMouseMove"),this.registerColumnOption("cellMouseDown"),this.registerColumnOption("cellMouseUp"),this.registerColumnOption("cellTap"),this.registerColumnOption("cellDblTap"),this.registerColumnOption("cellTapHold")}initialize(){this.initializeExternalEvents(),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("cell-dblclick",this.cellContentsSelectionFixer.bind(this)),this.subscribe("scroll-horizontal",this.clearTouchWatchers.bind(this)),this.subscribe("scroll-vertical",this.clearTouchWatchers.bind(this))}clearTouchWatchers(){Object.values(this.touchWatchers).forEach((e=>{for(let t in e)e[t]=null}))}cellContentsSelectionFixer(e,t){var i;if(!this.table.modExists("edit")||this.table.modules.edit.currentCell!==t){e.preventDefault();try{document.selection?((i=document.body.createTextRange()).moveToElementText(t.getElement()),i.select()):window.getSelection&&((i=document.createRange()).selectNode(t.getElement()),window.getSelection().removeAllRanges(),window.getSelection().addRange(i))}catch(e){}}}initializeExternalEvents(){for(let e in this.eventMap)this.subscriptionChangeExternal(e,this.subscriptionChanged.bind(this,e))}subscriptionChanged(e,t){t?this.subscribers[e]||(this.eventMap[e].includes("-")?(this.subscribers[e]=this.handle.bind(this,e),this.subscribe(this.eventMap[e],this.subscribers[e])):this.subscribeTouchEvents(e)):this.eventMap[e].includes("-")?!this.subscribers[e]||this.columnSubscribers[e]||this.subscribedExternal(e)||(this.unsubscribe(this.eventMap[e],this.subscribers[e]),delete this.subscribers[e]):this.unsubscribeTouchEvents(e)}subscribeTouchEvents(e){var t=this.eventMap[e];this.touchSubscribers[t+"-touchstart"]||(this.touchSubscribers[t+"-touchstart"]=this.handleTouch.bind(this,t,"start"),this.touchSubscribers[t+"-touchend"]=this.handleTouch.bind(this,t,"end"),this.subscribe(t+"-touchstart",this.touchSubscribers[t+"-touchstart"]),this.subscribe(t+"-touchend",this.touchSubscribers[t+"-touchend"])),this.subscribers[e]=!0}unsubscribeTouchEvents(e){var t=!0,i=this.eventMap[e];if(this.subscribers[e]&&!this.subscribedExternal(e)){delete this.subscribers[e];for(let e in this.eventMap)this.eventMap[e]===i&&this.subscribers[e]&&(t=!1);t&&(this.unsubscribe(i+"-touchstart",this.touchSubscribers[i+"-touchstart"]),this.unsubscribe(i+"-touchend",this.touchSubscribers[i+"-touchend"]),delete this.touchSubscribers[i+"-touchstart"],delete this.touchSubscribers[i+"-touchend"])}}initializeColumn(e){var t=e.definition;for(let i in this.eventMap)t[i]&&(this.subscriptionChanged(i,!0),this.columnSubscribers[i]||(this.columnSubscribers[i]=[]),this.columnSubscribers[i].push(e))}handle(e,t,i){this.dispatchEvent(e,t,i)}handleTouch(e,t,i,s){var o=this.touchWatchers[e];switch("column"===e&&(e="header"),t){case"start":o.tap=!0,clearTimeout(o.tapHold),o.tapHold=setTimeout((()=>{clearTimeout(o.tapHold),o.tapHold=null,o.tap=null,clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"TapHold",i,s)}),1e3);break;case"end":o.tap&&(o.tap=null,this.dispatchEvent(e+"Tap",i,s)),o.tapDbl?(clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"DblTap",i,s)):o.tapDbl=setTimeout((()=>{clearTimeout(o.tapDbl),o.tapDbl=null}),300),clearTimeout(o.tapHold),o.tapHold=null}}dispatchEvent(e,t,i){var s,o=i.getComponent();this.columnSubscribers[e]&&(i instanceof m?s=i.column.definition[e]:i instanceof f&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}U.moduleName="interaction";class X extends s{constructor(e){super(e),this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1,this.registerTableOption("keybindings",{}),this.registerTableOption("tabEndNewRow",!1)}initialize(){var e=this.table.options.keybindings,t={};this.watchKeys={},this.pressedKeys=[],!1!==e&&(Object.assign(t,X.bindings),Object.assign(t,e),this.mapBindings(t),this.bindEvents()),this.subscribe("table-destroy",this.clearBindings.bind(this))}mapBindings(e){for(let t in e)X.actions[t]?e[t]&&("object"!=typeof e[t]&&(e[t]=[e[t]]),e[t].forEach((e=>{(Array.isArray(e)?e:[e]).forEach((e=>{this.mapBinding(t,e)}))}))):console.warn("Key Binding Error - no such action:",t)}mapBinding(e,t){var i={action:X.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach((e=>{switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=isNaN(e)?e.toUpperCase().charCodeAt(0):parseInt(e),i.keys.push(e),this.watchKeys[e]||(this.watchKeys[e]=[]),this.watchKeys[e].push(i)}}))}bindEvents(){var e=this;this.keyupBinding=function(t){var i=t.keyCode,s=e.watchKeys[i];s&&(e.pressedKeys.push(i),s.forEach((function(i){e.checkBinding(t,i)})))},this.keydownBinding=function(t){var i=t.keyCode;if(e.watchKeys[i]){var s=e.pressedKeys.indexOf(i);s>-1&&e.pressedKeys.splice(s,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}clearBindings(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}checkBinding(e,t){var i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((e=>{-1==this.pressedKeys.indexOf(e)&&(i=!1)})),i&&t.action.call(this,e),!0)}}X.moduleName="keybindings",X.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 67"]},X.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,s=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=s?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};class q extends s{constructor(e){super(e),this.menuContainer=null,this.nestedMenuBlock=!1,this.currentComponent=null,this.rootPopup=null,this.columnSubscribers={},this.registerTableOption("menuContainer",void 0),this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("rowDblClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerTableOption("groupDblClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerClickMenu"),this.registerColumnOption("headerDblClickMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("headerMenuIcon"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu"),this.registerColumnOption("dblClickMenu")}initialize(){this.deprecatedOptionsCheck(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("menuContainer","popupContainer")||(this.table.options.popupContainer=this.table.options.menuContainer)}initializeRowWatchers(){this.table.options.rowContextMenu&&(this.subscribe("row-contextmenu",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu)),this.table.on("rowTapHold",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu))),this.table.options.rowClickMenu&&this.subscribe("row-click",this.loadMenuEvent.bind(this,this.table.options.rowClickMenu)),this.table.options.rowDblClickMenu&&this.subscribe("row-dblclick",this.loadMenuEvent.bind(this,this.table.options.rowDblClickMenu))}initializeGroupWatchers(){this.table.options.groupContextMenu&&(this.subscribe("group-contextmenu",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu)),this.table.on("groupTapHold",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu))),this.table.options.groupClickMenu&&this.subscribe("group-click",this.loadMenuEvent.bind(this,this.table.options.groupClickMenu)),this.table.options.groupDblClickMenu&&this.subscribe("group-dblclick",this.loadMenuEvent.bind(this,this.table.options.groupDblClickMenu))}initializeColumn(e){var t=e.definition;t.headerContextMenu&&!this.columnSubscribers.headerContextMenu&&(this.columnSubscribers.headerContextMenu=this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextMenu),this.table.on("headerTapHold",this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"))),t.headerClickMenu&&!this.columnSubscribers.headerClickMenu&&(this.columnSubscribers.headerClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerClickMenu"),this.subscribe("column-click",this.columnSubscribers.headerClickMenu)),t.headerDblClickMenu&&!this.columnSubscribers.headerDblClickMenu&&(this.columnSubscribers.headerDblClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerDblClickMenu"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickMenu)),t.headerMenu&&this.initializeColumnHeaderMenu(e),t.contextMenu&&!this.columnSubscribers.contextMenu&&(this.columnSubscribers.contextMenu=this.loadMenuTableCellEvent.bind(this,"contextMenu"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextMenu),this.table.on("cellTapHold",this.loadMenuTableCellEvent.bind(this,"contextMenu"))),t.clickMenu&&!this.columnSubscribers.clickMenu&&(this.columnSubscribers.clickMenu=this.loadMenuTableCellEvent.bind(this,"clickMenu"),this.subscribe("cell-click",this.columnSubscribers.clickMenu)),t.dblClickMenu&&!this.columnSubscribers.dblClickMenu&&(this.columnSubscribers.dblClickMenu=this.loadMenuTableCellEvent.bind(this,"dblClickMenu"),this.subscribe("cell-dblclick",this.columnSubscribers.dblClickMenu))}initializeColumnHeaderMenu(e){var t,i=e.definition.headerMenuIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadMenuEvent(e.definition.headerMenu,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadMenuTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadMenuEvent(i.column.definition[e],t,i)}loadMenuTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadMenuEvent(i.definition[e],t,i)}loadMenuEvent(e,t,i){i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent()):e,this.loadMenu(t,i,e)}loadMenu(e,t,i,s,o){var n,r=!(e instanceof MouseEvent),a=document.createElement("div");if(a.classList.add("tabulator-menu"),r||e.preventDefault(),i&&i.length){if(s)n=o.child(a);else{if(this.nestedMenuBlock){if(this.rootPopup)return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.rootPopup&&this.rootPopup.hide(),this.rootPopup=n=this.popup(a)}i.forEach((e=>{var i=document.createElement("div"),s=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof s&&(s=s.call(this.table,t.getComponent())),s instanceof Node?i.appendChild(s):i.innerHTML=s,"function"==typeof o&&(o=o.call(this.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(e=>{e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(s=>{s.stopPropagation(),this.loadMenu(s,t,e.menu,i,n)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),a.appendChild(i)})),a.addEventListener("click",(e=>{this.rootPopup&&this.rootPopup.hide()})),n.show(s||e),n===this.rootPopup&&(this.rootPopup.hideOnBlur((()=>{this.rootPopup=null,this.currentComponent&&(this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)})),this.currentComponent=t,this.dispatchExternal("menuOpened",t.getComponent()))}}}q.moduleName="menu";class K extends s{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.registerTableOption("movableColumns",!1)}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}initialize(){this.table.options.movableColumns&&this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){var i,s=this,o={};e.modules.frozen||e.isGroup||(i=e.getElement(),o.mousemove=function(o){e.parent===s.moving.parent&&((s.touchMove?o.touches[0].pageX:o.pageX)-t.elOffset(i).left+s.table.columnManager.contentsElement.scrollLeft>e.getWidth()/2?s.toCol===e&&s.toColAfter||(i.parentNode.insertBefore(s.placeholderElement,i.nextSibling),s.moveColumn(e,!0)):(s.toCol!==e||s.toColAfter)&&(i.parentNode.insertBefore(s.placeholderElement,i),s.moveColumn(e,!1)))}.bind(s),i.addEventListener("mousedown",(function(t){s.touchMove=!1,1===t.which&&(s.checkTimeout=setTimeout((function(){s.startMove(t,e)}),s.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&s.checkTimeout&&clearTimeout(s.checkTimeout)})),s.bindTouchEvents(e)),e.modules.moveColumn=o}bindTouchEvents(e){var t,i,s,o,n,r,a=e.getElement(),l=!1;a.addEventListener("touchstart",(a=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,t=e.nextColumn(),s=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,n=0,r=0,l=!1,this.startMove(a,e)}),this.checkPeriod)}),{passive:!0}),a.addEventListener("touchmove",(a=>{var h,d;this.moving&&(this.moveHover(a),l||(l=a.touches[0].pageX),(h=a.touches[0].pageX-l)>0?t&&h-n>s&&(d=t)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveColumn(d,!0)):i&&-h-r>o&&(d=i)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveColumn(d,!1)),d&&(t=d.nextColumn(),n=s,s=t?t.getWidth()/2:0,i=d.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),a.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&this.endMove(e)}))}startMove(e,i){var s=i.getElement(),o=this.table.columnManager.getContentsElement(),n=this.table.columnManager.getHeadersElement();this.moving=i,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-t.elOffset(s).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=i.getWidth()+"px",this.placeholderElement.style.height=i.getHeight()+"px",s.parentNode.insertBefore(this.placeholderElement,s),s.parentNode.removeChild(s),this.hoverElement=s.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),o.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom=o.clientHeight-n.offsetHeight+"px",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}_bindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}_unbindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}moveColumn(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s.nextSibling)})):e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s)}))}endMove(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}moveHover(e){var i,s=this.table.columnManager.getContentsElement(),o=s.scrollLeft,n=(this.touchMove?e.touches[0].pageX:e.pageX)-t.elOffset(s).left+o;this.hoverElement.style.left=n-this.startX+"px",n-o{i=Math.max(0,o-5),this.table.rowManager.getElement().scrollLeft=i,this.autoScrollTimeout=!1}),1))),o+s.clientWidth-n{i=Math.min(s.clientWidth,o+5),this.table.rowManager.getElement().scrollLeft=i,this.autoScrollTimeout=!1}),1)))}}K.moduleName="moveColumn";class J extends s{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1,this.registerTableOption("movableRows",!1),this.registerTableOption("movableRowsConnectedTables",!1),this.registerTableOption("movableRowsConnectedElements",!1),this.registerTableOption("movableRowsSender",!1),this.registerTableOption("movableRowsReceiver","insert"),this.registerColumnOption("rowHandle")}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e}initialize(){this.table.options.movableRows&&(this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements,this.subscribe("cell-init",this.initializeCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)))}initializeGroupHeader(e){var i=this,s={};s.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),s.mousemove=function(s){var o;s.pageY-t.elOffset(e.element).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||((o=e.getElement()).parentNode.insertBefore(i.placeholderElement,o.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(i.placeholderElement,o),i.moveRow(e,!1))}.bind(i),e.modules.moveRow=s}initializeRow(e){var i,s=this,o={};o.mouseup=function(t){s.tableRowDrop(t,e)}.bind(s),o.mousemove=function(i){var o=e.getElement();i.pageY-t.elOffset(o).top+s.table.rowManager.element.scrollTop>e.getHeight()/2?s.toRow===e&&s.toRowAfter||(o.parentNode.insertBefore(s.placeholderElement,o.nextSibling),s.moveRow(e,!0)):(s.toRow!==e||s.toRowAfter)&&(o.parentNode.insertBefore(s.placeholderElement,o),s.moveRow(e,!1))}.bind(s),this.hasHandle||((i=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(s.checkTimeout=setTimeout((function(){s.startMove(t,e)}),s.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&s.checkTimeout&&clearTimeout(s.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o}initializeColumn(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}initializeCell(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}bindTouchEvents(e,t){var i,s,o,n,r,a,l=!1;t.addEventListener("touchstart",(t=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,s=e.prevRow(),n=s?s.getHeight()/2:0,r=0,a=0,l=!1,this.startMove(t,e)}),this.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(t=>{var h,d;this.moving&&(t.preventDefault(),this.moveHover(t),l||(l=t.touches[0].pageY),(h=t.touches[0].pageY-l)>0?i&&h-r>o&&(d=i)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveRow(d,!0)):s&&-h-a>n&&(d=s)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveRow(d,!1)),d&&(i=d.nextRow(),r=o,o=i?i.getHeight()/2:0,s=d.prevRow(),a=n,n=s?s.getHeight()/2:0))})),t.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&(this.endMove(e),this.touchMove=!1)}))}_bindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}_unbindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}startMove(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.dispatchExternal("rowMoving",t.getComponent()),this.moveHover(e)}setStartPosition(e,t){var i,s,o=this.touchMove?e.touches[0].pageX:e.pageX,n=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(s=i.getBoundingClientRect(),this.startX=s.left-o+window.pageXOffset,this.startY=s.top-n+window.pageYOffset):this.startY=n-i.getBoundingClientRect().top}endMove(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow?this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter):this.dispatchExternal("rowMoveCancelled",this.moving.getComponent()),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}moveRow(e,t){this.toRow=e,this.toRowAfter=t}moveHover(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}moveHoverTable(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,s=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=Math.min(s-this.startY,this.table.rowManager.element.scrollHeight-this.hoverElement.offsetHeight)+"px"}moveHoverConnections(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}elementRowDrop(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}connectToTables(e){var t;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((e=>{"string"==typeof e?this.connectionElements=this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):this.connectionElements.push(e)})),this.connectionElements.forEach((e=>{var t=t=>{this.elementRowDrop(t,e,this.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}disconnectFromTables(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((e=>{e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}connect(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}disconnect(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}dropComplete(e,t,i){var s=!1;if(i){switch(typeof this.table.options.movableRowsSender){case"string":s=this.senders[this.table.options.movableRowsSender];break;case"function":s=this.table.options.movableRowsSender}s?s.call(this,this.moving?this.moving.getComponent():void 0,t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()}tableRowDrop(e,t){var i=!1,s=!1;switch(e.stopImmediatePropagation(),typeof this.table.options.movableRowsReceiver){case"string":i=this.receivers[this.table.options.movableRowsReceiver];break;case"function":i=this.table.options.movableRowsReceiver}i?s=i.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),s?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:t,success:s})}commsReceived(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}J.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},J.prototype.senders={delete:function(e,t,i){e.delete()}},J.moduleName="moveRow";class Y extends s{constructor(e){super(e),this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0,this.registerColumnOption("mutator"),this.registerColumnOption("mutatorParams"),this.registerColumnOption("mutatorData"),this.registerColumnOption("mutatorDataParams"),this.registerColumnOption("mutatorEdit"),this.registerColumnOption("mutatorEditParams"),this.registerColumnOption("mutatorClipboard"),this.registerColumnOption("mutatorClipboardParams"),this.registerColumnOption("mutateLink")}initialize(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("cell-value-changed",this.mutateLink.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}rowDataChanged(e,t,i){return this.transformRow(t,"data",i)}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="mutator"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupMutator(e.definition[n]))&&(t=!0,i[n]={mutator:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.mutate=i)}lookupMutator(e){var t=!1;switch(typeof e){case"string":Y.mutators[e]?t=Y.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t,i){var s,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((n=>{var r,a,l;n.modules.mutate&&(r=n.modules.mutate[o]||n.modules.mutate.mutator||!1)&&(s=n.getFieldValue(void 0!==i?i:e),("data"==t&&!i||void 0!==s)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(s,e,t,l):r.params,n.setFieldValue(e,r.mutator(s,e,t,a,l))))})),e}transformCell(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,s={};if(i)return s=Object.assign(s,e.row.getData()),e.column.setFieldValue(s,t),i.mutator(t,s,"edit",i.params,e.getComponent())}return t}mutateLink(e){var t=e.column.definition.mutateLink;t&&(Array.isArray(t)||(t=[t]),t.forEach((t=>{var i=e.row.getCell(t);i&&i.setValue(i.getValue(),!0,!0)})))}enable(){this.enabled=!0}disable(){this.enabled=!1}}Y.moduleName="mutator",Y.mutators={};var $={rows:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|rows",(e=>{d.innerHTML=e})),s?(a.innerHTML=" "+t+"-"+Math.min(t+e-1,s)+" ",h.innerHTML=" "+s+" ",n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d)):(a.innerHTML=" 0 ",n.appendChild(r),n.appendChild(a),n.appendChild(d)),n},pages:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),a.innerHTML=" "+i+" ",this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),h.innerHTML=" "+o+" ",this.table.modules.localize.langBind("pagination|counter|pages",(e=>{d.innerHTML=e})),n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d),n}};class Z extends s{constructor(e){super(e),this.mode="local",this.progressiveLoad=!1,this.element=null,this.pageCounterElement=null,this.pageCounter=null,this.size=0,this.page=1,this.count=5,this.max=1,this.remoteRowCountEstimate=null,this.initialLoad=!0,this.dataChanging=!1,this.pageSizes=[],this.registerTableOption("pagination",!1),this.registerTableOption("paginationMode","local"),this.registerTableOption("paginationSize",!1),this.registerTableOption("paginationInitialPage",1),this.registerTableOption("paginationCounter",!1),this.registerTableOption("paginationCounterElement",!1),this.registerTableOption("paginationButtonCount",5),this.registerTableOption("paginationSizeSelector",!1),this.registerTableOption("paginationElement",!1),this.registerTableOption("paginationAddRow","page"),this.registerTableOption("progressiveLoad",!1),this.registerTableOption("progressiveLoadDelay",0),this.registerTableOption("progressiveLoadScrollMargin",0),this.registerTableFunction("setMaxPage",this.setMaxPage.bind(this)),this.registerTableFunction("setPage",this.setPage.bind(this)),this.registerTableFunction("setPageToRow",this.userSetPageToRow.bind(this)),this.registerTableFunction("setPageSize",this.userSetPageSize.bind(this)),this.registerTableFunction("getPageSize",this.getPageSize.bind(this)),this.registerTableFunction("previousPage",this.previousPage.bind(this)),this.registerTableFunction("nextPage",this.nextPage.bind(this)),this.registerTableFunction("getPage",this.getPage.bind(this)),this.registerTableFunction("getPageMax",this.getPageMax.bind(this)),this.registerComponentFunction("row","pageTo",this.setPageToRow.bind(this))}initialize(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("footer-redraw",this.footerRedraw.bind(this)),"page"==this.table.options.paginationAddRow&&this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePageCounter(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}rowAddingPosition(e,t){var i,s=this.table.rowManager,o=s.getDisplayRows();return t?o.length?i=o[0]:s.activeRows.length&&(i=s.activeRows[s.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.length{}))}restOnRenderBefore(e,t){return t||"local"===this.mode&&this.reset(),e}rowsUpdated(){this.refreshData(!0,"all")}createElements(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))}generatePageSizeSelectList(){var e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(let t=1;t<5;t++)e.push(this.size*t);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach((e=>{var t=document.createElement("option");t.value=e,!0===e?this.langBind("pagination|all",(function(e){t.innerHTML=e})):t.innerHTML=e,this.pageSizeSelect.appendChild(t)})),this.pageSizeSelect.value=this.size}}initializePageCounter(){var e=this.table.options.paginationCounter,t=null;e&&((t="function"==typeof e?e:Z.pageCounters[e])?(this.pageCounter=t,this.pageCounterElement=document.createElement("span"),this.pageCounterElement.classList.add("tabulator-page-counter")):console.warn("Pagination Error - No such page counter found: ",e))}initializePaginator(e){var t,i;e||(this.langBind("pagination|first",(e=>{this.firstBut.innerHTML=e})),this.langBind("pagination|first_title",(e=>{this.firstBut.setAttribute("aria-label",e),this.firstBut.setAttribute("title",e)})),this.langBind("pagination|prev",(e=>{this.prevBut.innerHTML=e})),this.langBind("pagination|prev_title",(e=>{this.prevBut.setAttribute("aria-label",e),this.prevBut.setAttribute("title",e)})),this.langBind("pagination|next",(e=>{this.nextBut.innerHTML=e})),this.langBind("pagination|next_title",(e=>{this.nextBut.setAttribute("aria-label",e),this.nextBut.setAttribute("title",e)})),this.langBind("pagination|last",(e=>{this.lastBut.innerHTML=e})),this.langBind("pagination|last_title",(e=>{this.lastBut.setAttribute("aria-label",e),this.lastBut.setAttribute("title",e)})),this.firstBut.addEventListener("click",(()=>{this.setPage(1)})),this.prevBut.addEventListener("click",(()=>{this.previousPage()})),this.nextBut.addEventListener("click",(()=>{this.nextPage()})),this.lastBut.addEventListener("click",(()=>{this.setPage(this.max)})),this.table.options.paginationElement&&(this.element=this.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),this.langBind("pagination|page_size",(e=>{this.pageSizeSelect.setAttribute("aria-label",e),this.pageSizeSelect.setAttribute("title",e),t.innerHTML=e})),this.element.appendChild(t),this.element.appendChild(this.pageSizeSelect),this.pageSizeSelect.addEventListener("change",(e=>{this.setPageSize("true"==this.pageSizeSelect.value||this.pageSizeSelect.value),this.setPage(1)}))),this.element.appendChild(this.firstBut),this.element.appendChild(this.prevBut),this.element.appendChild(this.pagesElement),this.element.appendChild(this.nextBut),this.element.appendChild(this.lastBut),this.table.options.paginationElement||(this.table.options.paginationCounter&&(this.table.options.paginationCounterElement?this.table.options.paginationCounterElement instanceof HTMLElement?this.table.options.paginationCounterElement.appendChild(this.pageCounterElement):"string"==typeof this.table.options.paginationCounterElement&&((i=document.querySelector(this.table.options.paginationCounterElement))?i.appendChild(this.pageCounterElement):console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:",this.table.options.paginationCounterElement)):this.footerAppend(this.pageCounterElement)),this.footerAppend(this.element)),this.page=this.table.options.paginationInitialPage,this.count=this.table.options.paginationButtonCount),this.mode=this.table.options.paginationMode}initializeProgressive(e){this.initializePaginator(!0),this.mode="progressive_"+e,this.progressiveLoad=!0}trackChanges(){this.dispatch("page-changed")}setMaxRows(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)}reset(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1,this.trackChanges())}setMaxPage(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}setPage(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}setPageToRow(e){var t=this.displayRows(-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}setPageSize(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e,this.dispatchExternal("pageSizeChanged",e)),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}_setPageCounter(e,t,i){var s;if(this.pageCounter)switch("remote"===this.mode&&(t=this.size,i=(this.page-1)*this.size+1,e=this.remoteRowCountEstimate),typeof(s=this.pageCounter.call(this,t,i,this.page,e,this.max))){case"object":if(s instanceof Node){for(;this.pageCounterElement.firstChild;)this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);this.pageCounterElement.appendChild(s)}else this.pageCounterElement.innerHTML="",null!=s&&console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:",s);break;case"undefined":this.pageCounterElement.innerHTML="";break;default:this.pageCounterElement.innerHTML=s}}_setPageButtons(){let e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&e<=this.max&&this.pagesElement.appendChild(this._generatePageButton(e));this.footerRedraw()}_generatePageButton(e){var t=document.createElement("button");return t.classList.add("tabulator-page"),e==this.page&&t.classList.add("active"),t.setAttribute("type","button"),t.setAttribute("role","button"),this.langBind("pagination|page_title",(i=>{t.setAttribute("aria-label",i+" "+e),t.setAttribute("title",i+" "+e)})),t.setAttribute("data-page",e),t.textContent=e,t.addEventListener("click",(t=>{this.setPage(e)})),t}previousPage(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}nextPage(){return this.page"row"===e.type));if("local"==this.mode){t=[],this.setMaxRows(e.length),!0===this.size?(i=0,s=e.length):s=(i=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(let r=i;r{this.dataChanging=!1}));case"progressive_load":case"progressive_scroll":return this.reloadData(null,!0);default:return console.warn("Pagination Error - no such pagination mode:",this.mode),Promise.reject()}}_parseRemoteData(e){var t;if(void 0===e.last_page&&console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").last_page||"last_page")+"' property"),e.data){if(this.max=parseInt(e.last_page)||1,this.remoteRowCountEstimate=void 0!==e.last_row?e.last_row:e.last_page*this.size-(this.page==e.last_page?this.size-e.data.length:0),this.progressiveLoad){switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e.data,!1,1==this.page):this.table.rowManager.addRows(e.data),this.page{this.nextPage()}),this.table.options.progressiveLoadDelay);break;case"progressive_scroll":e=1===this.page?e.data:this.table.rowManager.getData().concat(e.data),this.table.rowManager.setData(e,1!==this.page,1==this.page),t=this.table.options.progressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,this.table.rowManager.element.scrollHeight<=this.table.rowManager.element.clientHeight+t&&this.page{this.nextPage()}))}return!1}this.dispatchExternal("pageLoaded",this.getPage())}else console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").data||"data")+"' property");return e.data}footerRedraw(){var e=this.table.footerManager.containerElement;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))}}Z.moduleName="page",Z.pageCounters=$;var Q={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&((i=(o=o.slice(r)).indexOf(";"))>-1&&(o=o.slice(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},ee={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}};class te extends s{constructor(e){super(e),this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1,this.registerTableOption("persistence",!1),this.registerTableOption("persistenceID",""),this.registerTableOption("persistenceMode",!0),this.registerTableOption("persistenceReaderFunc",!1),this.registerTableOption("persistenceWriterFunc",!1)}localStorageTest(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}initialize(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:te.readers[this.table.options.persistenceReaderFunc]?this.readFunc=te.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):te.readers[this.mode]?this.readFunc=te.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:te.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=te.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):te.writers[this.mode]?this.writeFunc=te.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,headerFilter:!0===this.table.options.persistence||this.table.options.persistence.headerFilter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retrieveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retrieveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns"))),this.subscribe("table-built",this.tableBuilt.bind(this),0),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("filter-changed",this.eventSave.bind(this,"headerFilter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("column-width",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}eventSave(e){this.config[e]&&this.save(e)}tableBuilt(){var e,t,i;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.options.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.options.initialFilter=t),this.config.headerFilter&&!1==!(i=this.load("headerFilter"))&&(this.table.options.initialHeaderFilter=i)}tableRedraw(e){e&&this.config.columns&&this.save("columns")}getColumnLayout(){return this.parseColumns(this.table.columnManager.getColumns())}setColumnLayout(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}initializeColumn(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((e=>{var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:e=>{s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:()=>(i.get&&i.get(),s)})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retrieveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retrieveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t){var i=[];return(t=t||[]).forEach(((t,s)=>{var o,n=this._findColumn(e,t);n&&(!0===this.config.columns||null==this.config.columns?(o=Object.keys(n)).push("width"):o=this.config.columns,o.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(n[e]=t[e])})),n.columns&&(n.columns=this.mergeDefinition(n.columns,t.columns)),i.push(n))})),e.forEach(((e,s)=>{this._findColumn(t,e)||(i.length>s?i.splice(s,0,e):i.push(e))})),i}_findColumn(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}save(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"headerFilter":t=this.table.modules.filter.getHeaderFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}validateSorters(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}getGroupConfig(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}getPageConfig(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}parseColumns(e){var t=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((e=>{var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=this.parseColumns(e.getColumns())):(o.field=e.getField(),!0===this.config.columns||null==this.config.columns?((s=Object.keys(n)).push("width"),s.push("visible")):s=this.config.columns,s.forEach((t=>{switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:"function"!=typeof n[t]&&-1===i.indexOf(t)&&(o[t]=n[t])}}))),t.push(o)})),t}}te.moduleName="persistence",te.moduleInitOrder=-10,te.readers=Q,te.writers=ee;class ie extends s{constructor(e){super(e),this.columnSubscribers={},this.registerTableOption("rowContextPopup",!1),this.registerTableOption("rowClickPopup",!1),this.registerTableOption("rowDblClickPopup",!1),this.registerTableOption("groupContextPopup",!1),this.registerTableOption("groupClickPopup",!1),this.registerTableOption("groupDblClickPopup",!1),this.registerColumnOption("headerContextPopup"),this.registerColumnOption("headerClickPopup"),this.registerColumnOption("headerDblClickPopup"),this.registerColumnOption("headerPopup"),this.registerColumnOption("headerPopupIcon"),this.registerColumnOption("contextPopup"),this.registerColumnOption("clickPopup"),this.registerColumnOption("dblClickPopup"),this.registerComponentFunction("cell","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("column","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("row","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("group","popup",this._componentPopupCall.bind(this))}initialize(){this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}_componentPopupCall(e,t,i){this.loadPopupEvent(t,null,e,i)}initializeRowWatchers(){this.table.options.rowContextPopup&&(this.subscribe("row-contextmenu",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup)),this.table.on("rowTapHold",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup))),this.table.options.rowClickPopup&&this.subscribe("row-click",this.loadPopupEvent.bind(this,this.table.options.rowClickPopup)),this.table.options.rowDblClickPopup&&this.subscribe("row-dblclick",this.loadPopupEvent.bind(this,this.table.options.rowDblClickPopup))}initializeGroupWatchers(){this.table.options.groupContextPopup&&(this.subscribe("group-contextmenu",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup)),this.table.on("groupTapHold",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup))),this.table.options.groupClickPopup&&this.subscribe("group-click",this.loadPopupEvent.bind(this,this.table.options.groupClickPopup)),this.table.options.groupDblClickPopup&&this.subscribe("group-dblclick",this.loadPopupEvent.bind(this,this.table.options.groupDblClickPopup))}initializeColumn(e){var t=e.definition;t.headerContextPopup&&!this.columnSubscribers.headerContextPopup&&(this.columnSubscribers.headerContextPopup=this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextPopup),this.table.on("headerTapHold",this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"))),t.headerClickPopup&&!this.columnSubscribers.headerClickPopup&&(this.columnSubscribers.headerClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerClickPopup"),this.subscribe("column-click",this.columnSubscribers.headerClickPopup)),t.headerDblClickPopup&&!this.columnSubscribers.headerDblClickPopup&&(this.columnSubscribers.headerDblClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerDblClickPopup"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickPopup)),t.headerPopup&&this.initializeColumnHeaderPopup(e),t.contextPopup&&!this.columnSubscribers.contextPopup&&(this.columnSubscribers.contextPopup=this.loadPopupTableCellEvent.bind(this,"contextPopup"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextPopup),this.table.on("cellTapHold",this.loadPopupTableCellEvent.bind(this,"contextPopup"))),t.clickPopup&&!this.columnSubscribers.clickPopup&&(this.columnSubscribers.clickPopup=this.loadPopupTableCellEvent.bind(this,"clickPopup"),this.subscribe("cell-click",this.columnSubscribers.clickPopup)),t.dblClickPopup&&!this.columnSubscribers.dblClickPopup&&(this.columnSubscribers.dblClickPopup=this.loadPopupTableCellEvent.bind(this,"dblClickPopup"),this.subscribe("cell-click",this.columnSubscribers.dblClickPopup))}initializeColumnHeaderPopup(e){var t,i=e.definition.headerPopupIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadPopupEvent(e.definition.headerPopup,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadPopupTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadPopupEvent(i.column.definition[e],t,i)}loadPopupTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadPopupEvent(i.definition[e],t,i)}loadPopupEvent(e,t,i,s){var o;i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent(),(function(e){o=e})):e,this.loadPopup(t,i,e,o,s)}loadPopup(e,t,i,s,o){var n,r,a=!(e instanceof MouseEvent);i instanceof HTMLElement?n=i:(n=document.createElement("div")).innerHTML=i,n.classList.add("tabulator-popup"),n.addEventListener("click",(e=>{e.stopPropagation()})),a||e.preventDefault(),r=this.popup(n),"function"==typeof s&&r.renderCallback(s),e?r.show(e):r.show(t.getElement(),o||"center"),r.hideOnBlur((()=>{this.dispatchExternal("popupClosed",t.getComponent())})),this.dispatchExternal("popupOpened",t.getComponent())}}ie.moduleName="popup";class se extends s{constructor(e){super(e),this.element=!1,this.manualBlock=!1,this.beforeprintEventHandler=null,this.afterprintEventHandler=null,this.registerTableOption("printAsHtml",!1),this.registerTableOption("printFormatter",!1),this.registerTableOption("printHeader",!1),this.registerTableOption("printFooter",!1),this.registerTableOption("printStyled",!0),this.registerTableOption("printRowRange","visible"),this.registerTableOption("printConfig",{}),this.registerColumnOption("print"),this.registerColumnOption("titlePrint")}initialize(){this.table.options.printAsHtml&&(this.beforeprintEventHandler=this.replaceTable.bind(this),this.afterprintEventHandler=this.cleanup.bind(this),window.addEventListener("beforeprint",this.beforeprintEventHandler),window.addEventListener("afterprint",this.afterprintEventHandler),this.subscribe("table-destroy",this.destroy.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}destroy(){this.table.options.printAsHtml&&(window.removeEventListener("beforeprint",this.beforeprintEventHandler),window.removeEventListener("afterprint",this.afterprintEventHandler))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}cleanup(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}printFullscreen(e,t,i){var s,o,n=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),h=this.table.modules.export.generateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),"string"==typeof(s="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?a.innerHTML=s:a.appendChild(s),this.element.appendChild(a)),this.element.appendChild(h),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,h),window.print(),this.cleanup(),window.scrollTo(n,r),this.manualBlock=!1}}se.moduleName="print";class oe extends s{constructor(e){super(e),this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0,this.registerTableOption("reactiveData",!1)}initialize(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this,"cellsave")),this.subscribe("cell-value-save-after",this.unblock.bind(this,"cellsave")),this.subscribe("row-data-save-before",this.block.bind(this,"rowsave")),this.subscribe("row-data-save-after",this.unblock.bind(this,"rowsave")),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}watchData(e){var t,i=this;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-push"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),s=i.origFuncs.push.apply(e,arguments),i.unblock("data-push")),s}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-unshift"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),s=i.origFuncs.unshift.apply(e,arguments),i.unblock("data-unshift")),s}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-shift"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),o=i.origFuncs.shift.call(e),i.unblock("data-shift")),o}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-pop"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),o=i.origFuncs.pop.call(e),i.unblock("data-pop")),o}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o,n=Array.from(arguments),r=n[0]<0?e.length+n[0]:n[0],a=n[1],l=!!n[2]&&n.slice(2);if(!i.blocked&&t===i.currentVersion){if(i.block("data-splice"),l&&((s=!!e[r]&&i.table.rowManager.getRowFromDataObject(e[r]))?l.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(l=l.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==a){var h=e.slice(r,void 0===n[1]?n[1]:r+a);h.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==h.length-1)}))}(l||0!==a)&&i.table.rowManager.reRenderInPosition(),o=i.origFuncs.splice.apply(e,arguments),i.unblock("data-splice")}return o}})}unwatchData(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}watchRow(e){var t=e.getData();for(var i in t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e)}watchTreeChildren(e){var t=this,i=e.getData()[this.table.options.dataTreeChildField],s={};i&&(s.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-push");var o=s.push.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-push")}return o}}),s.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-unshift");var o=s.unshift.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-unshift")}return o}}),s.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-shift");var o=s.shift.call(i);this.rebuildTree(e),t.unblock("tree-shift")}return o}}),s.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-pop");var o=s.pop.call(i);this.rebuildTree(e),t.unblock("tree-pop")}return o}}),s.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-splice");var o=s.splice.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-splice")}return o}}))}rebuildTree(e){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}watchKey(e,t,i){var s=this,o=Object.getOwnPropertyDescriptor(t,i),n=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(n=t,!s.blocked&&r===s.currentVersion){s.block("key");var a={};a[i]=t,e.updateData(a),s.unblock("key")}o.set&&o.set(t)},get:()=>(o.get&&o.get(),n)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(e){this.blocked||(this.blocked=e)}unblock(e){this.blocked===e&&(this.blocked=!1)}}oe.moduleName="reactiveData";class ne extends s{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.latestX=!1,this.handle=null,this.initialNextColumn=null,this.nextColumn=null,this.initialized=!1,this.registerColumnOption("resizable",!0),this.registerTableOption("resizableColumnFit",!1)}initialize(){this.subscribe("column-rendered",this.layoutColumnHeader.bind(this))}initializeEventWatchers(){this.initialized||(this.subscribe("cell-rendered",this.layoutCellHandles.bind(this)),this.subscribe("cell-delete",this.deInitializeComponent.bind(this)),this.subscribe("cell-height",this.resizeHandle.bind(this)),this.subscribe("column-moved",this.columnLayoutUpdated.bind(this)),this.subscribe("column-hide",this.deInitializeColumn.bind(this)),this.subscribe("column-show",this.columnLayoutUpdated.bind(this)),this.subscribe("column-width",this.columnWidthUpdated.bind(this)),this.subscribe("column-delete",this.deInitializeComponent.bind(this)),this.subscribe("column-height",this.resizeHandle.bind(this)),this.initialized=!0)}layoutCellHandles(e){"row"===e.row.type&&(this.deInitializeComponent(e),this.initializeColumn("cell",e,e.column,e.element))}layoutColumnHeader(e){e.definition.resizable&&(this.initializeEventWatchers(),this.deInitializeComponent(e),this.initializeColumn("header",e,e,e.element))}columnLayoutUpdated(e){var t=e.prevColumn();this.reinitializeColumn(e),t&&this.reinitializeColumn(t)}columnWidthUpdated(e){e.modules.frozen&&(this.table.modules.frozenColumns.leftColumns.includes(e)?this.table.modules.frozenColumns.leftColumns.forEach((e=>{this.reinitializeColumn(e)})):this.table.modules.frozenColumns.rightColumns.includes(e)&&this.table.modules.frozenColumns.rightColumns.forEach((e=>{this.reinitializeColumn(e)})))}frozenColumnOffset(e){var t=!1;return e.modules.frozen&&(t=e.modules.frozen.marginValue,"left"===e.modules.frozen.position?t+=e.getWidth()-3:t&&(t-=3)),!1!==t&&t+"px"}reinitializeColumn(e){var t=this.frozenColumnOffset(e);e.cells.forEach((i=>{i.modules.resize&&i.modules.resize.handleEl&&(t&&(i.modules.resize.handleEl.style[e.modules.frozen.position]=t,i.modules.resize.handleEl.style["z-index"]=11),i.element.after(i.modules.resize.handleEl))})),e.modules.resize&&e.modules.resize.handleEl&&(t&&(e.modules.resize.handleEl.style[e.modules.frozen.position]=t),e.element.after(e.modules.resize.handleEl))}initializeColumn(e,t,i,s){var o=this,n=i.definition.resizable,r={},a=i.getLastColumn();if("header"===e&&(r={variableHeight:"textarea"==i.definition.formatter||i.definition.variableHeight}),(!0===n||n==e)&&this._checkResizability(a)){var l=document.createElement("span");l.className="tabulator-col-resize-handle",l.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){o.startColumn=i,o.initialNextColumn=o.nextColumn=a.nextColumn(),o._mouseDown(e,a,l)};l.addEventListener("mousedown",h),l.addEventListener("touchstart",h,{passive:!0}),l.addEventListener("dblclick",(e=>{var t=a.getWidth();e.stopPropagation(),a.reinitializeWidth(!0),t!==a.getWidth()&&(o.dispatch("column-resized",a),o.table.externalEvents.dispatch("columnResized",a.getComponent()))})),i.modules.frozen&&(l.style.position="sticky",l.style[i.modules.frozen.position]=this.frozenColumnOffset(i)),r.handleEl=l,s.parentNode&&i.visible&&s.after(l)}t.modules.resize=r}deInitializeColumn(e){this.deInitializeComponent(e),e.cells.forEach((e=>{this.deInitializeComponent(e)}))}deInitializeComponent(e){var t;e.modules.resize&&(t=e.modules.resize.handleEl)&&t.parentElement&&t.parentElement.removeChild(t)}resizeHandle(e,t){e.modules.resize&&e.modules.resize.handleEl&&(e.modules.resize.handleEl.style.height=t)}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){var i,o,n=void 0===e.screenX?e.touches[0].screenX:e.screenX,r=n-s.startX,a=n-s.latestX;if(s.latestX=n,s.table.rtl&&(r=-r,a=-a),i=t.width==t.minWidth||t.width==t.maxWidth,t.setWidth(s.startWidth+r),o=t.width==t.minWidth||t.width==t.maxWidth,a<0&&(s.nextColumn=s.initialNextColumn),s.table.options.resizableColumnFit&&s.nextColumn&&(!i||!o)){let e=s.nextColumn.getWidth();a>0&&e<=s.nextColumn.minWidth&&(s.nextColumn=s.nextColumn.nextColumn()),s.nextColumn&&s.nextColumn.setWidth(s.nextColumn.getWidth()-a)}s.table.columnManager.rerenderColumns(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.startWidth!==t.getWidth()&&(s.table.columnManager.verticalAlignHeaders(),s.dispatch("column-resized",t),s.table.externalEvents.dispatch("columnResized",t.getComponent()))}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.latestX=s.startX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}ne.moduleName="resizeColumns";class re extends s{constructor(e){super(e),this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null,this.registerTableOption("resizableRows",!1)}initialize(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}initializeRow(e){var t=this,i=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",s.addEventListener("click",(function(e){e.stopPropagation()}));var n=function(i){t.startRow=e,t._mouseDown(i,e,s)};s.addEventListener("mousedown",n),s.addEventListener("touchstart",n,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(i,s,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(s),i.appendChild(o)}_mouseDown(e,t,i){var s=this;function o(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.dispatchExternal("rowResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}re.moduleName="resizeRows";class ae extends s{constructor(e){super(e),this.binding=!1,this.visibilityObserver=!1,this.resizeObserver=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1,this.visible=!1,this.initialized=!1,this.initialRedraw=!1,this.registerTableOption("autoResize",!0)}initialize(){if(this.table.options.autoResize){var e,t=this.table;this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),"undefined"!=typeof IntersectionObserver&&"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.initializeVisibilityObserver(),this.autoResize=!0,this.resizeObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.tableHeight==i&&this.tableWidth==s||(this.tableHeight=i,this.tableWidth=s,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),this.redrawTable())}})),this.resizeObserver.observe(t.element),e=window.getComputedStyle(t.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(e.getPropertyValue("max-height")||e.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.containerHeight==i&&this.containerWidth==s||(this.containerHeight=i,this.containerWidth=s,this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth),this.redrawTable()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell)&&(t.columnManager.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((e=>{this.visible=e[0].isIntersecting,this.initialized?this.visible&&(this.redrawTable(this.initialRedraw),this.initialRedraw=!1):(this.initialized=!0,this.initialRedraw=!this.visible)})),this.visibilityObserver.observe(this.table.element)}redrawTable(e){this.initialized&&this.visible&&(this.table.columnManager.rerenderColumns(!0),this.table.redraw(e))}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.resizeObserver&&this.resizeObserver.unobserve(this.table.element),this.visibilityObserver&&this.visibilityObserver.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}ae.moduleName="resizeTable";class le extends s{constructor(e){super(e),this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1,this.registerTableOption("responsiveLayout",!1),this.registerTableOption("responsiveLayoutCollapseStartOpen",!0),this.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),this.registerTableOption("responsiveLayoutCollapseFormatter",!1),this.registerColumnOption("responsive")}initialize(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-data-changed",this.generateCollapsedRowContent.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}tableRedraw(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}initializeResponsivity(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(((t,i)=>{t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==this.mode||this.hiddenColumns.push(t))})),e=(e=e.reverse()).sort(((e,t)=>t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index)),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(let e of this.table.columnManager.columnsByIndex)if("responsiveCollapse"==e.definition.formatter){this.collapseHandleColumn=e;break}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}initializeColumn(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}initializeRow(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}layoutRow(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}updateColumnVisibility(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initializeResponsivity())}hideColumn(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}showColumn(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}update(){for(var e=!0;e;){let t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),i=(this.table.options.headerVisible?this.table.columnManager.element.clientWidth:this.table.element.clientWidth)-t;if(i<0){let t=this.columns[this.index];t?(this.hideColumn(t),this.index++):e=!1}else{let t=this.columns[this.index-1];t&&i>0&&i>=t.getWidth()?(this.showColumn(t),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){this.table.rowManager.getDisplayRows().forEach((e=>{this.generateCollapsedRowContent(e)}))}generateCollapsedRowContent(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}generateCollapsedRowData(e){var t,i=e.getData(),s=[];return this.hiddenColumns.forEach((o=>{var n=o.getFieldValue(i);if(o.definition.title&&o.field)if(o.modules.format&&this.table.options.responsiveLayoutCollapseUseFormatters){function r(e){e()}t={value:!1,data:{},getValue:function(){return n},getData:function(){return i},getType:function(){return"cell"},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return o.getComponent()},getTable:()=>this.table},s.push({field:o.field,title:o.definition.title,value:o.modules.format.formatter.call(this.table.modules.format,t,o.modules.format.params,r)})}else s.push({field:o.field,title:o.definition.title,value:n})})),s}formatCollapsedData(e){var t=document.createElement("table");return e.forEach((function(e){var i,s=document.createElement("tr"),o=document.createElement("td"),n=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerHTML=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),n.appendChild(i)):n.innerHTML=e.value,s.appendChild(o),s.appendChild(n),t.appendChild(s)}),this),Object.keys(e).length?t:""}}le.moduleName="responsiveLayout";class he extends s{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectable","highlight"),this.registerTableOption("selectableRangeMode","drag"),this.registerTableOption("selectableRollingSelection",!0),this.registerTableOption("selectablePersistence",!0),this.registerTableOption("selectableCheck",(function(e,t){return!0})),this.registerTableFunction("selectRow",this.selectRows.bind(this)),this.registerTableFunction("deselectRow",this.deselectRows.bind(this)),this.registerTableFunction("toggleSelectRow",this.toggleRow.bind(this)),this.registerTableFunction("getSelectedRows",this.getSelectedRows.bind(this)),this.registerTableFunction("getSelectedData",this.getSelectedData.bind(this)),this.registerComponentFunction("row","select",this.selectRows.bind(this)),this.registerComponentFunction("row","deselect",this.deselectRows.bind(this)),this.registerComponentFunction("row","toggleSelect",this.toggleRow.bind(this)),this.registerComponentFunction("row","isSelected",this.isRowSelected.bind(this))}initialize(){!1!==this.table.options.selectable&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.rowRetrieve.bind(this)),this.table.options.selectable&&!this.table.options.selectablePersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){var t=this.selectedRows.length;this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t&&!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=e.getElement(),s=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",s)};e.modules.select={selected:!1},t.checkRowSelectability(e)?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",s),document.body.addEventListener("keyup",s),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}handleComplexRowClick(e,t){if(t.shiftKey){this.table._clearSelection(),this.lastClickedRow=this.lastClickedRow||e;var i=this.table.rowManager.getDisplayRowIndex(this.lastClickedRow),s=this.table.rowManager.getDisplayRowIndex(e),o=i<=s?i:s,n=i>=s?i:s,r=this.table.rowManager.getDisplayRows().slice(0).splice(o,n-o+1);t.ctrlKey||t.metaKey?(r.forEach((t=>{t!==this.lastClickedRow&&(!0===this.table.options.selectable||this.isRowSelected(e)||this.selectedRows.lengththis.table.options.selectable&&(r=r.slice(0,this.table.options.selectable)),this.selectRows(r)),this.table._clearSelection()}else t.ctrlKey||t.metaKey?(this.toggleRow(e),this.lastClickedRow=e):(this.deselectRows(void 0,!0),this.selectRows(e),this.lastClickedRow=e)}checkRowSelectability(e){return!(!e||"row"!==e.type)&&this.table.options.selectableCheck.call(this.table,e.getComponent())}toggleRow(e){this.checkRowSelectability(e)&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t,i,s=[];switch(typeof e){case"undefined":t=this.table.rowManager.rows;break;case"string":(t=this.table.rowManager.findRow(e))||(t=this.table.rowManager.getRows(e));break;default:t=e}Array.isArray(t)?t.length&&(t.forEach((e=>{(i=this._selectRow(e,!0,!0))&&s.push(i)})),this._rowSelectionChanged(!1,s)):t&&this._selectRow(t,!1,!0)}_selectRow(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);if(s){if(-1==this.selectedRows.indexOf(s))return s.getElement().classList.add("tabulator-selected"),s.modules.select||(s.modules.select={}),s.modules.select.selected=!0,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!0),this.selectedRows.push(s),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!0),this.dispatchExternal("rowSelected",s.getComponent()),this._rowSelectionChanged(t,s),s}else t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}isRowSelected(e){return-1!==this.selectedRows.indexOf(e)}deselectRows(e,t){var i,s,o=[];switch(typeof e){case"undefined":i=Object.assign([],this.selectedRows);break;case"string":(i=this.table.rowManager.findRow(e))||(i=this.table.rowManager.getRows(e));break;default:i=e}Array.isArray(i)?i.length&&(i.forEach((e=>{(s=this._deselectRow(e,!0,!0))&&o.push(s)})),this._rowSelectionChanged(t,[],o)):i&&this._deselectRow(i,t,!0)}_deselectRow(e,t){var i,s,o=this,n=o.table.rowManager.findRow(e);if(n){if((i=o.selectedRows.findIndex((function(e){return e==n})))>-1)return(s=n.getElement())&&s.classList.remove("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),o.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),this.dispatchExternal("rowDeselected",n.getComponent()),o._rowSelectionChanged(t,void 0,n),n}else t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}getSelectedData(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}getSelectedRows(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}_rowSelectionChanged(e,t=[],i=[]){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||(Array.isArray(t)||(t=[t]),t=t.map((e=>e.getComponent())),Array.isArray(i)||(i=[i]),i=i.map((e=>e.getComponent())),this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows(),t,i))}registerRowSelectCheckbox(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}registerHeaderSelectCheckbox(e){this.headerCheckboxElement=e}childRowSelection(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t)for(let e of i)this._selectRow(e,!0);else for(let e of i)this._deselectRow(e,!0)}}function de(e,t,i,s,o,n,r){var a=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",h=r.alignEmptyValues,d=0;if(void 0!==a){if(a.isDateTime(e)||(e="iso"===l?a.fromISO(String(e)):a.fromFormat(String(e),l)),a.isDateTime(t)||(t="iso"===l?a.fromISO(String(t)):a.fromFormat(String(t),l)),e.isValid){if(t.isValid)return e-t;d=1}else d=t.isValid?-1:0;return("top"===h&&"desc"===n||"bottom"===h&&"asc"===n)&&(d*=-1),d}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}he.moduleName="selectRow";var ce={number:function(e,t,i,s,o,n,r){var a=r.alignEmptyValues,l=r.decimalSeparator,h=r.thousandSeparator,d=0;if(e=String(e),t=String(t),h&&(e=e.split(h).join(""),t=t.split(h).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))d=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;d=1}return("top"===a&&"desc"===n||"bottom"===a&&"asc"===n)&&(d*=-1),d},string:function(e,t,i,s,o,n,r){var a,l=r.alignEmptyValues,h=0;if(e){if(t){switch(typeof r.locale){case"boolean":r.locale&&(a=this.langLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}h=1}else h=t?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},date:function(e,t,i,s,o,n,r){return r.format||(r.format="dd/MM/yyyy"),de.call(this,e,t,i,s,o,n,r)},time:function(e,t,i,s,o,n,r){return r.format||(r.format="HH:mm"),de.call(this,e,t,i,s,o,n,r)},datetime:de,boolean:function(e,t,i,s,o,n,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,s,o,n,r){var a=r.type||"length",l=r.alignEmptyValues,h=0;function d(e){var t;switch(a){case"length":t=e.length;break;case"sum":t=e.reduce((function(e,t){return e+t}));break;case"max":t=Math.max.apply(null,e);break;case"min":t=Math.min.apply(null,e);break;case"avg":t=e.reduce((function(e,t){return e+t}))/e.length}return t}if(Array.isArray(e)){if(Array.isArray(t))return d(t)-d(e);h=1}else h=Array.isArray(t)?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},exists:function(e,t,i,s,o,n,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,s,o,n,r){var a,l,h,d,c,u=0,p=/(\d+)|(\D+)/g,m=/\d/,g=r.alignEmptyValues,b=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((a=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),c=a.length>l.length?l.length:a.length;ud?1:-1;return a.length>l.length}b=1}else b=t||0===t?-1:0;return("top"===g&&"desc"===n||"bottom"===g&&"asc"===n)&&(b*=-1),b}};class ue extends s{constructor(e){super(e),this.sortList=[],this.changed=!1,this.registerTableOption("sortMode","local"),this.registerTableOption("initialSort",!1),this.registerTableOption("columnHeaderSortMulti",!0),this.registerTableOption("sortOrderReverse",!1),this.registerTableOption("headerSortElement","
              "),this.registerTableOption("headerSortClickElement","header"),this.registerColumnOption("sorter"),this.registerColumnOption("sorterParams"),this.registerColumnOption("headerSort",!0),this.registerColumnOption("headerSortStartingDir"),this.registerColumnOption("headerSortTristate")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}tableBuilt(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}remoteSortParams(e,t,i,s){var o=this.getSort();return o.forEach((e=>{delete e.column})),s.sort=o,s}userSetSort(e,t){this.setSort(e,t),this.refreshSort()}clearSort(){this.clear(),this.refreshSort()}initializeColumn(e){var t,i,s=!1;switch(typeof e.definition.sorter){case"string":ue.sorters[e.definition.sorter]?s=ue.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}if(e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort){if((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"icon"===this.table.options.headerSortClickElement)i.classList.add("tabulator-col-sorter-element");else t.classList.add("tabulator-col-sorter-element");switch(this.table.options.headerSortElement){case"function":break;case"object":i.appendChild(this.table.options.headerSortElement);break;default:i.innerHTML=this.table.options.headerSortElement}e.titleHolderElement.appendChild(i),e.modules.sort.element=i,this.setColumnHeaderSortIcon(e,"none"),("icon"===this.table.options.headerSortClickElement?i:t).addEventListener("click",(t=>{var i="",s=[],o=!1;if(e.modules.sort){if(e.modules.sort.tristate)i="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=e.modules.sort.startingDir}this.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(o=(s=this.getSort()).findIndex((t=>t.field===e.getField())),o>-1?(s[o].dir=i,o=s.splice(o,1)[0],"none"!=i&&s.push(o)):"none"!=i&&s.push({column:e,dir:i}),this.setSort(s)):"none"==i?this.clear():this.setSort(e,i),this.refreshSort()}}))}}refreshSort(){"remote"===this.table.options.sortMode?this.reloadData(null,!1,!1):this.refreshData(!0)}hasChanged(){var e=this.changed;return this.changed=!1,e}getSort(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}setSort(e,t){var i=this,s=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,s.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=s,this.dispatch("sort-changed")}clear(){this.setSort([])}findSorter(e){var t,i=this.table.rowManager.activeRows[0],s="string";if(i&&(i=i.getData(),e.getField()))switch(typeof(t=e.getFieldValue(i))){case"undefined":s="string";break;case"boolean":s="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(s="alphanum"):s="number"}return ue.sorters[s]}sort(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,s=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o;e.column&&((o=e.column.modules.sort)&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,s.push(e)),t.setColumnHeader(e.column,e.dir))})),s.length&&t._sortItems(e,s)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((e=>{o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}clearColumnHeaders(){this.table.columnManager.getRealColumns().forEach((e=>{e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"),this.setColumnHeaderSortIcon(e,"none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort","asc"===t?"ascending":"descending"),this.setColumnHeaderSortIcon(e,t)}setColumnHeaderSortIcon(e,t){var i,s=e.modules.sort.element;if(e.definition.headerSort&&"function"==typeof this.table.options.headerSortElement){for(;s.firstChild;)s.removeChild(s.firstChild);"object"==typeof(i=this.table.options.headerSortElement.call(this.table,e.getComponent(),t))?s.appendChild(i):s.innerHTML=i}}_sortItems(e,t){var i=t.length-1;e.sort(((e,s)=>{for(var o,n=i;n>=0;n--){let i=t[n];if(0!==(o=this._sortRow(e,s,i.column,i.dir,i.params)))break}return o}))}_sortRow(e,t,i,s,o){var n,r,a="asc"==s?e:t,l="asc"==s?t:e;return e=void 0!==(e=i.getFieldValue(a.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",n=a.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,n,r,i.getComponent(),s,o)}}ue.moduleName="sort",ue.sorters=ce;class pe extends s{constructor(e){super(e),this.tooltipSubscriber=null,this.headerSubscriber=null,this.timeout=null,this.popupInstance=null,this.registerTableOption("tooltipGenerationMode",void 0),this.registerTableOption("tooltipDelay",300),this.registerColumnOption("tooltip"),this.registerColumnOption("headerTooltip")}initialize(){this.deprecatedOptionsCheck(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheckMsg("tooltipGenerationMode","This option is no longer needed as tooltips are always generated on hover now")}initializeColumn(e){e.definition.headerTooltip&&!this.headerSubscriber&&(this.headerSubscriber=!0,this.subscribe("column-mousemove",this.mousemoveCheck.bind(this,"headerTooltip")),this.subscribe("column-mouseout",this.mouseoutCheck.bind(this,"headerTooltip"))),e.definition.tooltip&&!this.tooltipSubscriber&&(this.tooltipSubscriber=!0,this.subscribe("cell-mousemove",this.mousemoveCheck.bind(this,"tooltip")),this.subscribe("cell-mouseout",this.mouseoutCheck.bind(this,"tooltip")))}mousemoveCheck(e,t,i){var s="tooltip"===e?i.column.definition.tooltip:i.definition.headerTooltip;s&&(this.clearPopup(),this.timeout=setTimeout(this.loadTooltip.bind(this,t,i,s),this.table.options.tooltipDelay))}mouseoutCheck(e,t,i){this.popupInstance||this.clearPopup()}clearPopup(e,t,i){clearTimeout(this.timeout),this.timeout=null,this.popupInstance&&this.popupInstance.hide()}loadTooltip(e,t,i){var s,o,n;"function"==typeof i&&(i=i(e,t.getComponent(),(function(e){o=e}))),i instanceof HTMLElement?s=i:(s=document.createElement("div"),!0===i&&(t instanceof m?i=t.value:t.definition.field?this.langBind("columns|"+t.definition.field,(e=>{s.innerHTML=i=e||t.definition.title})):i=t.definition.title),s.innerHTML=i),(i||0===i||!1===i)&&(s.classList.add("tabulator-tooltip"),s.addEventListener("mousemove",(e=>e.preventDefault())),this.popupInstance=this.popup(s),"function"==typeof o&&this.popupInstance.renderCallback(o),n=this.popupInstance.containerEventCoords(e),this.popupInstance.show(n.x+15,n.y+15).hideOnBlur((()=>{this.dispatchExternal("TooltipClosed",t.getComponent()),this.popupInstance=null})),this.dispatchExternal("TooltipOpened",t.getComponent()))}}pe.moduleName="tooltip";var me={integer:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&Math.floor(t)===t)},float:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&t%1!=0)},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var s=!0,o=e.getData(),n=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==n.getFieldValue(i)&&(s=!1)})),s},required:function(e,t,i){return""!==t&&null!=t}};class ge extends s{constructor(e){super(e),this.invalidCells=[],this.registerTableOption("validationMode","blocking"),this.registerColumnOption("validator"),this.registerTableFunction("getInvalidCells",this.getInvalidCells.bind(this)),this.registerTableFunction("clearCellValidation",this.userClearCellValidation.bind(this)),this.registerTableFunction("validate",this.userValidate.bind(this)),this.registerComponentFunction("cell","isValid",this.cellIsValid.bind(this)),this.registerComponentFunction("cell","clearValidation",this.clearValidation.bind(this)),this.registerComponentFunction("cell","validate",this.cellValidate.bind(this)),this.registerComponentFunction("column","validate",this.columnValidate.bind(this)),this.registerComponentFunction("row","validate",this.rowValidate.bind(this))}initialize(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("edit-success",this.editValidate.bind(this)),this.subscribe("edit-editor-clear",this.editorClear.bind(this)),this.subscribe("edit-edited-clear",this.editedClear.bind(this))}editValidate(e,t,i){var s="manual"===this.table.options.validationMode||this.validate(e.column.modules.validate,e,t);return!0!==s&&setTimeout((()=>{e.getElement().classList.add("tabulator-validation-fail"),this.dispatchExternal("validationFailed",e.getComponent(),t,s)})),s}editorClear(e,t){t&&e.column.modules.validate&&this.cellValidate(e),e.getElement().classList.remove("tabulator-validation-fail")}editedClear(e){e.modules.validate&&(e.modules.validate.invalid=!1)}cellIsValid(e){return e.modules.validate&&e.modules.validate.invalid||!0}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}userClearCellValidation(e){e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.clearValidation(e._getSelf())}))}userValidate(e){var t=[];return this.table.rowManager.rows.forEach((e=>{var i=(e=e.getComponent()).validate();!0!==i&&(t=t.concat(i))})),!t.length||t}initializeColumnCheck(e){void 0!==e.definition.validator&&this.initializeColumn(e)}initializeColumn(e){var t,i=this,s=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((e=>{(t=i._extractValidator(e))&&s.push(t)})):(t=this._extractValidator(e.definition.validator))&&s.push(t),e.modules.validate=!!s.length&&s)}_extractValidator(e){var t,i,s;switch(typeof e){case"string":return(s=e.indexOf(":"))>-1?(t=e.substring(0,s),i=e.substring(s+1)):t=e,this._buildValidator(t,i);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}}_buildValidator(e,t){var i="function"==typeof e?e:ge.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}validate(e,t,i){var s=this,o=[],n=this.invalidCells.indexOf(t);return e&&e.forEach((e=>{e.func.call(s,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),t.modules.validate||(t.modules.validate={}),o.length?(t.modules.validate.invalid=o,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)):(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)),!o.length||o}getInvalidCells(){var e=[];return this.invalidCells.forEach((t=>{e.push(t.getComponent())})),e}clearValidation(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}ge.moduleName="validate",ge.validators=me;var be=Object.freeze({__proto__:null,AccessorModule:o,AjaxModule:d,ClipboardModule:c,ColumnCalcsModule:E,DataTreeModule:y,DownloadModule:x,EditModule:L,ExportModule:P,FilterModule:F,FormatModule:O,FrozenColumnsModule:A,FrozenRowsModule:_,GroupRowsModule:V,HistoryModule:N,HtmlTableImportModule:W,ImportModule:G,InteractionModule:U,KeybindingsModule:X,MenuModule:q,MoveColumnsModule:K,MoveRowsModule:J,MutatorModule:Y,PageModule:Z,PersistenceModule:te,PopupModule:ie,PrintModule:se,ReactiveDataModule:oe,ResizeColumnsModule:ne,ResizeRowsModule:re,ResizeTableModule:ae,ResponsiveLayoutModule:le,SelectRowModule:he,SortModule:ue,TooltipModule:pe,ValidateModule:ge});class fe{constructor(e,t,i={}){this.table=e,this.msgType=t,this.registeredDefaults=Object.assign({},i)}register(e,t){this.registeredDefaults[e]=t}generate(e,t={}){var i=Object.assign({},this.registeredDefaults),s=this.table.options.debugInvalidOptions||!0===t.debugInvalidOptions;Object.assign(i,e);for(let e in t)i.hasOwnProperty(e)||(s&&console.warn("Invalid "+this.msgType+" option:",e),i[e]=t.key);for(let e in i)e in t?i[e]=t[e]:Array.isArray(i[e])?i[e]=Object.assign([],i[e]):"object"==typeof i[e]&&null!==i[e]?i[e]=Object.assign({},i[e]):void 0===i[e]&&delete i[e];return i}}class ve extends e{constructor(e){super(e),this.elementVertical=e.rowManager.element,this.elementHorizontal=e.columnManager.element,this.tableElement=e.rowManager.tableElement,this.verticalFillMode="fit"}initialize(){}clearRows(){}clearColumns(){}reinitializeColumnWidths(e){}renderRows(){}renderColumns(){}rerenderRows(e){e&&e()}rerenderColumns(e,t){}renderRowCells(e){}rerenderRowCells(e,t){}scrollColumns(e,t){}scrollRows(e,t){}resize(){}scrollToRow(e){}scrollToRowNearestTop(e){}visibleRows(e){return[]}rows(){return this.table.rowManager.getDisplayRows()}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}clear(){this.clearRows(),this.clearColumns()}render(){this.renderRows(),this.renderColumns()}rerender(e){this.rerenderRows(),this.rerenderColumns()}scrollToRowPosition(e,i,s){var o=this.rows().indexOf(e),n=e.getElement(),r=0;return new Promise(((a,l)=>{if(o>-1){if(void 0===s&&(s=this.table.options.scrollToRowIfVisible),!s&&t.elVisible(n)&&(r=t.elOffset(n).top-t.elOffset(this.elementVertical).top)>0&&r{i.appendChild(e.getElement())})),e.element.appendChild(i),t||e.cells.forEach((e=>{e.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class Ce extends ve{constructor(e){super(e),this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.windowBuffer=200,this.visibleRows=null,this.initialized=!1,this.isFitData=!1,this.columns=[]}initialize(){this.compatibilityCheck(),this.layoutCheck(),this.vertScrollListen()}compatibilityCheck(){"fitDataTable"==this.options("layout")&&console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"),this.options("responsiveLayout")&&console.warn("Horizontal Virtual DOM is not compatible with responsive columns"),this.options("rtl")&&console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction")}layoutCheck(){this.isFitData=this.options("layout").startsWith("fitData")}vertScrollListen(){this.subscribe("scroll-vertical",this.clearVisRowCache.bind(this)),this.subscribe("data-refreshed",this.clearVisRowCache.bind(this))}clearVisRowCache(){this.visibleRows=null}renderColumns(e,t){this.dataChange()}scrollColumns(e,t){this.scrollLeft!=e&&(this.scrollLeft=e,this.scroll(e-(this.vDomScrollPosLeft+this.windowBuffer)))}calcWindowBuffer(){var e=this.elementVertical.clientWidth;this.table.columnManager.columnsByIndex.forEach((t=>{if(t.visible){var i=t.getWidth();i>e&&(e=i)}})),this.windowBuffer=2*e}rerenderColumns(e,t){var i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol},s=0;e&&!this.initialized||(this.clear(),this.calcWindowBuffer(),this.scrollLeft=this.elementVertical.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.windowBuffer,this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,this.table.columnManager.columnsByIndex.forEach((e=>{var t,i={};e.visible&&(e.modules.frozen||(t=e.getWidth(),i.leftPos=s,i.rightPos=s+t,i.width=t,this.isFitData&&(i.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),s+t>this.vDomScrollPosLeft&&s{t.appendChild(e.getElement())})),e.element.appendChild(t),e.cells.forEach((e=>{e.cellRendered()}))}}rerenderRowCells(e,t){this.reinitializeRow(e,t)}reinitializeColumnWidths(e){for(let e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()}deinitialize(){this.initialized=!1}clear(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0}dataChange(){var e,t,i=!1;if(this.isFitData){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,e=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()))[0])){t=e.getElement(),e.generateCells(),this.tableElement.appendChild(t);for(let i=0;i{e!==this.columns[i]&&(t=!1)})),!t)}reinitializeRows(){var e=this.getVisibleRows(),t=this.table.rowManager.getRows().filter((t=>!e.includes(t)));e.forEach((e=>{this.reinitializeRow(e,!0)})),t.forEach((e=>{e.deinitialize()}))}getVisibleRows(){return this.visibleRows||(this.visibleRows=this.table.rowManager.getVisibleRows()),this.visibleRows}scroll(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,Math.abs(e)>this.windowBuffer/2?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}colPositionAdjust(e,t,i){for(let s=e;s{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.rightCol]).getElement().nextSibling),t.cellRendered()}})),this.fitDataColActualWidthCheck(i),this.rightCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)})),this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=i.getWidth()):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}addColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol-1];if(i)if(i.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft){e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.leftCol]).getElement()),t.cellRendered()}})),this.leftCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)})),this.leftCol<=0?this.vDomPadLeft=0:this.vDomPadLeft-=i.getWidth();let t=this.fitDataColActualWidthCheck(i);t&&(this.scrollLeft=this.elementVertical.scrollLeft=this.elementVertical.scrollLeft+t,this.vDomPadRight-=t)}else t=!1;else t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}removeColRight(){for(var e=!1,t=!0;t;){let i=this.columns[this.rightCol];i&&i.modules.vdomHoz.leftPos>this.vDomScrollPosRight?(e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColRight",e.message)}}})),this.vDomPadRight+=i.getWidth(),this.rightCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)}))):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}removeColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol];i&&i.modules.vdomHoz.rightPos{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColLeft",e.message)}}})),this.vDomPadLeft+=i.getWidth(),this.leftCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)}))):t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}fitDataColActualWidthCheck(e){var t,i;return e.modules.vdomHoz.fitDataCheck&&(e.reinitializeWidth(),(i=(t=e.getWidth())-e.modules.vdomHoz.width)&&(e.modules.vdomHoz.rightPos+=i,e.modules.vdomHoz.width=t,this.colPositionAdjust(this.columns.indexOf(e)+1,this.columns.length,i)),e.modules.vdomHoz.fitDataCheck=!1),i}initializeRow(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol},this.table.modules.frozenColumns&&this.table.modules.frozenColumns.leftColumns.forEach((t=>{this.appendCell(e,t)}));for(let t=this.leftCol;t<=this.rightCol;t++)this.appendCell(e,this.columns[t]);this.table.modules.frozenColumns&&this.table.modules.frozenColumns.rightColumns.forEach((t=>{this.appendCell(e,t)}))}}appendCell(e,t){if(t&&t.visible){let i=e.getCell(t);e.getElement().appendChild(i.getElement()),i.cellRendered()}}reinitializeRow(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(var i=e.getElement();i.firstChild;)i.removeChild(i.firstChild);this.initializeRow(e)}}}class Ee extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.contentsElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new fe(this.table,"column definition",b),this.redrawBlock=!1,this.redrawBlockUpdate=null,this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.contentsElement=this.createHeaderContentsElement(),this.element=this.createHeaderElement(),this.contentsElement.insertBefore(this.headersElement,this.contentsElement.firstChild),this.element.insertBefore(this.contentsElement,this.element.firstChild),this.initializeScrollWheelWatcher(),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("scrollbar-vertical",this.padVerticalScrollbar.bind(this))}padVerticalScrollbar(e){this.table.rtl?this.headersElement.style.marginLeft=e+"px":this.headersElement.style.marginRight=e+"px"}initializeRenderer(){var e,t={virtual:Ce,basic:we};(e="string"==typeof this.table.options.renderHorizontal?t[this.table.options.renderHorizontal]:this.table.options.renderHorizontal)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize()):console.error("Unable to find matching renderer:",this.table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e.setAttribute("role","row"),e}createHeaderContentsElement(){var e=document.createElement("div");return e.classList.add("tabulator-header-contents"),e.setAttribute("role","rowgroup"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),e.setAttribute("role","rowgroup"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e}getElement(){return this.element}getContentsElement(){return this.contentsElement}getHeadersElement(){return this.headersElement}scrollHorizontal(e){this.contentsElement.scrollLeft=e,this.scrollLeft=e,this.renderer.scrollColumns(e)}initializeScrollWheelWatcher(){this.contentsElement.addEventListener("wheel",(e=>{var t;e.deltaX&&(t=this.contentsElement.scrollLeft+e.deltaX,this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))}))}generateColumnsFromRowData(e){var t,i,s=[],o=this.table.options.autoColumnsDefinitions;if(e&&e.length){for(var n in t=e[0]){let e={field:n,title:n},o=t[n];switch(typeof o){case"undefined":i="string";break;case"boolean":i="boolean";break;case"object":i=Array.isArray(o)?"array":"string";break;default:i=isNaN(o)||""===o?o.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}e.sorter=i,s.push(e)}if(o)switch(typeof o){case"function":this.table.options.columns=o.call(this.table,s);break;case"object":Array.isArray(o)?s.forEach((e=>{var t=o.find((t=>t.field===e.field));t&&Object.assign(e,t)})):s.forEach((e=>{o[e.field]&&Object.assign(e,o[e.field])})),this.table.options.columns=s}else this.table.options.columns=s;this.setColumns(this.table.options.columns)}}setColumns(e,t){for(;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach(((e,t)=>{this._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new f(e,this),o=s.getElement(),n=i?this.findColumnIndex(i):i;if(i&&n>-1){var r=i.getTopColumn(),a=this.columns.indexOf(r),l=r.getElement();t?(this.columns.splice(a,0,s),l.parentNode.insertBefore(o,l)):(this.columns.splice(a+1,0,s),l.parentNode.insertBefore(o,l.nextSibling))}else t?(this.columns.unshift(s),this.headersElement.insertBefore(s.getElement(),this.headersElement.firstChild)):(this.columns.push(s),this.headersElement.appendChild(s.getElement()));return s.columnRendered(),s}registerColumnField(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}registerColumnPosition(e){this.columnsByIndex.push(e)}_reIndexColumns(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}verticalAlignHeaders(){var e=0;this.redrawBlock||(this.headersElement.style.height="",this.columns.forEach((e=>{e.clearVerticalAlign()})),this.columns.forEach((t=>{var i=t.getHeight();i>e&&(e=i)})),this.headersElement.style.height=e+"px",this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize())}findColumn(e){var t;if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof f)return e;if(e instanceof g)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t=[],this.columns.forEach((e=>{t.push(e),t=t.concat(e.getColumns(!0))})),t.find((t=>t.element===e))||!1}return!1}getColumnByField(e){return this.columnsByField[e]}getColumnsByFieldRoot(e){var t=[];return Object.keys(this.columnsByField).forEach((i=>{i.split(".")[0]===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibleColumn(){var e=this.columnsByIndex.findIndex((e=>e.visible));return e>-1&&this.columnsByIndex[e]}getColumns(){return this.columns}findColumnIndex(e){return this.columnsByIndex.findIndex((t=>e===t))}getRealColumns(){return this.columnsByIndex}traverse(e){this.columnsByIndex.forEach(((t,i)=>{e(t,i)}))}getDefinitions(e){var t=[];return this.columnsByIndex.forEach((i=>{(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}getDefinitionTree(){var e=[];return this.columns.forEach((t=>{e.push(t.getDefinition(!0))})),e}getComponents(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((e=>{t.push(e.getComponent())})),t}getWidth(){var e=0;return this.columnsByIndex.forEach((t=>{t.visible&&(e+=t.getWidth())})),e}moveColumn(e,t,i){t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this.moveColumnActual(e,t,i),this.verticalAlignHeaders(),this.table.rowManager.reinitialize()}moveColumnActual(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}_moveColumnInArray(e,t,i,s,o){var n,r=e.indexOf(t);r>-1&&(e.splice(r,1),(n=e.indexOf(i))>-1?s&&(n+=1):n=r,e.splice(n,0,t),o&&(this.chain("column-moving-rows",[t,i,s],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(n,0,t)}})))}scrollToColumn(e,t,i){var s=0,o=e.getLeftOffset(),n=0,r=e.getElement();return new Promise(((a,l)=>{if(void 0===t&&(t=this.table.options.scrollToColumnPosition),void 0===i&&(i=this.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":n=-this.element.clientWidth/2;break;case"right":n=r.clientWidth-this.headersElement.clientWidth}if(!i&&o>0&&o+r.offsetWidth{t.push(i.generateCell(e))})),t}getFlexBaseWidth(){var e=this.table.element.clientWidth,t=0;return this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var s,o,n;i.visible&&(s=i.definition.width||0,o=parseInt(i.minWidth),n="string"==typeof s?s.indexOf("%")>-1?e/100*parseInt(s):parseInt(s):s,t+=n>o?n:o)})),t}addColumn(e,t,i){return new Promise(((s,o)=>{var n=this._addColumn(e,t,i);this._reIndexColumns(),this.dispatch("column-add",e,t,i),"fitColumns"!=this.layoutMode()&&n.reinitializeWidth(),this.redraw(!0),this.table.rowManager.reinitialize(),this.rerenderColumns(),s(n)}))}deregisterColumn(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.verticalAlignHeaders(),this.redraw()}rerenderColumns(e,t){this.redrawBlock?(!1===e||!0===e&&null===this.redrawBlockUpdate)&&(this.redrawBlockUpdate=e):this.renderer.rerenderColumns(e,t)}blockRedraw(){this.redrawBlock=!0,this.redrawBlockUpdate=null}restoreRedraw(){this.redrawBlock=!1,this.verticalAlignHeaders(),this.renderer.rerenderColumns(this.redrawBlockUpdate)}redraw(e){t.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(e),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class ye extends ve{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.scrollTop=0,e.scrollLeft=0,e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility=""}renderRows(){var e=this.tableElement,t=!0,i=document.createDocumentFragment(),s=this.rows();s.forEach(((e,s)=>{this.styleRow(e,s),e.initialize(!1,!0),"group"!==e.type&&(t=!1),i.appendChild(e.getElement())})),e.appendChild(i),s.forEach((e=>{e.rendered(),e.heightInitialized||e.calcHeight(!0)})),s.forEach((e=>{e.heightInitialized||e.setCellHeight()})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.clearRows(),e&&e(),this.renderRows()}scrollToRowNearestTop(e){var i=t.elOffset(e.getElement()).top;return!(Math.abs(this.elementVertical.scrollTop-i)>Math.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-i))}scrollToRow(e){var i=e.getElement();this.elementVertical.scrollTop=t.elOffset(i).top-t.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class Re extends ve{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}renderRows(){this._virtualRenderFill()}rerenderRows(e){for(var t=this.elementVertical.scrollTop,i=!1,s=!1,o=this.table.rowManager.scrollLeft,n=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(n[r]){var a=t-n[r].getElement().offsetTop;if(!(!1===s||Math.abs(a){e.deinitializeHeight()})),e&&e(),this.rows().length?this._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0):(this.clear(),this.table.rowManager.tableEmpty()),this.scrollColumns(o)}scrollColumns(e){this.table.rowManager.scrollHorizontal(e)}scrollRows(e,t){var i=e-this.vDomScrollPosTop,s=e-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer,n=this.rows();if(this.scrollTop=e,-i>o||s>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*n.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(n,-i),s<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(n,-s):this.vDomScrollPosBottom=this.scrollTop)):(s>=0&&this._addBottomRow(n,s),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(n,i):this.vDomScrollPosTop=this.scrollTop))}resize(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}scrollToRowNearestTop(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}scrollToRow(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}visibleRows(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,s=!1,o=0,n=0,r=this.rows();if(e)o=this.vDomTop,n=this.vDomBottom;else for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(s){if(!(i-r[a].getElement().offsetTop>=0))break;n=a}else if(t-r[a].getElement().offsetTop>=0)o=a;else{if(s=!0,!(i-r[a].getElement().offsetTop>=0))break;n=a}return r.slice(o,n+1)}_virtualRenderFill(e,i,s){var o,n,r=this.tableElement,a=this.elementVertical,l=0,h=0,d=0,c=0,u=0,p=0,m=this.rows(),g=m.length,b=0,f=[],v=0,w=0,C=this.table.rowManager.fixedHeight,E=this.elementVertical.clientHeight,y=this.table.options.rowHeight,R=!0;if(s=s||0,e=e||0){for(;r.firstChild;)r.removeChild(r.firstChild);(c=(g-e+1)*this.vDomRowHeight){e.rendered(),e.heightInitialized||e.calcHeight(!0)})),f.forEach((e=>{e.heightInitialized||e.setCellHeight()})),f.forEach((e=>{d=e.getHeight(),vthis.vDomWindowBuffer&&(this.vDomWindowBuffer=2*d),v++})),R=this.table.rowManager.adjustTableSize(),E=this.elementVertical.clientHeight,R&&(C||this.table.options.maxHeight)&&(y=h/v,w=Math.max(this.vDomWindowMinTotalRows,Math.ceil(E/y+this.vDomWindowBuffer/y)))}e?(this.vDomTopPad=i?this.vDomRowHeight*this.vDomTop+s:this.scrollTop-u,this.vDomBottomPad=this.vDomBottom==g-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-h-u,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((h+u)/v),this.vDomBottomPad=this.vDomRowHeight*(g-this.vDomBottom-1),this.vDomScrollHeight=u+h+this.vDomBottomPad-E),r.style.paddingTop=this.vDomTopPad+"px",r.style.paddingBottom=this.vDomBottomPad+"px",i&&(this.scrollTop=this.vDomTopPad+u+s-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-E:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-E),this.elementVertical.scrollWidth>this.elementVertical.clientWidth&&i&&(this.scrollTop+=this.elementVertical.offsetHeight-E),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,a.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}_addTopRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomTop-1,r=0,a=!0;a;)if(this.vDomTop){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.insertBefore(d.getElement(),i.firstChild),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomTop--,n--,r++):a=!1):a=!1}else a=!1;for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomTopPad-=o,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n<1&&(this.vDomTopPad=0),i.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=o)}_removeTopRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomTop];a&&o=r?(this.vDomTop++,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomTopPad+=s,this.tableElement.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?s:s+this.vDomWindowBuffer)}_addBottomRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomBottom+1,r=0,a=!0;a;){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.appendChild(d.getElement()),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomBottom++,n++,r++):a=!1):a=!1}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomBottomPad-=o,(this.vDomBottomPad<0||n==e.length-1)&&(this.vDomBottomPad=0),i.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=o)}_removeBottomRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomBottom];a&&o=r?(this.vDomBottom--,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomBottomPad+=s,this.vDomBottomPad<0&&(this.vDomBottomPad=0),this.tableElement.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=s)}_quickNormalizeRowHeight(e){for(let t of e)t.calcHeight();for(let t of e)t.setCellHeight()}}class xe extends e{constructor(e){super(e),this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.placeholder=null,this.placeholderContents=null,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRowsPipeline=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRenderInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.scrollbarWidth=0,this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),e}initializePlaceholder(){var e=this.table.options.placeholder;if("function"==typeof e&&(e=e.call(this.table)),e=this.chain("placeholder",[e],e,e)||e){let t=document.createElement("div");if(t.classList.add("tabulator-placeholder"),"string"==typeof e){let i=document.createElement("div");i.classList.add("tabulator-placeholder-contents"),i.innerHTML=e,t.appendChild(i),this.placeholderContents=i}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(t.appendChild(e),this.placeholderContents=e):(console.warn("Invalid placeholder provided, must be string or HTML Element",e),this.el=null);this.placeholder=t}}getElement(){return this.element}getTableElement(){return this.tableElement}initialize(){this.initializePlaceholder(),this.initializeRenderer(),this.element.appendChild(this.tableElement),this.firstRender=!0,this.element.addEventListener("scroll",(()=>{var e=this.element.scrollLeft,t=this.scrollLeft>e,i=this.element.scrollTop,s=this.scrollTop>i;this.scrollLeft!=e&&(this.scrollLeft=e,this.dispatch("scroll-horizontal",e,t),this.dispatchExternal("scrollHorizontal",e,t),this._positionPlaceholder()),this.scrollTop!=i&&(this.scrollTop=i,this.renderer.scrollRows(i,s),this.dispatch("scroll-vertical",i,s),this.dispatchExternal("scrollVertical",i,s))}))}findRow(e){if("object"!=typeof e){if(void 0===e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof w)return e;if(e instanceof v)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.rows.find((t=>t.getElement()===e))||!1}return!1}getRowFromDataObject(e){return this.rows.find((t=>t.data===e))||!1}getRowFromPosition(e){return this.getDisplayRows().find((t=>t.getPosition()===e&&t.isDisplayed()))}scrollToRow(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}setData(e,t,i){return new Promise(((s,o)=>{t&&this.getDisplayRows().length?this.table.options.pagination?this._setDataActual(e,!0):this.reRenderInPosition((()=>{this._setDataActual(e)})):(this.table.options.autoColumns&&i&&this.table.initialized&&this.table.columnManager.generateColumnsFromRowData(e),this.resetScroll(),this._setDataActual(e)),s()}))}_setDataActual(e,t){this.dispatchExternal("dataProcessing",e),this._wipeElements(),Array.isArray(e)?(this.dispatch("data-processing",e),e.forEach(((e,t)=>{if(e&&"object"==typeof e){var i=new w(e,this);this.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)})),this.refreshActiveData(!1,!1,t),this.dispatch("data-processed",e),this.dispatchExternal("dataProcessed",e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",typeof e,"\nData: ",e)}_wipeElements(){this.dispatch("rows-wipe"),this.destroy(),this.adjustTableSize(),this.dispatch("rows-wiped")}destroy(){this.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0}deleteRow(e,t){var i=this.rows.indexOf(e),s=this.activeRows.indexOf(e);s>-1&&this.activeRows.splice(s,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((t=>{var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowPositions(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this.tableEmpty(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){return this.addRowActual(e,t,i,s)}addRows(e,t,i,s){var o=[];return new Promise(((n,r)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((e,s)=>{var n=this.addRow(e,t,i,!0);o.push(n),this.dispatch("row-added",n,e,t,i)})),this.refreshActiveData(!!s&&"displayPipeline",!1,!0),this.regenerateRowPositions(),o.length&&this._clearPlaceholder(),n(o)}))}findAddRowPos(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}addRowActual(e,t,i,s){var o,n,r=e instanceof w?e:new w(e||{},this),a=this.findAddRowPos(t),l=-1;return i||(n=this.chain("row-adding-position",[r,a],null,{index:i,top:a}),i=n.index,a=n.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,a],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(a?t:t+1,0,r)})),o>-1&&this.activeRows.splice(a?o:o+1,0,r),this.rows.splice(a?l:l+1,0,r)):a?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s||this.reRenderInPosition(),r}moveRow(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowPositions(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}moveRowActual(e,t,i){this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((s=>{this.moveRowInArray(s,e,t,i)})),this.dispatch("row-moving",e,t,i)}moveRowInArray(e,t,i,s){var o,n,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(n=e.indexOf(i))>-1?s?e.splice(n+1,0,t):e.splice(n,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=n>o?n:o+1;for(let t=o-1&&t}nextDisplayRow(e,t){var i=this.getDisplayRowIndex(e),s=!1;return!1!==i&&i-1)&&i}getData(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}getComponents(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}getDataCount(e){return this.getRows(e).length}scrollHorizontal(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}registerDataPipelineHandler(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Data pipeline handlers must have a priority in order to be registered")}registerDisplayPipelineHandler(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Display pipeline handlers must have a priority in order to be registered")}refreshActiveData(e,i,s){var o=this.table,n="",r=0,a=["all","dataPipeline","display","displayPipeline","end"];if(!this.table.destroyed){if("function"==typeof e)if((r=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)n="dataPipeline",i&&(r==this.dataPipeline.length-1?n="display":r++);else{if(!((r=this.displayPipeline.findIndex((t=>t.handler===e)))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);n="displayPipeline",i&&(r==this.displayPipeline.length-1?n="end":r++)}else n=e||"all",r=0;if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===n&&r{"row"===e.type&&(e.setPosition(t),t++)}))}setActiveRows(e){this.activeRows=this.activeRows=Object.assign([],e),this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}setDisplayRows(e,t){this.displayRows[t]=e,t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length)}getDisplayRows(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]}getVisibleRows(e,t){var i=Object.assign([],this.renderer.visibleRows(!t));return e&&(i=this.chain("rows-visible",[t],i,i)),i}displayRowIterator(e){this.activeRowsPipeline.forEach(e),this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length}getRows(e){var t=[];switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!1,!0);break;default:t=this.chain("rows-retrieve",e,null,this.rows)||this.rows}return t}reRenderInPosition(e){this.redrawBlock?e?e():this.redrawBlockRenderInPosition=!0:(this.dispatchExternal("renderStarted"),this.renderer.rerenderRows(e),this.fixedHeight||this.adjustTableSize(),this.scrollBarCheck(),this.dispatchExternal("renderComplete"))}scrollBarCheck(){var e=0;this.element.scrollHeight>this.element.clientHeight&&(e=this.element.offsetWidth-this.element.clientWidth),e!==this.scrollbarWidth&&(this.scrollbarWidth=e,this.dispatch("scrollbar-vertical",e))}initializeRenderer(){var e,t={virtual:Re,basic:ye};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]:this.table.options.renderVertical)?(this.renderMode=this.table.options.renderVertical,this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize(),!this.table.element.clientHeight&&!this.table.options.height||this.table.options.minHeight&&this.table.options.maxHeight?this.fixedHeight=!1:this.fixedHeight=!0):console.error("Unable to find matching renderer:",this.table.options.renderVertical)}getRenderMode(){return this.renderMode}renderTable(){this.dispatchExternal("renderStarted"),this.element.scrollTop=0,this._clearTable(),this.displayRowsCount?(this.renderer.renderRows(),this.firstRender&&(this.firstRender=!1,this.fixedHeight||this.adjustTableSize(),this.layoutRefresh(!0))):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.scrollBarCheck(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}tableEmpty(){this.renderEmptyScroll(),this._showPlaceholder()}_showPlaceholder(){this.placeholder&&(this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.initializePlaceholder(),this.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.placeholder),this._positionPlaceholder(),this.adjustTableSize())}_clearPlaceholder(){this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.tableElement.style.minWidth="",this.tableElement.style.display=""}_positionPlaceholder(){this.placeholder&&this.placeholder.parentNode&&(this.placeholder.style.width=this.table.columnManager.getWidth()+"px",this.placeholderContents.style.width=this.table.rowManager.element.clientWidth+"px",this.placeholderContents.style.marginLeft=this.scrollLeft+"px")}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}normalizeHeight(){this.activeRows.forEach((function(e){e.normalizeHeight()}))}adjustTableSize(){let e,t=this.element.clientHeight,i=!1;if("fill"===this.renderer.verticalFillMode){let s=Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height+(this.table.footerManager&&this.table.footerManager.active&&!this.table.footerManager.external?this.table.footerManager.getElement().getBoundingClientRect().height:0));if(this.fixedHeight){e=isNaN(this.table.options.minHeight)?this.table.options.minHeight:this.table.options.minHeight+"px";const t="calc(100% - "+s+"px)";this.element.style.minHeight=e||"calc(100% - "+s+"px)",this.element.style.height=t,this.element.style.maxHeight=t}else this.element.style.height="",this.element.style.height=this.table.element.clientHeight-s+"px",this.element.scrollTop=this.scrollTop;this.renderer.resize(),this.fixedHeight||t==this.element.clientHeight||(i=!0,this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw()),this.scrollBarCheck()}return this._positionPlaceholder(),i}reinitialize(){this.rows.forEach((function(e){e.reinitialize(!0)}))}blockRedraw(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1}restoreRedraw(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.handler,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRenderInPosition&&this.reRenderInPosition(),this.redrawBlockRenderInPosition=!1}redraw(e){const t=this.adjustTableSize();this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(t&&this.reRenderInPosition(),this.scrollHorizontal(this.scrollLeft))}resetScroll(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))}}class Te extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.containerElement=this.createContainerElement(),this.external=!1}initialize(){this.initializeElement()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}createContainerElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer-contents"),this.element.appendChild(e),e}initializeElement(){if(this.table.options.footerElement)if("string"==typeof this.table.options.footerElement)"<"===this.table.options.footerElement[0]?this.containerElement.innerHTML=this.table.options.footerElement:(this.external=!0,this.containerElement=document.querySelector(this.table.options.footerElement));else this.element=this.table.options.footerElement}getElement(){return this.element}append(e){this.activate(),this.containerElement.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e){this.activate(),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()}remove(e){e.parentNode.removeChild(e),this.deactivate()}deactivate(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)}activate(){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display=""))}redraw(){this.dispatch("footer-redraw")}}class Me extends e{constructor(e){super(e),this.el=null,this.abortClasses=["tabulator-headers","tabulator-table"],this.previousTargets={},this.listeners=["click","dblclick","contextmenu","mouseenter","mouseleave","mouseover","mouseout","mousemove","mouseup","mousedown","touchstart","touchend"],this.componentMap={"tabulator-cell":"cell","tabulator-row":"row","tabulator-group":"group","tabulator-col":"column"},this.pseudoTrackers={row:{subscriber:null,target:null},cell:{subscriber:null,target:null},group:{subscriber:null,target:null},column:{subscriber:null,target:null}},this.pseudoTracking=!1}initialize(){this.el=this.table.element,this.buildListenerMap(),this.bindSubscriptionWatchers()}buildListenerMap(){var e={};this.listeners.forEach((t=>{e[t]={handler:null,components:[]}})),this.listeners=e}bindPseudoEvents(){Object.keys(this.pseudoTrackers).forEach((e=>{this.pseudoTrackers[e].subscriber=this.pseudoMouseEnter.bind(this,e),this.subscribe(e+"-mouseover",this.pseudoTrackers[e].subscriber)})),this.pseudoTracking=!0}pseudoMouseEnter(e,t,i){this.pseudoTrackers[e].target!==i&&(this.pseudoTrackers[e].target&&this.dispatch(e+"-mouseleave",t,this.pseudoTrackers[e].target),this.pseudoMouseLeave(e,t),this.pseudoTrackers[e].target=i,this.dispatch(e+"-mouseenter",t,i))}pseudoMouseLeave(e,t){var i=Object.keys(this.pseudoTrackers),s={row:["cell"],cell:["row"]};(i=i.filter((t=>{var i=s[e];return t!==e&&(!i||i&&!i.includes(t))}))).forEach((e=>{var i=this.pseudoTrackers[e].target;this.pseudoTrackers[e].target&&(this.dispatch(e+"-mouseleave",t,i),this.pseudoTrackers[e].target=null)}))}bindSubscriptionWatchers(){var e=Object.keys(this.listeners),t=Object.values(this.componentMap);for(let i of t)for(let t of e){let e=i+"-"+t;this.subscriptionChange(e,this.subscriptionChanged.bind(this,i,t))}this.subscribe("table-destroy",this.clearWatchers.bind(this))}subscriptionChanged(e,t,i){var s=this.listeners[t].components,o=s.indexOf(e),n=!1;i?-1===o&&(s.push(e),n=!0):this.subscribed(e+"-"+t)||o>-1&&(s.splice(o,1),n=!0),"mouseenter"!==t&&"mouseleave"!==t||this.pseudoTracking||this.bindPseudoEvents(),n&&this.updateEventListeners()}updateEventListeners(){for(let e in this.listeners){let t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}track(e,t){var i=t.composedPath&&t.composedPath()||t.path,s=this.findTargets(i);s=this.bindComponents(e,s),this.triggerEvents(e,t,s),!this.pseudoTracking||"mouseover"!=e&&"mouseleave"!=e||Object.keys(s).length||this.pseudoMouseLeave("none",t)}findTargets(e){var t={};let i=Object.keys(this.componentMap);for(let s of e){let e=s.classList?[...s.classList]:[];if(e.filter((e=>this.abortClasses.includes(e))).length)break;let o=e.filter((e=>i.includes(e)));for(let e of o)t[this.componentMap[e]]||(t[this.componentMap[e]]=s)}return t.group&&t.group===t.row&&delete t.row,t}bindComponents(e,t){var i=Object.keys(t).reverse(),s=this.listeners[e],o={},n={};for(let e of i){let i,r=t[e],a=this.previousTargets[e];if(a&&a.target===r)i=a.component;else switch(e){case"row":case"group":if(s.components.includes("row")||s.components.includes("cell")||s.components.includes("group")){i=this.table.rowManager.getVisibleRows(!0).find((e=>e.getElement()===r)),t.row&&t.row.parentNode&&t.row.parentNode.closest(".tabulator-row")&&(t[e]=!1)}break;case"column":s.components.includes("column")&&(i=this.table.columnManager.findColumn(r));break;case"cell":s.components.includes("cell")&&(o.row instanceof w?i=o.row.findCell(r):t.row&&console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"))}i&&(o[e]=i,n[e]={target:r,component:i})}return this.previousTargets=n,o}triggerEvents(e,t,i){var s=this.listeners[e];for(let o in i)i[o]&&s.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}clearWatchers(){for(let e in this.listeners){let t=this.listeners[e];t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}}class ke{constructor(e){this.table=e,this.bindings={}}bind(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,i):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i]&&"function"==typeof this.bindings[e][i].bind)return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||this.table.options.debugInvalidComponentFuncs&&console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class Le extends e{constructor(e){super(e),this.requestOrder=0,this.loading=!1}initialize(){}load(e,t,i,s,o,n){var r=++this.requestOrder;return this.table.destroyed?Promise.resolve():(this.dispatchExternal("dataLoading",e),!e||0!=e.indexOf("{")&&0!=e.indexOf("[")||(e=JSON.parse(e)),this.confirm("data-loading",[e,t,i,o])?(this.loading=!0,o||this.alertLoader(),t=this.chain("data-params",[e,i,o],t||{},t||{}),t=this.mapParams(t,this.table.options.dataSendParams),this.chain("data-load",[e,t,i,o],!1,Promise.resolve([])).then((e=>{if(this.table.destroyed)console.warn("Data Load Response Blocked - Table has been destroyed");else{Array.isArray(e)||"object"!=typeof e||(e=this.mapParams(e,this.objectInvert(this.table.options.dataReceiveParams)));var t=this.chain("data-loaded",e,null,e);r==this.requestOrder?(this.clearAlert(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,s,void 0===n?!s:n))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")}})).catch((e=>{console.error("Data Load Error: ",e),this.dispatchExternal("dataLoadError",e),o||this.alertError(),setTimeout((()=>{this.clearAlert()}),this.table.options.dataLoaderErrorTimeout)})).finally((()=>{this.loading=!1}))):(this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,void 0===n?!s:n),Promise.resolve()))}mapParams(e,t){var i={};for(let s in e)i[t.hasOwnProperty(s)?t[s]:s]=e[s];return i}objectInvert(e){var t={};for(let i in e)t[e[i]]=i;return t}blockActiveLoad(){this.requestOrder++}alertLoader(){("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader)&&this.table.alertManager.alert(this.table.options.dataLoaderLoading||this.langText("data|loading"))}alertError(){this.table.alertManager.alert(this.table.options.dataLoaderError||this.langText("data|error"),"error")}clearAlert(){this.table.alertManager.clear()}}class De{constructor(e,t,i){this.table=e,this.events={},this.optionsList=t||{},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=i}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e,t=Array.from(arguments),i=t.shift();return this.events[i]&&this.events[i].forEach(((i,s)=>{let o=i.apply(this.table,t);s||(e=o)})),e}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="ExternalEvent:"+e[0],(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}}class Se{constructor(e){this.events={},this.subscriptionNotifiers={},this.dispatch=e?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=e?this._debugChain.bind(this):this._chain.bind(this),this.confirm=e?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=e}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t,i=1e4){this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort(((e,t)=>e.priority-t.priority)),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e.callback===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_chain(e,t,i,s){var o=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach(((e,i)=>{o=e.callback.apply(this,t.concat([o]))})),o):"function"==typeof s?s():s}_confirm(e,t){var i=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach(((e,s)=>{e.callback.apply(this,t)&&(i=!0)})),i}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e=Array.from(arguments),t=e.shift();this.events[t]&&this.events[t].forEach((t=>{t.callback.apply(this,e)}))}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}_debugChain(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._chain(...arguments)}_debugConfirm(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._confirm(...arguments)}}class Pe extends e{constructor(e){super(e)}_warnUser(){this.options("debugDeprecation")&&console.warn(...arguments)}check(e,t){var i="";return void 0===this.options(e)||(i="Deprecated Setup Option - Use of the %c"+e+"%c option is now deprecated",t?(i=i+", Please use the %c"+t+"%c option instead",this._warnUser(i,"font-weight: bold;","font-weight: normal;","font-weight: bold;","font-weight: normal;")):this._warnUser(i,"font-weight: bold;","font-weight: normal;"),!1)}checkMsg(e,t){return void 0===this.options(e)||(this._warnUser("%cDeprecated Setup Option - Use of the %c"+e+" %c option is now deprecated, "+t,"font-weight: normal;","font-weight: bold;","font-weight: normal;"),!1)}msg(e){this._warnUser(e)}}class ze{static register(e){ze.tables.push(e)}static deregister(e){var t=ze.tables.indexOf(e);t>-1&&ze.tables.splice(t,1)}static lookupTable(e,t){var i,s,o=[];if("string"==typeof e){if((i=document.querySelectorAll(e)).length)for(var n=0;n{e.widthFixed||e.reinitializeWidth(),(this.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(n=e),e.visible&&(i+=e.getWidth())})),n?(o=s-i+n.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(n.setWidth(0),this.table.modules.responsiveLayout.update()),o>0?n.setWidth(o):n.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e,t){var i,s,o=this.table.rowManager.element.getBoundingClientRect().width,n=0,r=0,a=0,l=[],h=[],d=0,c=0;function u(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function p(e,t,i,s){var o=[],n=0,r=0,l=0,h=a,d=0,c=0,m=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return u(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,n){var r=s?b(e):g(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,s;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(s=u(t),n+=s>i?s:i,e.definition.widthShrink&&(h.push({column:e,width:s>i?s:i}),d+=e.definition.widthShrink)):(l.push({column:e,width:0}),a+=e.definition.widthGrow||1))})),r=o-n,i=Math.floor(r/a),c=p(l,r,i,!1),l.length&&c>0&&(l[l.length-1].width+=c),l.forEach((function(e){r-=e.width})),(s=Math.abs(c)+r)>0&&d&&(c=p(h,s,Math.floor(s/d),!0)),c&&h.length&&(h[h.length-1].width-=c),l.forEach((function(e){e.column.setWidth(e.width)})),h.forEach((function(e){e.column.setWidth(e.width)}))}};class Oe extends s{constructor(e){super(e,"layout"),this.mode=null,this.registerTableOption("layout","fitData"),this.registerTableOption("layoutColumnsOnNewData",!1),this.registerColumnOption("widthGrow"),this.registerColumnOption("widthShrink")}initialize(){var e=this.table.options.layout;Oe.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode),this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){e.definition.widthGrow&&(e.definition.widthGrow=Number(e.definition.widthGrow)),e.definition.widthShrink&&(e.definition.widthShrink=Number(e.definition.widthShrink))}getMode(){return this.mode}layout(e){this.dispatch("layout-refreshing"),Oe.modes[this.mode].call(this,this.table.columnManager.columnsByIndex,e),this.dispatch("layout-refreshed")}}Oe.moduleName="layout",Oe.modes=He;class Ae extends s{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=t.deepClone(Ae.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);for(let e in this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}setHeaderFilterPlaceholder(e){this.langList.default.headerFilters.default=e}installLang(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}_setLangProp(e,t){for(let i in t)e[i]&&"object"==typeof e[i]?this._setLangProp(e[i],t[i]):e[i]=t[i]}setLocale(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langList[e]){let t=e.split("-")[0];this.langList[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=t.deepClone(this.langList.default||{}),"default"!=e&&function e(t,i){for(var s in t)"object"==typeof t[s]?(i[s]||(i[s]={}),e(t[s],i[s])):i[s]=t[s]}(this.langList[e],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}getLocale(e){return this.locale}getLang(e){return e?this.langList[e]:this.lang}getText(e,t){var i=(t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}_getLangElement(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}bind(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}_executeBindings(){for(let e in this.bindings)this.bindings[e].forEach((t=>{t(this.getText(e),this.lang)}))}}Ae.moduleName="localize",Ae.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All",counter:{showing:"Showing",of:"of",rows:"rows",pages:"pages"}},headerFilters:{default:"filter column...",columns:{}}}};class _e extends s{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return ze.lookupTable(e).forEach((e=>{this.table!==e&&t.push(e)})),t}send(e,t,i,s){var o=this.getConnections(e);o.forEach((e=>{e.tableComms(this.table.element,t,i,s)})),!o.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}receive(e,t,i,s){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,s);console.warn("Inter-table Comms Error - no such module:",t)}}_e.moduleName="comms";var Be=Object.freeze({__proto__:null,LayoutModule:Oe,LocalizeModule:Ae,CommsModule:_e});class Ie{constructor(e,t){this.bindStaticFunctionality(e),this.bindModules(e,Be,!0),t&&this.bindModules(e,t)}bindStaticFunctionality(e){e.moduleBindings={},e.extendModule=function(t,i,s){if(e.moduleBindings[t]){var o=e.moduleBindings[t][i];if(o)if("object"==typeof s)for(let e in s)o[e]=s[e];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",i)}else console.warn("Module Error - module does not exist:",t)},e.registerModule=function(t){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.registerModuleBinding(t)}))},e.registerModuleBinding=function(t){e.moduleBindings[t.moduleName]=t},e.findTable=function(e){var t=ze.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){var t=[],i=[],s=[];for(var o in this.modules={},e.moduleBindings){let n=e.moduleBindings[o],r=new n(this);this.modules[o]=r,n.prototype.moduleCore?this.modulesCore.push(r):n.moduleInitOrder?n.moduleInitOrder<0?t.push(r):i.push(r):s.push(r)}t.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),i.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),this.modulesRegular=t.concat(s.concat(i))}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class Ve extends e{constructor(e){super(e),this.element=this._createAlertElement(),this.msgElement=this._createMsgElement(),this.type=null,this.element.appendChild(this.msgElement)}_createAlertElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert"),e}_createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert-msg"),e.setAttribute("role","alert"),e}_typeClass(){return"tabulator-alert-state-"+this.type}alert(e,t="msg"){if(e){for(this.clear(),this.type=t;this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.add(this._typeClass()),"function"==typeof e&&(e=e()),e instanceof HTMLElement?this.msgElement.appendChild(e):this.msgElement.innerHTML=e,this.table.element.appendChild(this.element)}}clear(){this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.msgElement.classList.remove(this._typeClass())}}class Ne{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.alertManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.originalElement=null,this.componentFunctionBinder=new ke(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.deprecationAdvisor=new Pe(this),this.optionsList=new fe(this,"table constructor"),this.initialized=!1,this.destroyed=!1,this.initializeElement(e)&&(this.initializeCoreSystems(t),setTimeout((()=>{this._create()}))),ze.register(this)}initializeElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}initializeCoreSystems(e){this.columnManager=new Ee(this),this.rowManager=new xe(this),this.footerManager=new Te(this),this.dataLoader=new Le(this),this.alertManager=new Ve(this),this.bindModules(),this.options=this.optionsList.generate(Ne.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new De(this,this.options,this.options.debugEventsExternal),this.eventBus=new Se(this.options.debugEventsInternal),this.interactionMonitor=new Me(this),this.dataLoader.initialize(),this.footerManager.initialize()}_mapDeprecatedFunctionality(){}_clearSelection(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}_create(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this._rtlCheck(),this._buildElement(),this._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}_rtlCheck(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}_clearObjectPointers(){this.options.columns=this.options.columns.slice(0),Array.isArray(this.options.data)&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}_buildElement(){var e,t=this.element,i=this.options;if("TABLE"===t.tagName){this.originalElement=this.element,e=document.createElement("div");var s=t.attributes;for(var o in s)"object"==typeof s[o]&&e.setAttribute(s[o].name,s[o].value);t.parentNode.replaceChild(e,t),this.element=t=e}for(t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight)}_initializeTable(){var e=this.element,t=this.options;this.interactionMonitor.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore.forEach((e=>{e.initialize()})),e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&t.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular.forEach((e=>{e.initialize()})),this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}_loadInitialData(){this.dataLoader.load(this.options.data)}destroy(){var e=this.element;for(this.destroyed=!0,ze.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.destroy();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator"),this.externalEvents.dispatch("tableDestroyed")}_detectBrowser(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):e.indexOf("Mac OS")>-1?(this.browser="safari",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(e.slice(0,4))}initGuard(e,t){var i,s;return this.options.debugInitialization&&!this.initialized&&(e||(e=" "==(s="Error"==(i=(new Error).stack.split("\n"))[0]?i[2]:i[1])[0]?s.trim().split(" ")[1].split(".")[1]:s.trim().split("@")[0]),console.warn("Table Not Initialized - Calling the "+e+" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function."+(t?" "+t:""))),this.initialized}blockRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-blocking"),this.rowManager.blockRedraw(),this.columnManager.blockRedraw(),this.eventBus.dispatch("redraw-blocked")}restoreRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-restoring"),this.rowManager.restoreRedraw(),this.columnManager.restoreRedraw(),this.eventBus.dispatch("redraw-restored")}setData(e,t,i){return this.initGuard(!1,"To set initial data please use the 'data' property in the table constructor."),this.dataLoader.load(e,t,i,!1)}clearData(){this.initGuard(),this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){return this.initGuard(),this.dataLoader.load(e,t,i,!0,!0)}updateData(e){var t=0;return this.initGuard(),new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);o?(t++,o.updateData(e).then((()=>{--t||i()})).catch((t=>{s("Update Error - Unable to update row",e,t)}))):s("Update Error - Unable to find row",e)})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}))}addData(e,t,i){return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?this.rowManager.addRows(e,t,i).then((e=>{var t=[];e.forEach((function(e){t.push(e.getComponent())})),s(t)})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}updateOrAddData(e){var t=[],i=0;return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);i++,o?o.updateData(e).then((()=>{i--,t.push(o.getComponent()),i||s(t)})):this.rowManager.addRows(e).then((e=>{i--,t.push(e[0].getComponent()),i||s(t)}))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e){var t=this.rowManager.getRowFromPosition(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];this.initGuard(),Array.isArray(e)||(e=[e]);for(let i of e){let e=this.rowManager.findRow(i,!0);if(!e)return console.error("Delete Error - No matching row found:",i),Promise.reject("Delete Error - No matching row found");t.push(e)}return t.sort(((e,t)=>this.rowManager.rows.indexOf(e)>this.rowManager.rows.indexOf(t)?1:-1)),t.forEach((e=>{e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}addRow(e,t,i){return this.initGuard(),"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i,!0).then((e=>e[0].getComponent()))}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>i.getComponent())):this.rowManager.addRows(t).then((e=>e[0].getComponent()))}updateRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>Promise.resolve(i.getComponent()))):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}scrollToRow(e,t,i){var s=this.rowManager.findRow(e);return s?this.rowManager.scrollToRow(s,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}moveRow(e,t,i){var s=this.rowManager.findRow(e);this.initGuard(),s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e){var t=this.rowManager.findRow(e);return t?t.getPosition():(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.initGuard(!1,"To set initial columns please use the 'columns' property in the table constructor"),this.columnManager.setColumns(e)}getColumns(e){return this.columnManager.getComponents(e)}getColumn(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}getColumnDefinitions(){return this.columnManager.getDefinitionTree()}showColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}addColumn(e,t,i){var s=this.columnManager.findColumn(i);return this.initGuard(),this.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return this.initGuard(),t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}updateColumnDefinition(e,t){var i=this.columnManager.findColumn(e);return this.initGuard(),i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}moveColumn(e,t,i){var s=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);this.initGuard(),s?o?this.columnManager.moveColumn(s,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}scrollToColumn(e,t,i){return new Promise(((s,o)=>{var n=this.columnManager.findColumn(e);return n?this.columnManager.scrollToColumn(n,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}redraw(e){this.initGuard(),this.columnManager.redraw(e),this.rowManager.redraw(e)}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}on(e,t){this.externalEvents.subscribe(e,t)}off(e,t){this.externalEvents.unsubscribe(e,t)}dispatchEvent(){Array.from(arguments).shift(),this.externalEvents.dispatch(...arguments)}alert(e,t){this.initGuard(),this.alertManager.alert(e,t)}clearAlert(){this.initGuard(),this.alertManager.clear()}modExists(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}module(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}Ne.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,debugInvalidComponentFuncs:!0,debugInitialization:!0,debugDeprecation:!0,height:!1,minHeight:!1,maxHeight:!1,columnHeaderVertAlign:"top",popupContainer:!1,columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,rowHeight:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataLoaderErrorTimeout:3e3,dataSendParams:{},dataReceiveParams:{}},new Ie(Ne);class We extends Ne{}new Ie(We,be);class je{constructor(e){this.type=e,this.element=this._createElement()}_createElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e}getElement(){return this.element}getComponent(){return!1}getData(){return{}}getHeight(){return this.element.outerHeight}initialize(){}reinitialize(){}normalizeHeight(){}generateCells(){}reinitializeHeight(){}calcHeight(){}setCellHeight(){}clearCellHeight(){}}export{o as AccessorModule,d as AjaxModule,u as CalcComponent,p as CellComponent,c as ClipboardModule,E as ColumnCalcsModule,g as ColumnComponent,y as DataTreeModule,x as DownloadModule,L as EditModule,P as ExportModule,F as FilterModule,O as FormatModule,A as FrozenColumnsModule,_ as FrozenRowsModule,B as GroupComponent,V as GroupRowsModule,N as HistoryModule,W as HtmlTableImportModule,G as ImportModule,U as InteractionModule,X as KeybindingsModule,q as MenuModule,s as Module,K as MoveColumnsModule,J as MoveRowsModule,Y as MutatorModule,Z as PageModule,te as PersistenceModule,ie as PopupModule,se as PrintModule,je as PseudoRow,oe as ReactiveDataModule,ve as Renderer,ne as ResizeColumnsModule,re as ResizeRowsModule,ae as ResizeTableModule,le as ResponsiveLayoutModule,v as RowComponent,he as SelectRowModule,ue as SortModule,Ne as Tabulator,We as TabulatorFull,pe as TooltipModule,ge as ValidateModule}; -//# sourceMappingURL=tabulator_esm.min.js.map diff --git a/src/main/webapp/tabulator/dist/js/tabulator_esm.min.js.map b/src/main/webapp/tabulator/dist/js/tabulator_esm.min.js.map deleted file mode 100644 index 5b9a96f5..00000000 --- a/src/main/webapp/tabulator/dist/js/tabulator_esm.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator_esm.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/column/Column.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/History.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/core/defaults/options.js","../../src/js/core/TabulatorFull.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic elOffset(el){\n\t\tvar box = el.getBoundingClientRect();\n\n\t\treturn {\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\t\t};\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\n\n\toutput.forEach(function(item){\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t});\n\n\treturn encoded.join(\"&\");\n}\n\nexport default function(url, config, params){\n\tif(url){\n\t\tif(params && Object.keys(params).length){\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\n\t\t\t\tconfig.method = \"get\";\n\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t}else{\n\t\toutput.push({key:prefix, value:data});\n\t}\n\n\treturn output;\n}\n\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = new FormData();\n\n\t\t\toutput.forEach(function(item){\n\t\t\t\tform.append(item.key, item.value);\n\t\t\t});\n\n\t\t\treturn form;\n\t\t},\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(params, ajaxParams);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\tmethod: \"GET\",\n};","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\n\n\t\t//set body content if not GET request\n\t\tif(config.method.toUpperCase() != \"GET\"){\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\n\t\t\tif(contentType){\n\n\t\t\t\tfor(var key in contentType.headers){\n\t\t\t\t\tif(!config.headers){\n\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\n\t\t\t//configure headers\n\t\t\tif(typeof config.headers === \"undefined\"){\n\t\t\t\tconfig.headers = {};\n\t\t\t}\n\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\n\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t}\n\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\tif(typeof config.mode === \"undefined\"){\n\t\t\t\tconfig.mode = \"cors\";\n\t\t\t}\n\n\t\t\tif(config.mode == \"cors\"){\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\n\t\t\t\t}\n \n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\n\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//send request\n\t\t\tfetch(url, config)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\tresolve([]);\n\t\t}\n\t});\n}","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPaseOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPaseOrigin(e){\n\t\tvar valid = true;\n\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","export default {\n\treplace:function(rows){\n\t\treturn this.table.setData(rows);\n\t},\n\tupdate:function(rows){\n\t\treturn this.table.updateOrAddData(rows);\n\t},\n\tinsert:function(rows){\n\t\treturn this.table.addData(rows);\n\t},\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\n\t\t\t//check if headers are present by title\n\t\t\tdata[0].forEach(function(value){\n\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t});\n\n\t\t\t\tif(column){\n\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t}else{\n\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//check if column headers are present by field\n\t\t\tif(!headerFindSuccess){\n\t\t\t\theaderFindSuccess = true;\n\t\t\t\tcolumnMap = [];\n\n\t\t\t\tdata[0].forEach(function(value){\n\t\t\t\t\tvar column = columns.find(function(column){\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t}else{\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(!headerFindSuccess){\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//remove header row if found\n\t\t\tif(headerFindSuccess){\n\t\t\t\tdata.shift();\n\t\t\t}\n\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\n\t\t\t\titem.forEach(function(value, i){\n\t\t\t\t\tif(columnMap[i]){\n\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n};","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(typeof contents){\n\t\t\tcase \"object\":\n\t\t\t\tif(contents instanceof Node){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = \"\";\n\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[i]] = {};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn Number(sum) + Number(value);\n\t\t\t});\n\n\t\t\toutput = output / values.length;\n\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t}\n\n\t\treturn parseFloat(output).toString();\n\t},\n\t\"max\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value > output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"min\":function(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function(value){\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif(value < output || output === null){\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\n\t},\n\t\"sum\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t});\n\t\t}\n\n\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t},\n\t\"concat\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\toutput = values.reduce(function(sum, value){\n\t\t\t\treturn String(sum) + String(value);\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"count\":function(values, data, calcParams){\n\t\tvar output = 0;\n\n\t\tif(values.length){\n\t\t\tvalues.forEach(function(value){\n\t\t\t\tif(value){\n\t\t\t\t\toutput ++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tif(!this.topInitialized){\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
              \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
              \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\t\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\n\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 1){\n\t\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\trowData.push(\"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\n\n\tfunction fillSymbols(index){\n\t\tvar symbol = mask[index];\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\n\t\t\tel.value = el.value + \"\" + symbol;\n\t\t\tfillSymbols(index+1);\n\t\t}\n\t}\n\n\tel.addEventListener(\"keydown\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\tswitch(mask[index]){\n\t\t\t\t\tcase maskLetter:\n\t\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskNumber:\n\t\t\t\t\t\tif(isNaN(char)){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskWildcard:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(char !== mask[index]){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (e) => {\n\t\tif(e.keyCode > 46){\n\t\t\tif(options.maskAutoFill){\n\t\t\t\tfillSymbols(el.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\n\tif(!el.placeholder){\n\t\tel.placeholder = mask;\n\t}\n\n\tif(options.maskAutoFill){\n\t\tfillSymbols(el.value.length);\n\t}\n}","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\n\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\n\t\t//handle empty values\n\t\tif(!as && as!== 0){\n\t\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t\t}else if(!bs && bs!== 0){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\ta = String(as).toLowerCase();\n\t\t\tb = String(bs).toLowerCase();\n\t\t\tif(a === b) return 0;\n\t\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\ta = a.match(rx);\n\t\t\tb = b.match(rx);\n\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\twhile(i < L){\n\t\t\t\ta1= a[i];\n\t\t\t\tb1= b[i++];\n\t\t\t\tif(a1 !== b1){\n\t\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tinput.scrollHeight;\n\t\t\tinput.style.height = input.scrollHeight + \"px\";\n\t\t\tcell.getRow().normalizeHeight();\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\t//submit new value on blur\n\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"hh:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"hh:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\t\t\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(newRow === true){\n\t\t\t\t\t\tnewRow = this.table.addRow({});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tcell.getComponent().navigateNext();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\n\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t}else{\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\tcellEditor, component, params;\n\t\t\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\t\t\t\t\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\t\t\t\t\t\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\tif(self.currentCell === cell){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\t\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\telement.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\t\t\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\n\t\t\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(){\n\t\tvar output = [];\n\t\t\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows){\n\t\t\n\t\tvar columns = [];\n\t\tvar exportRows = [];\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\t\t\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\tindex = this.table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\n\n\t//equal to\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal == filterVal ? true : false;\n\t},\n\n\t//less than\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal < filterVal ? true : false;\n\t},\n\n\t//less than or equal to\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal <= filterVal ? true : false;\n\t},\n\n\t//greater than\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal > filterVal ? true : false;\n\t},\n\n\t//greater than or equal to\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal >= filterVal ? true : false;\n\t},\n\n\t//not equal to\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\n\t\treturn rowVal != filterVal ? true : false;\n\t},\n\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\n\n\t\tif(typeof filterVal == \"string\"){\n\t\t\tfilterVal = new RegExp(filterVal);\n\t\t}\n\n\t\treturn filterVal.test(rowVal);\n\t},\n\n\t//contains the string\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//contains the keywords\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((keyword) =>{\n\t\t\tif(value.includes(keyword)){\n\t\t\t\tmatches.push(true);\n\t\t\t}\n\t\t});\n\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\n\t},\n\n\t//starts with the string\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//ends with the string\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t}else{\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\n\t\tif(Array.isArray(filterVal)){\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\treturn false;\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterFocus(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.getHeaderFilterValue(column);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t}\n\t}\n\n\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.setHeaderFilterValue(column, value);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.value;\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\n\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\n\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\twhile (rgx.test(integer)){\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t}\n\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\t\t\tvalue = data[formatterParams.urlField];\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\n\t\t\t\treturn value;\n\t\t\t}else if(typeof invalid === \"function\"){\n\t\t\t\treturn invalid(value);\n\t\t\t}else{\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (invalid === true) {\n\t\t\t\treturn value;\n\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\treturn invalid(value);\n\t\t\t} else {\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\n\trow.watchPosition((position) => {\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
              \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\n\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\t\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.modules.frozen.edge){\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\tif(column.modules.frozen.edge){\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\t\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t}else{\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowDelete: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n};","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos >= 0){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollPageDown:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = rowManager.element.scrollHeight;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\tif(newPos <= scrollMax){\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t}else{\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\n\t},\n\tscrollToStart:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollToEnd:function(e){\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif(rowManager.displayRowsCount){\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tnavPrev:function(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\tundo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.undo();\n\t\t\t}\n\t\t}\n\t},\n\n\tredo:function(e){\n\t\tvar cell = false;\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif(!cell){\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.redo();\n\t\t\t}\n\t\t}\n\t},\n\n\tcopyToClipboard:function(e){\n\t\tif(!this.table.modules.edit.currentCell){\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\n\t\t\t}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\ttoRow.update(fromRow.getData());\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\treplace:function(fromRow, toRow, fromTable){\n\t\tif(toRow){\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\ttoRow.delete();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n};\n\nMoveRows.prototype.senders = {\n\tdelete:function(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default {};","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\n\t\t\t\t\ttop = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, data;\n\n\t\t//if cookie exists, decode and load column data into tabulator\n\t\tif(cookiePos > -1){\n\t\t\tcookie = cookie.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(0, end);\n\t\t\t}\n\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t}\n};\n","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(id, type, data){\n\t\tvar expireDate = new Date();\n\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\n\t\t//block editor from taking action while resizing is taking place\n\t\tif(self.startColumn.modules.edit){\n\t\t\tself.startColumn.modules.edit.blocked = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\n\n\t\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\n\t\t//block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.selectable !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectable && !this.table.options.selectablePersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\n\t\t\telement.classList.add(\"tabulator-selectable\");\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\n\t\t\t\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\telement.classList.add(\"tabulator-unselectable\");\n\t\t\telement.classList.remove(\"tabulator-selectable\");\n\t\t}\n\t}\n\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectable !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectable){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectable !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectable){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\n\t\t\t\tif(this.table.options.selectableRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\n\t\t\temptyAlign = 1;\n\t\t}else{\n\t\t\t//compare valid values\n\t\t\treturn a - b;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
              \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\n\t\tparams.sort = sorters;\n\n\t\treturn params;\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\n\t\tif(column.definition.headerSort !== false){\n\n\t\t\tcolEl = column.getElement();\n\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\n\t\treturn sorters;\n\t}\n\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\n\t\t});\n\n\t\tself.sortList = newSortList;\n\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\n\t\t\tif(field){\n\n\t\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Sort.sorters[sorter];\n\t}\n\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\n\t\tself.clearColumnHeaders();\n\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\n\t\t\t\t\tif(sortObj){\n\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t}\n\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn !isNaN(value);\n\t},\n\n\t//must be a string\n\tstring: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn isNaN(value);\n\t},\n\n\t//maximum value\n\tmax: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) <= parameters;\n\t},\n\n\t//minimum value\n\tmin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) >= parameters;\n\t},\n\n\t//starts with value\n\tstarts: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\n\t},\n\n\t//ends with value\n\tends: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\n\t},\n\n\n\t//minimum string length\n\tminLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length >= parameters;\n\t},\n\n\t//maximum string length\n\tmaxLength: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length <= parameters;\n\t},\n\n\t//in provided value list\n\tin: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar reg = new RegExp(parameters);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//value must be unique in this column\n\tunique: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\tvar unique = true;\n\n\t\tvar cellData = cell.getData();\n\t\tvar column = cell.getColumn()._getSelf();\n\n\t\tthis.table.rowManager.rows.forEach(function(row){\n\t\t\tvar data = row.getData();\n\n\t\t\tif(data !== cellData){\n\t\t\t\tif(value == column.getFieldValue(data)){\n\t\t\t\t\tunique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn unique;\n\t},\n\n\t//must have a value\n\trequired:function(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\n\t\t\t\tif(validator){\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\t\t\t\t}\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = field.split(\".\")[0];\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\n\n\t\t\tif(this.vDomTopPad < 0){\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t}\n\n\t\t\tif(index < 1){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(rows.length){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\n\t\tif(this.redrawBlock){\n\t\t\tif(callback){\n\t\t\t\tcallback();\n\t\t\t}else{\n\t\t\t\tthis.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tconst resized = this.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\n\t\t\tif(resized) {\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\t\t\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, match;\n\n\t\tif(typeof query === \"string\"){\n\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\tif(matches.length){\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.matchElement(query);\n\n\t\t\tif(match){\n\t\t\t\tresults.push(match);\n\t\t\t}\n\t\t}else if(Array.isArray(query)){\n\t\t\tquery.forEach(function(item){\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\n\t\t\t});\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","export default {\n\t\"default\":{ //hold default locale text\n\t\t\"groups\":{\n\t\t\t\"item\":\"item\",\n\t\t\t\"items\":\"items\",\n\t\t},\n\t\t\"columns\":{\n\t\t},\n\t\t\"data\":{\n\t\t\t\"loading\":\"Loading\",\n\t\t\t\"error\":\"Error\",\n\t\t},\n\t\t\"pagination\":{\n\t\t\t\"page_size\":\"Page Size\",\n\t\t\t\"page_title\":\"Show Page\",\n\t\t\t\"first\":\"First\",\n\t\t\t\"first_title\":\"First Page\",\n\t\t\t\"last\":\"Last\",\n\t\t\t\"last_title\":\"Last Page\",\n\t\t\t\"prev\":\"Prev\",\n\t\t\t\"prev_title\":\"Prev Page\",\n\t\t\t\"next\":\"Next\",\n\t\t\t\"next_title\":\"Next Page\",\n\t\t\t\"all\":\"All\",\n\t\t\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\n\t\t},\n\t\t\"headerFilters\":{\n\t\t\t\"default\":\"filter column...\",\n\t\t\t\"columns\":{}\n\t\t}\n\t},\n};","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}else{\n\t\t\t\t\t\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw();\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\n\n\tscrollToRowPosition:\"top\",\n\tscrollToRowIfVisible:true,\n\n\tscrollToColumnPosition:\"left\",\n\tscrollToColumnIfVisible:true,\n\n\trowFormatter:false,\n\trowFormatterPrint:null,\n\trowFormatterClipboard:null,\n\trowFormatterHtmlOutput:null,\n\n\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;","export default class PseudoRow {\n\n\tconstructor (type){\n\t\tthis.type = type;\n\t\tthis.element = this._createElement();\n\t}\n\n\t_createElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-row\");\n\t\treturn el;\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tgetComponent(){\n\t\treturn false;\n\t}\n\n\tgetData(){\n\t\treturn {};\n\t}\n\n\tgetHeight(){\n\t\treturn this.element.outerHeight;\n\t}\n\n\tinitialize(){}\n\n\treinitialize(){}\n\n\tnormalizeHeight(){}\n\n\tgenerateCells(){}\n\n\treinitializeHeight(){}\n\n\tcalcHeight(){}\n\n\tsetCellHeight(){}\n\n\tclearCellHeight(){}\n}"],"names":["CoreFeature","constructor","table","this","reloadData","data","silent","columnsChanged","dataLoader","load","undefined","langText","modules","localize","getText","arguments","langBind","bind","langLocale","getLocale","commsConnections","comms","getConnections","commsSend","send","layoutMode","layout","getMode","layoutRefresh","force","subscribe","eventBus","unsubscribe","subscribed","key","subscriptionChange","dispatch","chain","confirm","dispatchExternal","externalEvents","subscribedExternal","subscriptionChangeExternal","options","setOption","value","deprecationCheck","oldOption","newOption","deprecationAdvisor","check","deprecationCheckMsg","msg","checkMsg","deprecationMsg","module","Helpers","static","el","offsetWidth","offsetHeight","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft","obj","clone","list","objectProto","__proto__","arrayProto","i","Object","assign","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","Popup","element","parent","super","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","blurEventsBound","renderedCallback","visible","hideable","classList","add","blurEvent","hide","escEvent","_escapeCheck","destroyBinding","tableDestroyed","destroyed","popupContainer","querySelector","console","warn","_checkContainerIsParent","body","parentNode","renderCallback","callback","containerEventCoords","e","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","elOffset","elementPositionCoords","position","containerOffset","offset","show","origin","parentEl","coords","HTMLElement","style","appendChild","_fitToScreen","addEventListener","stopPropagation","scrollTop","right","Math","max","scrollHeight","parseInt","isVisible","hideOnBlur","setTimeout","rowManager","keyCode","blockHide","restoreHide","removeEventListener","removeChild","child","Module","name","_handler","initialize","registerTableOption","optionsList","register","registerColumnOption","columnManager","registerTableFunction","func","args","initGuard","registerComponentFunction","component","handler","componentFunctionBinder","registerDataHandler","priority","registerDataPipelineHandler","registerDisplayHandler","registerDisplayPipelineHandler","displayRows","adjust","lookupIndex","index","length","displayPipeline","getDisplayRows","activeRows","refreshData","renderInPosition","refreshActiveData","footerAppend","footerManager","append","footerPrepend","prepend","footerRemove","remove","popup","menuEl","menuContainer","alert","content","type","alertManager","clearAlert","clear","Accessor","allowedTypes","initializeColumn","transformRow","column","config","forEach","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colComponent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","concat","push","serializeParams","encoded","encodeURIComponent","join","url","keys","method","toLowerCase","includes","json","headers","JSON","stringify","form","FormData","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","call","previousData","generateConfig","sendRequest","defaultConfig","ajaxRequesting","then","ajaxResponse","Promise","reject","contentType","resolve","ajaxContentType","Accept","mode","location","credentials","fetch","response","ok","catch","error","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","export","generateExportList","clipboardCopyConfig","clipboardCopyStyled","generateHTMLTable","generatePlainContent","clipboardData","setData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","rowData","columns","col","getKey","range","internal","sel","textRange","getSelection","createRange","selectNodeContents","toString","removeAllRanges","addRange","selection","createTextRange","moveToElementText","select","execCommand","action","pasteActions","parser","pasteParsers","rows","checkPaseOrigin","getPasteData","modExists","mutateData","mutator","valid","target","tagName","edit","currentCell","getData","replace","update","updateOrAddData","insert","addData","headerFindSuccess","columnMap","split","find","title","trim","field","columnsByIndex","shift","CalcComponent","_row","Proxy","get","receiver","handle","transform","getElement","getTable","getCells","cells","cell","getCell","_getSelf","CellComponent","_cell","getValue","getOldValue","getInitialValue","initialValue","getRow","getType","getField","getColumn","setValue","mutate","restoreOldValue","setValueActual","restoreInitialValue","checkHeight","Cell","oldValue","height","width","minWidth","loaded","build","generateElement","setWidth","_configureCell","createElement","className","setAttribute","textAlign","hozAlign","vertAlign","display","alignItems","bottom","middle","justifyContent","center","cssClass","_generateContents","val","innerHTML","Node","firstChild","cellRendered","containerOnly","layoutElement","setValueProcessData","cellEdited","changed","widthStyled","clearWidth","getWidth","setMinWidth","minWidthStyled","setMaxWidth","maxWidth","maxWidthStyled","reinitializeHeight","clearHeight","setHeight","heightStyled","getHeight","delete","redrawBlock","deleteCell","calcs","getIndex","getCellIndex","ColumnComponent","_column","getDefinition","getTitleDownload","isGroup","toggle","getSubColumns","getParentColumn","Column","scrollTo","ifVisible","scrollToColumn","move","to","after","toColumn","findColumn","moveColumn","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","updateDefinition","updates","result","reinitializeWidth","rerenderColumns","maxInitialWidth","variableHeight","headerVertical","headerHozAlign","headerWordWrap","editableTitle","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","widthFixed","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","columnHeaderVertAlign","defaults","columnDefaults","generate","defaultOptionList","checkDefinition","indexOf","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","_buildColumnHeaderTitle","focus","text","_formatColumnHeaderTitle","contents","dataObj","structure","columnRendered","verticalAlign","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","clearVerticalAlign","paddingTop","getFirstColumn","getLastColumn","getColumns","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","splice","setWidthActual","isNaN","floor","clientWidth","min","checkCellHeights","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","getLeftOffset","offsetLeft","ceil","cellCount","deregisterColumn","generateCell","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","fitToData","setTo","addColumn","defaultOptions","RowComponent","getPosition","watchPosition","scrollToRow","moveToRow","updateData","normalizeHeight","reformat","reinitialize","getNextRow","nextRow","getPrevRow","prevRow","Row","manualHeight","outerHeight","initialized","positionWatchers","created","create","detachElement","generateCells","inFragment","deleteCells","renderer","renderRowCells","rowFormatter","rerenderRowCells","rendered","deinitialize","deinitializeHeight","children","maxHeight","rowHeight","resizableRows","updatedData","newRowData","elVisible","tempData","parse","attrname","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","before","toRow","findRow","moveRowActual","deleteActual","blockRedraw","detachModules","deleteRow","wipe","isDisplayed","setPosition","getGroup","group","avg","values","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","count","unique","filter","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","topRow","botRow","topInitialized","botInitialized","recalcAfterBlock","cellValueChanged","initializeColumnCheck","rowsUpdated","scrollHorizontal","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","visibleRows","adjustForScrollbar","restoreRedraw","resizeHolderWidth","getResults","userRecalc","headersElement","recalc","redraw","blockCheck","viewable","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","adjustTableSize","reinitializeCalcs","getContentsElement","insertBefore","nextSibling","scrollLeft","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","generateTopRow","generateBottomRow","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","pos","disable","enable","format","formatter","getFormatter","paramKey","hasTopCalcs","hasBottomCalcs","results","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","groups","rtl","paddingLeft","paddingRight","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","initializeRow","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","tableRedrawing","getRows","reinitializeRowChildren","firstCol","getFirstVisibleColumn","dataTreeElementColumn","getTreeChildren","redrawNeeded","childArray","controlEl","generateControlElement","cloneNode","marginRight","marginLeft","getComputedStyle","getPropertyValue","oldControl","replaceChild","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sort","sub","childData","childRow","getTreeParentRoot","childIndex","findChildIndex","recurse","getChildField","csv","setFileContents","delimiter","fileContents","depth","bom","jsonLines","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","compression","compress","writeOptions","bookType","bookSST","generateSheet","merges","worksheet","s","c","r","a","b","j","Date","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","active","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","Download","mimeType","Blob","deprecatedOptionsCheck","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","blob","downloadEncoder","URL","createObjectURL","navigator","msSaveOrOpenBlob","click","commsReceived","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","ctrlKey","metaKey","maskAutoFill","placeholder","defaultDownloaders","Edit","editor","onRendered","success","cancel","editorParams","_initializeParams","displayItems","currentItems","focusedItem","input","_createInputElement","listEl","_createListElement","initialValues","isFilter","filterTimeout","filtered","typing","listIteration","lastAction","filterTerm","actions","_deprecatedOptionsCheck","_initializeValue","_onRendered","listItemFormatter","sortValuesList","searchFunc","searchingPlaceholder","defaultValue","multiselect","headerFilterInitialListGen","cellEl","clickStop","preventScroll","_preventPopupBlur","_preventBlur","_inputKeyDown","_setListWidth","attribs","elementAttributes","clearable","padding","boxSizing","autocomplete","cursor","caretColor","getAttribute","_bindInputEvents","valueCheck","valueKeys","verticalNavigation","placeholderLoading","placeholderEmpty","filterDelay","emptyValue","freetext","filterFunc","filterRemote","allowEmpty","listOnEmpty","valuesLookup","valuesURL","_inputFocus","_inputClick","_inputBlur","_inputSearch","_inputKeyUp","rebuildOptionsList","_filter","clearTimeout","_filterList","_resolveValue","_clearChoices","_keyUp","_keyDown","_keySide","_keyEnter","_keyEsc","_keyHomeEnd","_keyTab","_keySelectLetter","_keyAutoCompLetter","_chooseItem","stopImmediatePropagation","_focusItem","_cancel","_scrollToValue","character","fromCharCode","label","startsWith","scrollIntoView","behavior","block","inline","_generateOptions","_sortOptions","_buildList","_showList","isInteger","_filterOptions","iteration","_ajaxRequest","_uniqueColumnValues","valuesLookupField","_addPlaceholder","responseValues","_parseList","_clearList","term","urlBuilder","getColumnByField","inputValues","entries","map","_parseListItem","option","level","_parseListGroup","itemParams","selected","original","sorter","_defaultSortFunction","_sortGroup","as","bs","a1","b1","L","rx","rd","emptyAlign","isFinite","test","_defaultFilterFunc","_filterItem","matches","_buildItem","itemFormatter","_groupClick","_itemClick","_styleItem","startVis","blur","cellValue","search","onChange","selectContents","textarea","vertNav","whiteSpace","resize","heightNow","shiftKey","shiftEnterSubmit","selectionStart","number","step","blurFunc","date","inputFormat","DT","DateTime","luxon","convertDate","isDateTime","fromISO","fromFormat","toFormat","luxDate","toISO","relatedTarget","rangeParent","explicitOriginalTarget","time","newDatetime","luxTime","datetime","luxDateTime","List","star","self","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","browser","buildStar","starHolder","nextStar","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","trueValueSet","falseValueSet","marginTop","checkedValue","checked","trueValue","falseValue","indeterminate","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellIsEdited","clearEdited","editCell","cellCancelEdit","bindEditor","updateCellClass","columnDeleteCheck","rowDeleteCheck","rowEditableCheck","cancelEdit","keybindingNavigateNext","newRow","addRow","edited","allowEdit","nextCell","findPrevEditableCell","findNextEditableCell","prevCell","editable","getCurrentCell","clearEditor","cellEditCancelled","contains","button","focusCellNoEvent","forceEdit","focusScrollAdjust","getRenderMode","topEdge","bottomEdge","rowEl","offsetTop","leftEdge","rightEdge","leftMargin","rightMargin","renderHorizontal","vDomPadLeft","cellEditor","cellClick","cellEditing","validationMode","editIndex","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","generateTable","generateTableElement","getVisibleRows","selectRow","selectedRows","pagination","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","visProp","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","generateHeaderElement","generateGroupElement","generateCalcElement","generateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","cellStyle","cellWrapper","formatCells","formatExportValue","align","holder","htmlOutputConfig","from","props","lookup","color","fromStyle","prop","filterVal","rowVal","filterParams","regex","RegExp","like","keywords","separator","keyword","matchAll","starts","ends","endsWith","in","Filter","filterList","headerFilters","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","generatePlaceholder","filterMode","remoteFilterParams","initialFilter","setFilter","initialHeaderFilter","placeholderHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","onRenderedCallback","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterPlaceholder","contentsElement","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","sign","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","abs","link","urlPrefix","labelField","labelTraverse","path","urlField","image","src","urlSuffix","empty","truthy","allowTruthy","tick","tickElement","cross","crossElement","outputFormat","invalid","invalidPlaceholder","isValid","timezone","setZone","datetimediff","suffix","humanize","now","diff","toHuman","traffic","percentValue","colors","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","innerText","responsiveCollapse","responsiveLayout","toggleList","isOpen","rowSelection","checkbox","selectableRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","initializationMode","layoutCell","reinitializeColumns","blockLayout","unblockLayout","margin","edge","frozenCheck","frozen","layoutCalcRows","layoutGroupCalcs","groupList","layoutColumnPosition","allCells","leftParents","marginValue","getColGroupParentElement","reinitializeRows","getTableElement","_calcSpace","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","frozenRows","initializeRows","rowType","isFrozen","styleRows","styleRow","GroupComponent","groupManager","getParentGroup","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","old","elementContents","arrowElement","createElements","addBindings","createValueGroups","elementsOnly","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","groupToggleElement","groupID","groupKey","headerGenerator","insertRow","conformRowData","toIndex","updateGroupRows","scrollHeader","getRowIndex","removeRow","groupValues","generateGroupHeaderContents","removeGroup","getHeadersAndRows","_visSet","groupClosedShowCalcs","prev","includeChildren","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","_blockRedrawing","_restore_redrawing","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","lang","items","getRealColumns","lookupFunc","prevValue","tableElement","assignRowToGroup","moveRowInArray","getGroupedData","toGroup","fromGroup","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","countGroups","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","checkBasicModeGroupHeaderWidth","onlyGroupHeaders","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","newValue","undoers","redoers","_rebindRow","oldRow","cellEdit","rowAdd","addRowActual","rowMove","getRowFromPosition","regenerateRowPositions","reRenderInPosition","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","originalElement","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","attributes","optionsArr","attrib","_attribValue","_findCol","exists","textContent","replaceAll","registeredDefaults","inQuote","nextChar","array","Import","importFromFile","importFormat","loadDataCheck","loadData","importData","lookupImporter","structureData","err","importer","importers","extension","pickFile","extensions","accept","file","files","reader","FileReader","importReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","onload","onerror","parsedData","autoColumns","structureArrayToObject","structureArrayToColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowMouseDown","rowMouseUp","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellMouseDown","cellMouseUp","cellTap","cellDblTap","cellTapHold","headerClick","headerDblClick","headerContext","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","headerMouseDown","headerMouseUp","headerTap","headerDblTap","headerTapHold","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupMouseDown","groupMouseUp","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tap","tapDbl","tapHold","initializeExternalEvents","cellContentsSelectionFixer","clearTouchWatchers","selectNode","subscriptionChanged","added","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","noTouch","dispatchEvent","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","bindings","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","binding","mapBinding","symbolsList","ctrl","meta","code","checkBinding","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","displayRowsCount","scrollMax","navLeft","navRight","Menu","nestedMenuBlock","currentComponent","rootPopup","initializeRowWatchers","initializeGroupWatchers","rowContextMenu","loadMenuEvent","on","rowClickMenu","rowDblClickMenu","groupContextMenu","groupClickMenu","groupDblClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerDblClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","dblClickMenu","headerMenuEl","icon","headerMenuIcon","menu","loadMenu","parentPopup","itemEl","disabled","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","colEl","mousemove","which","startMove","bindTouchEvents","nextColWidth","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","passive","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","moveColumnActual","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connection","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connections","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","initializeCell","mouseup","tableRowDrop","previousSibling","rowHandle","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","pointerEvents","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","elementRowDrop","connectionTables","query","prototype","querySelectorAll","dropEvent","tabulatorElementDropEvent","connect","disconnect","dropComplete","sender","movableRowsSender","senders","movableRowsReceiver","receivers","fromRow","fromTable","toTable","Mutator","enabled","transformCell","mutateLink","lookupMutator","mutators","mutatorEdit","links","linkCell","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","pages","Page","progressiveLoad","pageCounterElement","pageCounter","page","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","footerRedraw","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","testElRow","testElCell","paginationSize","visibility","generatePageSizeSelectList","setPageSize","dir","loading","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","counter","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","paginationInitialPage","paginationButtonCount","setMaxRows","trigger","_setPageCounter","_setPageButtons","leftSize","rightSize","_generatePageButton","start","end","actualStartRow","actualRowPageSize","actualRows","finally","last_page","last_row","addRows","progressiveLoadDelay","footer","containerElement","scrollWidth","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","setItem","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","localStorageTest","testKey","removeItem","persistence","retrievedData","persistenceMode","persistenceID","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retrieveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","setColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","current","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","definitions","excludedKeys","defStore","colDef","moduleInitOrder","defaultReaders","defaultWriters","_componentPopupCall","loadPopupEvent","rowContextPopup","rowClickPopup","rowDblClickPopup","groupContextPopup","groupClickPopup","groupDblClickPopup","headerContextPopup","loadPopupTableColumnEvent","headerClickPopup","headerDblClickPopup","headerPopup","initializeColumnHeaderPopup","contextPopup","loadPopupTableCellEvent","clickPopup","dblClickPopup","headerPopupEl","headerPopupIcon","loadPopup","contentsEl","Print","manualBlock","beforeprintEventHandler","afterprintEventHandler","printAsHtml","replaceTable","cleanup","destroy","printFullscreen","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","ReactiveData","origFuncs","currentVersion","reactiveData","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","apply","getRowFromDataObject","pop","startRow","newRows","reverse","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","unwatchRow","ResizeColumns","startColumn","startWidth","latestX","initialNextColumn","layoutColumnHeader","initializeEventWatchers","layoutCellHandles","deInitializeComponent","resizeHandle","columnLayoutUpdated","deInitializeColumn","columnWidthUpdated","resizable","reinitializeColumn","frozenColumnOffset","frozenOffset","handleEl","nearestColumn","_checkResizability","handleDown","_mouseDown","oldWidth","parentElement","mouseMove","blockedBefore","blockedAfter","startDiff","moveDiff","resizableColumnFit","colWidth","browserSlow","mouseUp","ResizeRows","startHeight","prevHandle","prevHandleDown","screenY","ResizeTable","visibilityObserver","resizeObserver","containerObserver","tableHeight","tableWidth","containerHeight","containerWidth","autoResize","initialRedraw","tableStyle","IntersectionObserver","ResizeObserver","initializeVisibilityObserver","entry","browserMobile","nodeHeight","contentRect","nodeWidth","redrawTable","observe","fixedHeight","tableResized","isIntersecting","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","generateCollapsedRowContent","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","responsive","order","generateCollapsedContent","hideColumn","colCount","showColumn","working","getFlexBaseWidth","headerVisible","activeRowsCount","renderEmptyScroll","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","rowRetrieve","selectablePersistence","_deselectRow","prevSelected","_rowSelectionChanged","endSelect","checkRowSelectability","_clearSelection","lastClickedRowIdx","getDisplayRowIndex","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","selectableCheck","_selectRow","rowMatch","change","changes","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","deselected","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","string","locale","localeCompare","boolean","calc","d","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortClickElement","headerSortElement","setColumnHeaderSortIcon","columnHeaderSortMulti","newSortList","findSorter","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","setColumnHeader","_sortItems","sortEl","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","Tooltip","tooltipSubscriber","headerSubscriber","timeout","popupInstance","headerTooltip","mousemoveCheck","mouseoutCheck","tooltip","clearPopup","loadTooltip","tooltipDelay","parameters","float","numeric","minLength","maxLength","cellData","required","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","editValidate","editorClear","editedClear","previousValue","validate","cancelled","validator","_extractValidator","substring","_buildValidator","validators","failedValidators","invalidIndex","defaultValidators","OptionsList","msgType","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","verticalFillMode","clearRows","clearColumns","reinitializeColumnWidths","renderRows","renderColumns","rerenderRows","scrollColumns","scrollRows","scrollToRowNearestTop","includingBuffer","render","rerender","scrollToRowPosition","rowIndex","scrollToRowIfVisible","BasicHorizontal","rowFrag","createDocumentFragment","VirtualDomHorizontal","leftCol","rightCol","vDomScrollPosLeft","vDomScrollPosRight","vDomPadRight","fitDataColAvg","windowBuffer","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","clearVisRowCache","dataChange","scroll","calcWindowBuffer","buffer","cols","colPos","leftPos","rightPos","fitDataCheck","vdomHoz","reinitChanged","reinitializeRow","colEnd","otherRows","addColRight","removeColLeft","addColLeft","removeColRight","colPositionAdjust","fitDataColActualWidthCheck","ex","message","newWidth","widthDiff","appendCell","ColumnManager","blockHozScrollEvent","columnsByField","defaultColumnOptions","redrawBlockUpdate","initializeRenderer","createHeadersElement","createHeaderContentsElement","createHeaderElement","initializeScrollWheelWatcher","padVerticalScrollbar","renderClass","renderers","virtual","RendererVirtualDomHorizontal","basic","RendererBasicHorizontal","deltaX","generateColumnsFromRowData","autoColumnsDefinitions","_addColumn","_reIndexColumns","nextToColumn","topColumn","parentIndex","nextEl","root","getDefinitions","getDefinitionTree","getComponents","structured","_moveColumnInArray","updateRows","fromIndex","scrollToColumnPosition","scrollToColumnIfVisible","totalWidth","fixedWidth","resetScroll","BasicVertical","tableFrag","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topOffset","tableEmpty","topDiff","bottomDiff","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topFound","bottomRow","forceMove","rowFragment","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","renderedRows","totalRowsRendered","rowsToRender","avgRowHeight","resized","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholderContents","firstRender","renderMode","activeRowsPipeline","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","scrollbarWidth","initializePlaceholder","leftDir","topDir","_positionPlaceholder","_setDataActual","_wipeElements","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","refreshDisplayOnly","findAddRowPos","_clearPlaceholder","addRowPos","chainResult","clearData","findRowIndex","rowOnly","getDataCount","skipStage","stage","cascadeOrder","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","scrollBarCheck","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","_clearTable","_showPlaceholder","initialHeight","otherHeight","external","event","createEvent","initEvent","Event","FooterManager","createContainerElement","initializeElement","footerElement","activate","deactivate","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","bindPseudoEvents","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","comp","clearWatchers","updateEventListeners","track","composedPath","targets","findTargets","bindComponents","triggerEvents","elTargets","targetMatches","previousTarget","closest","ComponentFunctionBinder","funcName","debugInvalidComponentFuncs","DataLoader","requestOrder","requestNo","alertLoader","mapParams","dataSendParams","objectInvert","dataReceiveParams","alertError","dataLoaderErrorTimeout","blockActiveLoad","dataLoaderLoading","dataLoaderError","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifySubscriptionChange","notifiers","callResult","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","DeprecationAdvisor","_warnUser","TableRegistry","tables","matchElement","Tabulator","lookupTable","forced","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","colsWidth","gap","lastCol","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Layout","modes","dataChanged","defaultModes","Localize","langList","langs","setHeaderFilterPlaceholder","installLang","setLocale","getLang","default","_setLangProp","desiredLocale","language","traverseLang","trans","_executeBindings","pathArray","_getLangElement","rootPath","page_size","page_title","first","first_title","last","last_title","prev_title","next","next_title","showing","of","Comms","receive","selectors","con","tableComms","ModuleBinder","tabulator","bindStaticFunctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","registerModule","mod","registerModuleBinding","findTable","orderedStartMods","orderedEndMods","unOrderedMods","moduleCore","modulesCore","modulesRegular","core","mods","Alert","_createAlertElement","msgElement","_createMsgElement","_typeClass","interactionMonitor","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","textDirection","direction","newElement","_detectBrowser","deregister","ua","userAgent","vendor","opera","stack","line","debugInitialization","Error","replaceData","responses","foundRows","updateOrAddRow","updateRow","getRowPosition","getColumnDefinitions","toggleColumn","deleteColumn","updateColumnDefinition","fromColumn","off","plugin","debugDeprecation","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","TabulatorFull","PseudoRow","_createElement"],"mappings":"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"} \ No newline at end of file diff --git a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/AUTHORS.txt b/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/AUTHORS.txt deleted file mode 100644 index 0ee3fb31..00000000 --- a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/AUTHORS.txt +++ /dev/null @@ -1,372 +0,0 @@ -Authors ordered by first contribution -A list of current team members is available at http://jqueryui.com/about - -Paul Bakaus -Richard Worth -Yehuda Katz -Sean Catchpole -John Resig -Tane Piper -Dmitri Gaskin -Klaus Hartl -Stefan Petre -Gilles van den Hoven -Micheil Bryan Smith -Jörn Zaefferer -Marc Grabanski -Keith Wood -Brandon Aaron -Scott González -Eduardo Lundgren -Aaron Eisenberger -Joan Piedra -Bruno Basto -Remy Sharp -Bohdan Ganicky -David Bolter -Chi Cheng -Ca-Phun Ung -Ariel Flesler -Maggie Wachs -Scott Jehl -Todd Parker -Andrew Powell -Brant Burnett -Douglas Neiner -Paul Irish -Ralph Whitbeck -Thibault Duplessis -Dominique Vincent -Jack Hsu -Adam Sontag -Carl Fürstenberg -Kevin Dalman -Alberto Fernández Capel -Jacek Jędrzejewski (http://jacek.jedrzejewski.name) -Ting Kuei -Samuel Cormier-Iijima -Jon Palmer -Ben Hollis -Justin MacCarthy -Eyal Kobrigo -Tiago Freire -Diego Tres -Holger Rüprich -Ziling Zhao -Mike Alsup -Robson Braga Araujo -Pierre-Henri Ausseil -Christopher McCulloh -Andrew Newcomb -Lim Chee Aun -Jorge Barreiro -Daniel Steigerwald -John Firebaugh -John Enters -Andrey Kapitcyn -Dmitry Petrov -Eric Hynds -Chairat Sunthornwiphat -Josh Varner -Stéphane Raimbault -Jay Merrifield -J. Ryan Stinnett -Peter Heiberg -Alex Dovenmuehle -Jamie Gegerson -Raymond Schwartz -Phillip Barnes -Kyle Wilkinson -Khaled AlHourani -Marian Rudzynski -Jean-Francois Remy -Doug Blood -Filippo Cavallarin -Heiko Henning -Aliaksandr Rahalevich -Mario Visic -Xavi Ramirez -Max Schnur -Saji Nediyanchath -Corey Frang -Aaron Peterson -Ivan Peters -Mohamed Cherif Bouchelaghem -Marcos Sousa -Michael DellaNoce -George Marshall -Tobias Brunner -Martin Solli -David Petersen -Dan Heberden -William Kevin Manire -Gilmore Davidson -Michael Wu -Adam Parod -Guillaume Gautreau -Marcel Toele -Dan Streetman -Matt Hoskins -Giovanni Giacobbi -Kyle Florence -Pavol Hluchý -Hans Hillen -Mark Johnson -Trey Hunner -Shane Whittet -Edward A Faulkner -Adam Baratz -Kato Kazuyoshi -Eike Send -Kris Borchers -Eddie Monge -Israel Tsadok -Carson McDonald -Jason Davies -Garrison Locke -David Murdoch -Benjamin Scott Boyle -Jesse Baird -Jonathan Vingiano -Dylan Just -Hiroshi Tomita -Glenn Goodrich -Tarafder Ashek-E-Elahi -Ryan Neufeld -Marc Neuwirth -Philip Graham -Benjamin Sterling -Wesley Walser -Kouhei Sutou -Karl Kirch -Chris Kelly -Jason Oster -Felix Nagel -Alexander Polomoshnov -David Leal -Igor Milla -Dave Methvin -Florian Gutmann -Marwan Al Jubeh -Milan Broum -Sebastian Sauer -Gaëtan Muller -Michel Weimerskirch -William Griffiths -Stojce Slavkovski -David Soms -David De Sloovere -Michael P. Jung -Shannon Pekary -Dan Wellman -Matthew Edward Hutton -James Khoury -Rob Loach -Alberto Monteiro -Alex Rhea -Krzysztof Rosiński -Ryan Olton -Genie <386@mail.com> -Rick Waldron -Ian Simpson -Lev Kitsis -TJ VanToll -Justin Domnitz -Douglas Cerna -Bert ter Heide -Jasvir Nagra -Yuriy Khabarov <13real008@gmail.com> -Harri Kilpiö -Lado Lomidze -Amir E. Aharoni -Simon Sattes -Jo Liss -Guntupalli Karunakar -Shahyar Ghobadpour -Lukasz Lipinski -Timo Tijhof -Jason Moon -Martin Frost -Eneko Illarramendi -EungJun Yi -Courtland Allen -Viktar Varvanovich -Danny Trunk -Pavel Stetina -Michael Stay -Steven Roussey -Michael Hollis -Lee Rowlands -Timmy Willison -Karl Swedberg -Baoju Yuan -Maciej Mroziński -Luis Dalmolin -Mark Aaron Shirley -Martin Hoch -Jiayi Yang -Philipp Benjamin Köppchen -Sindre Sorhus -Bernhard Sirlinger -Jared A. Scheel -Rafael Xavier de Souza -John Chen -Robert Beuligmann -Dale Kocian -Mike Sherov -Andrew Couch -Marc-Andre Lafortune -Nate Eagle -David Souther -Mathias Stenbom -Sergey Kartashov -Avinash R -Ethan Romba -Cory Gackenheimer -Juan Pablo Kaniefsky -Roman Salnikov -Anika Henke -Samuel Bovée -Fabrício Matté -Viktor Kojouharov -Pawel Maruszczyk (http://hrabstwo.net) -Pavel Selitskas -Bjørn Johansen -Matthieu Penant -Dominic Barnes -David Sullivan -Thomas Jaggi -Vahid Sohrabloo -Travis Carden -Bruno M. Custódio -Nathanael Silverman -Christian Wenz -Steve Urmston -Zaven Muradyan -Woody Gilk -Zbigniew Motyka -Suhail Alkowaileet -Toshi MARUYAMA -David Hansen -Brian Grinstead -Christian Klammer -Steven Luscher -Gan Eng Chin -Gabriel Schulhof -Alexander Schmitz -Vilhjálmur Skúlason -Siebrand Mazeland -Mohsen Ekhtiari -Pere Orga -Jasper de Groot -Stephane Deschamps -Jyoti Deka -Andrei Picus -Ondrej Novy -Jacob McCutcheon -Monika Piotrowicz -Imants Horsts -Eric Dahl -Dave Stein -Dylan Barrell -Daniel DeGroff -Michael Wiencek -Thomas Meyer -Ruslan Yakhyaev -Brian J. Dowling -Ben Higgins -Yermo Lamers -Patrick Stapleton -Trisha Crowley -Usman Akeju -Rodrigo Menezes -Jacques Perrault -Frederik Elvhage -Will Holley -Uri Gilad -Richard Gibson -Simen Bekkhus -Chen Eshchar -Bruno Pérel -Mohammed Alshehri -Lisa Seacat DeLuca -Anne-Gaelle Colom -Adam Foster -Luke Page -Daniel Owens -Michael Orchard -Marcus Warren -Nils Heuermann -Marco Ziech -Patricia Juarez -Ben Mosher -Ablay Keldibek -Thomas Applencourt -Jiabao Wu -Eric Lee Carraway -Victor Homyakov -Myeongjin Lee -Liran Sharir -Weston Ruter -Mani Mishra -Hannah Methvin -Leonardo Balter -Benjamin Albert -Michał Gołębiowski-Owczarek -Alyosha Pushak -Fahad Ahmad -Matt Brundage -Francesc Baeta -Piotr Baran -Mukul Hase -Konstantin Dinev -Rand Scullard -Dan Strohl -Maksim Ryzhikov -Amine HADDAD -Amanpreet Singh -Alexey Balchunas -Peter Kehl -Peter Dave Hello -Johannes Schäfer -Ville Skyttä -Ryan Oriecuia -Sergei Ratnikov -milk54 -Evelyn Masso -Robin -Simon Asika -Kevin Cupp -Jeremy Mickelson -Kyle Rosenberg -Petri Partio -pallxk -Luke Brookhart -claudi -Eirik Sletteberg -Albert Johansson -A. Wells -Robert Brignull -Horus68 -Maksymenkov Eugene -OskarNS -Gez Quinn -jigar gala -Florian Wegscheider -Fatér Zsolt -Szabolcs Szabolcsi-Toth -Jérémy Munsch -Hrvoje Novosel -Paul Capron -Micah Miller -sakshi87 <53863764+sakshi87@users.noreply.github.com> -Mikolaj Wolicki -Patrick McKay -c-lambert <58025159+c-lambert@users.noreply.github.com> -Josep Sanz -Ben Mullins -Christian Oliff -dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -Adam Lidén Hällgren -James Hinderks -Denny Septian Panggabean <97607754+ddevsr@users.noreply.github.com> diff --git a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/LICENSE.txt b/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/LICENSE.txt deleted file mode 100644 index 4819e542..00000000 --- a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/LICENSE.txt +++ /dev/null @@ -1,43 +0,0 @@ -Copyright jQuery Foundation and other contributors, https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/jquery-ui - -The following license applies to all parts of this software except as -documented below: - -==== - -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. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code contained within the demos directory. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -All files located in the node_modules and external directories are -externally maintained libraries used by this software which have their -own licenses; we recommend you read them, as their terms may differ from -the terms above. diff --git a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/external/jquery/jquery.js b/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/external/jquery/jquery.js deleted file mode 100644 index fc6c299b..00000000 --- a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/external/jquery/jquery.js +++ /dev/null @@ -1,10881 +0,0 @@ -/*! - * jQuery JavaScript Library v3.6.0 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2021-03-02T17:08Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 - // Plus for old WebKit, typeof returns "function" for HTML collections - // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) - return typeof obj === "function" && typeof obj.nodeType !== "number" && - typeof obj.item !== "function"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.6.0", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), - function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); - } ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.6 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2021-02-16 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem && elem.namespaceURI, - docElem = elem && ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -} -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the primary Deferred - primary = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - primary.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( primary.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return primary.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); - } - - return primary.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting
              ", "
              " ], - col: [ 2, "", "
              " ], - tr: [ 2, "", "
              " ], - td: [ 3, "", "
              " ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - - // Support: Chrome 86+ - // In Chrome, if an element having a focusout handler is blurred by - // clicking outside of it, it invokes the handler synchronously. If - // that handler calls `.remove()` on the element, the data is cleared, - // leaving `result` undefined. We need to guard against this. - return result && result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - which: true -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - // Suppress native focus or blur as it's already being fired - // in leverageNative. - _default: function() { - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - // - // Support: Firefox 70+ - // Only Firefox includes border widths - // in computed dimensions. (gh-4529) - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; - tr.style.cssText = "border:1px solid"; - - // Support: Chrome 86+ - // Height set through cssText does not get applied. - // Computed height then comes back as 0. - tr.style.height = "1px"; - trChild.style.height = "9px"; - - // Support: Android 8 Chrome 86+ - // In our bodyBackground.html iframe, - // display for all div elements is set to "inline", - // which causes a problem only in Android 8 Chrome 86. - // Ensuring the div is display: block - // gets around this issue. - trChild.style.display = "block"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + - parseInt( trStyle.borderTopWidth, 10 ) + - parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, parserErrorElem; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) {} - - parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; - if ( !xml || parserErrorElem ) { - jQuery.error( "Invalid XML: " + ( - parserErrorElem ? - jQuery.map( parserErrorElem.childNodes, function( el ) { - return el.textContent; - } ).join( "\n" ) : - data - ) ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ).filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ).map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - -originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script but not if jsonp - if ( !isSuccess && - jQuery.inArray( "script", s.dataTypes ) > -1 && - jQuery.inArray( "json", s.dataTypes ) < 0 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - diff --git a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/jquery-ui.css b/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/jquery-ui.css deleted file mode 100644 index bf453fbb..00000000 --- a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/jquery-ui.css +++ /dev/null @@ -1,1315 +0,0 @@ -/*! jQuery UI - v1.13.2 - 2023-09-15 -* http://jqueryui.com -* Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-draggable-handle { - -ms-touch-action: none; - touch-action: none; -} -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - -ms-filter: "alpha(opacity=0)"; /* support: IE8 */ -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; - pointer-events: none; -} - - -/* Icons -----------------------------------*/ -.ui-icon { - display: inline-block; - vertical-align: middle; - margin-top: -.25em; - position: relative; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - -.ui-widget-icon-block { - left: 50%; - margin-left: -8px; - display: block; -} - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} -.ui-selectable { - -ms-touch-action: none; - touch-action: none; -} -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} -.ui-sortable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-accordion .ui-accordion-header { - display: block; - cursor: pointer; - position: relative; - margin: 2px 0 0 0; - padding: .5em .5em .5em .7em; - font-size: 100%; -} -.ui-accordion .ui-accordion-content { - padding: 1em 2.2em; - border-top: 0; - overflow: auto; -} -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} -.ui-menu { - list-style: none; - padding: 0; - margin: 0; - display: block; - outline: 0; -} -.ui-menu .ui-menu { - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - cursor: pointer; - /* support: IE10, see #8844 */ - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); -} -.ui-menu .ui-menu-item-wrapper { - position: relative; - padding: 3px 1em 3px .4em; -} -.ui-menu .ui-menu-divider { - margin: 5px 0; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-state-focus, -.ui-menu .ui-state-active { - margin: -1px; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item-wrapper { - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: 0; - bottom: 0; - left: .2em; - margin: auto 0; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - left: auto; - right: 0; -} -.ui-button { - padding: .4em 1em; - display: inline-block; - position: relative; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - /* Support: IE <= 11 */ - overflow: visible; -} - -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} - -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2em; - box-sizing: border-box; - text-indent: -9999px; - white-space: nowrap; -} - -/* no icon support for input elements */ -input.ui-button.ui-button-icon-only { - text-indent: 0; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon { - position: absolute; - top: 50%; - left: 50%; - margin-top: -8px; - margin-left: -8px; -} - -.ui-button.ui-icon-notext .ui-icon { - padding: 0; - width: 2.1em; - height: 2.1em; - text-indent: -9999px; - white-space: nowrap; - -} - -input.ui-button.ui-icon-notext .ui-icon { - width: auto; - height: auto; - text-indent: 0; - white-space: normal; - padding: .4em 1em; -} - -/* workarounds */ -/* Support: Firefox 5 - 40 */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-controlgroup { - vertical-align: middle; - display: inline-block; -} -.ui-controlgroup > .ui-controlgroup-item { - float: left; - margin-left: 0; - margin-right: 0; -} -.ui-controlgroup > .ui-controlgroup-item:focus, -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { - z-index: 9999; -} -.ui-controlgroup-vertical > .ui-controlgroup-item { - display: block; - float: none; - width: 100%; - margin-top: 0; - margin-bottom: 0; - text-align: left; -} -.ui-controlgroup-vertical .ui-controlgroup-item { - box-sizing: border-box; -} -.ui-controlgroup .ui-controlgroup-label { - padding: .4em 1em; -} -.ui-controlgroup .ui-controlgroup-label span { - font-size: 80%; -} -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { - border-left: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { - border-top: none; -} -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { - border-right: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { - border-bottom: none; -} - -/* Spinner specific style fixes */ -.ui-controlgroup-vertical .ui-spinner-input { - - /* Support: IE8 only, Android < 4.4 only */ - width: 75%; - width: calc( 100% - 2.4em ); -} -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { - border-top-style: solid; -} - -.ui-checkboxradio-label .ui-icon-background { - box-shadow: inset 1px 1px 1px #ccc; - border-radius: .12em; - border: none; -} -.ui-checkboxradio-radio-label .ui-icon-background { - width: 16px; - height: 16px; - border-radius: 1em; - overflow: visible; - border: none; -} -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { - background-image: none; - width: 8px; - height: 8px; - border-width: 4px; - border-style: solid; -} -.ui-checkboxradio-disabled { - pointer-events: none; -} -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; - display: none; -} -.ui-datepicker .ui-datepicker-header { - position: relative; - padding: .2em 0; -} -.ui-datepicker .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-next { - position: absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, -.ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left: 2px; -} -.ui-datepicker .ui-datepicker-next { - right: 2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left: 1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right: 1px; -} -.ui-datepicker .ui-datepicker-prev span, -.ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size: 1em; - margin: 1px 0; -} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { - width: 45%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin: 0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding: 0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width: auto; - overflow: visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float: left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width: 95%; - margin: 0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width: 50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width: 33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width: 25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear: left; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} - -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear: right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, -.ui-datepicker-rtl .ui-datepicker-group { - float: right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width: 0; - border-left-width: 1px; -} - -/* Icons */ -.ui-datepicker .ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; - left: .5em; - top: .3em; -} -.ui-dialog { - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-n { - height: 2px; - top: 0; -} -.ui-dialog .ui-resizable-e { - width: 2px; - right: 0; -} -.ui-dialog .ui-resizable-s { - height: 2px; - bottom: 0; -} -.ui-dialog .ui-resizable-w { - width: 2px; - left: 0; -} -.ui-dialog .ui-resizable-se, -.ui-dialog .ui-resizable-sw, -.ui-dialog .ui-resizable-ne, -.ui-dialog .ui-resizable-nw { - width: 7px; - height: 7px; -} -.ui-dialog .ui-resizable-se { - right: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-sw { - left: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-ne { - right: 0; - top: 0; -} -.ui-dialog .ui-resizable-nw { - left: 0; - top: 0; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - background: url("data:image/gif;base64,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"); - height: 100%; - -ms-filter: "alpha(opacity=25)"; /* support: IE8 */ - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} -.ui-selectmenu-menu { - padding: 0; - margin: 0; - position: absolute; - top: 0; - left: 0; - display: none; -} -.ui-selectmenu-menu .ui-menu { - overflow: auto; - overflow-x: hidden; - padding-bottom: 1px; -} -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - padding: 2px 0.4em; - margin: 0.5em 0 0 0; - height: auto; - border: 0; -} -.ui-selectmenu-open { - display: block; -} -.ui-selectmenu-text { - display: block; - margin-right: 20px; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-selectmenu-button.ui-button { - text-align: left; - white-space: nowrap; - width: 14em; -} -.ui-selectmenu-icon.ui-icon { - float: right; - margin-top: 0; -} -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: pointer; - -ms-touch-action: none; - touch-action: none; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* support: IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} -.ui-spinner { - position: relative; - display: inline-block; - overflow: hidden; - padding: 0; - vertical-align: middle; -} -.ui-spinner-input { - border: none; - background: none; - color: inherit; - padding: .222em 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 2em; -} -.ui-spinner-button { - width: 1.6em; - height: 50%; - font-size: .5em; - padding: 0; - margin: 0; - text-align: center; - position: absolute; - cursor: default; - display: block; - overflow: hidden; - right: 0; -} -/* more specificity required here to override default borders */ -.ui-spinner a.ui-spinner-button { - border-top-style: none; - border-bottom-style: none; - border-right-style: none; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: text; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - padding: 1em 1.4em; - background: none; -} -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; -} -body .ui-tooltip { - border-width: 2px; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; -} -.ui-widget.ui-widget-content { - border: 1px solid #c5c5c5; -} -.ui-widget-content { - border: 1px solid #dddddd; - background: #ffffff; - color: #333333; -} -.ui-widget-content a { - color: #333333; -} -.ui-widget-header { - border: 1px solid #dddddd; - background: #e9e9e9; - color: #333333; - font-weight: bold; -} -.ui-widget-header a { - color: #333333; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default, -.ui-button, - -/* We use html here because we need a greater specificity to make sure disabled -works properly when clicked or hovered */ -html .ui-button.ui-state-disabled:hover, -html .ui-button.ui-state-disabled:active { - border: 1px solid #c5c5c5; - background: #f6f6f6; - font-weight: normal; - color: #454545; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited, -a.ui-button, -a:link.ui-button, -a:visited.ui-button, -.ui-button { - color: #454545; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus, -.ui-button:hover, -.ui-button:focus { - border: 1px solid #cccccc; - background: #ededed; - font-weight: normal; - color: #2b2b2b; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited, -a.ui-button:hover, -a.ui-button:focus { - color: #2b2b2b; - text-decoration: none; -} - -.ui-visual-focus { - box-shadow: 0 0 3px 1px rgb(94, 158, 214); -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - border: 1px solid #003eff; - background: #007fff; - font-weight: normal; - color: #ffffff; -} -.ui-icon-background, -.ui-state-active .ui-icon-background { - border: #003eff; - background-color: #ffffff; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #ffffff; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #dad55e; - background: #fffa90; - color: #777620; -} -.ui-state-checked { - border: 1px solid #dad55e; - background: #fffa90; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #777620; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #f1a899; - background: #fddfdf; - color: #5f3f3f; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #5f3f3f; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #5f3f3f; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - -ms-filter: "alpha(opacity=70)"; /* support: IE8 */ - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - -ms-filter: "alpha(opacity=35)"; /* support: IE8 */ - background-image: none; -} -.ui-state-disabled .ui-icon { - -ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("images/ui-icons_444444_256x240.png"); -} -.ui-widget-header .ui-icon { - background-image: url("images/ui-icons_444444_256x240.png"); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon, -.ui-button:hover .ui-icon, -.ui-button:focus .ui-icon { - background-image: url("images/ui-icons_555555_256x240.png"); -} -.ui-state-active .ui-icon, -.ui-button:active .ui-icon { - background-image: url("images/ui-icons_ffffff_256x240.png"); -} -.ui-state-highlight .ui-icon, -.ui-button .ui-state-highlight.ui-icon { - background-image: url("images/ui-icons_777620_256x240.png"); -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("images/ui-icons_cc0000_256x240.png"); -} -.ui-button .ui-icon { - background-image: url("images/ui-icons_777777_256x240.png"); -} - -/* positioning */ -/* Three classes needed to override `.ui-button:hover .ui-icon` */ -.ui-icon-blank.ui-icon-blank.ui-icon-blank { - background-image: none; -} -.ui-icon-caret-1-n { background-position: 0 0; } -.ui-icon-caret-1-ne { background-position: -16px 0; } -.ui-icon-caret-1-e { background-position: -32px 0; } -.ui-icon-caret-1-se { background-position: -48px 0; } -.ui-icon-caret-1-s { background-position: -65px 0; } -.ui-icon-caret-1-sw { background-position: -80px 0; } -.ui-icon-caret-1-w { background-position: -96px 0; } -.ui-icon-caret-1-nw { background-position: -112px 0; } -.ui-icon-caret-2-n-s { background-position: -128px 0; } -.ui-icon-caret-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -65px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -65px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 1px -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 3px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 3px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 3px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 3px; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa; - opacity: .3; - -ms-filter: Alpha(Opacity=30); /* support: IE8 */ -} -.ui-widget-shadow { - -webkit-box-shadow: 0px 0px 5px #666666; - box-shadow: 0px 0px 5px #666666; -} diff --git a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/jquery-ui.js b/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/jquery-ui.js deleted file mode 100644 index 6c1eb7cd..00000000 --- a/src/main/webapp/tabulator/jquery-ui-1.13.2.custom/jquery-ui.js +++ /dev/null @@ -1,19062 +0,0 @@ -/*! jQuery UI - v1.13.2 - 2023-09-15 -* http://jqueryui.com -* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -( function( factory ) { - "use strict"; - - if ( typeof define === "function" && define.amd ) { - - // AMD. Register as an anonymous module. - define( [ "jquery" ], factory ); - } else { - - // Browser globals - factory( jQuery ); - } -} )( function( $ ) { -"use strict"; - -$.ui = $.ui || {}; - -var version = $.ui.version = "1.13.2"; - - -/*! - * jQuery UI Widget 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Widget -//>>group: Core -//>>description: Provides a factory for creating stateful widgets with a common API. -//>>docs: http://api.jqueryui.com/jQuery.widget/ -//>>demos: http://jqueryui.com/widget/ - - -var widgetUuid = 0; -var widgetHasOwnProperty = Array.prototype.hasOwnProperty; -var widgetSlice = Array.prototype.slice; - -$.cleanData = ( function( orig ) { - return function( elems ) { - var events, elem, i; - for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { - - // Only trigger remove when necessary to save time - events = $._data( elem, "events" ); - if ( events && events.remove ) { - $( elem ).triggerHandler( "remove" ); - } - } - orig( elems ); - }; -} )( $.cleanData ); - -$.widget = function( name, base, prototype ) { - var existingConstructor, constructor, basePrototype; - - // ProxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - var proxiedPrototype = {}; - - var namespace = name.split( "." )[ 0 ]; - name = name.split( "." )[ 1 ]; - var fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - if ( Array.isArray( prototype ) ) { - prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); - } - - // Create selector for plugin - $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - - // Allow instantiation without "new" keyword - if ( !this || !this._createWidget ) { - return new constructor( options, element ); - } - - // Allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - - // Extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - - // Copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - - // Track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - } ); - - basePrototype = new base(); - - // We need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( typeof value !== "function" ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = ( function() { - function _super() { - return base.prototype[ prop ].apply( this, arguments ); - } - - function _superApply( args ) { - return base.prototype[ prop ].apply( this, args ); - } - - return function() { - var __super = this._super; - var __superApply = this._superApply; - var returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - } )(); - } ); - constructor.prototype = $.widget.extend( basePrototype, { - - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - } ); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // Redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, - child._proto ); - } ); - - // Remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); - - return constructor; -}; - -$.widget.extend = function( target ) { - var input = widgetSlice.call( arguments, 1 ); - var inputIndex = 0; - var inputLength = input.length; - var key; - var value; - - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { - - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string"; - var args = widgetSlice.call( arguments, 1 ); - var returnValue = this; - - if ( isMethodCall ) { - - // If this is an empty collection, we need to have the instance method - // return undefined instead of the jQuery instance - if ( !this.length && options === "instance" ) { - returnValue = undefined; - } else { - this.each( function() { - var methodValue; - var instance = $.data( this, fullName ); - - if ( options === "instance" ) { - returnValue = instance; - return false; - } - - if ( !instance ) { - return $.error( "cannot call methods on " + name + - " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - - if ( typeof instance[ options ] !== "function" || - options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + - " widget instance" ); - } - - methodValue = instance[ options ].apply( instance, args ); - - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - } ); - } - } else { - - // Allow multiple hashes to be passed on init - if ( args.length ) { - options = $.widget.extend.apply( null, [ options ].concat( args ) ); - } - - this.each( function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} ); - if ( instance._init ) { - instance._init(); - } - } else { - $.data( this, fullName, new object( options, this ) ); - } - } ); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
              ", - - options: { - classes: {}, - disabled: false, - - // Callbacks - create: null - }, - - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = widgetUuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - this.classesElementLookup = {}; - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - } ); - this.document = $( element.style ? - - // Element within the document - element.ownerDocument : - - // Element is window or document - element.document || element ); - this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); - } - - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this._create(); - - if ( this.options.disabled ) { - this._setOptionDisabled( this.options.disabled ); - } - - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - - _getCreateOptions: function() { - return {}; - }, - - _getCreateEventData: $.noop, - - _create: $.noop, - - _init: $.noop, - - destroy: function() { - var that = this; - - this._destroy(); - $.each( this.classesElementLookup, function( key, value ) { - that._removeClass( value, key ); - } ); - - // We can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .off( this.eventNamespace ) - .removeData( this.widgetFullName ); - this.widget() - .off( this.eventNamespace ) - .removeAttr( "aria-disabled" ); - - // Clean up events and states - this.bindings.off( this.eventNamespace ); - }, - - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key; - var parts; - var curOption; - var i; - - if ( arguments.length === 0 ) { - - // Don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - - // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( arguments.length === 1 ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( arguments.length === 1 ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - - _setOption: function( key, value ) { - if ( key === "classes" ) { - this._setOptionClasses( value ); - } - - this.options[ key ] = value; - - if ( key === "disabled" ) { - this._setOptionDisabled( value ); - } - - return this; - }, - - _setOptionClasses: function( value ) { - var classKey, elements, currentElements; - - for ( classKey in value ) { - currentElements = this.classesElementLookup[ classKey ]; - if ( value[ classKey ] === this.options.classes[ classKey ] || - !currentElements || - !currentElements.length ) { - continue; - } - - // We are doing this to create a new jQuery object because the _removeClass() call - // on the next line is going to destroy the reference to the current elements being - // tracked. We need to save a copy of this collection so that we can add the new classes - // below. - elements = $( currentElements.get() ); - this._removeClass( currentElements, classKey ); - - // We don't use _addClass() here, because that uses this.options.classes - // for generating the string of classes. We want to use the value passed in from - // _setOption(), this is the new value of the classes option which was passed to - // _setOption(). We pass this value directly to _classes(). - elements.addClass( this._classes( { - element: elements, - keys: classKey, - classes: value, - add: true - } ) ); - } - }, - - _setOptionDisabled: function( value ) { - this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); - - // If the widget is becoming disabled, then nothing is interactive - if ( value ) { - this._removeClass( this.hoverable, null, "ui-state-hover" ); - this._removeClass( this.focusable, null, "ui-state-focus" ); - } - }, - - enable: function() { - return this._setOptions( { disabled: false } ); - }, - - disable: function() { - return this._setOptions( { disabled: true } ); - }, - - _classes: function( options ) { - var full = []; - var that = this; - - options = $.extend( { - element: this.element, - classes: this.options.classes || {} - }, options ); - - function bindRemoveEvent() { - var nodesToBind = []; - - options.element.each( function( _, element ) { - var isTracked = $.map( that.classesElementLookup, function( elements ) { - return elements; - } ) - .some( function( elements ) { - return elements.is( element ); - } ); - - if ( !isTracked ) { - nodesToBind.push( element ); - } - } ); - - that._on( $( nodesToBind ), { - remove: "_untrackClassesElement" - } ); - } - - function processClassString( classes, checkOption ) { - var current, i; - for ( i = 0; i < classes.length; i++ ) { - current = that.classesElementLookup[ classes[ i ] ] || $(); - if ( options.add ) { - bindRemoveEvent(); - current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); - } else { - current = $( current.not( options.element ).get() ); - } - that.classesElementLookup[ classes[ i ] ] = current; - full.push( classes[ i ] ); - if ( checkOption && options.classes[ classes[ i ] ] ) { - full.push( options.classes[ classes[ i ] ] ); - } - } - } - - if ( options.keys ) { - processClassString( options.keys.match( /\S+/g ) || [], true ); - } - if ( options.extra ) { - processClassString( options.extra.match( /\S+/g ) || [] ); - } - - return full.join( " " ); - }, - - _untrackClassesElement: function( event ) { - var that = this; - $.each( that.classesElementLookup, function( key, value ) { - if ( $.inArray( event.target, value ) !== -1 ) { - that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); - } - } ); - - this._off( $( event.target ) ); - }, - - _removeClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, false ); - }, - - _addClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, true ); - }, - - _toggleClass: function( element, keys, extra, add ) { - add = ( typeof add === "boolean" ) ? add : extra; - var shift = ( typeof element === "string" || element === null ), - options = { - extra: shift ? keys : extra, - keys: shift ? element : keys, - element: shift ? this.element : element, - add: add - }; - options.element.toggleClass( this._classes( options ), add ); - return this; - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement; - var instance = this; - - // No suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // No element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - - // Allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // Copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^([\w:-]*)\s*(.*)$/ ); - var eventName = match[ 1 ] + instance.eventNamespace; - var selector = match[ 2 ]; - - if ( selector ) { - delegateElement.on( eventName, selector, handlerProxy ); - } else { - element.on( eventName, handlerProxy ); - } - } ); - }, - - _off: function( element, eventName ) { - eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + - this.eventNamespace; - element.off( eventName ); - - // Clear the stack to avoid memory leaks (#10056) - this.bindings = $( this.bindings.not( element ).get() ); - this.focusable = $( this.focusable.not( element ).get() ); - this.hoverable = $( this.hoverable.not( element ).get() ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); - }, - mouseleave: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); - } - } ); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); - }, - focusout: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); - } - } ); - }, - - _trigger: function( type, event, data ) { - var prop, orig; - var callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - - // The original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // Copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( typeof callback === "function" && - callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - - var hasOptions; - var effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } else if ( options === true ) { - options = {}; - } - - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - - if ( options.delay ) { - element.delay( options.delay ); - } - - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue( function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - } ); - } - }; -} ); - -var widget = $.widget; - - -/*! - * jQuery UI Position 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/position/ - */ - -//>>label: Position -//>>group: Core -//>>description: Positions elements relative to other elements. -//>>docs: http://api.jqueryui.com/position/ -//>>demos: http://jqueryui.com/position/ - - -( function() { -var cachedScrollbarWidth, - max = Math.max, - abs = Math.abs, - rhorizontal = /left|center|right/, - rvertical = /top|center|bottom/, - roffset = /[\+\-]\d+(\.[\d]+)?%?/, - rposition = /^\w+/, - rpercent = /%$/, - _position = $.fn.position; - -function getOffsets( offsets, width, height ) { - return [ - parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), - parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) - ]; -} - -function parseCss( element, property ) { - return parseInt( $.css( element, property ), 10 ) || 0; -} - -function isWindow( obj ) { - return obj != null && obj === obj.window; -} - -function getDimensions( elem ) { - var raw = elem[ 0 ]; - if ( raw.nodeType === 9 ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: 0, left: 0 } - }; - } - if ( isWindow( raw ) ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: elem.scrollTop(), left: elem.scrollLeft() } - }; - } - if ( raw.preventDefault ) { - return { - width: 0, - height: 0, - offset: { top: raw.pageY, left: raw.pageX } - }; - } - return { - width: elem.outerWidth(), - height: elem.outerHeight(), - offset: elem.offset() - }; -} - -$.position = { - scrollbarWidth: function() { - if ( cachedScrollbarWidth !== undefined ) { - return cachedScrollbarWidth; - } - var w1, w2, - div = $( "
              " + - "
              " ), - innerDiv = div.children()[ 0 ]; - - $( "body" ).append( div ); - w1 = innerDiv.offsetWidth; - div.css( "overflow", "scroll" ); - - w2 = innerDiv.offsetWidth; - - if ( w1 === w2 ) { - w2 = div[ 0 ].clientWidth; - } - - div.remove(); - - return ( cachedScrollbarWidth = w1 - w2 ); - }, - getScrollInfo: function( within ) { - var overflowX = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-x" ), - overflowY = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-y" ), - hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), - hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); - return { - width: hasOverflowY ? $.position.scrollbarWidth() : 0, - height: hasOverflowX ? $.position.scrollbarWidth() : 0 - }; - }, - getWithinInfo: function( element ) { - var withinElement = $( element || window ), - isElemWindow = isWindow( withinElement[ 0 ] ), - isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, - hasOffset = !isElemWindow && !isDocument; - return { - element: withinElement, - isWindow: isElemWindow, - isDocument: isDocument, - offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - width: withinElement.outerWidth(), - height: withinElement.outerHeight() - }; - } -}; - -$.fn.position = function( options ) { - if ( !options || !options.of ) { - return _position.apply( this, arguments ); - } - - // Make a copy, we don't want to modify arguments - options = $.extend( {}, options ); - - var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, - - // Make sure string options are treated as CSS selectors - target = typeof options.of === "string" ? - $( document ).find( options.of ) : - $( options.of ), - - within = $.position.getWithinInfo( options.within ), - scrollInfo = $.position.getScrollInfo( within ), - collision = ( options.collision || "flip" ).split( " " ), - offsets = {}; - - dimensions = getDimensions( target ); - if ( target[ 0 ].preventDefault ) { - - // Force left top to allow flipping - options.at = "left top"; - } - targetWidth = dimensions.width; - targetHeight = dimensions.height; - targetOffset = dimensions.offset; - - // Clone to reuse original targetOffset later - basePosition = $.extend( {}, targetOffset ); - - // Force my and at to have valid horizontal and vertical positions - // if a value is missing or invalid, it will be converted to center - $.each( [ "my", "at" ], function() { - var pos = ( options[ this ] || "" ).split( " " ), - horizontalOffset, - verticalOffset; - - if ( pos.length === 1 ) { - pos = rhorizontal.test( pos[ 0 ] ) ? - pos.concat( [ "center" ] ) : - rvertical.test( pos[ 0 ] ) ? - [ "center" ].concat( pos ) : - [ "center", "center" ]; - } - pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; - pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - - // Calculate offsets - horizontalOffset = roffset.exec( pos[ 0 ] ); - verticalOffset = roffset.exec( pos[ 1 ] ); - offsets[ this ] = [ - horizontalOffset ? horizontalOffset[ 0 ] : 0, - verticalOffset ? verticalOffset[ 0 ] : 0 - ]; - - // Reduce to just the positions without the offsets - options[ this ] = [ - rposition.exec( pos[ 0 ] )[ 0 ], - rposition.exec( pos[ 1 ] )[ 0 ] - ]; - } ); - - // Normalize collision option - if ( collision.length === 1 ) { - collision[ 1 ] = collision[ 0 ]; - } - - if ( options.at[ 0 ] === "right" ) { - basePosition.left += targetWidth; - } else if ( options.at[ 0 ] === "center" ) { - basePosition.left += targetWidth / 2; - } - - if ( options.at[ 1 ] === "bottom" ) { - basePosition.top += targetHeight; - } else if ( options.at[ 1 ] === "center" ) { - basePosition.top += targetHeight / 2; - } - - atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); - basePosition.left += atOffset[ 0 ]; - basePosition.top += atOffset[ 1 ]; - - return this.each( function() { - var collisionPosition, using, - elem = $( this ), - elemWidth = elem.outerWidth(), - elemHeight = elem.outerHeight(), - marginLeft = parseCss( this, "marginLeft" ), - marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + - scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + - scrollInfo.height, - position = $.extend( {}, basePosition ), - myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - - if ( options.my[ 0 ] === "right" ) { - position.left -= elemWidth; - } else if ( options.my[ 0 ] === "center" ) { - position.left -= elemWidth / 2; - } - - if ( options.my[ 1 ] === "bottom" ) { - position.top -= elemHeight; - } else if ( options.my[ 1 ] === "center" ) { - position.top -= elemHeight / 2; - } - - position.left += myOffset[ 0 ]; - position.top += myOffset[ 1 ]; - - collisionPosition = { - marginLeft: marginLeft, - marginTop: marginTop - }; - - $.each( [ "left", "top" ], function( i, dir ) { - if ( $.ui.position[ collision[ i ] ] ) { - $.ui.position[ collision[ i ] ][ dir ]( position, { - targetWidth: targetWidth, - targetHeight: targetHeight, - elemWidth: elemWidth, - elemHeight: elemHeight, - collisionPosition: collisionPosition, - collisionWidth: collisionWidth, - collisionHeight: collisionHeight, - offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], - my: options.my, - at: options.at, - within: within, - elem: elem - } ); - } - } ); - - if ( options.using ) { - - // Adds feedback as second argument to using callback, if present - using = function( props ) { - var left = targetOffset.left - position.left, - right = left + targetWidth - elemWidth, - top = targetOffset.top - position.top, - bottom = top + targetHeight - elemHeight, - feedback = { - target: { - element: target, - left: targetOffset.left, - top: targetOffset.top, - width: targetWidth, - height: targetHeight - }, - element: { - element: elem, - left: position.left, - top: position.top, - width: elemWidth, - height: elemHeight - }, - horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", - vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" - }; - if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { - feedback.horizontal = "center"; - } - if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { - feedback.vertical = "middle"; - } - if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { - feedback.important = "horizontal"; - } else { - feedback.important = "vertical"; - } - options.using.call( this, props, feedback ); - }; - } - - elem.offset( $.extend( position, { using: using } ) ); - } ); -}; - -$.ui.position = { - fit: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, - outerWidth = within.width, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = withinOffset - collisionPosLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, - newOverRight; - - // Element is wider than within - if ( data.collisionWidth > outerWidth ) { - - // Element is initially over the left side of within - if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - - withinOffset; - position.left += overLeft - newOverRight; - - // Element is initially over right side of within - } else if ( overRight > 0 && overLeft <= 0 ) { - position.left = withinOffset; - - // Element is initially over both left and right sides of within - } else { - if ( overLeft > overRight ) { - position.left = withinOffset + outerWidth - data.collisionWidth; - } else { - position.left = withinOffset; - } - } - - // Too far left -> align with left edge - } else if ( overLeft > 0 ) { - position.left += overLeft; - - // Too far right -> align with right edge - } else if ( overRight > 0 ) { - position.left -= overRight; - - // Adjust based on position and margin - } else { - position.left = max( position.left - collisionPosLeft, position.left ); - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollTop : within.offset.top, - outerHeight = data.within.height, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = withinOffset - collisionPosTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, - newOverBottom; - - // Element is taller than within - if ( data.collisionHeight > outerHeight ) { - - // Element is initially over the top of within - if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - - withinOffset; - position.top += overTop - newOverBottom; - - // Element is initially over bottom of within - } else if ( overBottom > 0 && overTop <= 0 ) { - position.top = withinOffset; - - // Element is initially over both top and bottom of within - } else { - if ( overTop > overBottom ) { - position.top = withinOffset + outerHeight - data.collisionHeight; - } else { - position.top = withinOffset; - } - } - - // Too far up -> align with top - } else if ( overTop > 0 ) { - position.top += overTop; - - // Too far down -> align with bottom edge - } else if ( overBottom > 0 ) { - position.top -= overBottom; - - // Adjust based on position and margin - } else { - position.top = max( position.top - collisionPosTop, position.top ); - } - } - }, - flip: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.offset.left + within.scrollLeft, - outerWidth = within.width, - offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - offsetLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, - myOffset = data.my[ 0 ] === "left" ? - -data.elemWidth : - data.my[ 0 ] === "right" ? - data.elemWidth : - 0, - atOffset = data.at[ 0 ] === "left" ? - data.targetWidth : - data.at[ 0 ] === "right" ? - -data.targetWidth : - 0, - offset = -2 * data.offset[ 0 ], - newOverRight, - newOverLeft; - - if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - - outerWidth - withinOffset; - if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { - position.left += myOffset + atOffset + offset; - } - } else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + - atOffset + offset - offsetLeft; - if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { - position.left += myOffset + atOffset + offset; - } - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.offset.top + within.scrollTop, - outerHeight = within.height, - offsetTop = within.isWindow ? within.scrollTop : within.offset.top, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - offsetTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, - top = data.my[ 1 ] === "top", - myOffset = top ? - -data.elemHeight : - data.my[ 1 ] === "bottom" ? - data.elemHeight : - 0, - atOffset = data.at[ 1 ] === "top" ? - data.targetHeight : - data.at[ 1 ] === "bottom" ? - -data.targetHeight : - 0, - offset = -2 * data.offset[ 1 ], - newOverTop, - newOverBottom; - if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - - outerHeight - withinOffset; - if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { - position.top += myOffset + atOffset + offset; - } - } else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + - offset - offsetTop; - if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { - position.top += myOffset + atOffset + offset; - } - } - } - }, - flipfit: { - left: function() { - $.ui.position.flip.left.apply( this, arguments ); - $.ui.position.fit.left.apply( this, arguments ); - }, - top: function() { - $.ui.position.flip.top.apply( this, arguments ); - $.ui.position.fit.top.apply( this, arguments ); - } - } -}; - -} )(); - -var position = $.ui.position; - - -/*! - * jQuery UI :data 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :data Selector -//>>group: Core -//>>description: Selects elements which have data stored under the specified key. -//>>docs: http://api.jqueryui.com/data-selector/ - - -var data = $.extend( $.expr.pseudos, { - data: $.expr.createPseudo ? - $.expr.createPseudo( function( dataName ) { - return function( elem ) { - return !!$.data( elem, dataName ); - }; - } ) : - - // Support: jQuery <1.8 - function( elem, i, match ) { - return !!$.data( elem, match[ 3 ] ); - } -} ); - -/*! - * jQuery UI Disable Selection 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: disableSelection -//>>group: Core -//>>description: Disable selection of text content within the set of matched elements. -//>>docs: http://api.jqueryui.com/disableSelection/ - -// This file is deprecated - -var disableSelection = $.fn.extend( { - disableSelection: ( function() { - var eventType = "onselectstart" in document.createElement( "div" ) ? - "selectstart" : - "mousedown"; - - return function() { - return this.on( eventType + ".ui-disableSelection", function( event ) { - event.preventDefault(); - } ); - }; - } )(), - - enableSelection: function() { - return this.off( ".ui-disableSelection" ); - } -} ); - - -/*! - * jQuery UI Focusable 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :focusable Selector -//>>group: Core -//>>description: Selects elements which can be focused. -//>>docs: http://api.jqueryui.com/focusable-selector/ - - -// Selectors -$.ui.focusable = function( element, hasTabindex ) { - var map, mapName, img, focusableIfVisible, fieldset, - nodeName = element.nodeName.toLowerCase(); - - if ( "area" === nodeName ) { - map = element.parentNode; - mapName = map.name; - if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { - return false; - } - img = $( "img[usemap='#" + mapName + "']" ); - return img.length > 0 && img.is( ":visible" ); - } - - if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { - focusableIfVisible = !element.disabled; - - if ( focusableIfVisible ) { - - // Form controls within a disabled fieldset are disabled. - // However, controls within the fieldset's legend do not get disabled. - // Since controls generally aren't placed inside legends, we skip - // this portion of the check. - fieldset = $( element ).closest( "fieldset" )[ 0 ]; - if ( fieldset ) { - focusableIfVisible = !fieldset.disabled; - } - } - } else if ( "a" === nodeName ) { - focusableIfVisible = element.href || hasTabindex; - } else { - focusableIfVisible = hasTabindex; - } - - return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); -}; - -// Support: IE 8 only -// IE 8 doesn't resolve inherit to visible/hidden for computed values -function visible( element ) { - var visibility = element.css( "visibility" ); - while ( visibility === "inherit" ) { - element = element.parent(); - visibility = element.css( "visibility" ); - } - return visibility === "visible"; -} - -$.extend( $.expr.pseudos, { - focusable: function( element ) { - return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); - } -} ); - -var focusable = $.ui.focusable; - - - -// Support: IE8 Only -// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop -// with a string, so we need to find the proper form. -var form = $.fn._form = function() { - return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); -}; - - -/*! - * jQuery UI Form Reset Mixin 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Form Reset Mixin -//>>group: Core -//>>description: Refresh input widgets when their form is reset -//>>docs: http://api.jqueryui.com/form-reset-mixin/ - - -var formResetMixin = $.ui.formResetMixin = { - _formResetHandler: function() { - var form = $( this ); - - // Wait for the form reset to actually happen before refreshing - setTimeout( function() { - var instances = form.data( "ui-form-reset-instances" ); - $.each( instances, function() { - this.refresh(); - } ); - } ); - }, - - _bindFormResetHandler: function() { - this.form = this.element._form(); - if ( !this.form.length ) { - return; - } - - var instances = this.form.data( "ui-form-reset-instances" ) || []; - if ( !instances.length ) { - - // We don't use _on() here because we use a single event handler per form - this.form.on( "reset.ui-form-reset", this._formResetHandler ); - } - instances.push( this ); - this.form.data( "ui-form-reset-instances", instances ); - }, - - _unbindFormResetHandler: function() { - if ( !this.form.length ) { - return; - } - - var instances = this.form.data( "ui-form-reset-instances" ); - instances.splice( $.inArray( this, instances ), 1 ); - if ( instances.length ) { - this.form.data( "ui-form-reset-instances", instances ); - } else { - this.form - .removeData( "ui-form-reset-instances" ) - .off( "reset.ui-form-reset" ); - } - } -}; - - -/*! - * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - */ - -//>>label: jQuery 1.8+ Support -//>>group: Core -//>>description: Support version 1.8.x and newer of jQuery core - - -// Support: jQuery 1.9.x or older -// $.expr[ ":" ] is deprecated. -if ( !$.expr.pseudos ) { - $.expr.pseudos = $.expr[ ":" ]; -} - -// Support: jQuery 1.11.x or older -// $.unique has been renamed to $.uniqueSort -if ( !$.uniqueSort ) { - $.uniqueSort = $.unique; -} - -// Support: jQuery 2.2.x or older. -// This method has been defined in jQuery 3.0.0. -// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js -if ( !$.escapeSelector ) { - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; - - var fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }; - - $.escapeSelector = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); - }; -} - -// Support: jQuery 3.4.x or older -// These methods have been defined in jQuery 3.5.0. -if ( !$.fn.even || !$.fn.odd ) { - $.fn.extend( { - even: function() { - return this.filter( function( i ) { - return i % 2 === 0; - } ); - }, - odd: function() { - return this.filter( function( i ) { - return i % 2 === 1; - } ); - } - } ); -} - -; -/*! - * jQuery UI Keycode 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Keycode -//>>group: Core -//>>description: Provide keycodes as keynames -//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ - - -var keycode = $.ui.keyCode = { - BACKSPACE: 8, - COMMA: 188, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - LEFT: 37, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SPACE: 32, - TAB: 9, - UP: 38 -}; - - -/*! - * jQuery UI Labels 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: labels -//>>group: Core -//>>description: Find all the labels associated with a given input -//>>docs: http://api.jqueryui.com/labels/ - - -var labels = $.fn.labels = function() { - var ancestor, selector, id, labels, ancestors; - - if ( !this.length ) { - return this.pushStack( [] ); - } - - // Check control.labels first - if ( this[ 0 ].labels && this[ 0 ].labels.length ) { - return this.pushStack( this[ 0 ].labels ); - } - - // Support: IE <= 11, FF <= 37, Android <= 2.3 only - // Above browsers do not support control.labels. Everything below is to support them - // as well as document fragments. control.labels does not work on document fragments - labels = this.eq( 0 ).parents( "label" ); - - // Look for the label based on the id - id = this.attr( "id" ); - if ( id ) { - - // We don't search against the document in case the element - // is disconnected from the DOM - ancestor = this.eq( 0 ).parents().last(); - - // Get a full set of top level ancestors - ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); - - // Create a selector for the label based on the id - selector = "label[for='" + $.escapeSelector( id ) + "']"; - - labels = labels.add( ancestors.find( selector ).addBack( selector ) ); - - } - - // Return whatever we have found for labels - return this.pushStack( labels ); -}; - - -/*! - * jQuery UI Scroll Parent 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: scrollParent -//>>group: Core -//>>description: Get the closest ancestor element that is scrollable. -//>>docs: http://api.jqueryui.com/scrollParent/ - - -var scrollParent = $.fn.scrollParent = function( includeHidden ) { - var position = this.css( "position" ), - excludeStaticParent = position === "absolute", - overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, - scrollParent = this.parents().filter( function() { - var parent = $( this ); - if ( excludeStaticParent && parent.css( "position" ) === "static" ) { - return false; - } - return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + - parent.css( "overflow-x" ) ); - } ).eq( 0 ); - - return position === "fixed" || !scrollParent.length ? - $( this[ 0 ].ownerDocument || document ) : - scrollParent; -}; - - -/*! - * jQuery UI Tabbable 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :tabbable Selector -//>>group: Core -//>>description: Selects elements which can be tabbed to. -//>>docs: http://api.jqueryui.com/tabbable-selector/ - - -var tabbable = $.extend( $.expr.pseudos, { - tabbable: function( element ) { - var tabIndex = $.attr( element, "tabindex" ), - hasTabindex = tabIndex != null; - return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); - } -} ); - - -/*! - * jQuery UI Unique ID 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: uniqueId -//>>group: Core -//>>description: Functions to generate and remove uniqueId's -//>>docs: http://api.jqueryui.com/uniqueId/ - - -var uniqueId = $.fn.extend( { - uniqueId: ( function() { - var uuid = 0; - - return function() { - return this.each( function() { - if ( !this.id ) { - this.id = "ui-id-" + ( ++uuid ); - } - } ); - }; - } )(), - - removeUniqueId: function() { - return this.each( function() { - if ( /^ui-id-\d+$/.test( this.id ) ) { - $( this ).removeAttr( "id" ); - } - } ); - } -} ); - - - -// This file is deprecated -var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); - -/*! - * jQuery UI Mouse 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Mouse -//>>group: Widgets -//>>description: Abstracts mouse-based interactions to assist in creating certain widgets. -//>>docs: http://api.jqueryui.com/mouse/ - - -var mouseHandled = false; -$( document ).on( "mouseup", function() { - mouseHandled = false; -} ); - -var widgetsMouse = $.widget( "ui.mouse", { - version: "1.13.2", - options: { - cancel: "input, textarea, button, select, option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .on( "mousedown." + this.widgetName, function( event ) { - return that._mouseDown( event ); - } ) - .on( "click." + this.widgetName, function( event ) { - if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) { - $.removeData( event.target, that.widgetName + ".preventClickEvent" ); - event.stopImmediatePropagation(); - return false; - } - } ); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.off( "." + this.widgetName ); - if ( this._mouseMoveDelegate ) { - this.document - .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); - } - }, - - _mouseDown: function( event ) { - - // don't let more than one widget handle mouseStart - if ( mouseHandled ) { - return; - } - - this._mouseMoved = false; - - // We may have missed mouseup (out of window) - if ( this._mouseStarted ) { - this._mouseUp( event ); - } - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = ( event.which === 1 ), - - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ? - $( event.target ).closest( this.options.cancel ).length : false ); - if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if ( !this.mouseDelayMet ) { - this._mouseDelayTimer = setTimeout( function() { - that.mouseDelayMet = true; - }, this.options.delay ); - } - - if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { - this._mouseStarted = ( this._mouseStart( event ) !== false ); - if ( !this._mouseStarted ) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) { - $.removeData( event.target, this.widgetName + ".preventClickEvent" ); - } - - // These delegates are required to keep context - this._mouseMoveDelegate = function( event ) { - return that._mouseMove( event ); - }; - this._mouseUpDelegate = function( event ) { - return that._mouseUp( event ); - }; - - this.document - .on( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .on( "mouseup." + this.widgetName, this._mouseUpDelegate ); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function( event ) { - - // Only check for mouseups outside the document if you've moved inside the document - // at least once. This prevents the firing of mouseup in the case of IE<9, which will - // fire a mousemove event if content is placed under the cursor. See #7778 - // Support: IE <9 - if ( this._mouseMoved ) { - - // IE mouseup check - mouseup happened when mouse was out of window - if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && - !event.button ) { - return this._mouseUp( event ); - - // Iframe mouseup check - mouseup occurred in another document - } else if ( !event.which ) { - - // Support: Safari <=8 - 9 - // Safari sets which to 0 if you press any of the following keys - // during a drag (#14461) - if ( event.originalEvent.altKey || event.originalEvent.ctrlKey || - event.originalEvent.metaKey || event.originalEvent.shiftKey ) { - this.ignoreMissingWhich = true; - } else if ( !this.ignoreMissingWhich ) { - return this._mouseUp( event ); - } - } - } - - if ( event.which || event.button ) { - this._mouseMoved = true; - } - - if ( this._mouseStarted ) { - this._mouseDrag( event ); - return event.preventDefault(); - } - - if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { - this._mouseStarted = - ( this._mouseStart( this._mouseDownEvent, event ) !== false ); - if ( this._mouseStarted ) { - this._mouseDrag( event ); - } else { - this._mouseUp( event ); - } - } - - return !this._mouseStarted; - }, - - _mouseUp: function( event ) { - this.document - .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); - - if ( this._mouseStarted ) { - this._mouseStarted = false; - - if ( event.target === this._mouseDownEvent.target ) { - $.data( event.target, this.widgetName + ".preventClickEvent", true ); - } - - this._mouseStop( event ); - } - - if ( this._mouseDelayTimer ) { - clearTimeout( this._mouseDelayTimer ); - delete this._mouseDelayTimer; - } - - this.ignoreMissingWhich = false; - mouseHandled = false; - event.preventDefault(); - }, - - _mouseDistanceMet: function( event ) { - return ( Math.max( - Math.abs( this._mouseDownEvent.pageX - event.pageX ), - Math.abs( this._mouseDownEvent.pageY - event.pageY ) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function( /* event */ ) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function( /* event */ ) {}, - _mouseDrag: function( /* event */ ) {}, - _mouseStop: function( /* event */ ) {}, - _mouseCapture: function( /* event */ ) { - return true; - } -} ); - - - -// $.ui.plugin is deprecated. Use $.widget() extensions instead. -var plugin = $.ui.plugin = { - add: function( module, option, set ) { - var i, - proto = $.ui[ module ].prototype; - for ( i in set ) { - proto.plugins[ i ] = proto.plugins[ i ] || []; - proto.plugins[ i ].push( [ option, set[ i ] ] ); - } - }, - call: function( instance, name, args, allowDisconnected ) { - var i, - set = instance.plugins[ name ]; - - if ( !set ) { - return; - } - - if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || - instance.element[ 0 ].parentNode.nodeType === 11 ) ) { - return; - } - - for ( i = 0; i < set.length; i++ ) { - if ( instance.options[ set[ i ][ 0 ] ] ) { - set[ i ][ 1 ].apply( instance.element, args ); - } - } - } -}; - - - -var safeActiveElement = $.ui.safeActiveElement = function( document ) { - var activeElement; - - // Support: IE 9 only - // IE9 throws an "Unspecified error" accessing document.activeElement from an